mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
[Commands] Add #bugs Command. (#2559)
* [Commands] Add #bugs Command. - Adds a #bugs command for viewing bug reports. - Remove unused bug related rules in favor of hard-coding the new system. * Cleanup. * Typo. * Push. * Lower status so it fits with message.
This commit is contained in:
-252
@@ -196,259 +196,7 @@ bool ZoneDatabase::logevents(const char* accountname,uint32 accountid,uint8 stat
|
||||
return true;
|
||||
}
|
||||
|
||||
void ZoneDatabase::RegisterBug(BugReport_Struct* bug_report) {
|
||||
if (!bug_report)
|
||||
return;
|
||||
|
||||
size_t len = 0;
|
||||
char* name_ = nullptr;
|
||||
char* ui_ = nullptr;
|
||||
char* type_ = nullptr;
|
||||
char* target_ = nullptr;
|
||||
char* bug_ = nullptr;
|
||||
|
||||
len = strlen(bug_report->reporter_name);
|
||||
if (len) {
|
||||
if (len > 63) // check against db column size
|
||||
len = 63;
|
||||
name_ = new char[(2 * len + 1)];
|
||||
memset(name_, 0, (2 * len + 1));
|
||||
DoEscapeString(name_, bug_report->reporter_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->ui_path);
|
||||
if (len) {
|
||||
if (len > 127)
|
||||
len = 127;
|
||||
ui_ = new char[(2 * len + 1)];
|
||||
memset(ui_, 0, (2 * len + 1));
|
||||
DoEscapeString(ui_, bug_report->ui_path, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->category_name);
|
||||
if (len) {
|
||||
if (len > 63)
|
||||
len = 63;
|
||||
type_ = new char[(2 * len + 1)];
|
||||
memset(type_, 0, (2 * len + 1));
|
||||
DoEscapeString(type_, bug_report->category_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->target_name);
|
||||
if (len) {
|
||||
if (len > 63)
|
||||
len = 63;
|
||||
target_ = new char[(2 * len + 1)];
|
||||
memset(target_, 0, (2 * len + 1));
|
||||
DoEscapeString(target_, bug_report->target_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->bug_report);
|
||||
if (len) {
|
||||
if (len > 1023)
|
||||
len = 1023;
|
||||
bug_ = new char[(2 * len + 1)];
|
||||
memset(bug_, 0, (2 * len + 1));
|
||||
DoEscapeString(bug_, bug_report->bug_report, len);
|
||||
}
|
||||
|
||||
//x and y are intentionally swapped because eq is inversexy coords //is this msg out-of-date or are the parameters wrong?
|
||||
std::string query = StringFormat(
|
||||
"INSERT INTO `bugs` (`zone`, `name`, `ui`, `x`, `y`, `z`, `type`, `flag`, `target`, `bug`, `date`) "
|
||||
"VALUES('%s', '%s', '%s', '%.2f', '%.2f', '%.2f', '%s', %d, '%s', '%s', CURDATE())",
|
||||
zone->GetShortName(),
|
||||
(name_ ? name_ : ""),
|
||||
(ui_ ? ui_ : ""),
|
||||
bug_report->pos_x,
|
||||
bug_report->pos_y,
|
||||
bug_report->pos_z,
|
||||
(type_ ? type_ : ""),
|
||||
bug_report->optional_info_mask,
|
||||
(target_ ? target_ : "Unknown Target"),
|
||||
(bug_ ? bug_ : "")
|
||||
);
|
||||
safe_delete_array(name_);
|
||||
safe_delete_array(ui_);
|
||||
safe_delete_array(type_);
|
||||
safe_delete_array(target_);
|
||||
safe_delete_array(bug_);
|
||||
|
||||
QueryDatabase(query);
|
||||
}
|
||||
|
||||
void ZoneDatabase::RegisterBug(Client* client, BugReport_Struct* bug_report) {
|
||||
if (!client || !bug_report)
|
||||
return;
|
||||
|
||||
size_t len = 0;
|
||||
char* category_name_ = nullptr;
|
||||
char* reporter_name_ = nullptr;
|
||||
char* ui_path_ = nullptr;
|
||||
char* target_name_ = nullptr;
|
||||
char* bug_report_ = nullptr;
|
||||
char* system_info_ = nullptr;
|
||||
|
||||
len = strlen(bug_report->category_name);
|
||||
if (len) {
|
||||
if (len > 63) // check against db column size
|
||||
len = 63;
|
||||
category_name_ = new char[(2 * len + 1)];
|
||||
memset(category_name_, 0, (2 * len + 1));
|
||||
DoEscapeString(category_name_, bug_report->category_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->reporter_name);
|
||||
if (len) {
|
||||
if (len > 63)
|
||||
len = 63;
|
||||
reporter_name_ = new char[(2 * len + 1)];
|
||||
memset(reporter_name_, 0, (2 * len + 1));
|
||||
DoEscapeString(reporter_name_, bug_report->reporter_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->ui_path);
|
||||
if (len) {
|
||||
if (len > 127)
|
||||
len = 127;
|
||||
ui_path_ = new char[(2 * len + 1)];
|
||||
memset(ui_path_, 0, (2 * len + 1));
|
||||
DoEscapeString(ui_path_, bug_report->ui_path, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->target_name);
|
||||
if (len) {
|
||||
if (len > 63)
|
||||
len = 63;
|
||||
target_name_ = new char[(2 * len + 1)];
|
||||
memset(target_name_, 0, (2 * len + 1));
|
||||
DoEscapeString(target_name_, bug_report->target_name, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->bug_report);
|
||||
if (len) {
|
||||
if (len > 1023)
|
||||
len = 1023;
|
||||
bug_report_ = new char[(2 * len + 1)];
|
||||
memset(bug_report_, 0, (2 * len + 1));
|
||||
DoEscapeString(bug_report_, bug_report->bug_report, len);
|
||||
}
|
||||
|
||||
len = strlen(bug_report->system_info);
|
||||
if (len) {
|
||||
if (len > 1023)
|
||||
len = 1023;
|
||||
system_info_ = new char[(2 * len + 1)];
|
||||
memset(system_info_, 0, (2 * len + 1));
|
||||
DoEscapeString(system_info_, bug_report->system_info, len);
|
||||
}
|
||||
|
||||
std::string query = StringFormat(
|
||||
"INSERT INTO `bug_reports` "
|
||||
"(`zone`,"
|
||||
" `client_version_id`,"
|
||||
" `client_version_name`,"
|
||||
" `account_id`,"
|
||||
" `character_id`,"
|
||||
" `character_name`,"
|
||||
" `reporter_spoof`,"
|
||||
" `category_id`,"
|
||||
" `category_name`,"
|
||||
" `reporter_name`,"
|
||||
" `ui_path`,"
|
||||
" `pos_x`,"
|
||||
" `pos_y`,"
|
||||
" `pos_z`,"
|
||||
" `heading`,"
|
||||
" `time_played`,"
|
||||
" `target_id`,"
|
||||
" `target_name`,"
|
||||
" `optional_info_mask`,"
|
||||
" `_can_duplicate`,"
|
||||
" `_crash_bug`,"
|
||||
" `_target_info`,"
|
||||
" `_character_flags`,"
|
||||
" `_unknown_value`,"
|
||||
" `bug_report`,"
|
||||
" `system_info`) "
|
||||
"VALUES "
|
||||
"('%s',"
|
||||
" '%u',"
|
||||
" '%s',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%s',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%s',"
|
||||
" '%s',"
|
||||
" '%s',"
|
||||
" '%1.1f',"
|
||||
" '%1.1f',"
|
||||
" '%1.1f',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%s',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%u',"
|
||||
" '%s',"
|
||||
" '%s')",
|
||||
zone->GetShortName(),
|
||||
client->ClientVersion(),
|
||||
EQ::versions::ClientVersionName(client->ClientVersion()),
|
||||
client->AccountID(),
|
||||
client->CharacterID(),
|
||||
client->GetName(),
|
||||
(strcmp(client->GetName(), reporter_name_) != 0 ? 1 : 0),
|
||||
bug_report->category_id,
|
||||
(category_name_ ? category_name_ : ""),
|
||||
(reporter_name_ ? reporter_name_ : ""),
|
||||
(ui_path_ ? ui_path_ : ""),
|
||||
bug_report->pos_x,
|
||||
bug_report->pos_y,
|
||||
bug_report->pos_z,
|
||||
bug_report->heading,
|
||||
bug_report->time_played,
|
||||
bug_report->target_id,
|
||||
(target_name_ ? target_name_ : ""),
|
||||
bug_report->optional_info_mask,
|
||||
((bug_report->optional_info_mask & EQ::bug::infoCanDuplicate) != 0 ? 1 : 0),
|
||||
((bug_report->optional_info_mask & EQ::bug::infoCrashBug) != 0 ? 1 : 0),
|
||||
((bug_report->optional_info_mask & EQ::bug::infoTargetInfo) != 0 ? 1 : 0),
|
||||
((bug_report->optional_info_mask & EQ::bug::infoCharacterFlags) != 0 ? 1 : 0),
|
||||
((bug_report->optional_info_mask & EQ::bug::infoUnknownValue) != 0 ? 1 : 0),
|
||||
(bug_report_ ? bug_report_ : ""),
|
||||
(system_info_ ? system_info_ : "")
|
||||
);
|
||||
safe_delete_array(category_name_);
|
||||
safe_delete_array(reporter_name_);
|
||||
safe_delete_array(ui_path_);
|
||||
safe_delete_array(target_name_);
|
||||
safe_delete_array(bug_report_);
|
||||
safe_delete_array(system_info_);
|
||||
|
||||
auto result = QueryDatabase(query);
|
||||
|
||||
// TODO: Entity dumping [RuleB(Bugs, DumpTargetEntity)]
|
||||
}
|
||||
|
||||
//void ZoneDatabase::UpdateBug(PetitionBug_Struct* bug) {
|
||||
//
|
||||
// uint32 len = strlen(bug->text);
|
||||
// auto bugtext = new char[2 * len + 1];
|
||||
// memset(bugtext, 0, 2 * len + 1);
|
||||
// DoEscapeString(bugtext, bug->text, len);
|
||||
//
|
||||
// std::string query = StringFormat("INSERT INTO bugs (type, name, bugtext, flag) "
|
||||
// "VALUES('%s', '%s', '%s', %i)",
|
||||
// "Petition", bug->name, bugtext, 25);
|
||||
// safe_delete_array(bugtext);
|
||||
// QueryDatabase(query);
|
||||
//}
|
||||
|
||||
bool ZoneDatabase::SetSpecialAttkFlag(uint8 id, const char* flag) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user