summaryrefslogtreecommitdiff
path: root/inc/mod
diff options
context:
space:
mode:
authorMichael Save <savetheinternet@tinyboard.org>2012-05-20 19:06:27 +1000
committerMichael Save <savetheinternet@tinyboard.org>2012-05-20 19:06:27 +1000
commit0f041170372b9dfcba7645d8b05066867c0d3f75 (patch)
treeb83c43c97b59fba50fc7e9e042fefdb23f6a90e3 /inc/mod
parentd6a1f16555376fc4b57a572e21758a400db8852a (diff)
Cache unread PM notices
Diffstat (limited to 'inc/mod')
-rw-r--r--inc/mod/auth.php25
-rw-r--r--inc/mod/pages.php28
2 files changed, 44 insertions, 9 deletions
diff --git a/inc/mod/auth.php b/inc/mod/auth.php
index f9b863c8..d200c23f 100644
--- a/inc/mod/auth.php
+++ b/inc/mod/auth.php
@@ -123,15 +123,30 @@ if (isset($_COOKIE[$config['cookies']['mod']])) {
}
function create_pm_header() {
- global $mod;
+ global $mod, $config;
+
+ if ($config['cache']['enabled'] && ($header = cache::get('pm_unread_' . $mod['id'])) !== false) {
+ if ($header === true)
+ return false;
+
+ return $header;
+ }
+
$query = prepare("SELECT `id` FROM `pms` WHERE `to` = :id AND `unread` = 1");
$query->bindValue(':id', $mod['id'], PDO::PARAM_INT);
$query->execute() or error(db_error($query));
- if ($pm = $query->fetch()) {
- return Array('id' => $pm['id'], 'waiting' => $query->rowCount() - 1);
- }
+ if ($pm = $query->fetch())
+ $header = Array('id' => $pm['id'], 'waiting' => $query->rowCount() - 1);
+ else
+ $header = true;
+
+ if ($config['cache']['enabled'])
+ cache::set('pm_unread_' . $mod['id'], $header);
+
+ if ($header === true)
+ return false;
- return false;
+ return $header;
}
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index 6c79e21f..6b644867 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -88,10 +88,15 @@ function mod_dashboard() {
}
}
- $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :id AND `unread` = 1');
- $query->bindValue(':id', $mod['id']);
- $query->execute() or error(db_error($query));
- $args['unread_pms'] = $query->fetchColumn(0);
+ if (!$config['cache']['enabled'] || ($args['unread_pms'] = cache::get('pm_unreadcount_' . $mod['id'])) === false) {
+ $query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :id AND `unread` = 1');
+ $query->bindValue(':id', $mod['id']);
+ $query->execute() or error(db_error($query));
+ $args['unread_pms'] = $query->fetchColumn(0);
+
+ if ($config['cache']['enabled'])
+ cache::set('pm_unreadcount_' . $mod['id'], $args['unread_pms']);
+ }
if ($mod['type'] >= ADMIN && $config['check_updates']) {
if (!$config['version'])
@@ -1247,6 +1252,11 @@ function mod_pm($id, $reply = false) {
$query->bindValue(':id', $id);
$query->execute() or error(db_error($query));
+ if ($config['cache']['enabled']) {
+ cache::delete('pm_unread_' . $mod['id']);
+ cache::delete('pm_unreadcount_' . $mod['id']);
+ }
+
header('Location: ?/', true, $config['redirect_http']);
return;
}
@@ -1256,6 +1266,11 @@ function mod_pm($id, $reply = false) {
$query->bindValue(':id', $id);
$query->execute() or error(db_error($query));
+ if ($config['cache']['enabled']) {
+ cache::delete('pm_unread_' . $mod['id']);
+ cache::delete('pm_unreadcount_' . $mod['id']);
+ }
+
modLog('Read a PM');
}
@@ -1325,6 +1340,11 @@ function mod_new_pm($username) {
$query->bindValue(':time', time());
$query->execute() or error(db_error($query));
+ if ($config['cache']['enabled']) {
+ cache::delete('pm_unread_' . $id);
+ cache::delete('pm_unreadcount_' . $id);
+ }
+
modLog('Sent a PM to ' . utf8tohtml($username));
header('Location: ?/', true, $config['redirect_http']);