[ Index ]
 

Code source de PHP NUKE 7.9

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/modules/Forums/admin/ -> admin_forums.php (source)

   1  <?php
   2  /***************************************************************************

   3   *                             admin_forums.php

   4   *                            -------------------

   5   *   begin                : Thursday, Jul 12, 2001

   6   *   copyright            : (C) 2001 The phpBB Group

   7   *   email                : support@phpbb.com

   8   *

   9   *   Id: admin_forums.php,v 1.40.2.10 2003/01/05 02:36:00 psotfx Exp

  10   *

  11   ***************************************************************************/
  12  
  13  /***************************************************************************

  14   *

  15   *   This program is free software; you can redistribute it and/or modify

  16   *   it under the terms of the GNU General Public License as published by

  17   *   the Free Software Foundation; either version 2 of the License, or

  18   *   (at your option) any later version.

  19   *

  20   ***************************************************************************/
  21  
  22  define('IN_PHPBB', 1);
  23  
  24  if( !empty($setmodules) )
  25  {
  26          $file = basename(__FILE__);
  27          $module['Forums']['Manage'] = $file;
  28          return;
  29  }
  30  
  31  //

  32  // Load default header

  33  //

  34  $phpbb_root_path = "./../";
  35  require ($phpbb_root_path . 'extension.inc');
  36  require('./pagestart.' . $phpEx);
  37  include ("../../../includes/functions_admin.php");
  38  
  39  $forum_auth_ary = array(
  40          "auth_view" => AUTH_ALL,
  41          "auth_read" => AUTH_ALL,
  42          "auth_post" => AUTH_ALL,
  43          "auth_reply" => AUTH_ALL,
  44          "auth_edit" => AUTH_REG,
  45          "auth_delete" => AUTH_REG,
  46          "auth_sticky" => AUTH_MOD,
  47          "auth_announce" => AUTH_MOD,
  48          "auth_vote" => AUTH_REG,
  49          "auth_pollcreate" => AUTH_REG
  50  );
  51  
  52  //

  53  // Mode setting

  54  //

  55  if( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
  56  {
  57          $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
  58          $mode = htmlspecialchars($mode);
  59  }
  60  else
  61  {
  62          $mode = "";
  63  }
  64  
  65  // ------------------

  66  // Begin function block

  67  //

  68  function get_info($mode, $id)
  69  {
  70          global $db;
  71  
  72          switch($mode)
  73          {
  74                  case 'category':
  75                          $table = CATEGORIES_TABLE;
  76                          $idfield = 'cat_id';
  77                          $namefield = 'cat_title';
  78                          break;
  79  
  80                  case 'forum':
  81                          $table = FORUMS_TABLE;
  82                          $idfield = 'forum_id';
  83                          $namefield = 'forum_name';
  84                          break;
  85  
  86                  default:
  87                          message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
  88                          break;
  89          }
  90          $sql = "SELECT count(*) as total
  91                  FROM $table";
  92          if( !$result = $db->sql_query($sql) )
  93          {
  94                  message_die(GENERAL_ERROR, "Couldn't get Forum/Category information", "", __LINE__, __FILE__, $sql);
  95          }
  96          $count = $db->sql_fetchrow($result);
  97          $count = $count['total'];
  98  
  99          $sql = "SELECT *
 100                  FROM $table
 101                  WHERE $idfield = $id";
 102  
 103          if( !$result = $db->sql_query($sql) )
 104          {
 105                  message_die(GENERAL_ERROR, "Couldn't get Forum/Category information", "", __LINE__, __FILE__, $sql);
 106          }
 107  
 108          if( $db->sql_numrows($result) != 1 )
 109          {
 110                  message_die(GENERAL_ERROR, "Forum/Category doesn't exist or multiple forums/categories with ID $id", "", __LINE__, __FILE__);
 111          }
 112  
 113          $return = $db->sql_fetchrow($result);
 114          $return['number'] = $count;
 115          return $return;
 116  }
 117  
 118  function get_list($mode, $id, $select)
 119  {
 120          global $db;
 121  
 122          switch($mode)
 123          {
 124                  case 'category':
 125                          $table = CATEGORIES_TABLE;
 126                          $idfield = 'cat_id';
 127                          $namefield = 'cat_title';
 128                          break;
 129  
 130                  case 'forum':
 131                          $table = FORUMS_TABLE;
 132                          $idfield = 'forum_id';
 133                          $namefield = 'forum_name';
 134                          break;
 135  
 136                  default:
 137                          message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
 138                          break;
 139          }
 140  
 141          $sql = "SELECT *
 142                  FROM $table";
 143          if( $select == 0 )
 144          {
 145                  $sql .= " WHERE $idfield <> $id";
 146          }
 147  
 148          if( !$result = $db->sql_query($sql) )
 149          {
 150                  message_die(GENERAL_ERROR, "Couldn't get list of Categories/Forums", "", __LINE__, __FILE__, $sql);
 151          }
 152  
 153          $cat_list = "";
 154  
 155          while( $row = $db->sql_fetchrow($result) )
 156          {
 157                  $s = "";
 158                  if ($row[$idfield] == $id)
 159                  {
 160                          $s = " selected=\"selected\"";
 161                  }
 162                  $catlist .= "<option value=\"$row[$idfield]\"$s>" . $row[$namefield] . "</option>\n";
 163          }
 164  
 165          return($catlist);
 166  }
 167  
 168  function renumber_order($mode, $cat = 0)
 169  {
 170          global $db;
 171  
 172          switch($mode)
 173          {
 174                  case 'category':
 175                          $table = CATEGORIES_TABLE;
 176                          $idfield = 'cat_id';
 177                          $orderfield = 'cat_order';
 178                          $cat = 0;
 179                          break;
 180  
 181                  case 'forum':
 182                          $table = FORUMS_TABLE;
 183                          $idfield = 'forum_id';
 184                          $orderfield = 'forum_order';
 185                          $catfield = 'cat_id';
 186                          break;
 187  
 188                  default:
 189                          message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
 190                          break;
 191          }
 192  
 193          $sql = "SELECT * FROM $table";
 194          if( $cat != 0)
 195          {
 196                  $sql .= " WHERE $catfield = $cat";
 197          }
 198          $sql .= " ORDER BY $orderfield ASC";
 199  
 200  
 201          if( !$result = $db->sql_query($sql) )
 202          {
 203                  message_die(GENERAL_ERROR, "Couldn't get list of Categories", "", __LINE__, __FILE__, $sql);
 204          }
 205  
 206          $i = 10;
 207          $inc = 10;
 208  
 209          while( $row = $db->sql_fetchrow($result) )
 210          {
 211                  $sql = "UPDATE $table
 212                          SET $orderfield = $i
 213                          WHERE $idfield = " . $row[$idfield];
 214                  if( !$db->sql_query($sql) )
 215                  {
 216                          message_die(GENERAL_ERROR, "Couldn't update order fields", "", __LINE__, __FILE__, $sql);
 217                  }
 218                  $i += 10;
 219          }
 220  
 221  }
 222  //

 223  // End function block

 224  // ------------------

 225  
 226  //

 227  // Begin program proper

 228  //

 229  if( isset($HTTP_POST_VARS['addforum']) || isset($HTTP_POST_VARS['addcategory']) )
 230  {
 231          $mode = ( isset($HTTP_POST_VARS['addforum']) ) ? "addforum" : "addcat";
 232  
 233          if( $mode == "addforum" )
 234          {
 235                  list($cat_id) = each($HTTP_POST_VARS['addforum']);
 236          $cat_id = intval($cat_id);
 237                  //

 238                  // stripslashes needs to be run on this because slashes are added when the forum name is posted

 239                  //

 240                  $forumname = stripslashes($HTTP_POST_VARS['forumname'][$cat_id]);
 241          }
 242  }
 243  
 244  if( !empty($mode) )
 245  {
 246          switch($mode)
 247          {
 248                  case 'addforum':
 249                  case 'editforum':
 250                          //

 251                          // Show form to create/modify a forum

 252                          //

 253                          if ($mode == 'editforum')
 254                          {
 255                                  // $newmode determines if we are going to INSERT or UPDATE after posting?

 256  
 257                                  $l_title = $lang['Edit_forum'];
 258                                  $newmode = 'modforum';
 259                                  $buttonvalue = $lang['Update'];
 260  
 261                                  $forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
 262  
 263                                  $row = get_info('forum', $forum_id);
 264  
 265                                  $cat_id = $row['cat_id'];
 266                                  $forumname = $row['forum_name'];
 267                                  $forumdesc = $row['forum_desc'];
 268                                  $forumstatus = $row['forum_status'];
 269  
 270                                  //

 271                                  // start forum prune stuff.

 272                                  //

 273                                  if( $row['prune_enable'] )
 274                                  {
 275                                          $prune_enabled = "checked=\"checked\"";
 276                                          $sql = "SELECT *
 277                                         FROM " . PRUNE_TABLE . "
 278                                         WHERE forum_id = $forum_id";
 279                                          if(!$pr_result = $db->sql_query($sql))
 280                                          {
 281                                                   message_die(GENERAL_ERROR, "Auto-Prune: Couldn't read auto_prune table.", __LINE__, __FILE__);
 282                                  }
 283  
 284                                          $pr_row = $db->sql_fetchrow($pr_result);
 285                                  }
 286                                  else
 287                                  {
 288                                          $prune_enabled = '';
 289                                  }
 290                          }
 291                          else
 292                          {
 293                                  $l_title = $lang['Create_forum'];
 294                                  $newmode = 'createforum';
 295                                  $buttonvalue = $lang['Create_forum'];
 296  
 297                                  $forumdesc = '';
 298                                  $forumstatus = FORUM_UNLOCKED;
 299                                  $forum_id = '';
 300                                  $prune_enabled = '';
 301                          }
 302  
 303                          $catlist = get_list('category', $cat_id, TRUE);
 304  
 305                          $forumstatus == ( FORUM_LOCKED ) ? $forumlocked = "selected=\"selected\"" : $forumunlocked = "selected=\"selected\"";
 306  
 307                          // These two options ($lang['Status_unlocked'] and $lang['Status_locked']) seem to be missing from

 308                          // the language files.

 309                          $lang['Status_unlocked'] = isset($lang['Status_unlocked']) ? $lang['Status_unlocked'] : 'Unlocked';
 310                          $lang['Status_locked'] = isset($lang['Status_locked']) ? $lang['Status_locked'] : 'Locked';
 311  
 312                          $statuslist = "<option value=\"" . FORUM_UNLOCKED . "\" $forumunlocked>" . $lang['Status_unlocked'] . "</option>\n";
 313                          $statuslist .= "<option value=\"" . FORUM_LOCKED . "\" $forumlocked>" . $lang['Status_locked'] . "</option>\n";
 314  
 315                          $template->set_filenames(array(
 316                                  "body" => "admin/forum_edit_body.tpl")
 317                          );
 318  
 319                          $s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode .'" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
 320  
 321                          $template->assign_vars(array(
 322                                  'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
 323                                  'S_HIDDEN_FIELDS' => $s_hidden_fields,
 324                                  'S_SUBMIT_VALUE' => $buttonvalue,
 325                                  'S_CAT_LIST' => $catlist,
 326                                  'S_STATUS_LIST' => $statuslist,
 327                                  'S_PRUNE_ENABLED' => $prune_enabled,
 328  
 329                                  'L_FORUM_TITLE' => $l_title,
 330                                  'L_FORUM_EXPLAIN' => $lang['Forum_edit_delete_explain'],
 331                                  'L_FORUM_SETTINGS' => $lang['Forum_settings'],
 332                                  'L_FORUM_NAME' => $lang['Forum_name'],
 333                                  'L_CATEGORY' => $lang['Category'],
 334                                  'L_FORUM_DESCRIPTION' => $lang['Forum_desc'],
 335                                  'L_FORUM_STATUS' => $lang['Forum_status'],
 336                                  'L_AUTO_PRUNE' => $lang['Forum_pruning'],
 337                                  'L_ENABLED' => $lang['Enabled'],
 338                                  'L_PRUNE_DAYS' => $lang['prune_days'],
 339                                  'L_PRUNE_FREQ' => $lang['prune_freq'],
 340                                  'L_DAYS' => $lang['Days'],
 341  
 342                                  'PRUNE_DAYS' => ( isset($pr_row['prune_days']) ) ? $pr_row['prune_days'] : 7,
 343                                  'PRUNE_FREQ' => ( isset($pr_row['prune_freq']) ) ? $pr_row['prune_freq'] : 1,
 344                                  'FORUM_NAME' => $forumname,
 345                                  'DESCRIPTION' => $forumdesc)
 346                          );
 347                          $template->pparse("body");
 348                          break;
 349  
 350                  case 'createforum':
 351                          //

 352                          // Create a forum in the DB

 353                          //

 354                          if( trim($HTTP_POST_VARS['forumname']) == "" )
 355                          {
 356                                  message_die(GENERAL_ERROR, "Can't create a forum without a name");
 357                          }
 358  
 359                          $sql = "SELECT MAX(forum_order) AS max_order
 360                                  FROM " . FORUMS_TABLE . "
 361                                  WHERE cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]);
 362                          if( !$result = $db->sql_query($sql) )
 363                          {
 364                                  message_die(GENERAL_ERROR, "Couldn't get order number from forums table", "", __LINE__, __FILE__, $sql);
 365                          }
 366                          $row = $db->sql_fetchrow($result);
 367  
 368                          $max_order = $row['max_order'];
 369                          $next_order = $max_order + 10;
 370  
 371                          $sql = "SELECT MAX(forum_id) AS max_id
 372                                  FROM " . FORUMS_TABLE;
 373                          if( !$result = $db->sql_query($sql) )
 374                          {
 375                                  message_die(GENERAL_ERROR, "Couldn't get order number from forums table", "", __LINE__, __FILE__, $sql);
 376                          }
 377                          $row = $db->sql_fetchrow($result);
 378  
 379                          $max_id = $row['max_id'];
 380                          $next_id = $max_id + 1;
 381  
 382                          //

 383                          // Default permissions of public ::

 384                          //

 385                          $field_sql = "";
 386                          $value_sql = "";
 387                          while( list($field, $value) = each($forum_auth_ary) )
 388                          {
 389                                  $field_sql .= ", $field";
 390                                  $value_sql .= ", $value";
 391  
 392                          }
 393  
 394                          // There is no problem having duplicate forum names so we won't check for it.

 395                          $sql = "INSERT INTO " . FORUMS_TABLE . " (forum_id, forum_name, cat_id, forum_desc, forum_order, forum_status, prune_enable" . $field_sql . ")
 396                                  VALUES ('" . $next_id . "', '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) . "', " . intval($HTTP_POST_VARS[POST_CAT_URL]) . ", '" . str_replace("\'", "''", $HTTP_POST_VARS['forumdesc']) . "', $next_order, " . intval($HTTP_POST_VARS['forumstatus']) . ", " . intval($HTTP_POST_VARS['prune_enable']) . $value_sql . ")";
 397                          if( !$result = $db->sql_query($sql) )
 398                          {
 399                                  message_die(GENERAL_ERROR, "Couldn't insert row in forums table", "", __LINE__, __FILE__, $sql);
 400                          }
 401  
 402                          if( $HTTP_POST_VARS['prune_enable'] )
 403                          {
 404  
 405                                  if( $HTTP_POST_VARS['prune_days'] == "" || $HTTP_POST_VARS['prune_freq'] == "")
 406                                  {
 407                                          message_die(GENERAL_MESSAGE, $lang['Set_prune_data']);
 408                                  }
 409  
 410                                  $sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
 411                                          VALUES('" . $next_id . "', " . intval($HTTP_POST_VARS['prune_days']) . ", " . intval($HTTP_POST_VARS['prune_freq']) . ")";
 412                                  if( !$result = $db->sql_query($sql) )
 413                                  {
 414                                          message_die(GENERAL_ERROR, "Couldn't insert row in prune table", "", __LINE__, __FILE__, $sql);
 415                                  }
 416                          }
 417  
 418                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 419  
 420                          message_die(GENERAL_MESSAGE, $message);
 421  
 422                          break;
 423  
 424                  case 'modforum':
 425                          // Modify a forum in the DB

 426                          if( isset($HTTP_POST_VARS['prune_enable']))
 427                          {
 428                                  if( $HTTP_POST_VARS['prune_enable'] != 1 )
 429                                  {
 430                                          $HTTP_POST_VARS['prune_enable'] = 0;
 431                                  }
 432                          }
 433  
 434                          $sql = "UPDATE " . FORUMS_TABLE . "
 435                                  SET forum_name = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) . "', cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]) . ", forum_desc = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumdesc']) . "', forum_status = " . intval($HTTP_POST_VARS['forumstatus']) . ", prune_enable = " . intval($HTTP_POST_VARS['prune_enable']) . "
 436                                  WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
 437                          if( !$result = $db->sql_query($sql) )
 438                          {
 439                                  message_die(GENERAL_ERROR, "Couldn't update forum information", "", __LINE__, __FILE__, $sql);
 440                          }
 441  
 442                          if( $HTTP_POST_VARS['prune_enable'] == 1 )
 443                          {
 444                                  if( $HTTP_POST_VARS['prune_days'] == "" || $HTTP_POST_VARS['prune_freq'] == "" )
 445                                  {
 446                                          message_die(GENERAL_MESSAGE, $lang['Set_prune_data']);
 447                                  }
 448  
 449                                  $sql = "SELECT *
 450                                          FROM " . PRUNE_TABLE . "
 451                                          WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
 452                                  if( !$result = $db->sql_query($sql) )
 453                                  {
 454                                          message_die(GENERAL_ERROR, "Couldn't get forum Prune Information","",__LINE__, __FILE__, $sql);
 455                                  }
 456  
 457                                  if( $db->sql_numrows($result) > 0 )
 458                                  {
 459                                          $sql = "UPDATE " . PRUNE_TABLE . "
 460                                                  SET        prune_days = " . intval($HTTP_POST_VARS['prune_days']) . ",        prune_freq = " . intval($HTTP_POST_VARS['prune_freq']) . "
 461                                                   WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
 462                                  }
 463                                  else
 464                                  {
 465                                          $sql = "INSERT INTO " . PRUNE_TABLE . " (forum_id, prune_days, prune_freq)
 466                                                  VALUES(" . intval($HTTP_POST_VARS[POST_FORUM_URL]) . ", " . intval($HTTP_POST_VARS['prune_days']) . ", " . intval($HTTP_POST_VARS['prune_freq']) . ")";
 467                                  }
 468  
 469                                  if( !$result = $db->sql_query($sql) )
 470                                  {
 471                                          message_die(GENERAL_ERROR, "Couldn't Update Forum Prune Information","",__LINE__, __FILE__, $sql);
 472                                  }
 473                          }
 474  
 475                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 476  
 477                          message_die(GENERAL_MESSAGE, $message);
 478  
 479                          break;
 480  
 481                  case 'addcat':
 482                          // Create a category in the DB

 483                          if( trim($HTTP_POST_VARS['categoryname']) == '')
 484                          {
 485                                  message_die(GENERAL_ERROR, "Can't create a category without a name");
 486                          }
 487  
 488                          $sql = "SELECT MAX(cat_order) AS max_order
 489                                  FROM " . CATEGORIES_TABLE;
 490                          if( !$result = $db->sql_query($sql) )
 491                          {
 492                                  message_die(GENERAL_ERROR, "Couldn't get order number from categories table", "", __LINE__, __FILE__, $sql);
 493                          }
 494                          $row = $db->sql_fetchrow($result);
 495  
 496                          $max_order = $row['max_order'];
 497                          $next_order = $max_order + 10;
 498  
 499                          //

 500                          // There is no problem having duplicate forum names so we won't check for it.

 501                          //

 502                          $sql = "INSERT INTO " . CATEGORIES_TABLE . " (cat_title, cat_order)
 503                                  VALUES ('" . str_replace("\'", "''", $HTTP_POST_VARS['categoryname']) . "', $next_order)";
 504                          if( !$result = $db->sql_query($sql) )
 505                          {
 506                                  message_die(GENERAL_ERROR, "Couldn't insert row in categories table", "", __LINE__, __FILE__, $sql);
 507                          }
 508  
 509                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 510  
 511                          message_die(GENERAL_MESSAGE, $message);
 512  
 513                          break;
 514  
 515                  case 'editcat':
 516                          //

 517                          // Show form to edit a category

 518                          //

 519                          $newmode = 'modcat';
 520                          $buttonvalue = $lang['Update'];
 521  
 522                          $cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
 523  
 524                          $row = get_info('category', $cat_id);
 525                          $cat_title = $row['cat_title'];
 526  
 527                          $template->set_filenames(array(
 528                                  "body" => "admin/category_edit_body.tpl")
 529                          );
 530  
 531                          $s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="' . POST_CAT_URL . '" value="' . $cat_id . '" />';
 532  
 533                          $template->assign_vars(array(
 534                                  'CAT_TITLE' => $cat_title,
 535  
 536                                  'L_EDIT_CATEGORY' => $lang['Edit_Category'],
 537                                  'L_EDIT_CATEGORY_EXPLAIN' => $lang['Edit_Category_explain'],
 538                                  'L_CATEGORY' => $lang['Category'],
 539  
 540                                  'S_HIDDEN_FIELDS' => $s_hidden_fields,
 541                                  'S_SUBMIT_VALUE' => $buttonvalue,
 542                                  'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"))
 543                          );
 544  
 545                          $template->pparse("body");
 546                          break;
 547  
 548                  case 'modcat':
 549                          // Modify a category in the DB

 550                          $sql = "UPDATE " . CATEGORIES_TABLE . "
 551                                  SET cat_title = '" . str_replace("\'", "''", $HTTP_POST_VARS['cat_title']) . "'
 552                                  WHERE cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]);
 553                          if( !$result = $db->sql_query($sql) )
 554                          {
 555                                  message_die(GENERAL_ERROR, "Couldn't update forum information", "", __LINE__, __FILE__, $sql);
 556                          }
 557  
 558                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 559  
 560                          message_die(GENERAL_MESSAGE, $message);
 561  
 562                          break;
 563  
 564                  case 'deleteforum':
 565                          // Show form to delete a forum

 566                          $forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
 567  
 568                          $select_to = '<select name="to_id">';
 569                          $select_to .= "<option value=\"-1\"$s>" . $lang['Delete_all_posts'] . "</option>\n";
 570                          $select_to .= get_list('forum', $forum_id, 0);
 571                          $select_to .= '</select>';
 572  
 573                          $buttonvalue = $lang['Move_and_Delete'];
 574  
 575                          $newmode = 'movedelforum';
 576  
 577                          $foruminfo = get_info('forum', $forum_id);
 578                          $name = $foruminfo['forum_name'];
 579  
 580                          $template->set_filenames(array(
 581                                  "body" => "admin/forum_delete_body.tpl")
 582                          );
 583  
 584                          $s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="from_id" value="' . $forum_id . '" />';
 585  
 586                          $template->assign_vars(array(
 587                                  'NAME' => $name,
 588  
 589                                  'L_FORUM_DELETE' => $lang['Forum_delete'],
 590                                  'L_FORUM_DELETE_EXPLAIN' => $lang['Forum_delete_explain'],
 591                                  'L_MOVE_CONTENTS' => $lang['Move_contents'],
 592                                  'L_FORUM_NAME' => $lang['Forum_name'],
 593  
 594                                  "S_HIDDEN_FIELDS" => $s_hidden_fields,
 595                                  'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
 596                                  'S_SELECT_TO' => $select_to,
 597                                  'S_SUBMIT_VALUE' => $buttonvalue)
 598                          );
 599  
 600                          $template->pparse("body");
 601                          break;
 602  
 603                  case 'movedelforum':
 604                          //

 605                          // Move or delete a forum in the DB

 606                          //

 607                          $from_id = intval($HTTP_POST_VARS['from_id']);
 608                          $to_id = intval($HTTP_POST_VARS['to_id']);
 609                          $delete_old = intval($HTTP_POST_VARS['delete_old']);
 610  
 611                          // Either delete or move all posts in a forum

 612                          if($to_id == -1)
 613                          {
 614                                  // Delete polls in this forum

 615                                  $sql = "SELECT v.vote_id
 616                                          FROM " . VOTE_DESC_TABLE . " v, " . TOPICS_TABLE . " t
 617                                          WHERE t.forum_id = $from_id
 618                                                  AND v.topic_id = t.topic_id";
 619                                  if (!($result = $db->sql_query($sql)))
 620                                  {
 621                                          message_die(GENERAL_ERROR, "Couldn't obtain list of vote ids", "", __LINE__, __FILE__, $sql);
 622                                  }
 623  
 624                                  if ($row = $db->sql_fetchrow($result))
 625                                  {
 626                                          $vote_ids = '';
 627                                          do
 628                                          {
 629                                                  $vote_ids = (($vote_ids != '') ? ', ' : '') . $row['vote_id'];
 630                                          }
 631                                          while ($row = $db->sql_fetchrow($result));
 632  
 633                                          $sql = "DELETE FROM " . VOTE_DESC_TABLE . "
 634                                                  WHERE vote_id IN ($vote_ids)";
 635                                          $db->sql_query($sql);
 636  
 637                                          $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "
 638                                                  WHERE vote_id IN ($vote_ids)";
 639                                          $db->sql_query($sql);
 640  
 641                                          $sql = "DELETE FROM " . VOTE_USERS_TABLE . "
 642                                                  WHERE vote_id IN ($vote_ids)";
 643                                          $db->sql_query($sql);
 644                                  }
 645                                  $db->sql_freeresult($result);
 646  
 647                                  include ("../../../includes/prune.php");
 648                                  prune($from_id, 0, true); // Delete everything from forum

 649                          }
 650                          else
 651                          {
 652                                  $sql = "SELECT *
 653                                          FROM " . FORUMS_TABLE . "
 654                                          WHERE forum_id IN ($from_id, $to_id)";
 655                                  if( !$result = $db->sql_query($sql) )
 656                                  {
 657                                          message_die(GENERAL_ERROR, "Couldn't verify existence of forums", "", __LINE__, __FILE__, $sql);
 658                                  }
 659  
 660                                  if($db->sql_numrows($result) != 2)
 661                                  {
 662                                          message_die(GENERAL_ERROR, "Ambiguous forum ID's", "", __LINE__, __FILE__);
 663                                  }
 664                                  $sql = "UPDATE " . TOPICS_TABLE . "
 665                                          SET forum_id = $to_id
 666                                          WHERE forum_id = $from_id";
 667                                  if( !$result = $db->sql_query($sql) )
 668                                  {
 669                                          message_die(GENERAL_ERROR, "Couldn't move topics to other forum", "", __LINE__, __FILE__, $sql);
 670                                  }
 671                                  $sql = "UPDATE " . POSTS_TABLE . "
 672                                          SET        forum_id = $to_id
 673                                          WHERE forum_id = $from_id";
 674                                  if( !$result = $db->sql_query($sql) )
 675                                  {
 676                                          message_die(GENERAL_ERROR, "Couldn't move posts to other forum", "", __LINE__, __FILE__, $sql);
 677                                  }
 678                                  sync('forum', $to_id);
 679                          }
 680  
 681                          // Alter Mod level if appropriate - 2.0.4

 682                          $sql = "SELECT ug.user_id
 683                                  FROM " . AUTH_ACCESS_TABLE . " a, " . USER_GROUP_TABLE . " ug
 684                                  WHERE a.forum_id <> $from_id
 685                                          AND a.auth_mod = 1
 686                                          AND ug.group_id = a.group_id";
 687                          if( !$result = $db->sql_query($sql) )
 688                          {
 689                                  message_die(GENERAL_ERROR, "Couldn't obtain moderator list", "", __LINE__, __FILE__, $sql);
 690                          }
 691  
 692                          if ($row = $db->sql_fetchrow($result))
 693                          {
 694                                  $user_ids = '';
 695                                  do
 696                                  {
 697                                          $user_ids .= (($user_ids != '') ? ', ' : '' ) . $row['user_id'];
 698                                  }
 699                                  while ($row = $db->sql_fetchrow($result));
 700  
 701                                  $sql = "SELECT ug.user_id
 702                                          FROM " . AUTH_ACCESS_TABLE . " a, " . USER_GROUP_TABLE . " ug
 703                                          WHERE a.forum_id = $from_id
 704                                                  AND a.auth_mod = 1
 705                                                  AND ug.group_id = a.group_id
 706                                                  AND ug.user_id NOT IN ($user_ids)";
 707                                  if( !$result2 = $db->sql_query($sql) )
 708                                  {
 709                                          message_die(GENERAL_ERROR, "Couldn't obtain moderator list", "", __LINE__, __FILE__, $sql);
 710                                  }
 711  
 712                                  if ($row = $db->sql_fetchrow($result2))
 713                                  {
 714                                          $user_ids = '';
 715                                          do
 716                                          {
 717                                                  $user_ids .= (($user_ids != '') ? ', ' : '' ) . $row['user_id'];
 718                                          }
 719                                          while ($row = $db->sql_fetchrow($result2));
 720  
 721                                          $sql = "UPDATE " . USERS_TABLE . "
 722                                                  SET user_level = " . USER . "
 723                                                  WHERE user_id IN ($user_ids)
 724                                                          AND user_level <> " . ADMIN;
 725                                          $db->sql_query($sql);
 726                                  }
 727                                  $db->sql_freeresult($result);
 728  
 729                          }
 730                          $db->sql_freeresult($result2);
 731  
 732                          $sql = "DELETE FROM " . FORUMS_TABLE . "
 733                                  WHERE forum_id = $from_id";
 734                          if( !$result = $db->sql_query($sql) )
 735                          {
 736                                  message_die(GENERAL_ERROR, "Couldn't delete forum", "", __LINE__, __FILE__, $sql);
 737                          }
 738  
 739                          $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
 740                                  WHERE forum_id = $from_id";
 741                          if( !$result = $db->sql_query($sql) )
 742                          {
 743                                  message_die(GENERAL_ERROR, "Couldn't delete forum", "", __LINE__, __FILE__, $sql);
 744                          }
 745  
 746                          $sql = "DELETE FROM " . PRUNE_TABLE . "
 747                                  WHERE forum_id = $from_id";
 748                          if( !$result = $db->sql_query($sql) )
 749                          {
 750                                  message_die(GENERAL_ERROR, "Couldn't delete forum prune information!", "", __LINE__, __FILE__, $sql);
 751                          }
 752  
 753                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 754  
 755                          message_die(GENERAL_MESSAGE, $message);
 756  
 757                          break;
 758  
 759                  case 'deletecat':
 760                          //

 761                          // Show form to delete a category

 762                          //

 763                          $cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
 764  
 765                          $buttonvalue = $lang['Move_and_Delete'];
 766                          $newmode = 'movedelcat';
 767                          $catinfo = get_info('category', $cat_id);
 768                          $name = $catinfo['cat_title'];
 769  
 770                          if ($catinfo['number'] == 1)
 771                          {
 772                                  $sql = "SELECT count(*) as total
 773                                          FROM ". FORUMS_TABLE;
 774                                  if( !$result = $db->sql_query($sql) )
 775                                  {
 776                                          message_die(GENERAL_ERROR, "Couldn't get Forum count", "", __LINE__, __FILE__, $sql);
 777                                  }
 778                                  $count = $db->sql_fetchrow($result);
 779                                  $count = $count['total'];
 780  
 781                                  if ($count > 0)
 782                                  {
 783                                          message_die(GENERAL_ERROR, $lang['Must_delete_forums']);
 784                                  }
 785                                  else
 786                                  {
 787                                          $select_to = $lang['Nowhere_to_move'];
 788                                  }
 789                          }
 790                          else
 791                          {
 792                                  $select_to = '<select name="to_id">';
 793                                  $select_to .= get_list('category', $cat_id, 0);
 794                                  $select_to .= '</select>';
 795                          }
 796  
 797                          $template->set_filenames(array(
 798                                  "body" => "admin/forum_delete_body.tpl")
 799                          );
 800  
 801                          $s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode . '" /><input type="hidden" name="from_id" value="' . $cat_id . '" />';
 802  
 803                          $template->assign_vars(array(
 804                                  'NAME' => $name,
 805  
 806                                  'L_FORUM_DELETE' => $lang['Forum_delete'],
 807                                  'L_FORUM_DELETE_EXPLAIN' => $lang['Forum_delete_explain'],
 808                                  'L_MOVE_CONTENTS' => $lang['Move_contents'],
 809                                  'L_FORUM_NAME' => $lang['Forum_name'],
 810  
 811                                  'S_HIDDEN_FIELDS' => $s_hidden_fields,
 812                                  'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
 813                                  'S_SELECT_TO' => $select_to,
 814                                  'S_SUBMIT_VALUE' => $buttonvalue)
 815                          );
 816  
 817                          $template->pparse("body");
 818                          break;
 819  
 820                  case 'movedelcat':
 821                          //

 822                          // Move or delete a category in the DB

 823                          //

 824                          $from_id = intval($HTTP_POST_VARS['from_id']);
 825                          $to_id = intval($HTTP_POST_VARS['to_id']);
 826  
 827                          if (!empty($to_id))
 828                          {
 829                                  $sql = "SELECT *
 830                                          FROM " . CATEGORIES_TABLE . "
 831                                          WHERE cat_id IN ($from_id, $to_id)";
 832                                  if( !$result = $db->sql_query($sql) )
 833                                  {
 834                                          message_die(GENERAL_ERROR, "Couldn't verify existence of categories", "", __LINE__, __FILE__, $sql);
 835                                  }
 836                                  if($db->sql_numrows($result) != 2)
 837                                  {
 838                                          message_die(GENERAL_ERROR, "Ambiguous category ID's", "", __LINE__, __FILE__);
 839                                  }
 840  
 841                                  $sql = "UPDATE " . FORUMS_TABLE . "
 842                                          SET cat_id = $to_id
 843                                          WHERE cat_id = $from_id";
 844                                  if( !$result = $db->sql_query($sql) )
 845                                  {
 846                                          message_die(GENERAL_ERROR, "Couldn't move forums to other category", "", __LINE__, __FILE__, $sql);
 847                                  }
 848                          }
 849  
 850                          $sql = "DELETE FROM " . CATEGORIES_TABLE ."
 851                                  WHERE cat_id = $from_id";
 852  
 853                          if( !$result = $db->sql_query($sql) )
 854                          {
 855                                  message_die(GENERAL_ERROR, "Couldn't delete category", "", __LINE__, __FILE__, $sql);
 856                          }
 857  
 858                          $message = $lang['Forums_updated'] . "<br /><br />" . sprintf($lang['Click_return_forumadmin'], "<a href=\"" . append_sid("admin_forums.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
 859  
 860                          message_die(GENERAL_MESSAGE, $message);
 861  
 862                          break;
 863  
 864                  case 'forum_order':
 865                          //

 866                          // Change order of forums in the DB

 867                          //

 868                          $move = intval($HTTP_GET_VARS['move']);
 869                          $forum_id = intval($HTTP_GET_VARS[POST_FORUM_URL]);
 870  
 871                          $forum_info = get_info('forum', $forum_id);
 872  
 873                          $cat_id = $forum_info['cat_id'];
 874  
 875                          $sql = "UPDATE " . FORUMS_TABLE . "
 876                                  SET forum_order = forum_order + $move
 877                                  WHERE forum_id = $forum_id";
 878                          if( !$result = $db->sql_query($sql) )
 879                          {
 880                                  message_die(GENERAL_ERROR, "Couldn't change category order", "", __LINE__, __FILE__, $sql);
 881                          }
 882  
 883                          renumber_order('forum', $forum_info['cat_id']);
 884                          $show_index = TRUE;
 885  
 886                          break;
 887  
 888                  case 'cat_order':
 889                          //

 890                          // Change order of categories in the DB

 891                          //

 892                          $move = intval($HTTP_GET_VARS['move']);
 893                          $cat_id = intval($HTTP_GET_VARS[POST_CAT_URL]);
 894  
 895                          $sql = "UPDATE " . CATEGORIES_TABLE . "
 896                                  SET cat_order = cat_order + $move
 897                                  WHERE cat_id = $cat_id";
 898                          if( !$result = $db->sql_query($sql) )
 899                          {
 900                                  message_die(GENERAL_ERROR, "Couldn't change category order", "", __LINE__, __FILE__, $sql);
 901                          }
 902  
 903                          renumber_order('category');
 904                          $show_index = TRUE;
 905  
 906                          break;
 907  
 908                  case 'forum_sync':
 909                          sync('forum', intval($HTTP_GET_VARS[POST_FORUM_URL]));
 910                          $show_index = TRUE;
 911  
 912                          break;
 913  
 914                  default:
 915                          message_die(GENERAL_MESSAGE, $lang['No_mode']);
 916                          break;
 917          }
 918  
 919          if ($show_index != TRUE)
 920          {
 921                  include('./page_footer_admin.'.$phpEx);
 922                  exit;
 923          }
 924  }
 925  
 926  //

 927  // Start page proper

 928  //

 929  $template->set_filenames(array(
 930          "body" => "admin/forum_admin_body.tpl")
 931  );
 932  
 933  $template->assign_vars(array(
 934          'S_FORUM_ACTION' => append_sid("admin_forums.$phpEx"),
 935          'L_FORUM_TITLE' => $lang['Forum_admin'],
 936          'L_FORUM_EXPLAIN' => $lang['Forum_admin_explain'],
 937          'L_CREATE_FORUM' => $lang['Create_forum'],
 938          'L_CREATE_CATEGORY' => $lang['Create_category'],
 939          'L_EDIT' => $lang['Edit'],
 940          'L_DELETE' => $lang['Delete'],
 941          'L_MOVE_UP' => $lang['Move_up'],
 942          'L_MOVE_DOWN' => $lang['Move_down'],
 943          'L_RESYNC' => $lang['Resync'])
 944  );
 945  
 946  $sql = "SELECT cat_id, cat_title, cat_order
 947          FROM " . CATEGORIES_TABLE . "
 948          ORDER BY cat_order";
 949  if( !$q_categories = $db->sql_query($sql) )
 950  {
 951          message_die(GENERAL_ERROR, "Could not query categories list", "", __LINE__, __FILE__, $sql);
 952  }
 953  
 954  if( $total_categories = $db->sql_numrows($q_categories) )
 955  {
 956          $category_rows = $db->sql_fetchrowset($q_categories);
 957  
 958          $sql = "SELECT *
 959                  FROM " . FORUMS_TABLE . "
 960                  ORDER BY cat_id, forum_order";
 961          if(!$q_forums = $db->sql_query($sql))
 962          {
 963                  message_die(GENERAL_ERROR, "Could not query forums information", "", __LINE__, __FILE__, $sql);
 964          }
 965  
 966          if( $total_forums = $db->sql_numrows($q_forums) )
 967          {
 968                  $forum_rows = $db->sql_fetchrowset($q_forums);
 969          }
 970  
 971          //

 972          // Okay, let's build the index

 973          //

 974          $gen_cat = array();
 975  
 976          for($i = 0; $i < $total_categories; $i++)
 977          {
 978                  $cat_id = $category_rows[$i]['cat_id'];
 979  
 980                  $template->assign_block_vars("catrow", array(
 981                          'S_ADD_FORUM_SUBMIT' => "addforum[$cat_id]",
 982                          'S_ADD_FORUM_NAME' => "forumname[$cat_id]",
 983  
 984                          'CAT_ID' => $cat_id,
 985                          'CAT_DESC' => $category_rows[$i]['cat_title'],
 986  
 987                          'U_CAT_EDIT' => append_sid("admin_forums.$phpEx?mode=editcat&amp;" . POST_CAT_URL . "=$cat_id"),
 988                          'U_CAT_DELETE' => append_sid("admin_forums.$phpEx?mode=deletecat&amp;" . POST_CAT_URL . "=$cat_id"),
 989                          'U_CAT_MOVE_UP' => append_sid("admin_forums.$phpEx?mode=cat_order&amp;move=-15&amp;" . POST_CAT_URL . "=$cat_id"),
 990                          'U_CAT_MOVE_DOWN' => append_sid("admin_forums.$phpEx?mode=cat_order&amp;move=15&amp;" . POST_CAT_URL . "=$cat_id"),
 991                          'U_VIEWCAT' => ("../../../modules.php?name=Forums&file=index&c=$cat_id"))
 992                  );
 993  
 994                  for($j = 0; $j < $total_forums; $j++)
 995                  {
 996                          $forum_id = $forum_rows[$j]['forum_id'];
 997  
 998                          if ($forum_rows[$j]['cat_id'] == $cat_id)
 999                          {
1000  
1001                                  $template->assign_block_vars("catrow.forumrow",        array(
1002                                          'FORUM_NAME' => $forum_rows[$j]['forum_name'],
1003                                          'FORUM_DESC' => $forum_rows[$j]['forum_desc'],
1004                                          'ROW_COLOR' => $row_color,
1005                                          'NUM_TOPICS' => $forum_rows[$j]['forum_topics'],
1006                                          'NUM_POSTS' => $forum_rows[$j]['forum_posts'],
1007  
1008                                          'U_VIEWFORUM' => ("../../../modules.php?name=Forums&file=viewforum&f=$forum_id"),
1009                                          'U_FORUM_EDIT' => append_sid("admin_forums.$phpEx?mode=editforum&amp;" . POST_FORUM_URL . "=$forum_id"),
1010                                          'U_FORUM_DELETE' => append_sid("admin_forums.$phpEx?mode=deleteforum&amp;" . POST_FORUM_URL . "=$forum_id"),
1011                                          'U_FORUM_MOVE_UP' => append_sid("admin_forums.$phpEx?mode=forum_order&amp;move=-15&amp;" . POST_FORUM_URL . "=$forum_id"),
1012                                          'U_FORUM_MOVE_DOWN' => append_sid("admin_forums.$phpEx?mode=forum_order&amp;move=15&amp;" . POST_FORUM_URL . "=$forum_id"),
1013                                          'U_FORUM_RESYNC' => append_sid("admin_forums.$phpEx?mode=forum_sync&amp;" . POST_FORUM_URL . "=$forum_id"))
1014                                  );
1015  
1016                          }// if ... forumid == catid

1017  
1018                  } // for ... forums

1019  
1020          } // for ... categories

1021  
1022  }// if ... total_categories

1023  
1024  $template->pparse("body");
1025  
1026  include('./page_footer_admin.'.$phpEx);
1027  
1028  ?>


Généré le : Sun Apr 1 11:11:59 2007 par Balluche grâce à PHPXref 0.7