summaryrefslogtreecommitdiff
path: root/mod.php
diff options
context:
space:
mode:
authorMichael Save <savetheinternet@tinyboard.org>2012-01-09 10:42:03 +1100
committerMichael Save <savetheinternet@tinyboard.org>2012-01-09 10:42:03 +1100
commit7110deb0913be197e85c5594ebd2e92481b7a8d7 (patch)
tree023eca2470e56bc1606cdcf679a2f13fdc5b343e /mod.php
parent9ff35f9bc5e5df8e9046d2ff9cd8eb48cddba8d1 (diff)
cache to minimize SQL queries in modlog
Diffstat (limited to 'mod.php')
-rw-r--r--mod.php41
1 files changed, 25 insertions, 16 deletions
diff --git a/mod.php b/mod.php
index 7e6f1f1f..5470ed87 100644
--- a/mod.php
+++ b/mod.php
@@ -296,24 +296,33 @@
'<th>' . _('Action') . '</th>' .
'</tr>';
while($log = $query->fetch()) {
- $log['text'] = utf8tohtml($log['text']);
- $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '<a href="?/IP/$1">$1</a>', $log['text']);
+ $log_id = 'log_' . md5($log['text']);
- if(isset($boards[$log['board']])) {
- if(preg_match('/post #(\d+)/', $log['text'], $match)) {
- $post_query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $boards[$log['board']]));
- $post_query->bindValue(':id', $match[1], PDO::PARAM_INT);
- $post_query->execute() or error(db_error($query));
+ if($_log = cache::get($log_id))
+ $log['text'] = $_log;
+ else {
+
+ $log['text'] = utf8tohtml($log['text']);
+ $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '<a href="?/IP/$1">$1</a>', $log['text']);
+
+ if(isset($boards[$log['board']])) {
+ if(preg_match('/post #(\d+)/', $log['text'], $match)) {
+ $post_query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $boards[$log['board']]));
+ $post_query->bindValue(':id', $match[1], PDO::PARAM_INT);
+ $post_query->execute() or error(db_error($query));
- if($post = $post_query->fetch()) {
- $log['text'] = preg_replace('/post #(\d+)/', '<a href="' .
- '?/' .
- sprintf($config['board_path'], $boards[$log['board']]) .
- $config['dir']['res'] .
- ($post['thread'] ?
- sprintf($config['file_page'], $post['thread']) . '#' . $match[1]
- : sprintf($config['file_page'], $match[1])) .
- '">$0</a>', $log['text']);
+ if($post = $post_query->fetch()) {
+ $log['text'] = preg_replace('/post #(\d+)/', '<a href="' .
+ '?/' .
+ sprintf($config['board_path'], $boards[$log['board']]) .
+ $config['dir']['res'] .
+ ($post['thread'] ?
+ sprintf($config['file_page'], $post['thread']) . '#' . $match[1]
+ : sprintf($config['file_page'], $match[1])) .
+ '">$0</a>', $log['text']);
+
+ cache::set($log_id, $log['text']);
+ }
}
}
}