diff --git a/core/migrations/20240714105702_add_server_id_column_to_reports_table.php b/core/migrations/20240714105702_add_server_id_column_to_reports_table.php new file mode 100644 index 0000000000..421bb00f81 --- /dev/null +++ b/core/migrations/20240714105702_add_server_id_column_to_reports_table.php @@ -0,0 +1,16 @@ +table('nl2_reports') + ->addColumn('server_id', 'integer', ['null' => true, 'default' => null]) + ->addForeignKey('server_id', 'nl2_mc_servers', 'id', ['delete' => 'SET_NULL']) + ->update(); + } +} diff --git a/custom/panel_templates/Default/core/users_reports.tpl b/custom/panel_templates/Default/core/users_reports.tpl index 05cb8634ef..243d12e272 100644 --- a/custom/panel_templates/Default/core/users_reports.tpl +++ b/custom/panel_templates/Default/core/users_reports.tpl @@ -85,9 +85,13 @@ {if $report.type eq 0} - {$WEBSITE} + {$WEBSITE} {else} - {$API} + {if $report.server} + {$report.server} + {else} + {$API} + {/if} {/if} diff --git a/custom/panel_templates/Default/core/users_reports_view.tpl b/custom/panel_templates/Default/core/users_reports_view.tpl index 5b477e9796..016211e1eb 100644 --- a/custom/panel_templates/Default/core/users_reports_view.tpl +++ b/custom/panel_templates/Default/core/users_reports_view.tpl @@ -45,7 +45,7 @@ target="_blank" href="{$REPORTED_USER_PROFILE}" style="{$REPORTED_USER_STYLE}">{$REPORTED_USER} {if ($TYPE == 0)}| {$VIEW_CONTENT} - {/if} + {elseif $REPORT_SERVER}{$REPORT_SERVER}{/if}
diff --git a/modules/Core/includes/endpoints/CreateReportEndpoint.php b/modules/Core/includes/endpoints/CreateReportEndpoint.php index f2c123b2ca..658e85a049 100644 --- a/modules/Core/includes/endpoints/CreateReportEndpoint.php +++ b/modules/Core/includes/endpoints/CreateReportEndpoint.php @@ -6,6 +6,7 @@ * @param string $content The content of the report * @param string $reported_username The username of the reported user (optional, required if reported not provided) * @param string $reported_uid A unique ID for the reported user (optional, required if reported not provided) + * @param string $server_id A server ID the report is associated with * * @return string JSON Array */ @@ -79,8 +80,9 @@ public function execute(Nameless2API $api): void { 'reported_id' => $user_reported_id, 'report_reason' => $_POST['content'], 'updated_by' => $user_reporting_data->id, - 'reported_mcname' => $_POST['reported_username'] ? $_POST['reported_username'] : $reported_user->getDisplayname(), - 'reported_uuid' => $_POST['reported_uid'] ? $_POST['reported_uid'] : $reported_uuid ?? 'none', + 'reported_mcname' => $_POST['reported_username'] ?: $reported_user->getDisplayname(), + 'reported_uuid' => $_POST['reported_uid'] ?: $reported_uuid ?? 'none', + 'server_id' => $_POST['server_id'], ]); $api->returnArray(['message' => $api->getLanguage()->get('api', 'report_created')], 201); diff --git a/modules/Core/pages/panel/users_reports.php b/modules/Core/pages/panel/users_reports.php index f52fe06513..c225c8edd1 100644 --- a/modules/Core/pages/panel/users_reports.php +++ b/modules/Core/pages/panel/users_reports.php @@ -89,36 +89,52 @@ $comments = DB::getInstance()->get('reports_comments', ['report_id', $report->id])->results(); $comments = count($comments); - $user_reported = null; - if ($report->reported_id != 0) { - $reported_user = new User($report->reported_id); - - if ($reported_user->exists()) { - // Reported user exists - $user_reported = $reported_user->getDisplayname(); - $user_profile = URL::build('/panel/user/' . urlencode($report->reported_id . '-' . $reported_user->data()->username)); - $user_style = $reported_user->getGroupStyle(); - $user_avatar = $reported_user->getAvatar(); + if (!$report->reported_id) { + $integration = Integrations::getInstance()->getIntegration('Minecraft'); + if ($integration != null) { + $reported_user = new IntegrationUser($integration, $report->reported_uuid, 'identifier'); + if ($reported_user->exists()) { + $reported_user = $reported_user->getUser(); + + $reported_user_profile = URL::build('/panel/user/' . urlencode($reported_user->data()->id . '-' . $reported_user->data()->username)); + $reported_user_style = $reported_user->getGroupStyle(); + $reported_user_avatar = $reported_user->getAvatar(); + } else { + $reported_user_profile = '#'; + $reported_user_style = ''; + $reported_user_avatar = AvatarSource::getAvatarFromUUID(Output::getClean($report->reported_uuid)); + } + } else { + $reported_user_profile = '#'; + $reported_user_style = ''; + $reported_user_avatar = AvatarSource::getAvatarFromUUID(Output::getClean($report->reported_uuid)); } - } - if ($user_reported === null) { - // Reported user doesn't exist, use their username and uuid - $user_reported = Output::getClean($report->reported_mcname); - $user_profile = URL::build('/panel/user/' . urlencode($report->reported_id . '-' . $report->reported_mcname)); - $user_style = ''; - $user_avatar = AvatarSource::getAvatarFromUUID($report->reported_uuid ?? $report->reported_mcname); + $reported_user_name = Output::getClean($report->reported_mcname); + } else { + $reported_user = new User($report->reported_id); + + $reported_user_name = $reported_user->getDisplayname(); + $reported_user_profile = URL::build('/panel/user/' . urlencode($report->reported_id . '-' . $reported_user->data()->username)); + $reported_user_style = $reported_user->getGroupStyle(); + $reported_user_avatar = $reported_user->getAvatar(); } $updated_by_user = new User($report->updated_by); + $server = null; + if ($report->server_id) { + $server = Output::getClean(DB::getInstance()->get('mc_servers', ['id', $report->server_id])->first()->name); + } + $reports[] = [ 'id' => $report->id, 'type' => $report->type, - 'user_reported' => $user_reported, - 'user_profile' => $user_profile, - 'user_reported_style' => $user_style, - 'user_reported_avatar' => $user_avatar, + 'server' => $server, + 'user_reported' => $reported_user_name, + 'user_profile' => $reported_user_profile, + 'user_reported_style' => $reported_user_style, + 'user_reported_avatar' => $reported_user_avatar, 'reported_at' => ($report->reported ? $timeago->inWords($report->reported, $language) : $timeago->inWords($report->date_reported, $language)), 'reported_at_full' => ($report->reported ? date(DATE_FORMAT, $report->reported) : date(DATE_FORMAT, strtotime($report->date_reported))), 'link' => URL::build('/panel/users/reports/', 'id=' . urlencode($report->id)), @@ -128,7 +144,7 @@ 'updated_by_avatar' => $updated_by_user->getAvatar(), 'updated_at' => ($report->updated ? $timeago->inWords($report->updated, $language) : $timeago->inWords($report->date_updated, $language)), 'updated_at_full' => ($report->updated ? date(DATE_FORMAT, $report->updated) : date(DATE_FORMAT, strtotime($report->date_updated))), - 'comments' => $comments + 'comments' => $comments, ]; } @@ -259,6 +275,11 @@ $reporter_user = new User($report->reporter_id); + if ($report->server_id) { + $server = DB::getInstance()->get('mc_servers', ['id', $report->server_id])->first()->name; + $smarty->assign('REPORT_SERVER', Output::getClean($server)); + } + // Smarty variables $smarty->assign([ 'REPORTS_LINK' => URL::build('/panel/users/reports'),