| [ Index ] |
|
Code source de PunBB 1.2.16 |
1 <?php 2 /*********************************************************************** 3 4 Copyright (C) 2002-2005 Rickard Andersson (rickard@punbb.org) 5 6 This file is part of PunBB. 7 8 PunBB is free software; you can redistribute it and/or modify it 9 under the terms of the GNU General Public License as published 10 by the Free Software Foundation; either version 2 of the License, 11 or (at your option) any later version. 12 13 PunBB is distributed in the hope that it will be useful, but 14 WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 MA 02111-1307 USA 22 23 ************************************************************************/ 24 25 26 // Tell header.php to use the admin template 27 define('PUN_ADMIN_CONSOLE', 1); 28 29 define('PUN_ROOT', './'); 30 require PUN_ROOT.'include/common.php'; 31 require PUN_ROOT.'include/common_admin.php'; 32 33 34 if ($pun_user['g_id'] > PUN_ADMIN) 35 message($lang_common['No permission']); 36 37 38 // Add a "default" forum 39 if (isset($_POST['add_forum'])) 40 { 41 confirm_referrer('admin_forums.php'); 42 43 $add_to_cat = intval($_POST['add_to_cat']); 44 if ($add_to_cat < 1) 45 message($lang_common['Bad request']); 46 47 $db->query('INSERT INTO '.$db->prefix.'forums (cat_id) VALUES('.$add_to_cat.')') or error('Unable to create forum', __FILE__, __LINE__, $db->error()); 48 49 // Regenerate the quickjump cache 50 require_once PUN_ROOT.'include/cache.php'; 51 generate_quickjump_cache(); 52 53 redirect('admin_forums.php', 'Forum ajouté. Redirection ...'); 54 } 55 56 57 // Delete a forum 58 else if (isset($_GET['del_forum'])) 59 { 60 confirm_referrer('admin_forums.php'); 61 62 $forum_id = intval($_GET['del_forum']); 63 if ($forum_id < 1) 64 message($lang_common['Bad request']); 65 66 if (isset($_POST['del_forum_comply'])) // Delete a forum with all posts 67 { 68 @set_time_limit(0); 69 70 // Prune all posts and topics 71 prune($forum_id, 1, -1); 72 73 // Locate any "orphaned redirect topics" and delete them 74 $result = $db->query('SELECT t1.id FROM '.$db->prefix.'topics AS t1 LEFT JOIN '.$db->prefix.'topics AS t2 ON t1.moved_to=t2.id WHERE t2.id IS NULL AND t1.moved_to IS NOT NULL') or error('Unable to fetch redirect topics', __FILE__, __LINE__, $db->error()); 75 $num_orphans = $db->num_rows($result); 76 77 if ($num_orphans) 78 { 79 for ($i = 0; $i < $num_orphans; ++$i) 80 $orphans[] = $db->result($result, $i); 81 82 $db->query('DELETE FROM '.$db->prefix.'topics WHERE id IN('.implode(',', $orphans).')') or error('Unable to delete redirect topics', __FILE__, __LINE__, $db->error()); 83 } 84 85 // Delete the forum and any forum specific group permissions 86 $db->query('DELETE FROM '.$db->prefix.'forums WHERE id='.$forum_id) or error('Unable to delete forum', __FILE__, __LINE__, $db->error()); 87 $db->query('DELETE FROM '.$db->prefix.'forum_perms WHERE forum_id='.$forum_id) or error('Unable to delete group forum permissions', __FILE__, __LINE__, $db->error()); 88 89 // Regenerate the quickjump cache 90 require_once PUN_ROOT.'include/cache.php'; 91 generate_quickjump_cache(); 92 93 redirect('admin_forums.php', 'Forum supprimé. Redirection ...'); 94 } 95 else // If the user hasn't confirmed the delete 96 { 97 $result = $db->query('SELECT forum_name FROM '.$db->prefix.'forums WHERE id='.$forum_id) or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error()); 98 $forum_name = pun_htmlspecialchars($db->result($result)); 99 100 101 $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Forums'; 102 require PUN_ROOT.'header.php'; 103 104 generate_admin_menu('forums'); 105 106 ?> 107 <div class="blockform"> 108 <h2><span>Confirmez la suppresion du forum</span></h2> 109 <div class="box"> 110 <form method="post" action="admin_forums.php?del_forum=<?php echo $forum_id ?>"> 111 <div class="inform"> 112 <fieldset> 113 <legend>Important ! Lire attentivement avant de procéder à la suppression.</legend> 114 <div class="infldset"> 115 <p>Êtes vous sûr de vouloir supprimer le forum "<?php echo $forum_name ?>" ?</p> 116 <p>ATTENTION ! Supprimer un forum effacera tous les messages (s'il y en a) présent dans ce forum !</p> 117 </div> 118 </fieldset> 119 </div> 120 <p><input type="submit" name="del_forum_comply" value=" Supprimer " /><a href="javascript:history.go(-1)">Retour</a></p> 121 </form> 122 </div> 123 </div> 124 <div class="clearer"></div> 125 </div> 126 <?php 127 128 require PUN_ROOT.'footer.php'; 129 } 130 } 131 132 133 // Update forum positions 134 else if (isset($_POST['update_positions'])) 135 { 136 confirm_referrer('admin_forums.php'); 137 138 while (list($forum_id, $disp_position) = @each($_POST['position'])) 139 { 140 if (!@preg_match('#^\d+$#', $disp_position)) 141 message('La position doit être un nombre entier.'); 142 143 $db->query('UPDATE '.$db->prefix.'forums SET disp_position='.$disp_position.' WHERE id='.intval($forum_id)) or error('Impossible de mettre à jour les forums', __FILE__, __LINE__, $db->error()); 144 } 145 146 // Regenerate the quickjump cache 147 require_once PUN_ROOT.'include/cache.php'; 148 generate_quickjump_cache(); 149 150 redirect('admin_forums.php', 'Forums modifiés. Redirection ...'); 151 } 152 153 154 else if (isset($_GET['edit_forum'])) 155 { 156 $forum_id = intval($_GET['edit_forum']); 157 if ($forum_id < 1) 158 message($lang_common['Bad request']); 159 160 // Update group permissions for $forum_id 161 if (isset($_POST['save'])) 162 { 163 confirm_referrer('admin_forums.php'); 164 165 // Start with the forum details 166 $forum_name = trim($_POST['forum_name']); 167 $forum_desc = pun_linebreaks(trim($_POST['forum_desc'])); 168 $cat_id = intval($_POST['cat_id']); 169 $sort_by = intval($_POST['sort_by']); 170 $redirect_url = isset($_POST['redirect_url']) ? trim($_POST['redirect_url']) : null; 171 172 if ($forum_name == '') 173 message('Vous devez saisir un nom de forum.'); 174 175 if ($cat_id < 1) 176 message($lang_common['Bad request']); 177 178 $forum_desc = ($forum_desc != '') ? '\''.$db->escape($forum_desc).'\'' : 'NULL'; 179 $redirect_url = ($redirect_url != '') ? '\''.$db->escape($redirect_url).'\'' : 'NULL'; 180 181 $db->query('UPDATE '.$db->prefix.'forums SET forum_name=\''.$db->escape($forum_name).'\', forum_desc='.$forum_desc.', redirect_url='.$redirect_url.', sort_by='.$sort_by.', cat_id='.$cat_id.' WHERE id='.$forum_id) or error('Unable to update forum', __FILE__, __LINE__, $db->error()); 182 183 // Now let's deal with the permissions 184 if (isset($_POST['read_forum_old'])) 185 { 186 $result = $db->query('SELECT g_id, g_read_board, g_post_replies, g_post_topics FROM '.$db->prefix.'groups WHERE g_id!='.PUN_ADMIN) or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); 187 while ($cur_group = $db->fetch_assoc($result)) 188 { 189 $read_forum_new = ($cur_group['g_read_board'] == '1') ? isset($_POST['read_forum_new'][$cur_group['g_id']]) ? '1' : '0' : intval($_POST['read_forum_old'][$cur_group['g_id']]); 190 $post_replies_new = isset($_POST['post_replies_new'][$cur_group['g_id']]) ? '1' : '0'; 191 $post_topics_new = isset($_POST['post_topics_new'][$cur_group['g_id']]) ? '1' : '0'; 192 193 // Check if the new settings differ from the old 194 if ($read_forum_new != $_POST['read_forum_old'][$cur_group['g_id']] || $post_replies_new != $_POST['post_replies_old'][$cur_group['g_id']] || $post_topics_new != $_POST['post_topics_old'][$cur_group['g_id']]) 195 { 196 // If the new settings are identical to the default settings for this group, delete it's row in forum_perms 197 if ($read_forum_new == '1' && $post_replies_new == $cur_group['g_post_replies'] && $post_topics_new == $cur_group['g_post_topics']) 198 $db->query('DELETE FROM '.$db->prefix.'forum_perms WHERE group_id='.$cur_group['g_id'].' AND forum_id='.$forum_id) or error('Unable to delete group forum permissions', __FILE__, __LINE__, $db->error()); 199 else 200 { 201 // Run an UPDATE and see if it affected a row, if not, INSERT 202 $db->query('UPDATE '.$db->prefix.'forum_perms SET read_forum='.$read_forum_new.', post_replies='.$post_replies_new.', post_topics='.$post_topics_new.' WHERE group_id='.$cur_group['g_id'].' AND forum_id='.$forum_id) or error('Unable to insert group forum permissions', __FILE__, __LINE__, $db->error()); 203 if (!$db->affected_rows()) 204 $db->query('INSERT INTO '.$db->prefix.'forum_perms (group_id, forum_id, read_forum, post_replies, post_topics) VALUES('.$cur_group['g_id'].', '.$forum_id.', '.$read_forum_new.', '.$post_replies_new.', '.$post_topics_new.')') or error('Unable to insert group forum permissions', __FILE__, __LINE__, $db->error()); 205 } 206 } 207 } 208 } 209 210 // Regenerate the quickjump cache 211 require_once PUN_ROOT.'include/cache.php'; 212 generate_quickjump_cache(); 213 214 redirect('admin_forums.php', 'Forum modifié. Redirection ...'); 215 } 216 else if (isset($_POST['revert_perms'])) 217 { 218 confirm_referrer('admin_forums.php'); 219 220 $db->query('DELETE FROM '.$db->prefix.'forum_perms WHERE forum_id='.$forum_id) or error('Unable to delete group forum permissions', __FILE__, __LINE__, $db->error()); 221 222 // Regenerate the quickjump cache 223 require_once PUN_ROOT.'include/cache.php'; 224 generate_quickjump_cache(); 225 226 redirect('admin_forums.php?edit_forum='.$forum_id, 'Permissions remises à leurs valeurs par défaut. Redirection ...'); 227 } 228 229 230 // Fetch forum info 231 $result = $db->query('SELECT id, forum_name, forum_desc, redirect_url, num_topics, sort_by, cat_id FROM '.$db->prefix.'forums WHERE id='.$forum_id) or error('Unable to fetch forum info', __FILE__, __LINE__, $db->error()); 232 if (!$db->num_rows($result)) 233 message($lang_common['Bad request']); 234 235 $cur_forum = $db->fetch_assoc($result); 236 237 238 $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Forums'; 239 require PUN_ROOT.'header.php'; 240 241 generate_admin_menu('forums'); 242 243 ?> 244 <div class="blockform"> 245 <h2><span>Modifier forum</span></h2> 246 <div class="box"> 247 <form id="edit_forum" method="post" action="admin_forums.php?edit_forum=<?php echo $forum_id ?>"> 248 <p class="submittop"><input type="submit" name="save" value=" Enregistrer modifications " tabindex="6" /></p> 249 <div class="inform"> 250 <fieldset> 251 <legend>Modifier les détails du forum</legend> 252 <div class="infldset"> 253 <table class="aligntop" cellspacing="0"> 254 <tr> 255 <th scope="row">Nom du forum</th> 256 <td><input type="text" name="forum_name" size="35" maxlength="80" value="<?php echo pun_htmlspecialchars($cur_forum['forum_name']) ?>" tabindex="1" /></td> 257 </tr> 258 <tr> 259 <th scope="row">Description (<acronym title="HyperText Markup Language" lang="en">HTML</acronym>)</th> 260 <td><textarea name="forum_desc" rows="3" cols="50" tabindex="2"><?php echo pun_htmlspecialchars($cur_forum['forum_desc']) ?></textarea></td> 261 </tr> 262 <tr> 263 <th scope="row">Catégorie</th> 264 <td> 265 <select name="cat_id" tabindex="3"> 266 <?php 267 268 $result = $db->query('SELECT id, cat_name FROM '.$db->prefix.'categories ORDER BY disp_position') or error('Unable to fetch category list', __FILE__, __LINE__, $db->error()); 269 while ($cur_cat = $db->fetch_assoc($result)) 270 { 271 $selected = ($cur_cat['id'] == $cur_forum['cat_id']) ? ' selected="selected"' : ''; 272 echo "\t\t\t\t\t\t\t\t\t\t\t".'<option value="'.$cur_cat['id'].'"'.$selected.'>'.pun_htmlspecialchars($cur_cat['cat_name']).'</option>'."\n"; 273 } 274 275 ?> 276 </select> 277 </td> 278 </tr> 279 <tr> 280 <th scope="row">Trier les discussions par</th> 281 <td> 282 <select name="sort_by" tabindex="4"> 283 <option value="0"<?php if ($cur_forum['sort_by'] == '0') echo ' selected="selected"' ?>>Derniers messages</option> 284 <option value="1"<?php if ($cur_forum['sort_by'] == '1') echo ' selected="selected"' ?>>Dates des discussions</option> 285 </select> 286 </td> 287 </tr> 288 <tr> 289 <th scope="row"><acronym title="Uniform Resource Locator" lang="en">URL</acronym> de redirection</th> 290 <td><?php echo ($cur_forum['num_topics']) ? 'Disponible uniquement pour les forums vides' : '<input type="text" name="redirect_url" size="45" maxlength="100" value="'.pun_htmlspecialchars($cur_forum['redirect_url']).'" tabindex="5" />'; ?></td> 291 </tr> 292 </table> 293 </div> 294 </fieldset> 295 </div> 296 <div class="inform"> 297 <fieldset> 298 <legend>Modifier les permissions de groupes de ce forum</legend> 299 <div class="infldset"> 300 <p>Avec ce formulaire vous pouvez régler les permissions de ce forum spécifiques aux différents groupes d'utilisateurs. Si vous n'avez effectué aucune modification à ces permissions de groupes, ce que vous voyez ci-dessous sont les permissions par défaut basées sur les paramètres des <a href="admin_groups.php">Groupes d'utilisateurs</a>. Les administrateurs ont toujours toutes les permissions et sont donc écartés. Les paramètres de permission qui diffèrent des permissions par défaut pour le groupe d'utilisateur sont signalés en rouge. La permission « Lire » pourra être désactivée si le groupe en question ne possède pas la permission globale « Lire forums ». Pour les forums de redirection seule la permission « Lire » est modifiable.</p> 301 <table id="forumperms" cellspacing="0"> 302 <thead> 303 <tr> 304 <th class="atcl"> </th> 305 <th>Lire le forum</th> 306 <th>Écrire des réponses</th> 307 <th>Lancer des discussions</th> 308 </tr> 309 </thead> 310 <tbody> 311 <?php 312 313 $result = $db->query('SELECT g.g_id, g.g_title, g.g_read_board, g.g_post_replies, g.g_post_topics, fp.read_forum, fp.post_replies, fp.post_topics FROM '.$db->prefix.'groups AS g LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (g.g_id=fp.group_id AND fp.forum_id='.$forum_id.') WHERE g.g_id!='.PUN_ADMIN.' ORDER BY g.g_id') or error('Unable to fetch group forum permission list', __FILE__, __LINE__, $db->error()); 314 315 while ($cur_perm = $db->fetch_assoc($result)) 316 { 317 $read_forum = ($cur_perm['read_forum'] != '0') ? true : false; 318 $post_replies = (($cur_perm['g_post_replies'] == '0' && $cur_perm['post_replies'] == '1') || ($cur_perm['g_post_replies'] == '1' && $cur_perm['post_replies'] != '0')) ? true : false; 319 $post_topics = (($cur_perm['g_post_topics'] == '0' && $cur_perm['post_topics'] == '1') || ($cur_perm['g_post_topics'] == '1' && $cur_perm['post_topics'] != '0')) ? true : false; 320 321 // Determine if the current sittings differ from the default or not 322 $read_forum_def = ($cur_perm['read_forum'] == '0') ? false : true; 323 $post_replies_def = (($post_replies && $cur_perm['g_post_replies'] == '0') || (!$post_replies && ($cur_perm['g_post_replies'] == '' || $cur_perm['g_post_replies'] == '1'))) ? false : true; 324 $post_topics_def = (($post_topics && $cur_perm['g_post_topics'] == '0') || (!$post_topics && ($cur_perm['g_post_topics'] == '' || $cur_perm['g_post_topics'] == '1'))) ? false : true; 325 326 ?> 327 <tr> 328 <th class="atcl"><?php echo pun_htmlspecialchars($cur_perm['g_title']) ?></th> 329 <td<?php if (!$read_forum_def) echo ' class="nodefault"'; ?>> 330 <input type="hidden" name="read_forum_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($read_forum) ? '1' : '0'; ?>" /> 331 <input type="checkbox" name="read_forum_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php echo ($read_forum) ? ' checked="checked"' : ''; ?><?php echo ($cur_perm['g_read_board'] == '0') ? ' disabled="disabled"' : ''; ?> /> 332 </td> 333 <td<?php if (!$post_replies_def && $cur_forum['redirect_url'] == '') echo ' class="nodefault"'; ?>> 334 <input type="hidden" name="post_replies_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_replies) ? '1' : '0'; ?>" /> 335 <input type="checkbox" name="post_replies_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php echo ($post_replies) ? ' checked="checked"' : ''; ?><?php echo ($cur_forum['redirect_url'] != '') ? ' disabled="disabled"' : ''; ?> /> 336 </td> 337 <td<?php if (!$post_topics_def && $cur_forum['redirect_url'] == '') echo ' class="nodefault"'; ?>> 338 <input type="hidden" name="post_topics_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_topics) ? '1' : '0'; ?>" /> 339 <input type="checkbox" name="post_topics_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php echo ($post_topics) ? ' checked="checked"' : ''; ?><?php echo ($cur_forum['redirect_url'] != '') ? ' disabled="disabled"' : ''; ?> /> 340 </td> 341 </tr> 342 <?php 343 344 } 345 346 ?> 347 </tbody> 348 </table> 349 <div class="fsetsubmit"><input type="submit" name="revert_perms" value=" Rétablir les permissions par défaut " /></div> 350 </div> 351 </fieldset> 352 </div> 353 <p class="submitend"><input type="submit" name="save" value=" Enregistrer modifications " /></p> 354 </form> 355 </div> 356 </div> 357 <div class="clearer"></div> 358 </div> 359 360 <?php 361 362 require PUN_ROOT.'footer.php'; 363 } 364 365 366 $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Forums'; 367 require PUN_ROOT.'header.php'; 368 369 generate_admin_menu('forums'); 370 371 ?> 372 <div class="blockform"> 373 <h2><span>Ajouter forum</span></h2> 374 <div class="box"> 375 <form method="post" action="admin_forums.php?action=adddel"> 376 <div class="inform"> 377 <fieldset> 378 <legend>Créer un forum</legend> 379 <div class="infldset"> 380 <table class="aligntop" cellspacing="0"> 381 <tr> 382 <th scope="row">Ajouter un forum à la catégorie<div><input type="submit" name="add_forum" value=" Ajouter " tabindex="2" /></div></th> 383 <td> 384 <select name="add_to_cat" tabindex="1"> 385 <?php 386 387 $result = $db->query('SELECT id, cat_name FROM '.$db->prefix.'categories ORDER BY disp_position') or error('Unable to fetch category list', __FILE__, __LINE__, $db->error()); 388 while ($cur_cat = $db->fetch_assoc($result)) 389 echo "\t\t\t\t\t\t\t\t\t".'<option value="'.$cur_cat['id'].'">'.pun_htmlspecialchars($cur_cat['cat_name']).'</option>'."\n"; 390 391 ?> 392 </select> 393 <span>Choisissez la catégorie dans laquelle vous souhaitez ajouter un nouveau forum.</span> 394 </td> 395 </tr> 396 </table> 397 </div> 398 </fieldset> 399 </div> 400 </form> 401 </div> 402 403 <h2 class="block2"><span>Modifier les forums</span></h2> 404 <div class="box"> 405 <form id="edforum" method="post" action="admin_forums.php?action=edit"> 406 <p class="submittop"><input type="submit" name="update_positions" value=" Modifier positions " tabindex="3" /></p> 407 <?php 408 409 $tabindex_count = 4; 410 411 // Display all the categories and forums 412 $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.disp_position FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id ORDER BY c.disp_position, c.id, f.disp_position') or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error()); 413 414 $cur_category = 0; 415 while ($cur_forum = $db->fetch_assoc($result)) 416 { 417 if ($cur_forum['cid'] != $cur_category) // A new category since last iteration? 418 { 419 if ($cur_category != 0) 420 echo "\t\t\t\t\t\t\t".'</table>'."\n\t\t\t\t\t\t".'</div>'."\n\t\t\t\t\t".'</fieldset>'."\n\t\t\t\t".'</div>'."\n"; 421 422 ?> 423 <div class="inform"> 424 <fieldset> 425 <legend>Catégorie : <?php echo pun_htmlspecialchars($cur_forum['cat_name']) ?></legend> 426 <div class="infldset"> 427 <table cellspacing="0"> 428 <?php 429 430 $cur_category = $cur_forum['cid']; 431 } 432 433 ?> 434 <tr> 435 <th><a href="admin_forums.php?edit_forum=<?php echo $cur_forum['fid'] ?>">Modifier</a> - <a href="admin_forums.php?del_forum=<?php echo $cur_forum['fid'] ?>">Supprimer</a></th> 436 <td>Position <input type="text" name="position[<?php echo $cur_forum['fid'] ?>]" size="3" maxlength="3" value="<?php echo $cur_forum['disp_position'] ?>" tabindex="<?php echo $tabindex_count ?>" /> 437 <strong><?php echo pun_htmlspecialchars($cur_forum['forum_name']) ?></strong></td> 438 </tr> 439 <?php 440 441 $tabindex_count += 2; 442 } 443 444 ?> 445 </table> 446 </div> 447 </fieldset> 448 </div> 449 <p class="submitend"><input type="submit" name="update_positions" value=" Modifier positions " tabindex="<?php echo $tabindex_count ?>" /></p> 450 </form> 451 </div> 452 </div> 453 <div class="clearer"></div> 454 </div> 455 <?php 456 457 require PUN_ROOT.'footer.php';
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Sat Nov 24 22:44:38 2007 | par Balluche grâce à PHPXref 0.7 |
|