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'),
|