summaryrefslogtreecommitdiff
path: root/inc/mod/pages.php
diff options
context:
space:
mode:
authorMichael Save <savetheinternet@tinyboard.org>2012-04-14 22:58:36 +1000
committerMichael Save <savetheinternet@tinyboard.org>2012-04-14 22:58:36 +1000
commitde8cc487d81e7cb9a00acee30962aa1933c0c0c6 (patch)
tree54db8a86d01daf1cd604443f3af3de3225ce9e8a /inc/mod/pages.php
parent87281687ed3ed06fd76d7bbb6c29404bb883418a (diff)
rebuild
Diffstat (limited to 'inc/mod/pages.php')
-rw-r--r--inc/mod/pages.php62
1 files changed, 55 insertions, 7 deletions
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index d78ebf0d..d8352671 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -117,6 +117,9 @@ function mod_view_thread($boardName, $thread) {
function mod_ip_remove_note($ip, $id) {
global $config, $mod;
+ if (!hasPermission($config['mod']['remove_notes']))
+ error($config['error']['noaccess']);
+
if (filter_var($ip, FILTER_VALIDATE_IP) === false)
error("Invalid IP address.");
@@ -135,6 +138,9 @@ function mod_page_ip($ip) {
error("Invalid IP address.");
if (isset($_POST['ban_id'], $_POST['unban'])) {
+ if (!hasPermission($config['mod']['unban']))
+ error($config['error']['noaccess']);
+
require_once 'inc/mod/ban.php';
unban($_POST['ban_id']);
@@ -143,12 +149,8 @@ function mod_page_ip($ip) {
}
if (isset($_POST['note'])) {
- if (hasPermission($config['mod']['create_notes'])) {
- $query = prepare("SELECT `bans`.*, `username` FROM `bans` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `ip` = :ip");
- $query->bindValue(':ip', $ip);
- $query->execute() or error(db_error($query));
- $args['bans'] = $query->fetchAll(PDO::FETCH_ASSOC);
- }
+ if (!hasPermission($config['mod']['create_notes']))
+ error($config['error']['noaccess']);
markup($_POST['note']);
$query = prepare('INSERT INTO `ip_notes` VALUES (NULL, :ip, :mod, :time, :body)');
@@ -328,11 +330,57 @@ function mod_new_pm($username) {
}
function mod_rebuild() {
- global $config;
+ global $config, $twig;
if (!hasPermission($config['mod']['rebuild']))
error($config['error']['noaccess']);
+ if (isset($_POST['rebuild'])) {
+ $log = array();
+ $boards = listBoards();
+ $rebuilt_scripts = array();
+
+ if (isset($_POST['rebuild_cache'])) {
+ $log[] = 'Clearing template cache';
+ load_twig();
+ $twig->clearCacheFiles();
+ }
+
+ if (isset($_POST['rebuild_themes'])) {
+ $log[] = 'Regenerating theme files';
+ rebuildThemes('all');
+ }
+
+ if (isset($_POST['rebuild_javascript'])) {
+ $log[] = 'Rebuilding <strong>' . $config['file_script'] . '</strong>';
+ buildJavascript();
+ $rebuilt_scripts[] = $config['file_script'];
+ }
+
+ foreach ($boards as $board) {
+ if (!(isset($_POST['boards_all']) || isset($_POST['boards_' . $board['uri']])))
+ continue;
+
+ openBoard($board['uri']);
+ $log[] = '<strong>' . sprintf($config['board_abbreviation'], $board['uri']) . '</strong>: Creating index pages';
+
+ if (!in_array($config['file_script'], $rebuilt_scripts)) {
+ $log[] = '<strong>' . sprintf($config['board_abbreviation'], $board['uri']) . '</strong>: Rebuilding <strong>' . $config['file_script'] . '</strong>';
+ buildJavascript();
+ $rebuilt_scripts[] = $config['file_script'];
+ }
+
+ $query = query(sprintf("SELECT `id` FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error());
+ while($post = $query->fetch()) {
+ $log[] = '<strong>' . sprintf($config['board_abbreviation'], $board['uri']) . '</strong>: Rebuilding thread #' . $post['id'];
+ buildThread($post['id']);
+ }
+ }
+
+ mod_page("Rebuild", 'mod/rebuilt.html', array('logs' => $log));
+ return;
+ }
+
mod_page("Rebuild", 'mod/rebuild.html', array('boards' => listBoards()));
}