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 .= '
Date/time | Account | Action |
---|