[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/includes/ -> functions_admin.php (source)

   1  <?php
   2  /***************************************************************************
   3   *                            functions_admin.php
   4   *                            -------------------
   5   *   begin                : Saturday, Feb 13, 2001
   6   *   copyright            : (C) 2001 The phpBB Group
   7   *   email                : support@phpbb.com
   8   *
   9   *   $Id: functions_admin.php 6981 2007-02-10 12:14:24Z acydburn $
  10   *
  11   *
  12   ***************************************************************************/
  13  
  14  /***************************************************************************
  15   *
  16   *   This program is free software; you can redistribute it and/or modify
  17   *   it under the terms of the GNU General Public License as published by
  18   *   the Free Software Foundation; either version 2 of the License, or
  19   *   (at your option) any later version.
  20   *
  21   *
  22   ***************************************************************************/
  23  
  24  //
  25  // Simple version of jumpbox, just lists authed forums
  26  //
  27  function make_forum_select($box_name, $ignore_forum = false, $select_forum = '')
  28  {
  29      global $db, $userdata, $lang;
  30  
  31      $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
  32  
  33      $sql = 'SELECT f.forum_id, f.forum_name
  34          FROM ' . CATEGORIES_TABLE . ' c, ' . FORUMS_TABLE . ' f
  35          WHERE f.cat_id = c.cat_id 
  36          ORDER BY c.cat_order, f.forum_order';
  37      if ( !($result = $db->sql_query($sql)) )
  38      {
  39          message_die(GENERAL_ERROR, 'Couldn not obtain forums information', '', __LINE__, __FILE__, $sql);
  40      }
  41  
  42      $forum_list = '';
  43      while( $row = $db->sql_fetchrow($result) )
  44      {
  45          if ( $is_auth_ary[$row['forum_id']]['auth_read'] && $ignore_forum != $row['forum_id'] )
  46          {
  47              $selected = ( $select_forum == $row['forum_id'] ) ? ' selected="selected"' : '';
  48              $forum_list .= '<option value="' . $row['forum_id'] . '"' . $selected .'>' . $row['forum_name'] . '</option>';
  49          }
  50      }
  51  
  52      $forum_list = ( $forum_list == '' ) ? $lang['No_forums'] : '<select name="' . $box_name . '">' . $forum_list . '</select>';
  53  
  54      return $forum_list;
  55  }
  56  
  57  //
  58  // Synchronise functions for forums/topics
  59  //
  60  function sync($type, $id = false)
  61  {
  62      global $db;
  63  
  64      switch($type)
  65      {
  66          case 'all forums':
  67              $sql = "SELECT forum_id
  68                  FROM " . FORUMS_TABLE;
  69              if ( !($result = $db->sql_query($sql)) )
  70              {
  71                  message_die(GENERAL_ERROR, 'Could not get forum IDs', '', __LINE__, __FILE__, $sql);
  72              }
  73  
  74              while( $row = $db->sql_fetchrow($result) )
  75              {
  76                  sync('forum', $row['forum_id']);
  77              }
  78                 break;
  79  
  80          case 'all topics':
  81              $sql = "SELECT topic_id
  82                  FROM " . TOPICS_TABLE;
  83              if ( !($result = $db->sql_query($sql)) )
  84              {
  85                  message_die(GENERAL_ERROR, 'Could not get topic ID', '', __LINE__, __FILE__, $sql);
  86              }
  87  
  88              while( $row = $db->sql_fetchrow($result) )
  89              {
  90                  sync('topic', $row['topic_id']);
  91              }
  92              break;
  93  
  94            case 'forum':
  95              $sql = "SELECT MAX(post_id) AS last_post, COUNT(post_id) AS total 
  96                  FROM " . POSTS_TABLE . "  
  97                  WHERE forum_id = $id";
  98              if ( !($result = $db->sql_query($sql)) )
  99              {
 100                  message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);
 101              }
 102  
 103              if ( $row = $db->sql_fetchrow($result) )
 104              {
 105                  $last_post = ( $row['last_post'] ) ? $row['last_post'] : 0;
 106                  $total_posts = ($row['total']) ? $row['total'] : 0;
 107              }
 108              else
 109              {
 110                  $last_post = 0;
 111                  $total_posts = 0;
 112              }
 113  
 114              $sql = "SELECT COUNT(topic_id) AS total
 115                  FROM " . TOPICS_TABLE . "
 116                  WHERE forum_id = $id";
 117              if ( !($result = $db->sql_query($sql)) )
 118              {
 119                  message_die(GENERAL_ERROR, 'Could not get topic count', '', __LINE__, __FILE__, $sql);
 120              }
 121  
 122              $total_topics = ( $row = $db->sql_fetchrow($result) ) ? ( ( $row['total'] ) ? $row['total'] : 0 ) : 0;
 123  
 124              $sql = "UPDATE " . FORUMS_TABLE . "
 125                  SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics
 126                  WHERE forum_id = $id";
 127              if ( !$db->sql_query($sql) )
 128              {
 129                  message_die(GENERAL_ERROR, 'Could not update forum', '', __LINE__, __FILE__, $sql);
 130              }
 131              break;
 132  
 133          case 'topic':
 134              $sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts
 135                  FROM " . POSTS_TABLE . "
 136                  WHERE topic_id = $id";
 137              if ( !($result = $db->sql_query($sql)) )
 138              {
 139                  message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);
 140              }
 141  
 142              if ( $row = $db->sql_fetchrow($result) )
 143              {
 144                  if ($row['total_posts'])
 145                  {
 146                      // Correct the details of this topic
 147                      $sql = 'UPDATE ' . TOPICS_TABLE . ' 
 148                          SET topic_replies = ' . ($row['total_posts'] - 1) . ', topic_first_post_id = ' . $row['first_post'] . ', topic_last_post_id = ' . $row['last_post'] . "
 149                          WHERE topic_id = $id";
 150  
 151                      if (!$db->sql_query($sql))
 152                      {
 153                          message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql);
 154                      }
 155                  }
 156                  else
 157                  {
 158                      // There are no replies to this topic
 159                      // Check if it is a move stub
 160                      $sql = 'SELECT topic_moved_id 
 161                          FROM ' . TOPICS_TABLE . " 
 162                          WHERE topic_id = $id";
 163  
 164                      if (!($result = $db->sql_query($sql)))
 165                      {
 166                          message_die(GENERAL_ERROR, 'Could not get topic ID', '', __LINE__, __FILE__, $sql);
 167                      }
 168  
 169                      if ($row = $db->sql_fetchrow($result))
 170                      {
 171                          if (!$row['topic_moved_id'])
 172                          {
 173                              $sql = 'DELETE FROM ' . TOPICS_TABLE . " WHERE topic_id = $id";
 174              
 175                              if (!$db->sql_query($sql))
 176                              {
 177                                  message_die(GENERAL_ERROR, 'Could not remove topic', '', __LINE__, __FILE__, $sql);
 178                              }
 179                          }
 180                      }
 181  
 182                      $db->sql_freeresult($result);
 183                  }
 184              }
 185              break;
 186      }
 187      
 188      return true;
 189  }
 190  
 191  ?>


Generated: Mon Jan 14 19:21:40 2013 Cross-referenced by PHPXref 0.7.1