[ Index ]
 

Code source de PHP NUKE 7.9

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

title

Body

[fermer]

/modules/Forums/ -> update_to_209.php (source)

   1  <?php
   2  /***************************************************************************
   3   *                             update_to_xxx.php
   4   *                            -------------------
   5   *   begin                : Wednesday, May 16, 2002
   6   *   copyright            : (C) 2001 The phpBB Group
   7   *   email                : support@phpbb.com
   8   *
   9   *   $Id: update_to_209.php,v 1.1.2.1 2004/07/11 16:46:20 acydburn 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  if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
  22      die ("You can't access this file directly...");
  23  }
  24  $module_name = basename(dirname(__FILE__));
  25  require("modules/".$module_name."/nukebb.php");
  26  function _sql($sql, &$errored, &$error_ary, $echo_dot = true)
  27  {
  28      global $db;
  29  
  30      if (!($result = $db->sql_query($sql)))
  31      {
  32          $errored = true;
  33          $error_ary['sql'][] = (is_array($sql)) ? $sql[$i] : $sql;
  34          $error_ary['error_code'][] = $db->sql_error();
  35      }
  36  
  37      if ($echo_dot)
  38      {
  39          echo ". \n";
  40          flush();
  41      }
  42  
  43      return $result;
  44  }
  45  
  46  @set_time_limit(120);
  47  
  48  define('IN_PHPBB', 1);
  49  
  50  include ($phpbb_root_path . 'extension.inc');
  51  include($phpbb_root_path . 'config.'.$phpEx);
  52  
  53  include ("includes/constants.php");
  54  include ("includes/functions.php");
  55  include ("includes/functions_admin.php");
  56  include ("includes/functions_search.php");
  57  include ("db/db.php");
  58  
  59  
  60  //
  61  //
  62  //
  63  $updates_to_version = ".0.9";
  64  //
  65  //
  66  //
  67  
  68  ?>
  69  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  70  <html>
  71  <head>
  72  <meta http-equiv="Content-Type" content="text/html;">
  73  <meta http-equiv="Content-Style-Type" content="text/css">
  74  <style type="text/css">
  75  <!--
  76  
  77  font,th,td,p,body { font-family: "Courier New", courier; font-size: 11pt }
  78  
  79  a:link,a:active,a:visited { color : #006699; }
  80  a:hover        { text-decoration: underline; color : #DD6900;}
  81  
  82  hr    { height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}
  83  
  84  .maintitle,h1,h2    {font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000;}
  85  
  86  .ok {color:green}
  87  
  88  /* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
  89  @import url("modules/Forums/templates/subSilver/formIE.css");
  90  -->
  91  </style>
  92  </head>
  93  <body bgcolor="#FFFFFF" text="#000000" link="#006699" vlink="#5584AA">
  94  
  95  <table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
  96      <tr>
  97          <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
  98              <tr>
  99                                  <td><img src="modules/Forums/templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
 100                  <td align="center" width="100%" valign="middle"><span class="maintitle">Updating to latest stable release</span></td>
 101              </tr>
 102          </table></td>
 103      </tr>
 104  </table>
 105  
 106  <br clear="all" />
 107  
 108  <h2>Information</h2>
 109  
 110  <?php
 111  
 112  echo '<p>Database type &nbsp; &nbsp;:: <b>' . SQL_LAYER . '</b><br />';
 113  
 114  $sql = "SELECT config_value
 115      FROM " . CONFIG_TABLE . "
 116      WHERE config_name = 'version'";
 117  if (!($result = $db->sql_query($sql)))
 118  {
 119      die("Couldn't obtain version info");
 120  }
 121  
 122  $row = $db->sql_fetchrow($result);
 123  
 124  $sql = array();
 125  
 126  switch ($row['config_value'])
 127  {
 128      case '':
 129          echo 'Previous version :: <b>&lt; RC-3</b></p><br />';
 130          break;
 131      case 'RC-3':
 132          echo 'Previous version :: <b>RC-3</b></p><br />';
 133          break;
 134      case 'RC-4':
 135          echo 'Previous version :: <b>RC-4</b></p><br />';
 136          break;
 137      default:
 138          echo 'Previous version :: <b>2' . $row['config_value'] . '</b><br />';
 139          break;
 140  }
 141  
 142  echo 'Updated version &nbsp;:: <b>2' . $updates_to_version . '</b></p>' ."\n";
 143  
 144  //
 145  // Schema updates
 146  //
 147  switch ($row['config_value'])
 148  {
 149      case '':
 150          switch (SQL_LAYER)
 151          {
 152              case 'mysql':
 153              case 'mysql4':
 154                  $sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
 155                      COLUMN user_autologin_key";
 156  
 157                  $sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
 158                      COLUMN rank_max";
 159  
 160                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 161                      ADD COLUMN user_session_time int(11) DEFAULT '0' NOT NULL,
 162                      ADD COLUMN user_session_page smallint(5) DEFAULT '0' NOT NULL,
 163                      ADD INDEX (user_session_time)";
 164                  $sql[] = "ALTER TABLE " . SEARCH_TABLE . "
 165                      MODIFY search_id int(11) NOT NULL";
 166  
 167                  $sql[] = "ALTER TABLE " . TOPICS_TABLE . "
 168                      MODIFY topic_moved_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
 169                      ADD COLUMN topic_first_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
 170                      ADD INDEX (topic_first_post_id)";
 171  
 172                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 173                      ADD COLUMN tr_class1_name varchar(50) NULL,
 174                      ADD COLUMN tr_class2_name varchar(50) NULL,
 175                      ADD COLUMN tr_class3_name varchar(50) NULL,
 176                      ADD COLUMN th_class1_name varchar(50) NULL,
 177                      ADD COLUMN th_class2_name varchar(50) NULL,
 178                      ADD COLUMN th_class3_name varchar(50) NULL,
 179                      ADD COLUMN td_class1_name varchar(50) NULL,
 180                      ADD COLUMN td_class2_name varchar(50) NULL,
 181                      ADD COLUMN td_class3_name varchar(50) NULL,
 182                      ADD COLUMN span_class1_name varchar(50) NULL,
 183                      ADD COLUMN span_class2_name varchar(50) NULL,
 184                      ADD COLUMN span_class3_name varchar(50) NULL";
 185                  break;
 186              case 'postgresql':
 187                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 188                      ADD COLUMN user_session_time int4";
 189                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 190                      ADD COLUMN user_session_page int2";
 191                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 192                      ALTER COLUMN user_session_time SET DEFAULT '0'";
 193                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 194                      ALTER COLUMN user_session_page SET DEFAULT '0'";
 195                  $sql[] = "CREATE INDEX user_session_time_" . $table_prefix . "users_index
 196                      ON " . USERS_TABLE . " (user_session_time)";
 197  
 198                  $sql[] = "ALTER TABLE " . TOPICS_TABLE . "
 199                      ADD COLUMN topic_first_post_id int4";
 200                  $sql[] = "CREATE INDEX topic_first_post_id_" . $table_prefix . "topics_index
 201                      ON " . TOPICS_TABLE . " (topic_first_post_id)";
 202  
 203                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 204                      ADD COLUMN tr_class1_name varchar(50) NULL";
 205                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 206                      ADD COLUMN tr_class2_name varchar(50) NULL";
 207                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 208                      ADD COLUMN tr_class3_name varchar(50) NULL";
 209                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 210                      ADD COLUMN th_class1_name varchar(50) NULL";
 211                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 212                      ADD COLUMN th_class2_name varchar(50) NULL";
 213                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 214                      ADD COLUMN th_class3_name varchar(50) NULL";
 215                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 216                      ADD COLUMN td_class1_name varchar(50) NULL";
 217                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 218                      ADD COLUMN td_class2_name varchar(50) NULL";
 219                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 220                      ADD COLUMN td_class3_name varchar(50) NULL";
 221                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 222                      ADD COLUMN span_class1_name varchar(50) NULL";
 223                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 224                      ADD COLUMN span_class2_name varchar(50) NULL";
 225                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . "
 226                      ADD COLUMN span_class3_name varchar(50) NULL";
 227                  break;
 228  
 229              case 'mssql-odbc':
 230              case 'mssql':
 231                  $sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
 232                      COLUMN user_autologin_key";
 233  
 234                  $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
 235                      user_session_time int NOT NULL,
 236                      user_session_page smallint NOT NULL,
 237                      CONSTRAINT [DF_" . $table_prefix . "users_user_session_time] DEFAULT (0) FOR [user_session_time],
 238                      CONSTRAINT [DF_" . $table_prefix . "users_user_session_page] DEFAULT (0) FOR [user_session_page]";
 239                  $sql[] = "CREATE INDEX [IX_" . $table_prefix . "users]
 240                      ON [" . USERS_TABLE . "]([user_session_time]) ON [PRIMARY]";
 241  
 242                  /* ---------------------------------------------------------------------
 243                      DROP FORUM TABLE -- if this may cause you problems you can safely
 244                      comment it out, remember to manually remove the IDENTITY setting on
 245                      the forum_id column
 246                     --------------------------------------------------------------------- */
 247                  $sql [] = "ALTER TABLE " . FORUMS_TABLE . " DROP
 248                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts],
 249                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics],
 250                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id],
 251                      CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable],
 252                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_view],
 253                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_read],
 254                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_post],
 255                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply],
 256                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit],
 257                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete],
 258                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky],
 259                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce],
 260                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote],
 261                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate],
 262                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments]";
 263                  $sql[] = "CREATE TABLE Tmp_" . FORUMS_TABLE . "
 264                      (forum_id int NOT NULL, cat_id int NOT NULL, forum_name varchar(100) NOT NULL, forum_desc varchar(255) NULL, forum_status smallint NOT NULL, forum_order int NOT NULL, forum_posts int NOT NULL, forum_topics smallint NOT NULL, forum_last_post_id int NOT NULL, prune_next int NULL, prune_enable smallint NOT NULL, auth_view smallint NOT NULL, auth_read smallint NOT NULL, auth_post smallint NOT NULL, auth_reply smallint NOT NULL, auth_edit smallint NOT NULL, auth_delete smallint NOT NULL,    auth_sticky smallint NOT NULL, auth_announce smallint NOT NULL, auth_vote smallint NOT NULL, auth_pollcreate smallint NOT NULL, auth_attachments smallint NOT NULL) ON [PRIMARY]";
 265                  $sql[] = "ALTER TABLE [Tmp_" . FORUMS_TABLE . "] WITH NOCHECK ADD
 266                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_posts] DEFAULT (0) FOR [forum_posts],
 267                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_topics] DEFAULT (0) FOR [forum_topics],
 268                      CONSTRAINT [DF_" . $table_prefix . "forums_forum_last_post_id] DEFAULT (0) FOR [forum_last_post_id],
 269                      CONSTRAINT [DF_" . $table_prefix . "forums_prune_enable] DEFAULT (0) FOR [prune_enable],
 270                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_view] DEFAULT (0) FOR [auth_view],
 271                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_read] DEFAULT (0) FOR [auth_read],
 272                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_post] DEFAULT (0) FOR [auth_post],
 273                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_reply] DEFAULT (0) FOR [auth_reply],
 274                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_edit] DEFAULT (0) FOR [auth_edit],
 275                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_delete] DEFAULT (0) FOR [auth_delete],
 276                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_sticky] DEFAULT (0) FOR [auth_sticky],
 277                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_announce] DEFAULT (0) FOR [auth_announce],
 278                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_vote] DEFAULT (0) FOR [auth_vote],
 279                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_pollcreate] DEFAULT (0) FOR [auth_pollcreate],
 280                      CONSTRAINT [DF_" . $table_prefix . "forums_auth_attachments] DEFAULT (0) FOR [auth_attachments]";
 281                  $sql[] = "INSERT INTO Tmp_" . FORUMS_TABLE . " (forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments)
 282                          SELECT forum_id, cat_id, forum_name, forum_desc, forum_status, forum_order, forum_posts, forum_topics, forum_last_post_id, prune_next, prune_enable, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments FROM " . FORUMS_TABLE . " TABLOCKX";
 283                  $sql[] = "DROP TABLE " . FORUMS_TABLE;
 284                  $sql[] = "EXECUTE sp_rename N'Tmp_" . FORUMS_TABLE . "', N'" . FORUMS_TABLE . "', 'OBJECT'";
 285                  $sql[] = "ALTER TABLE " . FORUMS_TABLE . " ADD
 286                      CONSTRAINT [PK_" . $table_prefix . "forums] PRIMARY KEY CLUSTERED (forum_id) ON [PRIMARY]";
 287                  $sql[] = "CREATE NONCLUSTERED INDEX [IX_" . $table_prefix . "forums]
 288                      ON " . FORUMS_TABLE . " (cat_id, forum_order, forum_last_post_id) ON [PRIMARY]";
 289                  /* --------------------------------------------------------------
 290                      END OF DROP FORUM -- don't remove anything after this point!
 291                     -------------------------------------------------------------- */
 292  
 293                  $sql[] = "DROP INDEX " . RANKS_TABLE . ".IX_" . $table_prefix . "ranks";
 294                  $sql[] = "ALTER TABLE " . RANKS_TABLE . " DROP
 295                      COLUMN rank_max";
 296                  $sql[] = "CREATE  INDEX [IX_" . $table_prefix . "ranks]
 297                      ON [" . RANKS_TABLE . "]([rank_min], [rank_special]) ON [PRIMARY]";
 298  
 299                  $sql[] = "DROP INDEX " . TOPICS_TABLE . ".IX_" . $table_prefix . "topics";
 300                  $sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
 301                      topic_first_post_id int NULL,
 302                      CONSTRAINT [DF_" . $table_prefix . "topics_topic_first_post_id] FOR [topic_first_post_id]";
 303                  $sql[] = "CREATE  INDEX [IX_" . $table_prefix . "topics]
 304                      ON [" . TOPICS_TABLE . "]([forum_id], [topic_type], [topic_first_post_id], [topic_last_post_id]) ON [PRIMARY]";
 305  
 306                  $sql[] = "ALTER TABLE " . SEARCH_WORD_TABLE . " DROP
 307                      CONSTRAINT [PK_" . $table_prefix . "search_wordlist]";
 308                  $sql[] = "CREATE UNIQUE INDEX [IX_" . $table_prefix . "search_wordlist]
 309                      ON [" . SEARCH_WORD_TABLE . "]([word_text]) WITH IGNORE_DUP_KEY ON [PRIMARY]";
 310                  $sql[] = "CREATE  INDEX [IX_" . $table_prefix . "search_wordlist_1]
 311                      ON [" . SEARCH_WORD_TABLE . "]([word_common]) ON [PRIMARY]";
 312  
 313                  $sql[] = "CREATE INDEX [IX_" . $table_prefix . "search_wordmatch_1]
 314                      ON [" . SEARCH_MATCH_TABLE . "]([word_id]) ON [PRIMARY]";
 315  
 316                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
 317                      tr_class1_name varchar(50) NULL,
 318                      tr_class2_name varchar(50) NULL,
 319                      tr_class3_name varchar(50) NULL,
 320                      th_class1_name varchar(50) NULL,
 321                      th_class2_name varchar(50) NULL,
 322                      th_class3_name varchar(50) NULL,
 323                      td_class1_name varchar(50) NULL,
 324                      td_class2_name varchar(50) NULL,
 325                      td_class3_name varchar(50) NULL,
 326                      span_class1_name varchar(50) NULL,
 327                      span_class2_name varchar(50) NULL,
 328                      span_class3_name varchar(50) NULL";
 329                  break;
 330  
 331              case 'msaccess':
 332                  $sql[] = "ALTER TABLE " . USERS_TABLE . " DROP
 333                      COLUMN user_autologin_key";
 334  
 335                  $sql[] = "ALTER TABLE " . USERS_TABLE . " ADD
 336                      user_session_time int NOT NULL,
 337                      user_session_page smallint NOT NULL";
 338                  $sql[] = "CREATE INDEX user_session_time
 339                      ON " . USERS_TABLE . " (user_session_time)";
 340  
 341                  $sql[] = "ALTER TABLE " . TOPICS_TABLE . " ADD
 342                      topic_first_post_id int NULL";
 343                  $sql[] = "CREATE INDEX topic_first_post_id
 344                      ON " . TOPICS_TABLE . " (topic_first_post_id)";
 345  
 346                  $sql[] = "ALTER TABLE " . THEMES_NAME_TABLE . " ADD
 347                      tr_class1_name varchar(50) NULL,
 348                      tr_class2_name varchar(50) NULL,
 349                      tr_class3_name varchar(50) NULL,
 350                      th_class1_name varchar(50) NULL,
 351                      th_class2_name varchar(50) NULL,
 352                      th_class3_name varchar(50) NULL,
 353                      td_class1_name varchar(50) NULL,
 354                      td_class2_name varchar(50) NULL,
 355                      td_class3_name varchar(50) NULL,
 356                      span_class1_name varchar(50) NULL,
 357                      span_class2_name varchar(50) NULL,
 358                      span_class3_name varchar(50) NULL";
 359                  break;
 360  
 361              default:
 362                  die("No DB LAYER found!");
 363                  break;
 364          }
 365  
 366      case 'RC-3':
 367      case 'RC-4':
 368      case '.0.0':
 369          switch (SQL_LAYER)
 370          {
 371              case 'mysql':
 372              case 'mysql4':
 373                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 374                      MODIFY COLUMN user_id  mediumint(8) NOT NULL,
 375                      MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL";
 376                  break;
 377              case 'postgresql':
 378                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 379                      RENAME COLUMN user_timezone TO user_timezone_old";
 380                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 381                      ADD COLUMN user_timezone decimal(5)";
 382                  break;
 383              case 'mssql':
 384              case 'mssql-odbc':
 385                  $sql[] = "ALTER TABLE " . USERS_TABLE . "
 386                      ALTER COLUMN [user_timezone] [decimal] (5,2) NOT NULL";
 387                  break;
 388          }
 389  
 390      case '.0.1':
 391          switch (SQL_LAYER)
 392          {
 393              case 'mysql':
 394              case 'mysql4':
 395                  $sql[] = "ALTER TABLE " . GROUPS_TABLE . "
 396                      MODIFY COLUMN group_id mediumint(8) NOT NULL auto_increment";
 397                  break;
 398              case 'mssql':
 399              case 'mssql-odbc':
 400                  /* ---------------------------------------------------------------------
 401                      DROP GROUP TABLE -- if this may cause you problems you can safely
 402                      comment it out, remember to manually add the IDENTITY setting on
 403                      the group_id column
 404                     --------------------------------------------------------------------- */
 405                  $sql[] = "CREATE TABLE Tmp_" . GROUPS_TABLE . "
 406                      (group_id int IDENTITY (1, 1) NOT NULL, group_type smallint NULL, group_name varchar(50) NOT NULL, group_description varchar(255) NOT NULL, group_moderator int NULL, group_single_user smallint NOT NULL) ON [PRIMARY]";
 407                  $sql[] = "SET IDENTITY_INSERT " . GROUPS_TABLE . " ON";
 408                  $sql[] = "INSERT INTO Tmp_" . GROUPS_TABLE . " (group_id, group_type, group_name, group_description, group_moderator, group_single_user)
 409                      SELECT group_id, group_type, group_name, group_description, group_moderator, group_single_user FROM " . GROUPS_TABLE . " TABLOCKX";
 410                  $sql[] = "SET IDENTITY_INSERT " . GROUPS_TABLE . " OFF";
 411                  $sql[] = "DROP TABLE " . GROUPS_TABLE;
 412                  $sql[] = "EXECUTE sp_rename N'Tmp_" . GROUPS_TABLE . "', N'" . GROUPS_TABLE . "', 'OBJECT'";
 413                  $sql[] = "ALTER TABLE " . GROUPS_TABLE . " ADD
 414                      CONSTRAINT [PK_" . $table_prefix . "groups] PRIMARY KEY CLUSTERED (group_id) ON [PRIMARY]";
 415                  $sql[] = "CREATE INDEX [IX_" . $table_prefix . "groups]
 416                      ON " . GROUPS_TABLE . " (group_single_user) ON [PRIMARY]";
 417                  /* --------------------------------------------------------------
 418                      END OF DROP GROUP -- don't remove anything after this point!
 419                     -------------------------------------------------------------- */
 420                  break;
 421              
 422          }
 423  
 424      case '.0.3':
 425  
 426          switch (SQL_LAYER)
 427          {
 428              case 'mysql':
 429              case 'mysql4':
 430                  // Add indexes to post_id in search match table (+ word_id for MS Access)
 431                  $sql[] = "ALTER TABLE " . SEARCH_MATCH_TABLE . " 
 432                      ADD INDEX post_id (post_id)";
 433  
 434                  // Modify user_timezone to decimal(5,2) for mysql ... mysql4/mssql/pgsql/msaccess
 435                  // should be completely unaffected
 436                  // Change default user_notify to 0 
 437                  $sql[] = "ALTER TABLE " . USERS_TABLE . " 
 438                      MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL, 
 439                      MODIFY COLUMN user_notify tinyint(1) DEFAULT '0' NOT NULL";
 440  
 441                  // Adjust field type for prune_days, prune_freq ... was too small
 442                  $sql[] = "ALTER TABLE " . PRUNE_TABLE . " 
 443                      MODIFY COLUMN prune_days smallint(5) UNSIGNED NOT NULL, 
 444                      MODIFY COLUMN prune_freq smallint(5) UNSIGNED NOT NULL";
 445                  break;
 446  
 447              case 'msaccess':
 448                  // Add indexes to post_id in search match table (+ word_id for MS Access)
 449                  $sql[] = "CREATE INDEX " . SEARCH_MATCH_TABLE . " 
 450                      ON " . SEARCH_MATCH_TABLE . " ([post_id])";
 451                  $sql[] = "CREATE INDEX " . SEARCH_MATCH_TABLE . "_1 
 452                      ON " . SEARCH_MATCH_TABLE . " ([word_id])";
 453                  break;
 454  
 455              case 'postgresql':
 456                  // Add indexes to post_id in search match table (+ word_id for MS Access)
 457                  $sql[] = "CREATE INDEX post_id_" . SEARCH_MATCH_TABLE . " 
 458                      ON " . SEARCH_MATCH_TABLE . " (post_id)";
 459  
 460                  // Regenerate groups table with incremented group_id for pgsql 
 461                  // ... missing in 2.0.3 ...
 462                  $sql[] = "CREATE SEQUENCE " . GROUPS_TABLE . "_id_seq start 3 increment 1 maxvalue 2147483647 minvalue 1 cache 1";
 463                  $sql[] = "CREATE TABLE tmp_" . GROUPS_TABLE . " 
 464                      AS SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user 
 465                          FROM " . GROUPS_TABLE;
 466                  $sql[] = "DROP TABLE " . GROUPS_TABLE;
 467                  $sql[] = "CREATE TABLE phpbb_groups (group_id int DEFAULT nextval('" . GROUPS_TABLE . "_id_seq'::text) NOT NULL, group_name varchar(40) NOT NULL, group_type int2 DEFAULT '1' NOT NULL, group_description varchar(255) NOT NULL, group_moderator int4 DEFAULT '0' NOT NULL, group_single_user int2 DEFAULT '0' NOT NULL, CONSTRAINT phpbb_groups_pkey PRIMARY KEY (group_id))";
 468                  $sql[] = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_type, group_description, group_moderator, group_single_user) 
 469                      SELECT group_id, group_name, group_type, group_description, group_moderator, group_single_user 
 470                          FROM tmp_" . GROUPS_TABLE;
 471                  $sql[] = "DROP TABLE tmp_" . GROUPS_TABLE;
 472                  break;
 473          }
 474  
 475      case '.0.4':
 476  
 477          switch (SQL_LAYER)
 478          {
 479              case 'mssql':
 480              case 'mssql-odbc':
 481                  // Add missing defaults to MSSQL post table schema, failed in previous updates
 482                  $sql[] = "ALTER TABLE [" . POSTS_TABLE . "] WITH NOCHECK ADD
 483                      CONSTRAINT [DF_" . POSTS_TABLE . "_enable_bbcode] DEFAULT (1) FOR [enable_bbcode],
 484                      CONSTRAINT [DF_" . POSTS_TABLE . "_enable_html] DEFAULT (0) FOR [enable_html],
 485                      CONSTRAINT [DF_" . POSTS_TABLE . "_enable_smilies] DEFAULT (1) FOR [enable_smilies],
 486                      CONSTRAINT [DF_" . POSTS_TABLE . "_enable_sig] DEFAULT (1) FOR [enable_sig],
 487                      CONSTRAINT [DF_" . POSTS_TABLE . "_post_edit_count] DEFAULT (0) FOR [post_edit_count]";
 488                  break;
 489          }
 490  
 491          // Add tables for visual confirmation ... saves me the trouble of writing a seperate
 492          // script :D
 493          switch (SQL_LAYER)
 494          {
 495              case 'mysql':
 496              case 'mysql4':
 497                  $sql[] = 'CREATE TABLE ' . $table_prefix . 'confirm (confirm_id char(32) DEFAULT \'\' NOT NULL, session_id char(32) DEFAULT \'\' NOT NULL, code char(6) DEFAULT \'\' NOT NULL, PRIMARY KEY (session_id, confirm_id))';
 498                  break;
 499  
 500              case 'mssql':
 501              case 'mssql-odbc':
 502                  $sql[] = 'CREATE TABLE [' . $table_prefix . 'confirm] ([confirm_id] [char] (32) NOT NULL , [session_id] [char] (32) NOT NULL , [code] [char] (6) NOT NULL ) ON [PRIMARY]';
 503                  $sql[] = 'ALTER TABLE [' . $table_prefix . 'confirm] WITH NOCHECK ADD CONSTRAINT [PK_' . $table_prefix . 'confirm] PRIMARY KEY  CLUSTERED ( [session_id],[confirm_id])  ON [PRIMARY]';
 504                  $sql[] = 'ALTER TABLE [' . $table_prefix . 'confirm] WITH NOCHECK ADD CONSTRAINT [DF_' . $table_prefix . 'confirm_confirm_id] DEFAULT (\'\') FOR [confirm_id], CONSTRAINT [DF_' . $table_prefix . 'confirm_session_id] DEFAULT (\'\') FOR [session_id], CONSTRAINT [DF_' . $table_prefix . 'confirm_code] DEFAULT (\'\') FOR [code]';
 505                  break;
 506  
 507              case 'msaccess':
 508                  $sql[] = 'CREATE TABLE ' . $table_prefix . 'confirm (confirm_id char(32) NOT NULL, session_id char(32) NOT NULL, code char(6) NOT NULL)';
 509                  $sql[] = 'ALTER TABLE ' . $table_prefix . 'confirm ADD (PRIMARY KEY (session_id, confirm_id))';
 510                  break;
 511  
 512              case 'postgresql':
 513                  $sql[] = 'CREATE TABLE ' . $table_prefix . 'confirm (confirm_id char(32) DEFAULT \'\' NOT NULL,  session_id char(32) DEFAULT \'\' NOT NULL, code char(6) DEFAULT \'\' NOT NULL, CONSTRAINT phpbb_confirm_pkey PRIMARY KEY (session_id, confirm_id))';
 514                  break;
 515          }
 516  
 517          break;
 518  }
 519  
 520  echo "<h2>Updating database schema</h2>\n";
 521  echo "<p>Progress :: <b>";
 522  flush();
 523  
 524  $error_ary = array();
 525  $errored = false;
 526  if (count($sql))
 527  {
 528      for ($i = 0; $i < count($sql); $i++)
 529      {
 530          _sql($sql[$i], $errored, $error_ary);
 531      }
 532  
 533      echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
 534  
 535      if ($errored)
 536      {
 537          echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
 538  
 539          for ($i = 0; $i < count($error_ary['sql']); $i++)
 540          {
 541              echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
 542              echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
 543          }
 544  
 545          echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
 546      }
 547      else
 548      {
 549          echo "<b>No errors</b>\n";
 550      }
 551  }
 552  else
 553  {
 554      echo " No updates required</b></p>\n";
 555  }
 556  
 557  //
 558  // Data updates
 559  //
 560  unset($sql);
 561  $error_ary = array();
 562  $errored = false;
 563  
 564  echo "<h2>Updating data</h2>\n";
 565  echo "<p>Progress :: <b>";
 566  flush();
 567  
 568  switch ($row['config_value'])
 569  {
 570      case '':
 571          $sql = "SELECT themes_id
 572              FROM " . THEMES_TABLE . "
 573              WHERE template_name = 'subSilver'";
 574          $result = _sql($sql, $errored, $error_ary);
 575  
 576          if ($row = $db->sql_fetchrow($result))
 577          {
 578              $theme_id = $row['themes_id'];
 579  
 580              $sql = "UPDATE " . THEMES_TABLE . "
 581                  SET head_stylesheet = 'subSilver.css', body_background = '', body_bgcolor = 'E5E5E5', body_text = '000000', body_link = '006699', body_vlink = '5493B4', body_alink = '', body_hlink = 'DD6900', tr_color1 = 'EFEFEF', tr_color2 = 'DEE3E7', tr_color3 = 'D1D7DC', tr_class1 = '', tr_class2 = '', tr_class3 = '', th_color1 = '98AAB1', th_color2 = '006699', th_color3 = 'FFFFFF', th_class1 = 'cellpic1.gif', th_class2 = 'cellpic3.gif', th_class3 = 'cellpic2.jpg', td_color1 = 'FAFAFA', td_color2 = 'FFFFFF', td_color3 = '', td_class1 = 'row1', td_class2 = 'row2', td_class3 = '', fontface1 = 'Verdana, Arial, Helvetica, sans-serif', fontface2 = 'Trebuchet MS', fontface3 = 'Courier, ''Courier New'', sans-serif', fontsize1 = 10, fontsize2 = 11, fontsize3 = 12, fontcolor1 = '444444', fontcolor2 = '006600', fontcolor3 = 'FFA34F', span_class1 = '', span_class2 = '', span_class3 = ''
 582                  WHERE themes_id = $theme_id";
 583              _sql($sql, $errored, $error_ary);
 584  
 585              $sql = "DELETE FROM " . THEMES_NAME_TABLE . "
 586                  WHERE themes_id = $theme_id";
 587              _sql($sql, $errored, $error_ary);
 588  
 589              $sql = "INSERT INTO " . THEMES_NAME_TABLE . " (themes_id, tr_color1_name, tr_color2_name, tr_color3_name, tr_class1_name, tr_class2_name, tr_class3_name, th_color1_name, th_color2_name, th_color3_name, th_class1_name, th_class2_name, th_class3_name, td_color1_name, td_color2_name, td_color3_name, td_class1_name, td_class2_name, td_class3_name, fontface1_name, fontface2_name, fontface3_name, fontsize1_name, fontsize2_name, fontsize3_name, fontcolor1_name, fontcolor2_name, fontcolor3_name, span_class1_name, span_class2_name, span_class3_name)
 590                  VALUES ($theme_id, 'The lightest row colour', 'The medium row color', 'The darkest row colour', '', '', '', 'Border round the whole page', 'Outer table border', 'Inner table border', 'Silver gradient picture', 'Blue gradient picture', 'Fade-out gradient on index', 'Background for quote boxes', 'All white areas', '', 'Background for topic posts', '2nd background for topic posts', '', 'Main fonts', 'Additional topic title font', 'Form fonts', 'Smallest font size', 'Medium font size', 'Normal font size (post body etc)', 'Quote & copyright text', 'Code text colour', 'Main table header text colour', '', '', '')";
 591              _sql($sql, $errored, $error_ary);
 592          }
 593          $db->sql_freeresult($result);
 594  
 595          $sql = "SELECT MIN(post_id) AS first_post_id, topic_id
 596              FROM " . POSTS_TABLE . "
 597              GROUP BY topic_id
 598              ORDER BY topic_id ASC";
 599          $result = _sql($sql, $errored, $error_ary);
 600  
 601          if ($row = $db->sql_fetchrow($result))
 602          {
 603              do
 604              {
 605                  $sql = "UPDATE " . TOPICS_TABLE . "
 606                      SET topic_first_post_id = " . $row['first_post_id'] . "
 607                      WHERE topic_id = " . $row['topic_id'];
 608                  _sql($sql, $errored, $error_ary);
 609              }
 610              while ($row = $db->sql_fetchrow($result));
 611          }
 612          $db->sql_freeresult($result);
 613  
 614          $sql = "SELECT DISTINCT u.user_id
 615              FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
 616              WHERE aa.auth_mod = 1
 617                  AND ug.group_id = aa.group_id
 618                  AND u.user_id = ug.user_id
 619                  AND u.user_level <> " . ADMIN;
 620          $result = _sql($sql, $errored, $error_ary);
 621  
 622          $mod_user = array();
 623          while ($row = $db->sql_fetchrow($result))
 624          {
 625              $mod_user[] = $row['user_id'];
 626          }
 627          $db->sql_freeresult($result);
 628  
 629          if (count($mod_user))
 630          {
 631              $sql = "UPDATE " . USERS_TABLE . "
 632                  SET user_level = " . MOD . "
 633                  WHERE user_id IN (" . implode(', ', $mod_user) . ")";
 634              _sql($sql, $errored, $error_ary);
 635          }
 636  
 637          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 638              VALUES ('server_name', 'www.myserver.tld')";
 639          _sql($sql, $errored, $error_ary);
 640  
 641          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 642              VALUES ('script_path', '/phpBB2/')";
 643          _sql($sql, $errored, $error_ary);
 644  
 645          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 646              VALUES ('server_port', '80')";
 647          _sql($sql, $errored, $error_ary);
 648  
 649          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 650              VALUES ('record_online_users', '1')";
 651          _sql($sql, $errored, $error_ary);
 652  
 653          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 654              VALUES ('record_online_date', '" . time() . "')";
 655          _sql($sql, $errored, $error_ary);
 656  
 657      case 'RC-3':
 658      case 'RC-4':
 659      case '.0.0':
 660      case '.0.1':
 661          if (SQL_LAYER == 'postgresql')
 662          {
 663              $sql = "SELECT user_id, user_timezone_old
 664                  FROM " . USERS_TABLE;
 665              $result = _sql($sql, $errored, $error_ary);
 666  
 667              while ($row = $db->sql_fetchrow($result))
 668              {
 669                  $sql = "UPDATE " . USERS_TABLE . "
 670                      SET user_timezone = " . $row['user_timezone_old'] . "
 671                      WHERE user_id = " . $row['user_id'];
 672                  _sql($sql, $errored, $error_ary);
 673              }
 674              $db->sql_freeresult($result);
 675          }
 676  
 677          $sql = "SELECT topic_id, topic_moved_id
 678              FROM " . TOPICS_TABLE . "
 679              WHERE topic_moved_id <> 0
 680                  AND topic_status = " . TOPIC_MOVED;
 681          $result = _sql($sql, $errored, $error_ary);
 682  
 683          $topic_ary = array();
 684          while ($row = $db->sql_fetchrow($result))
 685          {
 686              $topic_ary[$row['topic_id']] = $row['topic_moved_id'];
 687          }
 688          $db->sql_freeresult($result);
 689  
 690          while (list($topic_id, $topic_moved_id) = each($topic_ary))
 691          {
 692              $sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts
 693                  FROM " . POSTS_TABLE . "
 694                  WHERE topic_id = $topic_moved_id";
 695              $result = _sql($sql, $errored, $error_ary);
 696  
 697              $sql = ($row = $db->sql_fetchrow($result)) ? "UPDATE " . TOPICS_TABLE . "    SET topic_replies = " . ($row['total_posts'] - 1) . ", topic_first_post_id = " . $row['first_post'] . ", topic_last_post_id = " . $row['last_post'] . " WHERE topic_id = $topic_id" : "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id = " . $row['topic_id'];
 698              _sql($sql, $errored, $error_ary);
 699          }
 700  
 701          unset($sql);
 702  
 703          sync('all forums');
 704  
 705      case '.0.2':
 706  
 707      case '.0.3':
 708  
 709          // Topics will resync automatically
 710  
 711          // Remove stop words from search match and search words
 712          $dirname = 'language';
 713          $dir = opendir($phpbb_root_path . $dirname);
 714  
 715          while ($file = readdir($dir))
 716          {
 717              if (preg_match("#^lang_#i", $file) && !is_file($phpbb_root_path . $dirname . "/" . $file) && !is_link($phpbb_root_path . $dirname . "/" . $file) && file_exists($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt'))
 718              {
 719  
 720                  $stopword_list = trim(preg_replace('#([\w\.\-_\+\'±µ-ÿ\\\]+?)[ \n\r]*?(,|$)#', '\'\1\'\2', str_replace("'", "\'", implode(', ', file($phpbb_root_path . $dirname . "/" . $file . '/search_stopwords.txt')))));
 721  
 722                  $sql = "SELECT word_id 
 723                      FROM " . SEARCH_WORD_TABLE . " 
 724                      WHERE word_text IN ($stopword_list)";
 725                  $result = _sql($sql, $errored, $error_ary);
 726  
 727                  $word_id_sql = '';
 728                  if ($row = $db->sql_fetchrow($result))
 729                  {
 730                      do
 731                      {
 732                          $word_id_sql .= (($word_id_sql != '') ? ', ' : '') . $row['word_id'];
 733                      }
 734                      while ($row = $db->sql_fetchrow($result));
 735  
 736                      $sql = "DELETE FROM " . SEARCH_WORD_TABLE . " 
 737                          WHERE word_id IN ($word_id_sql)";
 738                      _sql($sql, $errored, $error_ary);
 739  
 740                      $sql = "DELETE FROM " . SEARCH_MATCH_TABLE . " 
 741                          WHERE word_id IN ($word_id_sql)";
 742                      _sql($sql, $errored, $error_ary);
 743                  }
 744                  $db->sql_freeresult($result);
 745              }
 746          }
 747          closedir($dir);
 748  
 749          // Mark common words ...
 750          remove_common('global', 4/10);
 751  
 752          // remove superfluous polls ... grab polls with topics then delete polls
 753          // not in that list
 754          $sql = "SELECT v.vote_id 
 755              FROM " . TOPICS_TABLE . " t, " . VOTE_DESC_TABLE . " v
 756              WHERE v.topic_id = t.topic_id";
 757          $result = _sql($sql, $errored, $error_ary);
 758  
 759          $vote_id_sql = '';
 760          if ($row = $db->sql_fetchrow($result))
 761          {
 762              do
 763              {
 764                  $vote_id_sql .= (($vote_id_sql != '') ? ', ' : '') . $row['vote_id'];
 765              }
 766              while ($row = $db->sql_fetchrow($result));
 767  
 768              $sql = "DELETE FROM " . VOTE_DESC_TABLE . " 
 769                  WHERE vote_id NOT IN ($vote_id_sql)";
 770              _sql($sql, $errored, $error_ary);
 771  
 772              $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . " 
 773                  WHERE vote_id NOT IN ($vote_id_sql)";
 774              _sql($sql, $errored, $error_ary);
 775  
 776              $sql = "DELETE FROM " . VOTE_USERS_TABLE . " 
 777                  WHERE vote_id NOT IN ($vote_id_sql)";
 778              _sql($sql, $errored, $error_ary);
 779          }
 780          $db->sql_freeresult($result);
 781  
 782          // update pm counters
 783          $sql = "SELECT privmsgs_to_userid, COUNT(privmsgs_id) AS unread_count 
 784              FROM " . PRIVMSGS_TABLE . " 
 785              WHERE privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " 
 786              GROUP BY privmsgs_to_userid";
 787          $result = _sql($sql, $errored, $error_ary);
 788  
 789          if ($row = $db->sql_fetchrow($result))
 790          {
 791              $update_users = array();
 792              do
 793              {
 794                  $update_users[$row['unread_count']][] = $row['privmsgs_to_userid'];
 795              }
 796              while ($row = $db->sql_fetchrow($result));
 797  
 798              while (list($num, $user_ary) = each($update_users))
 799              {
 800                  $user_ids = implode(', ', $user_ary);
 801  
 802                  $sql = "UPDATE " . USERS_TABLE . " 
 803                      SET user_unread_privmsg = $num 
 804                      WHERE user_id IN ($user_ids)";
 805                  _sql($sql, $errored, $error_ary);
 806              }
 807              unset($update_list);
 808          }
 809          $db->sql_freeresult($result);
 810  
 811          $sql = "SELECT privmsgs_to_userid, COUNT(privmsgs_id) AS new_count 
 812              FROM " . PRIVMSGS_TABLE . " 
 813              WHERE privmsgs_type = " . PRIVMSGS_NEW_MAIL . " 
 814              GROUP BY privmsgs_to_userid";
 815          $result = _sql($sql, $errored, $error_ary);
 816  
 817          if ($row = $db->sql_fetchrow($result))
 818          {
 819              $update_users = array();
 820              do
 821              {
 822                  $update_users[$row['new_count']][] = $row['privmsgs_to_userid'];
 823              }
 824              while ($row = $db->sql_fetchrow($result));
 825  
 826              while (list($num, $user_ary) = each($update_users))
 827              {
 828                  $user_ids = implode(', ', $user_ary);
 829  
 830                  $sql = "UPDATE " . USERS_TABLE . " 
 831                      SET user_new_privmsg = $num 
 832                      WHERE user_id IN ($user_ids)";
 833                  _sql($sql, $errored, $error_ary);
 834              }
 835              unset($update_list);
 836          }
 837          $db->sql_freeresult($result);
 838  
 839          // Remove superfluous watched topics
 840          $sql = "SELECT t.topic_id 
 841              FROM " . TOPICS_TABLE . " t, " . TOPICS_WATCH_TABLE . " w
 842              WHERE w.topic_id = t.topic_id";
 843          $result = _sql($sql, $errored, $error_ary);
 844  
 845          $topic_id_sql = '';
 846          if ($row = $db->sql_fetchrow($result))
 847          {
 848              do
 849              {
 850                  $topic_id_sql .= (($topic_id_sql != '') ? ', ' : '') . $row['topic_id'];
 851              }
 852              while ($row = $db->sql_fetchrow($result));
 853  
 854              $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " 
 855                  WHERE topic_id NOT IN ($topic_id_sql)";
 856              _sql($sql, $errored, $error_ary);
 857          }
 858          $db->sql_freeresult($result);
 859  
 860          // Reset any email addresses which are non-compliant ... something
 861          // not done in the upgrade script and thus which may affect some 
 862          // mysql users
 863          switch (SQL_LAYER)
 864          {
 865              case 'mysql':
 866                  $sql = "UPDATE " . USERS_TABLE . " 
 867                      SET user_email = '' 
 868                      WHERE user_email NOT REGEXP '^[a-zA-Z0-9_\+\.\-]+@.*[a-zA-Z0-9_\-]+\.[a-zA-Z]{2,}$'";
 869                  _sql($sql, $errored, $error_ary);
 870          }
 871  
 872      case '.0.4':
 873  
 874          // Add the confirmation code switch ... save time and trouble elsewhere
 875          $sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
 876              VALUES ('enable_confirm', '0')";
 877          _sql($sql, $errored, $error_ary);
 878  
 879          $sql = "INSERT INTO " . CONFIG_TABLE . " (config_name, config_value)
 880              VALUES ('sendmail_fix', '0')";
 881          _sql($sql, $errored, $error_ary);
 882  
 883      case '.0.5':
 884          
 885          $sql = "SELECT user_id, username 
 886              FROM " . USERS_TABLE;
 887          $result = _sql($sql, $errored, $error_ary);
 888  
 889          while ($row = $db->sql_fetchrow($result))
 890          {
 891              if (!preg_match('#(&gt;)|(&lt;)|(&quot)|(&amp;)#', $row['username']))
 892              {
 893                  if ($row['username'] != htmlspecialchars($row['username']))
 894                  {
 895                      $sql = "UPDATE " . USERS_TABLE . "
 896                          SET username = '" . str_replace("'", "''", htmlspecialchars($row['username'])) . "'
 897                          WHERE user_id = " . $row['user_id'];
 898                      _sql($sql, $errored, $error_ary);
 899                  }
 900              }
 901          }
 902          $db->sql_freeresult($result);
 903          
 904          break;
 905  
 906      default:
 907          echo " No updates where required</b></p>\n";
 908          break;
 909  }
 910  
 911  echo "<h2>Updating version and optimizing tables</h2>\n";
 912  echo "<p>Progress :: <b>";
 913  flush();
 914  
 915  // update the version
 916  $sql = "UPDATE " . CONFIG_TABLE . "
 917      SET config_value = '$updates_to_version'
 918      WHERE config_name = 'version'";
 919  _sql($sql, $errored, $error_ary);
 920  
 921  // Optimize/vacuum analyze the tables where appropriate 
 922  // this should be done for each version in future along with 
 923  // the version number update
 924  switch (SQL_LAYER)
 925  {
 926      case 'mysql':
 927      case 'mysql4':
 928          $sql = 'OPTIMIZE TABLE ' . $table_prefix . 'auth_access, ' . $table_prefix . 'banlist, ' . $table_prefix . 'categories, ' . $table_prefix . 'config, ' . $table_prefix . 'disallow, ' . $table_prefix . 'forum_prune, ' . $table_prefix . 'forums, ' . $table_prefix . 'groups, ' . $table_prefix . 'posts, ' . $table_prefix . 'posts_text, ' . $table_prefix . 'privmsgs, ' . $table_prefix . 'privmsgs_text, ' . $table_prefix . 'ranks, ' . $table_prefix . 'search_results, ' . $table_prefix . 'search_wordlist, ' . $table_prefix . 'search_wordmatch, ' . $table_prefix . 'smilies, ' . $table_prefix . 'themes, ' . $table_prefix . 'themes_name, ' . $table_prefix . 'topics, ' . $table_prefix . 'topics_watch, ' . $table_prefix . 'user_group, ' . $table_prefix . 'users, ' . $table_prefix . 'vote_desc, ' . $table_prefix . 'vote_results, ' . $table_prefix . 'vote_voters, ' . $table_prefix . 'words';
 929          _sql($sql, $errored, $error_ary);
 930          break;
 931  
 932      case 'postgresql':
 933          _sql("VACUUM ANALYZE", $errored, $error_ary);
 934          break;
 935  }
 936  
 937  echo "</b> <b class=\"ok\">Done</b><br />Result &nbsp; :: \n";
 938  
 939  if ($errored)
 940  {
 941      echo " <b>Some queries failed, the statements and errors are listing below</b>\n<ul>";
 942  
 943      for ($i = 0; $i < count($error_ary['sql']); $i++)
 944      {
 945          echo "<li>Error :: <b>" . $error_ary['error_code'][$i]['message'] . "</b><br />";
 946          echo "SQL &nbsp; :: <b>" . $error_ary['sql'][$i] . "</b><br /><br /></li>";
 947      }
 948  
 949      echo "</ul>\n<p>This is probably nothing to worry about, update will continue. Should this fail to complete you may need to seek help at our development board. See <a href=\"docs\README.html\">README</a> for details on how to obtain advice.</p>\n";
 950  }
 951  else
 952  {
 953      echo "<b>No errors</b>\n";
 954  }
 955  
 956  echo "<h2>Update completed</h2>\n";
 957  echo "\n<p>You should now visit the General Configuration settings page in the <a href=\"../admin/\">Administration Panel</a> and check the General Configuration of the board. If you updated from versions prior to RC-3 you <b>must</b> update some entries. If you do not do this emails sent from the board will contain incorrect information. Don't forget to delete this file!</p>\n";
 958  
 959  ?>
 960  
 961  <br clear="all" />
 962  
 963  </body>
 964  </html>


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