| [ Index ] |
|
Code source de PHP NUKE 7.9 |
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 :: <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>< 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 :: <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 :: \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 :: <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('#(>)|(<)|(")|(&)#', $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 :: \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 :: <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>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Sun Apr 1 11:11:59 2007 | par Balluche grâce à PHPXref 0.7 |