summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod.php89
1 files changed, 51 insertions, 38 deletions
diff --git a/mod.php b/mod.php
index 9b5aad4e..f7504611 100644
--- a/mod.php
+++ b/mod.php
@@ -86,52 +86,59 @@
$fieldset['Boards'] .= ulBoards();
if(hasPermission($config['mod']['noticeboard'])) {
- $query = prepare("SELECT `noticeboard`.*, `username` FROM `noticeboard` LEFT JOIN `mods` ON `mods`.`id` = `mod` ORDER BY `id` DESC LIMIT :limit");
- $query->bindValue(':limit', $config['mod']['noticeboard_dashboard'], PDO::PARAM_INT);
- $query->execute() or error(db_error($query));
+ if(!$config['cache']['enabled'] || !($fieldset['Noticeboard'] = cache::get('noticeboard_preview'))) {
- $fieldset['Noticeboard'] .= '<li>';
+ $query = prepare("SELECT `noticeboard`.*, `username` FROM `noticeboard` LEFT JOIN `mods` ON `mods`.`id` = `mod` ORDER BY `id` DESC LIMIT :limit");
+ $query->bindValue(':limit', $config['mod']['noticeboard_dashboard'], PDO::PARAM_INT);
+ $query->execute() or error(db_error($query));
- $_body = '';
- while($notice = $query->fetch()) {
- $_body .= '<li><a href="?/noticeboard#' .
- $notice['id'] .
- '">' .
- ($notice['subject'] ?
- $notice['subject']
- :
- '<em>' . _('no subject') . '</em>'
- ) .
- '</a><span class="unimportant"> &mdash; by ' .
- (isset($notice['username']) ?
- utf8tohtml($notice['username'])
- : '<em>???</em>') .
- ' at ' .
- strftime($config['post_date'], $notice['time']) .
- '</span></li>';
- }
- if(!empty($_body)) {
- $fieldset['Noticeboard'] .= '<ul>' . $_body . '</ul></li><li>';
- }
+ $fieldset['Noticeboard'] .= '<li>';
+
+ $_body = '';
+ while($notice = $query->fetch()) {
+ $_body .= '<li><a href="?/noticeboard#' .
+ $notice['id'] .
+ '">' .
+ ($notice['subject'] ?
+ $notice['subject']
+ :
+ '<em>' . _('no subject') . '</em>'
+ ) .
+ '</a><span class="unimportant"> &mdash; by ' .
+ (isset($notice['username']) ?
+ utf8tohtml($notice['username'])
+ : '<em>???</em>') .
+ ' at ' .
+ strftime($config['post_date'], $notice['time']) .
+ '</span></li>';
+ }
+ if(!empty($_body)) {
+ $fieldset['Noticeboard'] .= '<ul>' . $_body . '</ul></li><li>';
+ }
- $fieldset['Noticeboard'] .= '<a href="?/noticeboard">' . _('View all entires') . '</a></li>';
+ $fieldset['Noticeboard'] .= '<a href="?/noticeboard">' . _('View all entires') . '</a></li>';
- $query = prepare("SELECT COUNT(*) AS `count` FROM `pms` WHERE `to` = :id AND `unread` = 1");
- $query->bindValue(':id', $mod['id']);
- $query->execute() or error(db_error($query));
- $count = $query->fetch();
- $count = $count['count'];
+ $query = prepare("SELECT COUNT(*) AS `count` FROM `pms` WHERE `to` = :id AND `unread` = 1");
+ $query->bindValue(':id', $mod['id']);
+ $query->execute() or error(db_error($query));
+ $count = $query->fetch();
+ $count = $count['count'];
- $fieldset['Noticeboard'] .= '<li><a href="?/inbox">' . _('PM Inbox') .
- ($count > 0
- ?
- ' <strong>(' . $count . ' unread)</strong>'
- : '') .
- '</a></li>';
+ $fieldset['Noticeboard'] .= '<li><a href="?/inbox">' . _('PM Inbox') .
+ ($count > 0
+ ?
+ ' <strong>(' . $count . ' unread)</strong>'
+ : '') .
+ '</a></li>';
+
+ $fieldset['Noticeboard'] .= '<li><a href="?/news">' . _('News') . '</a></li>';
- $fieldset['Noticeboard'] .= '<li><a href="?/news">' . _('News') . '</a></li>';
+ if($config['cache']['enabled'])
+ cache::set('noticeboard_preview', $fieldset['Noticeboard']);
+ }
}
+
if(hasPermission($config['mod']['reports'])) {
$fieldset['Administration'] .= '<li><a href="?/reports">' . _('Report queue') . '</a></li>';
}
@@ -543,6 +550,9 @@
$query->bindValue(':id', $match[1], PDO::PARAM_INT);
$query->execute() or error(db_error($query));
+ if($config['cache']['enabled'])
+ cache::delete('noticeboard_preview');
+
header('Location: ?/noticeboard', true, $config['redirect_http']);
} elseif(preg_match('/^\/noticeboard$/', $query)) {
if(!hasPermission($config['mod']['noticeboard'])) error($config['error']['noaccess']);
@@ -559,6 +569,9 @@
$query->bindValue(':body', $_POST['body']);
$query->execute() or error(db_error($query));
+ if($config['cache']['enabled'])
+ cache::delete('noticeboard_preview');
+
header('Location: ?/noticeboard#' . $pdo->lastInsertId(), true, $config['redirect_http']);
} else {