diff --git a/history.php b/history.php
index 20e97d0..6f3e178 100644
--- a/history.php
+++ b/history.php
@@ -16,17 +16,18 @@ class History {
* @param array $array
* @param string $type
* @param string $uuid
+ * @param string $field
* @param array $counts
*/
- static function push($page, &$array, $type, $uuid, &$counts) {
+ static function push($page, &$array, $type, $uuid, $field, &$counts) {
$table = $page->settings->table[$type];
- $count_st = $page->conn->prepare("SELECT COUNT(*) AS count FROM $table WHERE uuid=:uuid");
+ $count_st = $page->conn->prepare("SELECT COUNT(*) AS count FROM $table WHERE $field=:uuid");
$count_st->bindParam(":uuid", $uuid, PDO::PARAM_STR);
if ($count_st->execute() && ($row = $count_st->fetch()) !== null) {
$counts[$type] = $row['count'];
}
- $st = $page->conn->prepare("SELECT * FROM $table WHERE uuid=:uuid ORDER BY time");
+ $st = $page->conn->prepare("SELECT * FROM $table WHERE $field=:uuid ORDER BY time");
$st->bindParam(":uuid", $uuid, PDO::PARAM_STR);
// Incompatible with pager as rows are usort()'d
@@ -62,6 +63,8 @@ if (!isset($_GET['uuid'])) {
die("Missing arguments (uuid).");
}
+$staffhistory = (isset($_GET['staffhistory']) && $_GET['staffhistory'] === "1");
+
$uuid = $_GET['uuid'];
$name = $page->get_name($uuid);
@@ -69,7 +72,13 @@ if ($name === null) {
die("Player not found in database.");
}
-$page->name = "Recent Punishments for $name";
+if ($staffhistory) {
+ $page->name = "Recent Punishments by $name";
+} else {
+ $page->name = "Recent Punishments for $name";
+}
+
+
$page->print_title();
$page->print_page_header();
@@ -91,10 +100,15 @@ try {
$all = array();
$counts = array();
- History::push($page, $all, 'bans', $uuid, $counts);
- History::push($page, $all, 'mutes', $uuid, $counts);
- History::push($page, $all, 'warnings', $uuid, $counts);
- History::push($page, $all, 'kicks', $uuid, $counts);
+ $field = "uuid";
+ if ($staffhistory) {
+ $field = "banned_by_uuid";
+ }
+
+ History::push($page, $all, 'bans', $uuid, $field, $counts);
+ History::push($page, $all, 'mutes', $uuid, $field, $counts);
+ History::push($page, $all, 'warnings', $uuid, $field, $counts);
+ History::push($page, $all, 'kicks', $uuid, $field, $counts);
$total = 0;
foreach ($counts as $count) {
@@ -135,7 +149,7 @@ try {
$page->print_table_rows($row, array(
'Type' => $label,
- 'Player' => $page->get_avatar($name, $row['uuid']),
+ 'Player' => $page->get_avatar($page->get_name($row['uuid']), $row['uuid']),
'Moderator' => $page->get_avatar($page->get_banner_name($row), $row['banned_by_uuid']),
'Reason' => $page->clean($row['reason']),
'Date' => $page->millis_to_date($row['time']),
@@ -151,6 +165,9 @@ try {
if ($from !== null) {
$args .= "&from=$from";
}
+ if ($staffhistory) {
+ $args .= "&staffhistory=1";
+ }
$page->print_pager($total, $args);
}
} else {
diff --git a/info.php b/info.php
index d210d9a..983413d 100644
--- a/info.php
+++ b/info.php
@@ -38,9 +38,17 @@ abstract class Info {
return $this->row['until'] <= 0;
}
- function history_link($player_name, $row) {
- $uuid = $row['uuid'];
- return "$player_name";
+ function history_link($player_name, $uuid, $args = "") {
+ return "$player_name";
+ }
+
+ function punished_avatar($player_name, $row) {
+ return $this->page->get_avatar($player_name, $row['uuid'], false, $this->history_link($player_name, $row['uuid']));
+ }
+
+ function moderator_avatar($row) {
+ $banner_name = $this->page->get_banner_name($row);
+ return $this->page->get_avatar($banner_name, $row['banned_by_uuid'], false, $this->history_link($banner_name, $row['banned_by_uuid'], "&staffhistory=1"));
}
abstract function basic_info($row, $player_name);
@@ -50,8 +58,8 @@ class BanInfo extends Info {
function basic_info($row, $player_name) {
$page = $this->page;
return array(
- 'Banned Player' => $page->get_avatar($player_name, $row['uuid'], false, $this->history_link($player_name, $row)),
- 'Banned By' => $page->get_avatar($page->get_banner_name($row), $row['banned_by_uuid'], false),
+ 'Banned Player' => $this->punished_avatar($player_name, $row),
+ 'Banned By' => $this->moderator_avatar($row),
'Ban Reason' => $page->clean($row['reason']),
'Ban Placed' => $page->millis_to_date($row['time']),
'Expires' => $page->expiry($row),
@@ -63,8 +71,8 @@ class MuteInfo extends Info {
function basic_info($row, $player_name) {
$page = $this->page;
return array(
- 'Muted Player' => $page->get_avatar($player_name, $row['uuid'], false, $this->history_link($player_name, $row)),
- 'Muted By' => $page->get_avatar($page->get_banner_name($row), $row['banned_by_uuid'], false),
+ 'Muted Player' => $this->punished_avatar($player_name, $row),
+ 'Muted By' => $this->moderator_avatar($row),
'Mute Reason' => $page->clean($row['reason']),
'Mute Placed' => $page->millis_to_date($row['time']),
'Expires' => $page->expiry($row),
@@ -80,8 +88,8 @@ class WarnInfo extends Info {
function basic_info($row, $player_name) {
$page = $this->page;
return array(
- 'Warned Player' => $page->get_avatar($player_name, $row['uuid'], false, $this->history_link($player_name, $row)),
- 'Warned By' => $page->get_avatar($page->get_banner_name($row), $row['banned_by_uuid'], false),
+ 'Warned Player' => $this->punished_avatar($player_name, $row),
+ 'Warned By' => $this->moderator_avatar($row),
'Warning Reason' => $page->clean($row['reason']),
'Warning Placed' => $page->millis_to_date($row['time']),
'Expires' => $page->expiry($row),
@@ -93,8 +101,8 @@ class KickInfo extends Info {
function basic_info($row, $player_name) {
$page = $this->page;
return array(
- 'Kicked Player' => $page->get_avatar($player_name, $row['uuid'], false, $this->history_link($player_name, $row)),
- 'Kicked By' => $page->get_avatar($page->get_banner_name($row), $row['banned_by_uuid'], false),
+ 'Kicked Player' => $this->punished_avatar($player_name, $row),
+ 'Kicked By' => $this->moderator_avatar($row),
'Kick Reason' => $page->clean($row['reason']),
'Kick Date' => $page->millis_to_date($row['time']),
);