Skip to content

Commit

Permalink
feat: record server ID when creating report via API and display in st…
Browse files Browse the repository at this point in the history
…aff panel
  • Loading branch information
samerton committed Jul 14, 2024
1 parent 56f24c7 commit 9855e2d
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class AddServerIdColumnToReportsTable extends AbstractMigration
{
public function change(): void
{
$this->table('nl2_reports')
->addColumn('server_id', 'integer', ['null' => true, 'default' => null])
->addForeignKey('server_id', 'nl2_mc_servers', 'id', ['delete' => 'SET_NULL'])
->update();
}
}
8 changes: 6 additions & 2 deletions custom/panel_templates/Default/core/users_reports.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,13 @@
</td>
<td>
{if $report.type eq 0}
{$WEBSITE}
{$WEBSITE}
{else}
{$API}
{if $report.server}
{$report.server}
{else}
{$API}
{/if}
{/if}
</td>
<td>
Expand Down
2 changes: 1 addition & 1 deletion custom/panel_templates/Default/core/users_reports_view.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
target="_blank" href="{$REPORTED_USER_PROFILE}"
style="{$REPORTED_USER_STYLE}">{$REPORTED_USER}</a> {if ($TYPE == 0)}|
<small><a href="{$CONTENT_LINK}" target="_blank">{$VIEW_CONTENT}</a>
</small>{/if}
</small>{elseif $REPORT_SERVER}<small>{$REPORT_SERVER}</small>{/if}
</h5>
</div>
<div class="col-md-3">
Expand Down
6 changes: 4 additions & 2 deletions modules/Core/includes/endpoints/CreateReportEndpoint.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down Expand Up @@ -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);
Expand Down
65 changes: 43 additions & 22 deletions modules/Core/pages/panel/users_reports.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand All @@ -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,
];
}

Expand Down Expand Up @@ -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'),
Expand Down

0 comments on commit 9855e2d

Please sign in to comment.