From eadeb6669e86338bd7feb3cba16f1bdd2e5cc85d Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 8 Jul 2011 23:03:12 +1000 Subject: [PATCH] wildcard option ("*") for per-board mods --- inc/config.php | 2 +- inc/mod.php | 7 ++-- install.php | 1 + install.sql | 4 +-- mod.php | 94 +++++++++++++++++++++++++++++--------------------- 5 files changed, 63 insertions(+), 45 deletions(-) diff --git a/inc/config.php b/inc/config.php index ca3aec91..03571a92 100644 --- a/inc/config.php +++ b/inc/config.php @@ -371,7 +371,7 @@ // What level of administration you need to: // Don't worry about per-board moderators. Let all mods moderate any board. - $config['mod']['skip_per_board'] = true; + $config['mod']['skip_per_board'] = true; /* Post Controls */ // View IP addresses diff --git a/inc/mod.php b/inc/mod.php index 3b85d50a..a764cfbc 100644 --- a/inc/mod.php +++ b/inc/mod.php @@ -24,8 +24,11 @@ if(isset($action) && $mod['type'] < $action) return false; - - if(isset($board) && !$config['mod']['skip_per_board'] && !in_array($board, $mod['boards'])) + + if(!isset($board)) + return true; + + if(!$config['mod']['skip_per_board'] && !in_array('*', $mod['boards']) && !in_array($board, $mod['boards'])) return false; return true; diff --git a/install.php b/install.php index d9aafd2f..8f91f6f0 100644 --- a/install.php +++ b/install.php @@ -75,6 +75,7 @@ query("ALTER TABLE `theme_settings` DROP INDEX `name`") or error(db_error()); case 'v0.9.3-dev-1': query("ALTER TABLE `mods` ADD `boards` TEXT NOT NULL") or error(db_error()); + query("UPDATE `mods` SET `boards` = '*'") or error(db_error()); case false: // Update version number file_write($config['has_installed'], VERSION); diff --git a/install.sql b/install.sql index 864d911c..6d29565b 100644 --- a/install.sql +++ b/install.sql @@ -113,8 +113,8 @@ CREATE TABLE IF NOT EXISTS `mods` ( -- Dumping data for table `mods` -- -INSERT INTO `mods` (`id`, `username`, `password`, `type`) VALUES -(1, 'admin', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 2); +INSERT INTO `mods` (`id`, `username`, `password`, `type`, `boards`) VALUES +(1, 'admin', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 2, '*'); -- -------------------------------------------------------- diff --git a/mod.php b/mod.php index 2e020acf..91ba7f7d 100644 --- a/mod.php +++ b/mod.php @@ -1008,7 +1008,7 @@ $boards = Array(); foreach($_POST as $name => $null) { - if(preg_match('/^board_(\w+)/', $name, $m)) + if(preg_match('/^board_(.+)$/', $name, $m)) $boards[] = $m[1]; } $boards = implode(',', $boards); @@ -1021,50 +1021,57 @@ $query->execute() or error(db_error($query)); modLog('Create a new user: "' . $_POST['username'] . '"'); - } + header('Location: ?/users', true, $config['redirect_http']); + } else { - $__boards = ''; + $__boards = '