conn = $settings->conn; $this->settings = $settings; $this->uuid_name_cache = array(); $this->time = microtime(true); $this->page = 0; if (isset($_GET['page'])) { $page = $_GET['page']; // user input if (filter_var($page, FILTER_VALIDATE_INT)) { $this->page = (int)$page; } } } function run_query($table) { try { $active_query = $this->settings->active_query; $limit = $this->settings->limit_per_page; $offset = 0; if ($this->settings->show_pager) { $offset = ($limit * $this->page); } $query = "SELECT * FROM $table $active_query GROUP BY $table.id ORDER BY time DESC LIMIT :limit OFFSET :offset"; $st = $this->conn->prepare($query); $st->bindParam(':offset', $offset, PDO::PARAM_INT); $st->bindParam(':limit', $limit, PDO::PARAM_INT); $st->execute(); return $st; } catch (PDOException $ex) { die($ex->getMessage()); } } function get_avatar($name) { return "$name"; } function get_name($uuid) { if (array_key_exists($uuid, $this->uuid_name_cache)) return $this->uuid_name_cache[$uuid]; $history = $this->settings->table_history; $stmt = $this->conn->prepare("SELECT name FROM $history WHERE uuid=? ORDER BY date DESC LIMIT 1"); if ($stmt->execute(array($uuid)) && $row = $stmt->fetch()) { $banner = $row['name']; $this->uuid_name_cache[$uuid] = $banner; return $banner; } $this->uuid_name_cache[$uuid] = null; return null; } function get_banner_name($row) { $uuid = $row['banned_by_uuid']; $name = $this->get_name($uuid); if ($name !== null) { return $name; } $name = $row['banned_by_name']; return $this->clean($name); } function millis_to_date($millis) { return date($this->settings->date_format, $millis / 1000); } /** * Prepares text to be displayed on the web interface. * Removes chat colours, replaces newlines with proper HTML, and sanitizes the text. * @param $text * @return mixed|string */ function clean($text) { if (strstr($text, "\xa7") || strstr($text, "&")) { $regex = "/(?i)(\xa7|&)[0-9A-FK-OR]/"; $text = preg_replace($regex, "", $text); } $text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); if (strstr($text, "\n")) { $text = preg_replace("/\n/", "
", $text); } return $text; } function print_page_header($title) { $type = $title === "Bans" ? "modal" : "navbar"; echo("

$title

"); } function print_table_headers($headers) { echo(""); foreach ($headers as $header) { echo "
$header
"; } echo(""); } function print_check_form($table) { echo('

'); } function print_pager($page) { if (!$this->settings->show_pager) return; $prev = $this->page - 1; $next = $this->page + 1; $pager_prev = "
«
"; if ($this->page > 0) { $pager_prev = "$pager_prev"; } $pager_next = "
»
"; echo "$pager_prev $pager_next"; } function print_footer() { include './includes/footer.php'; $time = microtime(true) - $this->time; echo ""; } } ?>