Browse Source

Cache unread PM notices

pull/40/head
Michael Save 12 years ago
parent
commit
0f04117037
  1. 2
      inc/cache.php
  2. 1
      inc/config.php
  3. 25
      inc/mod/auth.php
  4. 28
      inc/mod/pages.php

2
inc/cache.php

@ -48,7 +48,7 @@ class Cache {
}
// debug
if ($data && $config['debug']) {
if ($data !== false && $config['debug']) {
$debug['cached'][] = $key;
}

1
inc/config.php

@ -38,7 +38,6 @@
$config['check_updates_time'] = 43200; // 12 hours
// Shows some extra information at the bottom of pages. Good for debugging development.
// Also experimental.
$config['debug'] = false;
// For development purposes. Turns 'display_errors' on. Not recommended for production.
$config['verbose_errors'] = true;

25
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;
}

28
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']);

Loading…
Cancel
Save