diff options
| author | Savetheinternet <savetheinternet@tinyboard.org> | 2011-07-08 23:03:12 +1000 |
|---|---|---|
| committer | Savetheinternet <savetheinternet@tinyboard.org> | 2011-07-08 23:03:12 +1000 |
| commit | eadeb6669e86338bd7feb3cba16f1bdd2e5cc85d (patch) | |
| tree | 6a7f555ee09fd6882aac937e7682c229dc924264 | |
| parent | 11409bb9d71e7cd7bd3c5abd604569472cdd8254 (diff) | |
wildcard option ("*") for per-board mods
| -rw-r--r-- | inc/config.php | 2 | ||||
| -rw-r--r-- | inc/mod.php | 7 | ||||
| -rw-r--r-- | install.php | 1 | ||||
| -rw-r--r-- | install.sql | 4 | ||||
| -rw-r--r-- | 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, '*'); -- -------------------------------------------------------- @@ -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 = '<ul style="list-style:none;padding:2px 5px">'; - $boards = listBoards(); - foreach($boards as &$_board) { - $__boards .= '<li>' . - '<input type="checkbox" name="board_' . $_board['uri'] . '" id="board_' . $_board['uri'] . '"/> ' . - '<label style="display:inline" for="board_' . $_board['uri'] . '">' . - sprintf($config['board_abbreviation'], $_board['uri']) . - ' - ' . $_board['title'] . - '</label>' . - '</li>'; - } - $__boards .= '</ul>'; + $__boards = '<ul style="list-style:none;padding:2px 5px">'; + $boards = array_merge( + Array(Array('uri' => '*', 'title' => 'All') + ), listBoards()); + foreach($boards as &$_board) { + $__boards .= '<li>' . + '<input type="checkbox" name="board_' . $_board['uri'] . '" id="board_' . $_board['uri'] . '"' . + '<label style="display:inline" for="board_' . $_board['uri'] . '">' . + ($_board['uri'] == '*' ? + '<em>"*"</em>' + : + sprintf($config['board_abbreviation'], $_board['uri']) + ) . + ' - ' . $_board['title'] . + '</label>' . + '</li>'; + } - $body = '<fieldset><legend>New user</legend>' . + $body = '<fieldset><legend>New user</legend>' . - // Begin form - '<form style="text-align:center" action="" method="post">' . + // Begin form + '<form style="text-align:center" action="" method="post">' . - '<table>' . + '<table>' . - '<tr><th>Username</th><td><input size="20" maxlength="30" type="text" name="username" value="" autocomplete="off" /></td></tr>' . - '<tr><th>Password</th><td><input size="20" maxlength="30" type="password" name="password" value="" autocomplete="off" /></td></tr>' . - '<tr><th>Type</th><td>' . - '<div><label for="janitor">Janitor</label> <input type="radio" id="janitor" name="type" value="' . JANITOR . '" /></div>' . - '<div><label for="mod">Mod</label> <input type="radio" id="mod" name="type" value="' . MOD . '" /></div>' . - '<div><label for="admin">Admin</label> <input type="radio" id="admin" name="type" value="' . ADMIN . '" /></div>' . - '</td></tr>' . - '<tr><th>Boards</th><td>' . $__boards . '</td></tr>' . - '</table>' . + '<tr><th>Username</th><td><input size="20" maxlength="30" type="text" name="username" value="" autocomplete="off" /></td></tr>' . + '<tr><th>Password</th><td><input size="20" maxlength="30" type="password" name="password" value="" autocomplete="off" /></td></tr>' . + '<tr><th>Type</th><td>' . + '<div><label for="janitor">Janitor</label> <input type="radio" id="janitor" name="type" value="' . JANITOR . '" /></div>' . + '<div><label for="mod">Mod</label> <input type="radio" id="mod" name="type" value="' . MOD . '" /></div>' . + '<div><label for="admin">Admin</label> <input type="radio" id="admin" name="type" value="' . ADMIN . '" /></div>' . + '</td></tr>' . + '<tr><th>Boards</th><td>' . $__boards . '</td></tr>' . + '</table>' . - '<input style="margin-top:10px" type="submit" value="Create user" />' . + '<input style="margin-top:10px" type="submit" value="Create user" />' . - // End form - '</form></fieldset>'; + // End form + '</form></fieldset>'; - echo Element('page.html', Array( - 'config'=>$config, - 'title'=>'New user', - 'body'=>$body - ,'mod'=>true - ) - ); + echo Element('page.html', Array( + 'config'=>$config, + 'title'=>'New user', + 'body'=>$body + ,'mod'=>true + ) + ); + } } elseif(preg_match('/^\/users\/(\d+)(\/(promote|demote|delete))?$/', $query, $matches)) { $modID = &$matches[1]; @@ -1112,7 +1119,7 @@ if(!isset($change_password_only)) { $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); @@ -1149,7 +1156,10 @@ } $__boards = '<ul style="list-style:none;padding:2px 5px">'; - $boards = listBoards(); + $boards = array_merge( + Array(Array('uri' => '*', 'title' => 'All') + ), listBoards()); + $_mod['boards'] = explode(',', $_mod['boards']); foreach($boards as &$_board) { $__boards .= '<li>' . @@ -1159,7 +1169,11 @@ : '') . '/> ' . '<label style="display:inline" for="board_' . $_board['uri'] . '">' . - sprintf($config['board_abbreviation'], $_board['uri']) . + ($_board['uri'] == '*' ? + '<em>"*"</em>' + : + sprintf($config['board_abbreviation'], $_board['uri']) + ) . ' - ' . $_board['title'] . '</label>' . '</li>'; |
