From 496447e9656cf7b58677e84288c060c7d5f17df9 Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Fri, 9 Apr 2021 20:38:10 -0700 Subject: [PATCH] Add moderation log --- imgboard.php | 52 +++++++++ inc/database/flatfile.php | 8 +- inc/database/mysql.php | 194 ++++++++++++++++++--------------- inc/database/mysqli.php | 220 +++++++++++++++++++++----------------- inc/database/pdo.php | 162 +++++++++++++++------------- inc/database/sqlite.php | 166 +++++++++++++++------------- inc/database/sqlite3.php | 98 ++++++++++------- inc/functions.php | 14 +++ inc/html.php | 68 ++++++++++-- 9 files changed, 590 insertions(+), 392 deletions(-) diff --git a/imgboard.php b/imgboard.php index d77a2c1..6ded497 100644 --- a/imgboard.php +++ b/imgboard.php @@ -529,6 +529,10 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) echo __('Updating index...') . '
'; rebuildIndexes(); } + + if ($rawpost) { + manageLogAction(__('Created raw post') . ' ' . postLink('>>' . $post['id'])); + } // Check if the request is to auto-refresh a thread } elseif (isset($_GET['posts']) && !isset($_GET['manage'])) { if (TINYIB_AUTOREFRESH <= 0) { @@ -635,6 +639,8 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) } rebuildIndexes(); $text .= manageInfo(__('Rebuilt board.')); + } else if (isset($_GET['modlog'])) { + $text .= manageModerationLog($_GET['modlog']); } else if (isset($_GET['reports'])) { if (!TINYIB_REPORT) { fancyDie(__('Reporting is disabled.')); @@ -668,6 +674,8 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) fancyDie(__('A password is required.')); } + $prev = $a; + $a['username'] = $_POST['username']; if ($_POST['password'] != '') { $a['password'] = $_POST['password']; @@ -679,9 +687,34 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) if ($id == 0) { insertAccount($a); + manageLogAction(sprintf(__('Added account %s'), $a['username'])); $text .= manageInfo(__('Added account')); } else { updateAccount($a); + if ($a['username'] != $prev['username']) { + manageLogAction(sprintf(__('Renamed account %1$s as %2$s'), $prev['username'], $a['username'])); + } + if ($a['password'] != $prev['password']) { + manageLogAction(sprintf(__('Changed password of account %s'), $a['username'])); + } + if ($a['role'] != $prev['role']) { + $r = ''; + switch ($a['role']) { + case TINYIB_SUPER_ADMINISTRATOR: + $r = __('Super-administrator'); + break; + case TINYIB_ADMINISTRATOR: + $r = __('Administrator'); + break; + case TINYIB_MODERATOR: + $r = __('Moderator'); + break; + case TINYIB_DISABLED: + $r = __('Disabled'); + break; + } + manageLogAction(sprintf(__('Changed role of account %s to %s'), $a['username'], $r)); + } $text .= manageInfo(__('Updated account')); } } @@ -710,13 +743,24 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) $ban['expire'] = ($_POST['expire'] > 0) ? (time() + $_POST['expire']) : 0; $ban['reason'] = $_POST['reason']; + $until = __('permanently'); + if ($ban['expire'] > 0) { + $until = sprintf(__('until %s'), strftime(TINYIB_DATEFMT, $ban['expire'])); + } + $action = sprintf(__('Banned %s %s'), htmlentities($ban['ip']), $until); + if ($ban['reason'] != '') { + $action = sprintf(__('Banned %s %s: %s'), htmlentities($ban['ip']), $until, htmlentities($ban['reason'])); + } + insertBan($ban); + manageLogAction($action); $text .= manageInfo(sprintf(__('Ban record added for %s'), $ban['ip'])); } } elseif (isset($_GET['lift'])) { $ban = banByID($_GET['lift']); if ($ban) { deleteBanByID($_GET['lift']); + manageLogAction(sprintf(__('Lifted ban on %s'), htmlentities($ban['ip']))); $text .= manageInfo(sprintf(__('Ban record lifted for %s'), $ban['ip'])); } } @@ -741,9 +785,11 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) insertKeyword($keyword); if ($_GET['keywords'] > 0) { + manageLogAction(sprintf(__('Updated keyword %s'), htmlentities($keyword['text']))); $text .= manageInfo(__('Keyword updated.')); $_GET['keywords'] = 0; } else { + manageLogAction(sprintf(__('Updated keyword %s'), htmlentities($keyword['text']))); $text .= manageInfo(__('Keyword added.')); } } elseif (isset($_GET['deletekeyword'])) { @@ -848,6 +894,8 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) } else { threadUpdated($post['parent']); } + + manageLogAction(__('Deleted') . ' >>' . $post['id']); $text .= manageInfo(sprintf(__('Post No.%d deleted.'), $post['id'])); } else { fancyDie(__("Sorry, there doesn't appear to be a post with that ID.")); @@ -864,6 +912,7 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) } threadUpdated($thread_id); + manageLogAction(__('Approved') . ' ' . postLink('>>' . $post['id'])); $text .= manageInfo(sprintf(__('Post No.%d approved.'), $post['id'])); } else { fancyDie(__("Sorry, there doesn't appear to be a post with that ID.")); @@ -888,6 +937,7 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) stickyThreadByID($post['id'], intval($_GET['setsticky'])); threadUpdated($post['id']); + manageLogAction(intval($_GET['setsticky']) == 1 ? __('Stickied') : __('Unstickied') . ' ' . postLink('>>' . $post['id'])); $text .= manageInfo('Thread No.' . $post['id'] . ' ' . (intval($_GET['setsticky']) == 1 ? 'stickied' : 'un-stickied') . '.'); } else { fancyDie(__("Sorry, there doesn't appear to be a post with that ID.")); @@ -902,6 +952,7 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) lockThreadByID($post['id'], intval($_GET['setlock'])); threadUpdated($post['id']); + manageLogAction(intval($_GET['setlock']) == 1 ? __('Locked') : __('Unlocked') . ' ' . postLink('>>' . $post['id'])); $text .= manageInfo('Thread No.' . $post['id'] . ' ' . (intval($_GET['setlock']) == 1 ? 'locked' : 'unlocked') . '.'); } else { fancyDie(__("Sorry, there doesn't appear to be a post with that ID.")); @@ -915,6 +966,7 @@ if (!isset($_GET['delete']) && !isset($_GET['manage']) && (isset($_POST['name']) if ($post) { deleteReportsByPost($post['id']); + manageLogAction(sprintf(__('Cleared reports for post %s'), postLink('>>' . $post['id']))); $text .= manageInfo(__('Reports cleared.')); } else { fancyDie(__("Sorry, there doesn't appear to be a post with that ID.")); diff --git a/inc/database/flatfile.php b/inc/database/flatfile.php index 246faba..9c45dfa 100644 --- a/inc/database/flatfile.php +++ b/inc/database/flatfile.php @@ -179,8 +179,8 @@ function deleteKeyword($id) { } // Log functions -function allLogs() { - $rows = $GLOBALS['db']->selectWhere(LOGS_FILE, NULL, -1, new OrderBy(LOG_ID, DESCENDING, INTEGER_COMPARISON)); +function getLogs($offset, $limit) { + $rows = $GLOBALS['db']->selectWhere(LOGS_FILE, NULL, array(intval($offset), intval($offset)+intval($limit)), new OrderBy(LOG_TIMESTAMP, DESCENDING, INTEGER_COMPARISON)); return convertLogsToSQLStyle($rows); } @@ -211,10 +211,6 @@ function insertLog($l) { $GLOBALS['db']->insertWithAutoId(LOGS_FILE, LOG_ID, $log); } -function deleteLog($id) { - $GLOBALS['db']->deleteWhere(LOGS_FILE, new SimpleWhereClause(LOG_ID, '=', $id, INTEGER_COMPARISON)); -} - // Post functions function uniquePosts() { return 0; // Unsupported by this database option diff --git a/inc/database/mysql.php b/inc/database/mysql.php index c9abc90..70f5610 100644 --- a/inc/database/mysql.php +++ b/inc/database/mysql.php @@ -44,6 +44,111 @@ function deleteAccountByID($id) { mysql_query("DELETE FROM `" . TINYIB_DBACCOUNTS . "` WHERE `id` = '" . mysql_real_escape_string($id) . "'"); } +// Ban functions +function banByID($id) { + $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `id` = '" . mysql_real_escape_string($id) . "' LIMIT 1"); + if ($result) { + while ($ban = mysql_fetch_assoc($result)) { + return $ban; + } + } +} + +function banByIP($ip) { + $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `ip` = '" . mysql_real_escape_string($ip) . "' OR `ip` = '" . mysql_real_escape_string(hashData($ip)) . "' LIMIT 1"); + if ($result) { + while ($ban = mysql_fetch_assoc($result)) { + return $ban; + } + } +} + +function allBans() { + $bans = array(); + $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` ORDER BY `timestamp` DESC"); + if ($result) { + while ($ban = mysql_fetch_assoc($result)) { + $bans[] = $ban; + } + } + return $bans; +} + +function insertBan($ban) { + mysql_query("INSERT INTO `" . TINYIB_DBBANS . "` (`ip`, `timestamp`, `expire`, `reason`) VALUES ('" . mysql_real_escape_string(hashData($ban['ip'])) . "', " . time() . ", '" . mysql_real_escape_string($ban['expire']) . "', '" . mysql_real_escape_string($ban['reason']) . "')"); + return mysql_insert_id(); +} + +function clearExpiredBans() { + $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `expire` > 0 AND `expire` <= " . time()); + if ($result) { + while ($ban = mysql_fetch_assoc($result)) { + mysql_query("DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . $ban['id'] . " LIMIT 1"); + } + } +} + +function deleteBanByID($id) { + mysql_query("DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . mysql_real_escape_string($id) . " LIMIT 1"); +} + +// Keyword functions +function keywordByID($id) { + $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysql_real_escape_string($id) . "' LIMIT 1"); + if ($result) { + while ($keyword = mysql_fetch_assoc($result)) { + return $keyword; + } + } +} + +function keywordByText($text) { + $text = strtolower($text); + $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `text` = '" . mysql_real_escape_string($text) . "'"); + if ($result) { + while ($keyword = mysql_fetch_assoc($result)) { + return $keyword; + } + } + return array(); +} + +function allKeywords() { + $keywords = array(); + $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` ORDER BY `text` ASC"); + if ($result) { + while ($keyword = mysql_fetch_assoc($result)) { + $keywords[] = $keyword; + } + } + return $keywords; +} + +function insertKeyword($keyword) { + $keyword['text'] = strtolower($keyword['text']); + mysql_query("INSERT INTO `" . TINYIB_DBKEYWORDS . "` (`text`, `action`) VALUES ('" . mysql_real_escape_string($keyword['text']) . "', '" . mysql_real_escape_string($keyword['action']) . "')"); +} + +function deleteKeyword($id) { + mysql_query("DELETE FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = " . mysql_real_escape_string($id)); +} + +// Log functions +function getLogs($offset, $limit) { + $logs = array(); + $result = mysql_query("SELECT * FROM `" . TINYIB_DBLOGS . "` ORDER BY `timestamp` DESC LIMIT " . intval($offset) . ", " . intval($limit)); + if ($result) { + while ($log = mysql_fetch_assoc($result)) { + $logs[] = $log; + } + } + return $logs; +} + +function insertLog($log) { + mysql_query("INSERT INTO `" . TINYIB_DBLOGS . "` (`timestamp`, `account`, `message`) VALUES ('" . mysql_real_escape_string($log['timestamp']) . "', '" . mysql_real_escape_string($log['account']) . "', '" . mysql_real_escape_string($log['message']) . "')"); +} + // Post functions function uniquePosts() { $row = mysql_fetch_row(mysql_query("SELECT COUNT(DISTINCT(`ip`)) FROM " . TINYIB_DBPOSTS)); @@ -171,54 +276,6 @@ function lastPostByIP() { } } -// Ban functions -function banByID($id) { - $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `id` = '" . mysql_real_escape_string($id) . "' LIMIT 1"); - if ($result) { - while ($ban = mysql_fetch_assoc($result)) { - return $ban; - } - } -} - -function banByIP($ip) { - $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `ip` = '" . mysql_real_escape_string($ip) . "' OR `ip` = '" . mysql_real_escape_string(hashData($ip)) . "' LIMIT 1"); - if ($result) { - while ($ban = mysql_fetch_assoc($result)) { - return $ban; - } - } -} - -function allBans() { - $bans = array(); - $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` ORDER BY `timestamp` DESC"); - if ($result) { - while ($ban = mysql_fetch_assoc($result)) { - $bans[] = $ban; - } - } - return $bans; -} - -function insertBan($ban) { - mysql_query("INSERT INTO `" . TINYIB_DBBANS . "` (`ip`, `timestamp`, `expire`, `reason`) VALUES ('" . mysql_real_escape_string(hashData($ban['ip'])) . "', " . time() . ", '" . mysql_real_escape_string($ban['expire']) . "', '" . mysql_real_escape_string($ban['reason']) . "')"); - return mysql_insert_id(); -} - -function clearExpiredBans() { - $result = mysql_query("SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `expire` > 0 AND `expire` <= " . time()); - if ($result) { - while ($ban = mysql_fetch_assoc($result)) { - mysql_query("DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . $ban['id'] . " LIMIT 1"); - } - } -} - -function deleteBanByID($id) { - mysql_query("DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . mysql_real_escape_string($id) . " LIMIT 1"); -} - // Report functions function reportByIP($post, $ip) { $result = mysql_query("SELECT * FROM `" . TINYIB_DBREPORTS . "` WHERE `post` = '" . mysql_real_escape_string($post) . "' AND (`ip` = '" . mysql_real_escape_string($ip) . "' OR `ip` = '" . mysql_real_escape_string(hashData($ip)) . "') LIMIT 1"); @@ -262,44 +319,3 @@ function deleteReportsByPost($post) { function deleteReportsByIP($ip) { mysql_query("DELETE FROM `" . TINYIB_DBREPORTS . "` WHERE `ip` = " . mysql_real_escape_string($ip) . " OR `ip` = " . mysql_real_escape_string(hashData($ip))); } - -// Keyword functions -function keywordByID($id) { - $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysql_real_escape_string($id) . "' LIMIT 1"); - if ($result) { - while ($keyword = mysql_fetch_assoc($result)) { - return $keyword; - } - } -} - -function keywordByText($text) { - $text = strtolower($text); - $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `text` = '" . mysql_real_escape_string($text) . "'"); - if ($result) { - while ($keyword = mysql_fetch_assoc($result)) { - return $keyword; - } - } - return array(); -} - -function allKeywords() { - $keywords = array(); - $result = mysql_query("SELECT * FROM `" . TINYIB_DBKEYWORDS . "` ORDER BY `text` ASC"); - if ($result) { - while ($keyword = mysql_fetch_assoc($result)) { - $keywords[] = $keyword; - } - } - return $keywords; -} - -function insertKeyword($keyword) { - $keyword['text'] = strtolower($keyword['text']); - mysql_query("INSERT INTO `" . TINYIB_DBKEYWORDS . "` (`text`, `action`) VALUES ('" . mysql_real_escape_string($keyword['text']) . "', '" . mysql_real_escape_string($keyword['action']) . "')"); -} - -function deleteKeyword($id) { - mysql_query("DELETE FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = " . mysql_real_escape_string($id)); -} diff --git a/inc/database/mysqli.php b/inc/database/mysqli.php index a24e670..50c9f76 100644 --- a/inc/database/mysqli.php +++ b/inc/database/mysqli.php @@ -52,6 +52,125 @@ function deleteAccountByID($id) { mysqli_query($link, "DELETE FROM `" . TINYIB_DBACCOUNTS . "` WHERE `id` = " . mysqli_real_escape_string($link, $id) . " LIMIT 1"); } +// Ban functions +function banByID($id) { + global $link; + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "' LIMIT 1"); + if ($result) { + while ($ban = mysqli_fetch_assoc($result)) { + return $ban; + } + } +} + +function banByIP($ip) { + global $link; + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `ip` = '" . mysqli_real_escape_string($link, $ip) . "' OR `ip` = '" . mysqli_real_escape_string($link, hashData($ip)) . "' LIMIT 1"); + if ($result) { + while ($ban = mysqli_fetch_assoc($result)) { + return $ban; + } + } +} + +function allBans() { + global $link; + $bans = array(); + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` ORDER BY `timestamp` DESC"); + if ($result) { + while ($ban = mysqli_fetch_assoc($result)) { + $bans[] = $ban; + } + } + return $bans; +} + +function insertBan($ban) { + global $link; + mysqli_query($link, "INSERT INTO `" . TINYIB_DBBANS . "` (`ip`, `timestamp`, `expire`, `reason`) VALUES ('" . mysqli_real_escape_string($link, hashData($ban['ip'])) . "', '" . time() . "', '" . mysqli_real_escape_string($link, $ban['expire']) . "', '" . mysqli_real_escape_string($link, $ban['reason']) . "')"); + return mysqli_insert_id($link); +} + +function clearExpiredBans() { + global $link; + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `expire` > 0 AND `expire` <= " . time()); + if ($result) { + while ($ban = mysqli_fetch_assoc($result)) { + mysqli_query($link, "DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . $ban['id'] . " LIMIT 1"); + } + } +} + +function deleteBanByID($id) { + global $link; + mysqli_query($link, "DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . mysqli_real_escape_string($link, $id) . " LIMIT 1"); +} + +// Keyword functions +function keywordByID($id) { + global $link; + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "' LIMIT 1"); + if ($result) { + while ($keyword = mysqli_fetch_assoc($result)) { + return $keyword; + } + } + return array(); +} + +function keywordByText($text) { + global $link; + $text = strtolower($text); + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `text` = '" . mysqli_real_escape_string($link, $text) . "'"); + if ($result) { + while ($keyword = mysqli_fetch_assoc($result)) { + return $keyword; + } + } + return array(); +} + +function allKeywords() { + global $link; + $keywords = array(); + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` ORDER BY `text` ASC"); + if ($result) { + while ($keyword = mysqli_fetch_assoc($result)) { + $keywords[] = $keyword; + } + } + return $keywords; +} + +function insertKeyword($keyword) { + global $link; + $keyword['text'] = strtolower($keyword['text']); + mysqli_query($link, "INSERT INTO `" . TINYIB_DBKEYWORDS . "` (`text`, `action`) VALUES ('" . mysqli_real_escape_string($link, $keyword['text']) . "', '" . mysqli_real_escape_string($link, $keyword['action']) . "')"); +} + +function deleteKeyword($id) { + global $link; + mysqli_query($link, "DELETE FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "'"); +} + +// Log functions +function getLogs($offset, $limit) { + global $link; + $logs = array(); + $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBLOGS . "` ORDER BY `timestamp` DESC LIMIT " . intval($offset) . ", " . intval($limit)); + if ($result) { + while ($log = mysqli_fetch_assoc($result)) { + $logs[] = $log; + } + } + return $logs; +} + +function insertLog($log) { + global $link; + mysqli_query($link, "INSERT INTO `" . TINYIB_DBLOGS . "` (`timestamp`, `account`, `message`) VALUES ('" . mysqli_real_escape_string($link, $log['timestamp']) . "', '" . mysqli_real_escape_string($link, $log['account']) . "', '" . mysqli_real_escape_string($link, $log['message']) . "')"); +} + // Post functions function uniquePosts() { global $link; @@ -196,60 +315,6 @@ function lastPostByIP() { } } -// Ban functions -function banByID($id) { - global $link; - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "' LIMIT 1"); - if ($result) { - while ($ban = mysqli_fetch_assoc($result)) { - return $ban; - } - } -} - -function banByIP($ip) { - global $link; - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `ip` = '" . mysqli_real_escape_string($link, $ip) . "' OR `ip` = '" . mysqli_real_escape_string($link, hashData($ip)) . "' LIMIT 1"); - if ($result) { - while ($ban = mysqli_fetch_assoc($result)) { - return $ban; - } - } -} - -function allBans() { - global $link; - $bans = array(); - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` ORDER BY `timestamp` DESC"); - if ($result) { - while ($ban = mysqli_fetch_assoc($result)) { - $bans[] = $ban; - } - } - return $bans; -} - -function insertBan($ban) { - global $link; - mysqli_query($link, "INSERT INTO `" . TINYIB_DBBANS . "` (`ip`, `timestamp`, `expire`, `reason`) VALUES ('" . mysqli_real_escape_string($link, hashData($ban['ip'])) . "', '" . time() . "', '" . mysqli_real_escape_string($link, $ban['expire']) . "', '" . mysqli_real_escape_string($link, $ban['reason']) . "')"); - return mysqli_insert_id($link); -} - -function clearExpiredBans() { - global $link; - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBBANS . "` WHERE `expire` > 0 AND `expire` <= " . time()); - if ($result) { - while ($ban = mysqli_fetch_assoc($result)) { - mysqli_query($link, "DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . $ban['id'] . " LIMIT 1"); - } - } -} - -function deleteBanByID($id) { - global $link; - mysqli_query($link, "DELETE FROM `" . TINYIB_DBBANS . "` WHERE `id` = " . mysqli_real_escape_string($link, $id) . " LIMIT 1"); -} - // Report functions function reportByIP($post, $ip) { global $link; @@ -300,53 +365,6 @@ function deleteReportsByIP($ip) { mysqli_query($link, "DELETE FROM `" . TINYIB_DBREPORTS . "` WHERE `ip` = '" . mysqli_real_escape_string($link, $ip) . "' OR `ip` = '" . mysqli_real_escape_string($link, hashData($ip)) . "'"); } -// Keyword functions -function keywordByID($id) { - global $link; - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "' LIMIT 1"); - if ($result) { - while ($keyword = mysqli_fetch_assoc($result)) { - return $keyword; - } - } - return array(); -} - -function keywordByText($text) { - global $link; - $text = strtolower($text); - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` WHERE `text` = '" . mysqli_real_escape_string($link, $text) . "'"); - if ($result) { - while ($keyword = mysqli_fetch_assoc($result)) { - return $keyword; - } - } - return array(); -} - -function allKeywords() { - global $link; - $keywords = array(); - $result = mysqli_query($link, "SELECT * FROM `" . TINYIB_DBKEYWORDS . "` ORDER BY `text` ASC"); - if ($result) { - while ($keyword = mysqli_fetch_assoc($result)) { - $keywords[] = $keyword; - } - } - return $keywords; -} - -function insertKeyword($keyword) { - global $link; - $keyword['text'] = strtolower($keyword['text']); - mysqli_query($link, "INSERT INTO `" . TINYIB_DBKEYWORDS . "` (`text`, `action`) VALUES ('" . mysqli_real_escape_string($link, $keyword['text']) . "', '" . mysqli_real_escape_string($link, $keyword['action']) . "')"); -} - -function deleteKeyword($id) { - global $link; - mysqli_query($link, "DELETE FROM `" . TINYIB_DBKEYWORDS . "` WHERE `id` = '" . mysqli_real_escape_string($link, $id) . "'"); -} - // Utility functions function mysqli_result($res, $row, $field = 0) { $res->data_seek($row); diff --git a/inc/database/pdo.php b/inc/database/pdo.php index c196f69..ebf1bb6 100644 --- a/inc/database/pdo.php +++ b/inc/database/pdo.php @@ -40,6 +40,95 @@ function deleteAccountByID($id) { pdoQuery("DELETE FROM " . TINYIB_DBACCOUNTS . " WHERE id = ?", array($id)); } +// Ban functions +function banByID($id) { + $result = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " WHERE id = ?", array($id)); + return $result->fetch(PDO::FETCH_ASSOC); +} + +function banByIP($ip) { + $result = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " WHERE ip = ? OR ip = ? LIMIT 1", array($ip, hashData($ip))); + return $result->fetch(PDO::FETCH_ASSOC); +} + +function allBans() { + $bans = array(); + $results = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " ORDER BY timestamp DESC"); + while ($row = $results->fetch(PDO::FETCH_ASSOC)) { + $bans[] = $row; + } + return $bans; +} + +function insertBan($ban) { + global $dbh; + $now = time(); + $stm = $dbh->prepare("INSERT INTO " . TINYIB_DBBANS . " (ip, timestamp, expire, reason) VALUES (?, ?, ?, ?)"); + $stm->execute(array(hashData($ban['ip']), $now, $ban['expire'], $ban['reason'])); + return $dbh->lastInsertId(); +} + +function clearExpiredBans() { + $now = time(); + pdoQuery("DELETE FROM " . TINYIB_DBBANS . " WHERE expire > 0 AND expire <= ?", array($now)); +} + +function deleteBanByID($id) { + pdoQuery("DELETE FROM " . TINYIB_DBBANS . " WHERE id = ?", array($id)); +} + +// Keyword functions +function keywordByID($id) { + $result = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = ? LIMIT 1", array($id)); + return $result->fetch(PDO::FETCH_ASSOC); +} + +function keywordByText($text) { + $text = strtolower($text); + $keywords = array(); + $results = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = ?", array($text)); + while ($row = $results->fetch(PDO::FETCH_ASSOC)) { + $keywords[] = $row; + } + return $keywords; +} + +function allKeywords() { + $keywords = array(); + $results = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"); + while ($row = $results->fetch(PDO::FETCH_ASSOC)) { + $keywords[] = $row; + } + return $keywords; +} + +function insertKeyword($keyword) { + global $dbh; + $keyword['text'] = strtolower($keyword['text']); + $stm = $dbh->prepare("INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES (?, ?)"); + $stm->execute(array($keyword['text'], $keyword['action'])); +} + +function deleteKeyword($id) { + pdoQuery("DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = ?", array($id)); +} + +// Log functions +function getLogs($offset, $limit) { + $logs = array(); + $results = pdoQuery("SELECT * FROM " . TINYIB_DBLOGS . " ORDER BY timestamp DESC LIMIT " . intval($offset) . ", " . intval($limit)); + while ($row = $results->fetch(PDO::FETCH_ASSOC)) { + $logs[] = $row; + } + return $logs; +} + +function insertLog($log) { + global $dbh; + $stm = $dbh->prepare("INSERT INTO " . TINYIB_DBLOGS . " (timestamp, account, message) VALUES (?, ?, ?)"); + $stm->execute(array($log['timestamp'], $log['account'], $log['message'])); +} + // Post functions function uniquePosts() { $result = pdoQuery("SELECT COUNT(DISTINCT(ip)) FROM " . TINYIB_DBPOSTS); @@ -169,43 +258,6 @@ function lastPostByIP() { return $result->fetch(PDO::FETCH_ASSOC); } -// Ban functions -function banByID($id) { - $result = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " WHERE id = ?", array($id)); - return $result->fetch(PDO::FETCH_ASSOC); -} - -function banByIP($ip) { - $result = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " WHERE ip = ? OR ip = ? LIMIT 1", array($ip, hashData($ip))); - return $result->fetch(PDO::FETCH_ASSOC); -} - -function allBans() { - $bans = array(); - $results = pdoQuery("SELECT * FROM " . TINYIB_DBBANS . " ORDER BY timestamp DESC"); - while ($row = $results->fetch(PDO::FETCH_ASSOC)) { - $bans[] = $row; - } - return $bans; -} - -function insertBan($ban) { - global $dbh; - $now = time(); - $stm = $dbh->prepare("INSERT INTO " . TINYIB_DBBANS . " (ip, timestamp, expire, reason) VALUES (?, ?, ?, ?)"); - $stm->execute(array(hashData($ban['ip']), $now, $ban['expire'], $ban['reason'])); - return $dbh->lastInsertId(); -} - -function clearExpiredBans() { - $now = time(); - pdoQuery("DELETE FROM " . TINYIB_DBBANS . " WHERE expire > 0 AND expire <= ?", array($now)); -} - -function deleteBanByID($id) { - pdoQuery("DELETE FROM " . TINYIB_DBBANS . " WHERE id = ?", array($id)); -} - // Report functions function reportByIP($post, $ip) { $result = pdoQuery("SELECT * FROM " . TINYIB_DBREPORTS . " WHERE post = ? AND (ip = ? OR ip = ?) LIMIT 1", array($post, $ip, hashData($ip))); @@ -243,39 +295,3 @@ function deleteReportsByPost($post) { function deleteReportsByIP($ip) { pdoQuery("DELETE FROM " . TINYIB_DBREPORTS . " WHERE ip = ? OR ip = ?", array($ip, hashData($ip))); } - -// Keyword functions -function keywordByID($id) { - $result = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = ? LIMIT 1", array($id)); - return $result->fetch(PDO::FETCH_ASSOC); -} - -function keywordByText($text) { - $text = strtolower($text); - $keywords = array(); - $results = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = ?", array($text)); - while ($row = $results->fetch(PDO::FETCH_ASSOC)) { - $keywords[] = $row; - } - return $keywords; -} - -function allKeywords() { - $keywords = array(); - $results = pdoQuery("SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"); - while ($row = $results->fetch(PDO::FETCH_ASSOC)) { - $keywords[] = $row; - } - return $keywords; -} - -function insertKeyword($keyword) { - global $dbh; - $keyword['text'] = strtolower($keyword['text']); - $stm = $dbh->prepare("INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES (?, ?)"); - $stm->execute(array($keyword['text'], $keyword['action'])); -} - -function deleteKeyword($id) { - pdoQuery("DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = ?", array($id)); -} diff --git a/inc/database/sqlite.php b/inc/database/sqlite.php index a8d6e0a..b4aaafc 100644 --- a/inc/database/sqlite.php +++ b/inc/database/sqlite.php @@ -40,6 +40,96 @@ function deleteAccountByID($id) { sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBACCOUNTS . " WHERE id = " . sqlite_escape_string($id)); } +// Ban functions +function banByID($id) { + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE id = '" . sqlite_escape_string($id) . "' LIMIT 1"), SQLITE_ASSOC); + foreach ($result as $ban) { + return $ban; + } +} + +function banByIP($ip) { + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE ip = '" . sqlite_escape_string($ip) . "' OR ip = '" . sqlite_escape_string(hashData($ip)) . "' LIMIT 1"), SQLITE_ASSOC); + foreach ($result as $ban) { + return $ban; + } +} + +function allBans() { + $bans = array(); + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " ORDER BY timestamp DESC"), SQLITE_ASSOC); + foreach ($result as $ban) { + $bans[] = $ban; + } + return $bans; +} + +function insertBan($ban) { + sqlite_query($GLOBALS["db"], "INSERT INTO " . TINYIB_DBBANS . " (ip, timestamp, expire, reason) VALUES ('" . sqlite_escape_string(hashData($ban['ip'])) . "', " . time() . ", '" . sqlite_escape_string($ban['expire']) . "', '" . sqlite_escape_string($ban['reason']) . "')"); + return sqlite_last_insert_rowid($GLOBALS["db"]); +} + +function clearExpiredBans() { + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE expire > 0 AND expire <= " . time()), SQLITE_ASSOC); + foreach ($result as $ban) { + sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBBANS . " WHERE id = " . $ban['id']); + } +} + +function deleteBanByID($id) { + sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBBANS . " WHERE id = " . sqlite_escape_string($id)); +} + +// Keyword functions +function keywordByID($id) { + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = '" . sqlite_escape_string($id) . "' LIMIT 1"), SQLITE_ASSOC); + foreach ($result as $keyword) { + return $keyword; + } + return array(); +} + +function keywordByText($text) { + $text = strtolower($text); + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = '" . sqlite_escape_string($text) . "'"), SQLITE_ASSOC); + foreach ($result as $keyword) { + return $keyword; + } + return array(); +} + +function allKeywords() { + $keywords = array(); + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"), SQLITE_ASSOC); + foreach ($result as $keyword) { + $keywords[] = $keyword; + } + return $keywords; +} + +function insertKeyword($keyword) { + $keyword['text'] = strtolower($keyword['text']); + sqlite_query($GLOBALS["db"], "INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES ('" . sqlite_escape_string($keyword['text']) . "', '" . sqlite_escape_string($keyword['action']) . "')"); +} + +function deleteKeyword($id) { + sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = " . sqlite_escape_string($id)); +} + +// Log functions +function getLogs($offset, $limit) { + $logs = array(); + $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBLOGS . " ORDER BY timestamp DESC LIMIT " . intval($offset) . ", " . intval($limit)), SQLITE_ASSOC); + foreach ($result as $log) { + $logs[] = $log; + } + return $logs; +} + +function insertLog($log) { + sqlite_query($GLOBALS["db"], "INSERT INTO " . TINYIB_DBLOGS . " (timestamp, account, message) VALUES ('" . sqlite_escape_string($log['timestamp']) . "', '" . sqlite_escape_string($log['account']) . "', '" . sqlite_escape_string($log['message']) . "')"); +} + // Post functions function uniquePosts() { return sqlite_fetch_single(sqlite_query($GLOBALS["db"], "SELECT COUNT(ip) FROM (SELECT DISTINCT ip FROM " . TINYIB_DBPOSTS . ")")); @@ -152,46 +242,6 @@ function lastPostByIP() { } } -// Ban functions -function banByID($id) { - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE id = '" . sqlite_escape_string($id) . "' LIMIT 1"), SQLITE_ASSOC); - foreach ($result as $ban) { - return $ban; - } -} - -function banByIP($ip) { - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE ip = '" . sqlite_escape_string($ip) . "' OR ip = '" . sqlite_escape_string(hashData($ip)) . "' LIMIT 1"), SQLITE_ASSOC); - foreach ($result as $ban) { - return $ban; - } -} - -function allBans() { - $bans = array(); - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " ORDER BY timestamp DESC"), SQLITE_ASSOC); - foreach ($result as $ban) { - $bans[] = $ban; - } - return $bans; -} - -function insertBan($ban) { - sqlite_query($GLOBALS["db"], "INSERT INTO " . TINYIB_DBBANS . " (ip, timestamp, expire, reason) VALUES ('" . sqlite_escape_string(hashData($ban['ip'])) . "', " . time() . ", '" . sqlite_escape_string($ban['expire']) . "', '" . sqlite_escape_string($ban['reason']) . "')"); - return sqlite_last_insert_rowid($GLOBALS["db"]); -} - -function clearExpiredBans() { - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBBANS . " WHERE expire > 0 AND expire <= " . time()), SQLITE_ASSOC); - foreach ($result as $ban) { - sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBBANS . " WHERE id = " . $ban['id']); - } -} - -function deleteBanByID($id) { - sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBBANS . " WHERE id = " . sqlite_escape_string($id)); -} - // Report functions function reportByIP($post, $ip) { $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBREPORTS . " WHERE post = '" . sqlite_escape_string($post) . "' AND (ip = '" . sqlite_escape_string($ip) . "' OR ip = '" . sqlite_escape_string(hashData($ip)) . "') LIMIT 1"), SQLITE_ASSOC); @@ -229,39 +279,3 @@ function deleteReportsByPost($post) { function deleteReportsByIP($ip) { sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBREPORTS . " WHERE ip = '" . sqlite_escape_string($ip) . "' OR ip = '" . sqlite_escape_string(hashData($ip)) . "'"); } - -// Keyword functions -function keywordByID($id) { - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = '" . sqlite_escape_string($id) . "' LIMIT 1"), SQLITE_ASSOC); - foreach ($result as $keyword) { - return $keyword; - } - return array(); -} - -function keywordByText($text) { - $text = strtolower($text); - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = '" . sqlite_escape_string($text) . "'"), SQLITE_ASSOC); - foreach ($result as $keyword) { - return $keyword; - } - return array(); -} - -function allKeywords() { - $keywords = array(); - $result = sqlite_fetch_all(sqlite_query($GLOBALS["db"], "SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"), SQLITE_ASSOC); - foreach ($result as $keyword) { - $keywords[] = $keyword; - } - return $keywords; -} - -function insertKeyword($keyword) { - $keyword['text'] = strtolower($keyword['text']); - sqlite_query($GLOBALS["db"], "INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES ('" . sqlite_escape_string($keyword['text']) . "', '" . sqlite_escape_string($keyword['action']) . "')"); -} - -function deleteKeyword($id) { - sqlite_query($GLOBALS["db"], "DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = " . sqlite_escape_string($id)); -} diff --git a/inc/database/sqlite3.php b/inc/database/sqlite3.php index ff49b64..00c3bc4 100644 --- a/inc/database/sqlite3.php +++ b/inc/database/sqlite3.php @@ -93,6 +93,63 @@ function deleteBanByID($id) { $db->exec("DELETE FROM " . TINYIB_DBBANS . " WHERE id = " . $db->escapeString($id)); } +// Keyword functions +function keywordByID($id) { + global $db; + $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = '" . $db->escapeString($id) . "' LIMIT 1"); + while ($keyword = $result->fetchArray()) { + return $keyword; + } + return array(); +} + +function keywordByText($text) { + global $db; + $text = strtolower($text); + $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = '" . $db->escapeString($text) . "'"); + while ($keyword = $result->fetchArray()) { + return $keyword; + } + return array(); +} + +function allKeywords() { + global $db; + $keywords = array(); + $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"); + while ($keyword = $result->fetchArray()) { + $keywords[] = $keyword; + } + return $keywords; +} + +function insertKeyword($keyword) { + global $db; + $keyword['text'] = strtolower($keyword['text']); + $db->exec("INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES ('" . $db->escapeString($keyword['text']) . "', '" . $db->escapeString($keyword['action']) . "')"); +} + +function deleteKeyword($id) { + global $db; + $db->exec("DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = " . $db->escapeString($id)); +} + +// Log functions +function getLogs($offset, $limit) { + global $db; + $logs = array(); + $result = $db->query("SELECT * FROM " . TINYIB_DBLOGS . " ORDER BY timestamp DESC LIMIT " . intval($offset) . ", " . intval($limit)); + while ($log = $result->fetchArray()) { + $logs[] = $log; + } + return $logs; +} + +function insertLog($log) { + global $db; + $db->exec("INSERT INTO " . TINYIB_DBLOGS . " (timestamp, account, message) VALUES ('" . $db->escapeString($log['timestamp']) . "', '" . $db->escapeString($log['account']) . "', '" . $db->escapeString($log['message']) . "')"); +} + // Post functions function uniquePosts() { global $db; @@ -265,44 +322,3 @@ function deleteReportsByIP($ip) { global $db; $db->exec("DELETE FROM " . TINYIB_DBREPORTS . " WHERE ip = '" . $db->escapeString($ip) . "' OR ip = '" . $db->escapeString(hashData($ip)) . "'"); } - -// Keyword functions -function keywordByID($id) { - global $db; - $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE id = '" . $db->escapeString($id) . "' LIMIT 1"); - while ($keyword = $result->fetchArray()) { - return $keyword; - } - return array(); -} - -function keywordByText($text) { - global $db; - $text = strtolower($text); - $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " WHERE text = '" . $db->escapeString($text) . "'"); - while ($keyword = $result->fetchArray()) { - return $keyword; - } - return array(); -} - -function allKeywords() { - global $db; - $keywords = array(); - $result = $db->query("SELECT * FROM " . TINYIB_DBKEYWORDS . " ORDER BY text ASC"); - while ($keyword = $result->fetchArray()) { - $keywords[] = $keyword; - } - return $keywords; -} - -function insertKeyword($keyword) { - global $db; - $keyword['text'] = strtolower($keyword['text']); - $db->exec("INSERT INTO " . TINYIB_DBKEYWORDS . " (text, action) VALUES ('" . $db->escapeString($keyword['text']) . "', '" . $db->escapeString($keyword['action']) . "')"); -} - -function deleteKeyword($id) { - global $db; - $db->exec("DELETE FROM " . TINYIB_DBKEYWORDS . " WHERE id = " . $db->escapeString($id)); -} diff --git a/inc/functions.php b/inc/functions.php index 26479c1..ea6d7c6 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -385,6 +385,20 @@ function manageCheckLogIn($requireKey) { return array($account, $loggedin, $isadmin); } +function manageLogAction($action) { + global $account; + $account_id = 0; + if (isset($account['id'])) { + $account_id = $account['id']; + } + $log = array( + 'timestamp' => time(), + 'account' => $account_id, + 'message' => $action, + ); + insertLog($log); +} + function setParent() { if (isset($_POST["parent"])) { if ($_POST["parent"] != TINYIB_NEWTHREAD) { diff --git a/inc/html.php b/inc/html.php index 70654a0..b82c831 100644 --- a/inc/html.php +++ b/inc/html.php @@ -770,18 +770,20 @@ function adminBar() { $output = '[' . __('Status') . '] ['; if ($isadmin) { - if (TINYIB_REPORT) { - $output .= '' . __('Reports') . '] ['; - } if ($account['role'] == TINYIB_SUPER_ADMINISTRATOR) { $output .= '' . __('Accounts') . '] ['; } $output .= '' . __('Bans') . '] ['; $output .= '' . __('Keywords') . '] ['; } - $output .= '' . __('Moderate Post') . '] [' . __('Raw Post') . '] ['; + $output .= '' . __('Moderate Post') . '] ['; + if ($isadmin) { + $output .= '' . __('Moderation Log') . '] ['; + } + $output .= '' . __('Raw Post') . '] ['; if ($isadmin) { $output .= '' . __('Rebuild All') . '] ['; + $output .= '' . __('Reports') . '] ['; } if ($isadmin && installedViaGit()) { $output .= '' . __('Update') . '] ['; @@ -882,6 +884,60 @@ function manageLogInForm() { EOF; } +function manageModerationLog($offset) { + $offset = intval($offset); + $limit = 50; + + $logs = getLogs($offset, $limit); + + $u = array(); + + $text = ''; + foreach ($logs as $log) { + if (!isset($u[$log['account']])) { + $username = ''; + if ($log['account'] > 0) { + $a = accountByID($log['account']); + if (!empty($a)) { + $username = $a['username']; + } + } + $u[$log['account']] = $username; + } + $text .= '' . strftime(TINYIB_DATEFMT, $log['timestamp']) . '' . htmlentities($u[$log['account']]) . '' . $log['message'] . ''; + } + + if ($text == '') { + $text = '' . __('No logs.') . ''; + } + + $txt_moderation_log = __('Moderation log'); + $nav = ''; + if ($offset > 0) { + $nav .= 'Previous 50 '; + } + if (count($logs) == $limit) { + $nav .= 'Next 50 '; + } + $nav_top = ''; + $nav_bottom = ''; + if ($nav != '') { + $nav_top = $nav . '

'; + $nav_bottom = '

' . $nav; + } + return << + $txt_moderation_log + + + $text +
Date/timeAccountAction
+ + $nav_bottom +EOF; +} + function manageReportsPage($ip) { $reports = allReports(); $report_counts = array(); @@ -965,7 +1021,7 @@ function manageChangePasswordForm() { EOF; } -function manageAccountForm($id=0) { +function manageAccountForm($id = 0) { $a = array( 'id' => 0, 'username' => '', @@ -974,7 +1030,7 @@ function manageAccountForm($id=0) { ); $txt_header = __('Add an account'); $txt_password_hint = ''; - if ($id > 0){ + if ($id > 0) { $txt_header = __('Update an account'); $txt_password_hint = '(' . __('Leave blank to maintain current password') . ')'; $a = accountByID($id);