mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-29 18:59:21 +02:00
192 lines
8.1 KiB
PHP
192 lines
8.1 KiB
PHP
<?php require_once 'engine/init.php';
|
|
protect_page(); admin_only($user_data);
|
|
include 'layout/overall/header.php';
|
|
|
|
// Report status types. When a player make new report it will be default to 0.
|
|
// Feel free to add/remove and change name/color of status types.
|
|
$statusTypes = array(
|
|
0 => '<font color="purple">Reported</font>',
|
|
1 => '<font color="darkblue">To-Do List</font>',
|
|
2 => '<font color="red">Confirmed bug</font>',
|
|
3 => '<font color="grey">Invalid</font>',
|
|
4 => '<font color="grey">Rejected</font>',
|
|
5 => '<font color="green"><b>Fixed</b></font>'
|
|
);
|
|
// Autohide rows that have these status IDs:
|
|
$hideStatus = array(3, 4, 5);
|
|
|
|
// Fetch data from SQL
|
|
$reportsData = mysql_select_multi("SELECT id, name, posx, posy, posz, report_description, date, status FROM znote_player_reports ORDER BY id DESC;");
|
|
// If sql data is not empty
|
|
if ($reportsData !== false) {
|
|
// Order reports array by ID for easy reference later on.
|
|
$reports = array();
|
|
for ($i = 0; $i < count($reportsData); $i++) {
|
|
foreach ($statusTypes as $key => $value) {
|
|
if ($key == $reportsData[$i]['status']) $reports[$key][$reportsData[$i]['id']] = $reportsData[$i];
|
|
}
|
|
}
|
|
}
|
|
|
|
// POST logic (Update report and give player points)
|
|
if (!empty($_POST)) {
|
|
// Fetch POST data
|
|
$playerName = getValue($_POST['playerName']);
|
|
$status = getValue($_POST['status']);
|
|
$price = getValue($_POST['price']);
|
|
$customPoints = getValue($_POST['customPoints']);
|
|
$reportId = getValue($_POST['id']);
|
|
|
|
if ($customPoints !== false) $price = (int)($price + $customPoints);
|
|
|
|
// Update SQL
|
|
mysql_update("UPDATE `znote_player_reports` SET `status`='$status' WHERE `id`='$reportId' LIMIT 1;");
|
|
// Update local array representation
|
|
foreach ($reports as $sid => $sa)
|
|
foreach ($sa as $rid => $ra)
|
|
if ($reportId == $rid) {
|
|
$reports[$status][$reportId] = $reports[$sid][$rid];
|
|
$reports[$status][$reportId]['status'] = $status;
|
|
unset($reports[$sid][$rid]);
|
|
}
|
|
|
|
// If we should give user price
|
|
if ($price > 0) {
|
|
$account = mysql_select_single("SELECT `a`.`id`, `a`.`email` FROM `accounts` AS `a`
|
|
INNER JOIN `players` AS `p` ON `p`.`account_id` = `a`.`id`
|
|
WHERE `p`.`name` = '$playerName' LIMIT 1;");
|
|
|
|
if ($account !== false) {
|
|
// transaction log
|
|
mysql_insert("INSERT INTO `znote_paypal` VALUES ('', '$reportId', 'report@admin.".$user_data['name']." to ".$account['email']."', '".$account['id']."', '0', '".$price."')");
|
|
// Process payment
|
|
$data = mysql_select_single("SELECT `points` AS `old_points` FROM `znote_accounts` WHERE `account_id`='".$account['id']."';");
|
|
// Give points to user
|
|
$new_points = $data['old_points'] + $price;
|
|
mysql_update("UPDATE `znote_accounts` SET `points`='$new_points' WHERE `account_id`='".$account['id']."'");
|
|
|
|
// Remind GM that he sent points to character
|
|
echo "<font color='green' size='5'>".$playerName." has been granted ".$price." points for his reports.</font>";
|
|
}
|
|
}
|
|
|
|
// GET logic (Edit report data and specify how many [if any] points to give to user)
|
|
} elseif (!empty($_GET)) {
|
|
// Fetch GET data
|
|
$action = getValue($_GET['action']);
|
|
$playerName = getValue($_GET['playerName']);
|
|
$reportId = getValue($_GET['id']);
|
|
|
|
// Fetch the report we intend to modify
|
|
foreach ($reports as $sid => $sa) foreach ($sa as $rid => $ra) if ($rid == $reportId) $report = $reports[$sid][$reportId];
|
|
|
|
// Create html form
|
|
?>
|
|
<div style="width: 300px; margin: auto;">
|
|
<form action="admin_reports.php" method="POST">
|
|
Player: <a target="_BLANK" href="characterprofile.php?name=<?php echo $report['name']; ?>"><?php echo $report['name']; ?></a>
|
|
<input type="hidden" name="playerName" value="<?php echo $report['name']; ?>">
|
|
<input type="hidden" name="id" value="<?php echo $report['id']; ?>">
|
|
<br>Set status:
|
|
<select name="status">
|
|
<?php
|
|
foreach ($statusTypes as $sid => $sname) {
|
|
if ($sid != $report['status']) echo "<option value='$sid'>$sname</option>";
|
|
else echo "<option value='$sid' selected>$sname</option>";
|
|
}
|
|
?>
|
|
</select><br>
|
|
Give user points:
|
|
<select name="price">
|
|
<option value='0'>0</option>
|
|
<?php
|
|
foreach ($config['paypal_prices'] as $price) {
|
|
echo "<option value='$price'>$price</option>";
|
|
}
|
|
?>
|
|
</select> + <input name="customPoints" type="text" style="width: 50px;" placeholder="0"><br><br>
|
|
<input type="submit" value="Update Report" style="width: 100%;">
|
|
</form>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
// If sql data is not empty
|
|
if ($reportsData !== false) {
|
|
|
|
// Render HTML
|
|
//data_dump($reports);
|
|
?>
|
|
<center>
|
|
<?php
|
|
foreach ($reports as $statusId => $statusArray) {
|
|
?>
|
|
<h2><?php echo $statusTypes[$statusId]; ?> (<span id="status-<?php echo $statusId; ?>">Visible</span>)</h2>
|
|
<table class="table tbl" border="0" cellspacing="1" cellpadding="4" width="100%">
|
|
<thead>
|
|
<tr class="yellow" onclick="javascript:toggle('<?php echo $statusId; ?>')">
|
|
<td width="38%"><b><font color=white><center>Info</center></font></b></td>
|
|
<td><b><font color=white><center>Description</center></font></b></td>
|
|
</tr>
|
|
</thead>
|
|
<?php
|
|
foreach ($statusArray as $reportId => $report) {
|
|
?>
|
|
<tbody class="row<?php echo $report['status']; ?>">
|
|
<tr>
|
|
<td>
|
|
<b>Report ID:</b> #<?php echo $report['id']; ?>
|
|
<br><b>Name:</b> <a href="characterprofile.php?name=<?php echo $report['name']; ?>"><?php echo $report['name']; ?></a>
|
|
<br><b>Position:</b> <input type="text" disabled value="/pos <?php echo $report['posx'].', '.$report['posy'].', '.$report['posz']; ?>">
|
|
<br><b>Reported:</b> <?php echo getClock($report['date'], true, true); ?>
|
|
<br><b>Status:</b> <?php echo $statusTypes[$report['status']]; ?>. <a href="?action=edit&name=<?php echo $report['name'].'&id='.$report['id']; ?>">Edit</a>
|
|
</td>
|
|
<td>
|
|
<center><?php echo $report['report_description']; ?></center>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<?php
|
|
}
|
|
?></table><?php
|
|
}
|
|
?>
|
|
</center>
|
|
<?php
|
|
} else echo "<h2>No reports submitted.</h2>";
|
|
?>
|
|
<script type="text/javascript">
|
|
// Hide and show tables
|
|
// Written in clean javascript to make it cross-layout compatible.
|
|
function toggle(statusId) {
|
|
statusId = ''+statusId;
|
|
var divStatus = 'row'+statusId;
|
|
var msgStatus = 'status-'+statusId;
|
|
|
|
// Change visibility status
|
|
statusElement = document.getElementById(msgStatus);
|
|
|
|
console.log(statusElement, statusId, divStatus, msgStatus);
|
|
|
|
if (statusElement !== null) {
|
|
if (statusElement.innerHTML == 'Visible') statusElement.innerHTML = 'Hidden';
|
|
else statusElement.innerHTML = 'Visible';
|
|
// Show/hide elements.
|
|
var elements = document.getElementsByClassName(divStatus);
|
|
for (var i = 0; i < elements.length; i++) {
|
|
if (elements[i].style.display == 'none') {
|
|
elements[i].style.display = 'table-header-group';
|
|
} else {
|
|
elements[i].style.display = 'none';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
<?php // Hide configured tables by default
|
|
foreach ($hideStatus as $statusId) {
|
|
echo "toggle($statusId);";
|
|
}
|
|
?>
|
|
</script>
|
|
<?php include 'layout/overall/footer.php'; ?>
|