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 README for details on how to obtain advice.
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 README for details on how to obtain advice.
You should now visit the General Configuration settings page in the Administration Panel and check the General Configuration of the board. If you updated from versions prior to RC-3 you must 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!
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 README for details on how to obtain advice.
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 README for details on how to obtain advice.
You should now visit the General Configuration settings page in the Administration Panel and check the General Configuration of the board. If you updated from versions prior to RC-3 you must 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!
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 README for details on how to obtain advice.
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 README for details on how to obtain advice.
You should now visit the General Configuration settings page in the Administration Panel and check the General Configuration of the board. If you updated from versions prior to RC-3 you must 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!
', '[/list]', $message);
- $message = str_replace('', '[/list]', $message);
-
- return $message;
-}
-
-//
-// Alternative for in_array() which is only available in PHP4
-//
-function inarray($needle, $haystack)
-{
- for( $i = 0 ; $i < sizeof($haystack) ; $i++ )
- {
- if ( $haystack[$i] == $needle )
- {
- return true;
- }
- }
-
- return false;
-}
-
-function end_step($next)
-{
- global $debug;
-
- print "Next step: $next
\n";
-}
-//
-// End functions
-// -------------
-
-
-//
-// Start at the beginning if the user hasn't specified a specific starting point.
-//
-$next = ( isset($HTTP_GET_VARS['next']) ) ? $HTTP_GET_VARS['next'] : 'start';
-
-// If debug is set we'll do all steps in one go.
-$debug = 1;
-
-// Parse the MySQL schema file into some arrays.
-$schema = get_schema();
-
-$table_def = $schema['table_def'];
-$field_def = $schema['field_def'];
-$key_def = $schema['key_def'];
-$create_def = $schema['create_def'];
-
-//
-// Get mysql_basic data
-//
-$inserts = get_inserts();
-
-//
-// Get smiley data
-//
-smiley_replace();
-
-common_header();
-
-if ( !empty($next) )
-{
- switch($next)
- {
- case 'start':
- end_step('initial_drops');
-
- case 'initial_drops':
- print " * Dropping sessions and themes tables :: ";
- flush();
-
- query("DROP TABLE sessions", "Couldn't drop table 'sessions'");
- query("DROP TABLE themes", "Couldn't drop table 'themes'");
-
- print "OK \n";
-
- end_step('mod_old_tables');
-
- case 'mod_old_tables':
- $modtables = array(
- "banlist" => "banlist",
- "catagories" => "categories",
- "config" => "old_config",
- "forums" => "forums",
- "disallow" => "disallow",
- "posts" => "posts",
- "posts_text" => "posts_text",
- "priv_msgs" => "privmsgs",
- "ranks" => "ranks",
- "smiles" => "smilies",
- "topics" => "topics",
- "users" => "users",
- "words" => "words"
- );
-
- while( list($old, $new) = each($modtables) )
- {
- $result = query("SHOW INDEX FROM $old", "Couldn't get list of indices for table $old");
-
- while( $row = $db->sql_fetchrow($result) )
- {
- $index = $row['Key_name'];
- if ( $index != 'PRIMARY' )
- {
- query("ALTER TABLE $old DROP INDEX $index", "Couldn't DROP INDEX $old.$index");
- }
- }
-
- // Rename table
- $new = $table_prefix . $new;
-
- print " * Renaming '$old' to '$new' :: ";
- flush();
- query("ALTER TABLE $old RENAME $new", "Failed to rename $old to $new");
- print "OK \n";
-
- }
- end_step('create_tables');
-
- case 'create_tables':
- // Create array with tables in 'old' database
- $result = query('SHOW TABLES', "Couldn't get list of current tables");
-
- while( $table = $db->sql_fetchrow($result) )
- {
- $currenttables[] = $table[0];
- }
-
- // Check what tables we need to CREATE
- while( list($table, $definition) = each($table_def) )
- {
- if ( !inarray($table, $currenttables) )
- {
- print " * Creating $table :: ";
-
- query($definition, "Couldn't create table $table");
-
- print "OK \n";
- }
- }
-
- end_step('create_config');
-
- case 'create_config':
- print " * Inserting new values into new layout config table :: ";
-
- @reset($inserts);
- while( list($table, $inserts_table) = each($inserts) )
- {
- if ( $table == CONFIG_TABLE )
- {
- $per_pct = ceil( count($inserts_table) / 40 );
- $inc = 0;
-
- while( list($nr, $insert) = each($inserts_table) )
- {
- query($insert, "Couldn't insert value into config table");
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
- }
- }
-
- print " OK \n";
-
- end_step('convert_config');
-
- case 'convert_config':
- print " * Converting configuration table :: ";
-
- $sql = "SELECT *
- FROM $table_prefix" . "old_config";
- $result = query($sql, "Couldn't get info from old config table");
-
- $oldconfig = $db->sql_fetchrow($result);
-
- //
- // We don't need several original config types and two others
- // have changed name ... so take account of this.
- //
- $ignore_configs = array("selected", "admin_passwd", "override_themes", "allow_sig");
- $rename_configs = array(
- "email_from" => "board_email",
- "email_sig" => "board_email_sig"
- );
-
- while( list($name, $value) = each($oldconfig) )
- {
- if ( is_int($name) )
- {
- continue;
- }
-
- if ( !inarray($name, $ignore_configs) )
- {
- $name = ( !empty($rename_configs[$name]) ) ? $rename_configs[$name] : $name;
-
- $sql = "REPLACE INTO " . CONFIG_TABLE . " (config_name, config_value)
- VALUES ('$name', '" . stripslashes($value) . "')";
- query($sql, "Couldn't update config table with values from old config table");
- }
- }
-
- $sql = "UPDATE " . CONFIG_TABLE . "
- SET config_value = 'dutch'
- WHERE config_name = 'default_lang' && config_value = 'nederlands'";
- query($sql, "Couldn't rename 'nederlands' to 'dutch' in config table");
-
- print "OK \n";
- end_step('convert_ips');
-
- case 'convert_ips':
- $names = array(
- POSTS_TABLE => array(
- 'id' => 'post_id',
- 'field' => 'poster_ip'
- ),
- PRIVMSGS_TABLE => array(
- 'id' => 'msg_id',
- 'field' => 'poster_ip'
- ),
- BANLIST_TABLE => array(
- 'id' => 'ban_id',
- 'field' => 'ban_ip'
- )
- );
-
- lock_tables(1, array(POSTS_TABLE, PRIVMSGS_TABLE, BANLIST_TABLE));
-
- $batchsize = 2000;
- while( list($table, $data_array) = each($names) )
- {
- $sql = "SELECT MAX(" . $data_array['id'] . ") AS max_id
- FROM $table";
- $result = query($sql, "Couldn't obtain ip data from $table (" . $fields . ")");
-
- $row = $db->sql_fetchrow($result);
-
- $maxid = $row['max_id'];
-
- for($i = 0; $i <= $maxid; $i += $batchsize)
- {
- $batchstart = $i;
- $batchend = $i + $batchsize;
-
- $field_id = $data_array['id'];
- $field = $data_array['field'];
-
- print " * Converting IP format '" . $field . "' / '$table' ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT $field_id, $field
- FROM $table
- WHERE $field_id
- BETWEEN $batchstart
- AND $batchend";
- $result = query($sql, "Couldn't obtain ip data from $table (" . $fields . ")");
-
- $per_pct = ceil( $db->sql_numrows($result) / 40 );
- $inc = 0;
-
- while( $row = $db->sql_fetchrow($result) )
- {
- $sql = "UPDATE $table
- SET $field = '" . encode_ip($row[$field]) . "'
- WHERE $field_id = " . $row[$field_id];
- query($sql, "Couldn't convert IP format of $field in $table with $field_id of " . $rowset[$field_id]);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
-
- print " OK \n";
- }
- }
-
- lock_tables(0);
- end_step('convert_dates');
-
- case 'convert_dates':
- $names = array(
- POSTS_TABLE => array('post_time'),
- TOPICS_TABLE => array('topic_time'),
- PRIVMSGS_TABLE => array('msg_time')
- );
-
- lock_tables(1, array(POSTS_TABLE, TOPICS_TABLE, PRIVMSGS_TABLE));
-
- while( list($table, $fields) = each($names) )
- {
- print " * Converting date format of $fields[$i] in $table :: ";
- flush();
-
- for($i = 0; $i < count($fields); $i++)
- {
- $sql = "UPDATE $table
- SET " . $fields[$i] . " = UNIX_TIMESTAMP(" . $fields[$i] . ")";
- query($sql, "Couldn't convert date format of $table(" . $fields[$i] . ")");
- }
-
- print "OK \n";
- }
-
- lock_tables(0);
- end_step('fix_addslashes');
-
- case 'fix_addslashes':
- $slashfields[TOPICS_TABLE] = array('topic_title');
- $slashfields[FORUMS_TABLE] = array('forum_desc', 'forum_name');
- $slashfields[CATEGORIES_TABLE] = array('cat_title');
- $slashfields[WORDS_TABLE] = array('word', 'replacement');
- $slashfields[RANKS_TABLE] = array('rank_title');
- $slashfields[DISALLOW_TABLE] = array('disallow_username');
-
- //convert smilies?
- $slashes = array(
- "\\'" => "'",
- "\\\"" => "\"",
- "\\\\" => "\\");
- $slashes = array(
- "\\'" => "'",
- "\\\"" => "\"",
- "\\\\" => "\\");
-
- lock_tables(1, array(TOPICS_TABLE, FORUMS_TABLE, CATEGORIES_TABLE, WORDS_TABLE, RANKS_TABLE, DISALLOW_TABLE, SMILIES_TABLE));
-
- while( list($table, $fields) = each($slashfields) )
- {
- print " * Removing slashes from $table table :: ";
- flush();
-
- while( list($nr, $field) = each($fields) )
- {
- @reset($slashes);
- while( list($search, $replace) = each($slashes) )
- {
- $sql = "UPDATE $table
- SET $field = REPLACE($field, '" . addslashes($search) . "', '" . addslashes($replace) . "')";
- query($sql, "Couldn't remove extraneous slashes from the old data.");
- }
- }
-
- print "OK \n";
- }
-
- lock_tables(0);
- end_step('remove_topics');
-
- case 'remove_topics':
- print " * Removing posts with no corresponding topics :: ";
- flush();
-
- $sql = "SELECT p.post_id
- FROM " . POSTS_TABLE . " p
- LEFT JOIN " . TOPICS_TABLE . " t ON p.topic_id = t.topic_id
- WHERE t.topic_id IS NULL";
- $result = query($sql, "Couldn't obtain list of deleted topics");
-
- $post_total = $db->sql_numrows($result);
-
- if ( $post_total )
- {
- $post_id_ary = array();
- while( $row = $db->sql_fetchrow($result) )
- {
- $post_id_ary[] = $row['post_id'];
- }
-
- $sql = "DELETE FROM " . POSTS_TABLE . "
- WHERE post_id IN (" . implode(", ", $post_id_ary) . ")";
- query($sql, "Couldn't update posts to remove deleted user poster_id values");
-
- $sql = "DELETE FROM " . POSTS_TEXT_TABLE . "
- WHERE post_id IN (" . implode(", ", $post_id_ary) . ")";
- query($sql, "Couldn't update posts to remove deleted user poster_id values");
- }
-
- echo "OK ( Removed $post_total posts ) \n";
- end_step('convert_users');
-
- case 'convert_users':
- //
- // Completely remove old soft-deleted users
- //
- $sql = "DELETE FROM " . USERS_TABLE . "
- WHERE user_level = -1";
- query($sql, "Couldn't delete old soft-deleted users");
-
- $sql = "SELECT COUNT(*) AS total, MAX(user_id) AS maxid
- FROM " . USERS_TABLE;
- $result = query($sql, "Couldn't get max post_id.");
-
- $maxid = $db->sql_fetchrow($result);
-
- $totalposts = $maxid['total'];
- $maxid = $maxid['maxid'];
-
- $sql = "ALTER TABLE " . USERS_TABLE . "
- ADD user_sig_bbcode_uid CHAR(10),
- MODIFY user_sig text";
- query($sql, "Couldn't add user_sig_bbcode_uid field to users table");
-
- $super_mods = array();
- $first_admin = -2;
-
- $batchsize = 1000;
- for($i = -1; $i <= $maxid; $i += $batchsize)
- {
- $batchstart = $i;
- $batchend = $i + $batchsize;
-
- print " * Converting Users ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT *
- FROM " . USERS_TABLE . "
- WHERE user_id
- BETWEEN $batchstart
- AND $batchend";
- $result = query($sql, "Couldn't get ". USERS_TABLE .".user_id $batchstart to $batchend");
-
- // Array with user fields that we want to check for invalid data (to few characters)
- $checklength = array(
- 'user_occ',
- 'user_website',
- 'user_email',
- 'user_from',
- 'user_intrest',
- 'user_aim',
- 'user_yim',
- 'user_msnm');
-
- lock_tables(1, array(USERS_TABLE, GROUPS_TABLE, USER_GROUP_TABLE, POSTS_TABLE));
-
- $per_pct = ceil( $db->sql_numrows($result) / 40 );
- $inc = 0;
-
- $group_id = 1;
- while( $row = $db->sql_fetchrow($result) )
- {
- $sql = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_description, group_single_user)
- VALUES ($group_id, '" . addslashes($row['username']) . "', 'Personal User', 1)";
- query($sql, "Wasn't able to insert user ".$row['user_id']." into table ".GROUPS_TABLE);
-
- $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)
- VALUES ($group_id, " . $row['user_id'] . ", 0)";
- query($sql, "Wasn't able to insert user ".$row['user_id']." into table ".USER_GROUP_TABLE);
-
- if ( is_int($row['user_regdate']) )
- {
- // We already converted this post to the new style BBcode, skip this post.
- continue;
- }
-
- $group_id++;
-
- //
- // Nathan's bbcode2 conversion
- //
-
- // undo 1.2.x encoding..
- $row['user_sig'] = bbdecode(stripslashes($row['user_sig']));
- $row['user_sig'] = undo_make_clickable($row['user_sig']);
- $row['user_sig'] = str_replace(" ", "\n", $row['user_sig']);
-
- // make a uid
- $uid = make_bbcode_uid();
-
- // do 2.x first-pass encoding..
- $row['user_sig'] = bbencode_first_pass($row['user_sig'], $uid);
- $row['user_sig'] = addslashes($row['user_sig']);
-
- // Check for invalid info like '-' and '?' for a lot of fields
- @reset($checklength);
- while($field = each($checklength))
- {
- $row[$field[1]] = strlen($row[$field[1]]) < 3 ? '' : $row[$field[1]];
- }
-
- preg_match('/(.*?) (\d{1,2}), (\d{4})/', $row['user_regdate'], $parts);
- $row['user_regdate'] = gmmktime(0, 0, 0, $months[$parts[1]], $parts[2], $parts[3]);
-
- $website = $row['user_website'];
- if ( substr(strtolower($website), 0, 7) != "http://" )
- {
- $website = "http://" . $website;
- }
- if( strtolower($website) == 'http://' )
- {
- $website = '';
- }
- $row['user_website'] = addslashes($website);
-
- $row['user_icq'] = (ereg("^[0-9]+$", $row['user_icq'])) ? $row['user_icq'] : '';
- reset($checklength);
-
- while($field = each($checklength))
- {
- if ( strlen($row[$field[1]]) < 3 )
- {
- $row[$field[1]] = '';
- }
- $row[$field[1]] = addslashes($row[$field[1]]);
- }
-
- //
- // Is user a super moderator?
- //
- if( $row['user_level'] == 3 )
- {
- $super_mods[] = $row['user_id'];
- }
-
- $row['user_level'] = ( $row['user_level'] == 4 ) ? ADMIN : USER;
-
- //
- // Used to define a 'practical' group moderator user_id
- // for super mods a little latter.
- //
- if( $first_admin == -2 && $row['user_level'] == ADMIN )
- {
- $first_admin = $row['user_id'];
- }
-
- //
- // Dutch language files have been renamed from 'nederlands' to 'dutch'
- //
- if( $row['user_lang'] == 'nederlands' )
- {
- $row['user_lang'] = 'dutch';
- }
-
- $sql = "UPDATE " . USERS_TABLE . "
- SET
- user_sig = '" . $row['user_sig'] . "',
- user_sig_bbcode_uid = '$uid',
- user_regdate = '" . $row['user_regdate'] . "',
- user_website = '" . $row['user_website'] . "',
- user_occ = '" . $row['user_occ'] . "',
- user_email = '" . $row['user_email'] . "',
- user_from = '" . $row['user_from'] . "',
- user_intrest = '" . $row['user_intrest'] . "',
- user_aim = '" . $row['user_aim'] . "',
- user_yim = '" . $row['user_yim'] . "',
- user_msnm = '" . $row['user_msnm'] . "',
- user_level = '" . $row['user_level'] . "',
- user_desmile = NOT(user_desmile),
- user_bbcode = 1,
- user_theme = 1
- WHERE user_id = " . $row['user_id'];
- query($sql, "Couldn't update ".USERS_TABLE." table with new BBcode and regdate for user_id ".$row['user_id']);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
-
- print " OK \n";
-
- lock_tables(0);
- }
-
- //
- // Handle super-mods, create hidden group for them
- //
- // Iterate trough access table
- if( count($super_mods) && $first_admin != -2 )
- {
- print "\n \n * Creating new group for super moderators :: ";
- flush();
-
- $sql = "INSERT INTO " . GROUPS_TABLE . " (group_type, group_name, group_description, group_moderator, group_single_user)
- VALUES (" . GROUP_HIDDEN . ", 'Super Moderators', 'Converted super moderators', $first_admin, 0)";
- $result = query($sql, "Couldn't create group for ".$row['forum_name']);
-
- $group_id = $db->sql_nextid();
-
- if ( $group_id <= 0 )
- {
- print "Group creation failed. Aborting creation of groups... \n";
- continue 2;
- }
-
- print "OK \n";
-
- print " * Updating auth_access for super moderator group :: ";
- flush();
-
- $sql = "SELECT forum_id
- FROM " . FORUMS_TABLE;
- $result = query($sql, "Couldn't obtain forum_id list");
-
- while( $row = $db->sql_fetchrow($result) )
- {
- $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (group_id, forum_id, auth_mod)
- VALUES ($group_id, " . $row['forum_id'] . ", 1)";
- $result_insert = query($sql, "Unable to set group auth access for super mods.");
- }
-
- for($i = 0; $i < count($super_mods); $i++)
- {
- $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)
- VALUES ($group_id, " . $super_mods[$i] . ", 0)";
- query($sql, "Unable to add user_id $user_id to group_id $group_id (super mods) \n");
- }
-
- print "OK \n";
- }
-
- end_step('convert_posts');
-
- case 'convert_posts':
- print " * Adding enable_sig field to " . POSTS_TABLE . " :: ";
- flush();
- $sql = "ALTER TABLE " . POSTS_TABLE . "
- ADD enable_sig tinyint(1) DEFAULT '1' NOT NULL";
- $result = query($sql, "Couldn't add enable_sig field to " . POSTS_TABLE . ".");
- print "OK \n";
-
- print " * Adding enable_bbcode field to " . POSTS_TEXT_TABLE . " :: ";
- flush();
- $sql = "ALTER TABLE " . POSTS_TEXT_TABLE . "
- ADD enable_bbcode tinyint(1) DEFAULT '1' NOT NULL";
- $result = query($sql, "Couldn't add enable_bbcode field to " . POSTS_TABLE . ".");
- print "OK \n";
-
- print " * Adding bbcode_uid field to " . POSTS_TEXT_TABLE . " :: ";
- flush();
- $sql = "ALTER TABLE " . POSTS_TEXT_TABLE . "
- ADD bbcode_uid char(10) NOT NULL";
- $result = query($sql, "Couldn't add bbcode_uid field to " . POSTS_TABLE . ".");
- print "OK \n";
-
- print " * Adding post_edit_time field to " . POSTS_TABLE . " :: ";
- flush();
- $sql = "ALTER TABLE " . POSTS_TABLE . "
- ADD post_edit_time int(11)";
- $result = query($sql, "Couldn't add post_edit_time field to " . POSTS_TABLE . ".");
- print "OK \n";
-
- print " * Adding post_edit_count field to " . POSTS_TABLE . " :: ";
- flush();
- $sql = "ALTER TABLE " . POSTS_TABLE . "
- ADD post_edit_count smallint(5) UNSIGNED DEFAULT '0' NOT NULL";
- $result = query($sql, "Couldn't add post_edit_count field to " . POSTS_TABLE . ".");
- print "OK \n \n";
-
- $sql = "SELECT COUNT(*) as total, MAX(post_id) as maxid
- FROM " . POSTS_TEXT_TABLE;
- $result = query($sql, "Couldn't get max post_id.");
-
- $maxid = $db->sql_fetchrow($result);
-
- $totalposts = $maxid['total'];
- $maxid = $maxid['maxid'];
-
- $batchsize = 2000;
- for($i = 0; $i <= $maxid; $i += $batchsize)
- {
- $batchstart = $i + 1;
- $batchend = $i + $batchsize;
-
- print " * Converting BBcode ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT *
- FROM " . POSTS_TEXT_TABLE . "
- WHERE post_id
- BETWEEN $batchstart
- AND $batchend";
- $result = query($sql, "Couldn't get ". POSTS_TEXT_TABLE .".post_id $batchstart to $batchend");
-
- lock_tables(1, array(POSTS_TEXT_TABLE, POSTS_TABLE));
-
- $per_pct = ceil( $db->sql_numrows($result) / 40 );
- $inc = 0;
-
- while( $row = $db->sql_fetchrow($result) )
- {
- if ( $row['bbcode_uid'] != '' )
- {
- // We already converted this post to the new style BBcode, skip this post.
- continue;
- }
-
- //
- // Nathan's bbcode2 conversion
- //
- // undo 1.2.x encoding..
- $row['post_text'] = bbdecode(stripslashes($row['post_text']));
- $row['post_text'] = undo_make_clickable($row['post_text']);
- $row['post_text'] = str_replace(' ', "\n", $row['post_text']);
-
- // make a uid
- $uid = make_bbcode_uid();
-
- // do 2.x first-pass encoding..
- $row['post_text'] = smiley_replace($row['post_text']);
- $row['post_text'] = bbencode_first_pass($row['post_text'], $uid);
- $row['post_text'] = addslashes($row['post_text']);
-
- $edited_sql = "";
- if ( preg_match('/^(.*?)([\n]+\[ This message was .*?)$/s', $row['post_text'], $matches) )
- {
- $row['post_text'] = $matches[1];
- $edit_info = $matches[2];
-
- $edit_times = count(explode(' message ', $edit_info)) - 1; // Taken from example for substr_count in annotated PHP manual
-
- if ( preg_match('/^.* by: (.*?) on (....)-(..)-(..) (..):(..) \]<\/font>/s', $edit_info, $matches) )
- {
- $edited_user = $matches[1];
- $edited_time = gmmktime($matches[5], $matches[6], 0, $matches[3], $matches[4], $matches[2]);
-
- //
- // This isn't strictly correct since 2.0 won't include and edit
- // statement if the edit wasn't by the user who posted ...
- //
- $edited_sql = ", post_edit_time = $edited_time, post_edit_count = $edit_times";
- }
- }
-
- if ( preg_match("/^(.*?)\n-----------------\n.*$/is", $row['post_text'], $matches) )
- {
- $row['post_text'] = $matches[1];
- $enable_sig = 1;
- }
- else
- {
- $checksig = preg_replace('/\[addsig\]$/', '', $row['post_text']);
- $enable_sig = ( strlen($checksig) == strlen($row['post_text']) ) ? 0 : 1;
- }
-
- $sql = "UPDATE " . POSTS_TEXT_TABLE . "
- SET post_text = '$checksig', bbcode_uid = '$uid'
- WHERE post_id = " . $row['post_id'];
- query($sql, "Couldn't update " . POSTS_TEXT_TABLE . " table with new BBcode for post_id :: " . $row['post_id']);
-
- $sql = "UPDATE " . POSTS_TABLE . "
- SET enable_sig = $enable_sig" . $edited_sql . "
- WHERE post_id = " . $row['post_id'];
- query($sql, "Couldn't update " . POSTS_TABLE . " table with signature status for post with post_id :: " . $row['post_id']);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print '.';
- flush();
- $inc = 0;
- }
- }
-
- print " OK \n";
-
- lock_tables(0);
- }
-
- print " \n * Updating poster_id for deleted users :: ";
- flush();
-
- $sql = "SELECT DISTINCT p.post_id
- FROM " . POSTS_TABLE . " p
- LEFT JOIN " . USERS_TABLE . " u ON p.poster_id = u.user_id
- WHERE u.user_id IS NULL";
- $result = query($sql, "Couldn't obtain list of deleted users");
-
- $users_removed = $db->sql_numrows($result);
-
- if ( $users_removed )
- {
- $post_id_ary = array();
- while( $row = $db->sql_fetchrow($result) )
- {
- $post_id_ary[] = $row['post_id'];
- }
-
- $sql = "UPDATE " . POSTS_TABLE . "
- SET poster_id = " . ANONYMOUS . ", enable_sig = 0
- WHERE post_id IN (" . implode(", ", $post_id_ary) . ")";
- query($sql, "Couldn't update posts to remove deleted user poster_id values");
- }
-
- print "OK ( Removed $users_removed non-existent user references ) \n";
-
- end_step('convert_privmsgs');
-
- case 'convert_privmsgs':
- $sql = "SELECT COUNT(*) as total, max(msg_id) as maxid
- FROM " . PRIVMSGS_TABLE;
- $result = query($sql, "Couldn't get max privmsgs_id.");
-
- $maxid = $db->sql_fetchrow($result);
-
- $totalposts = $maxid['total'];
- $maxid = $maxid['maxid'];
-
- $sql = "ALTER TABLE " . PRIVMSGS_TABLE . "
- ADD privmsgs_subject VARCHAR(255),
- ADD privmsgs_attach_sig TINYINT(1) DEFAULT 1";
- query($sql, "Couldn't add privmsgs_subject field to " . PRIVMSGS_TABLE . " table");
-
- $batchsize = 2000;
- for($i = 0; $i <= $maxid; $i += $batchsize)
- {
- $batchstart = $i + 1;
- $batchend = $i + $batchsize;
-
- print " * Converting Private Message ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT *
- FROM " . PRIVMSGS_TABLE . "
- WHERE msg_id
- BETWEEN $batchstart
- AND $batchend";
- $result = query($sql, "Couldn't get " . POSTS_TEXT_TABLE . " post_id $batchstart to $batchend");
-
- lock_tables(1, array(PRIVMSGS_TABLE, PRIVMSGS_TEXT_TABLE));
-
- $per_pct = ceil( $db->sql_numrows($result) / 40 );
- $inc = 0;
-
- while( $row = $db->sql_fetchrow($result) )
- {
- if ( $row['msg_text'] == NULL )
- {
- // We already converted this post to the new style BBcode, skip this post.
- continue;
- }
- //
- // Nathan's bbcode2 conversion
- //
- // undo 1.2.x encoding..
- $row['msg_text'] = bbdecode(stripslashes($row['msg_text']));
- $row['msg_text'] = undo_make_clickable($row['msg_text']);
- $row['msg_text'] = str_replace(" ", "\n", $row['msg_text']);
-
- // make a uid
- $uid = make_bbcode_uid();
-
- // do 2.x first-pass encoding..
- $row['msg_text'] = smiley_replace($row['msg_text']);
- $row['msg_text'] = bbencode_first_pass($row['msg_text'], $uid);
-
- $checksig = preg_replace('/\[addsig\]$/', '', $row['msg_text']);
- $enable_sig = (strlen($checksig) == strlen($row['msg_text'])) ? 0 : 1;
-
- if ( preg_match("/^(.*?)\n-----------------\n.*$/is", $checksig, $matches) )
- {
- $checksig = $matches[1];
- $enable_sig = 1;
- }
-
- $row['msg_text'] = $checksig;
-
- $row['msg_status'] = ($row['msg_status'] == 1) ? PRIVMSGS_READ_MAIL : PRIVMSGS_NEW_MAIL;
-
- // Subject contains first 60 characters of msg, remove any BBCode tags
- $subject = addslashes(strip_tags(substr($row['msg_text'], 0, 60)));
- $subject = preg_replace("/\[.*?\:(([a-z0-9]:)?)$uid.*?\]/si", "", $subject);
-
- $row['msg_text'] = addslashes($row['msg_text']);
-
- $sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_bbcode_uid, privmsgs_text)
- VALUES ('" . $row['msg_id'] . "', '$uid', '" . $row['msg_text'] . "')";
- query($sql, "Couldn't insert PrivMsg text into " . PRIVMSGS_TEXT_TABLE . " table msg_id " . $row['msg_id']);
-
- $sql = "UPDATE " . PRIVMSGS_TABLE . "
- SET msg_text = NULL, msg_status = " . $row['msg_status'] . ", privmsgs_subject = '$subject', privmsgs_attach_sig = $enable_sig
- WHERE msg_id = " . $row['msg_id'];
- query($sql, "Couldn't update " . PRIVMSGS_TABLE . " table for msg_id " . $row['post_id']);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print '.';
- flush();
- $inc = 0;
- }
- }
-
- print " OK \n";
- }
-
- lock_tables(0);
- end_step('convert_moderators');
-
- case 'convert_moderators';
- $sql = "SELECT *
- FROM forum_mods";
- $result = query($sql, "Couldn't get list with all forum moderators");
-
- while( $row = $db->sql_fetchrow($result) )
- {
- // Check if this moderator and this forum still exist
- $sql = "SELECT user_id
- FROM " . USERS_TABLE . ", " . FORUMS_TABLE . "
- WHERE user_id = " . $row['user_id'] . "
- AND forum_id = " . $row['forum_id'];
- $check_data = query($sql, "Couldn't check if user " . $row['user_id'] . " and forum " . $row['forum_id'] . " exist");
-
- if ( !($rowtest = $db->sql_fetchrow($check_data)) )
- {
- // Either the moderator or the forum have been deleted, this line in forum_mods was redundant, skip it.
- continue;
- }
-
- $sql = "SELECT g.group_id
- FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
- WHERE g.group_id = ug.group_id
- AND ug.user_id = " . $row['user_id'] . "
- AND g.group_single_user = 1";
- $insert_group = query($sql, "Couldn't get group number for user " . $row['user_id'] . ".");
-
- $group_id = $db->sql_fetchrow($insert_group);
- $group_id = $group_id['group_id'];
-
- print " * Adding moderator for forum " . $row['forum_id'] . " :: ";
- flush();
-
- $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (group_id, forum_id, auth_mod) VALUES ($group_id, ".$row['forum_id'].", 1)";
- query($sql, "Couldn't set moderator (user_id = " . $row['user_id'] . ") for forum " . $row['forum_id'] . ".");
-
- print "OK \n";
- }
-
- print " * Setting correct user_level for moderators ::";
- flush();
-
- $sql = "SELECT DISTINCT u.user_id
- FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug, " . AUTH_ACCESS_TABLE . " aa
- WHERE aa.auth_mod = 1
- AND ug.group_id = aa.group_id
- AND u.user_id = ug.user_id
- AND u.user_level <> " . ADMIN;
- $result = query($sql, "Couldn't obtain list of moderators");
-
- if ( $row = $db->sql_fetchrow($result) )
- {
- $ug_sql = '';
-
- do
- {
- $ug_sql .= ( ( $ug_sql != '' ) ? ', ' : '' ) . $row['user_id'];
- }
- while ( $row = $db->sql_fetchrow($result) );
-
- $sql = "UPDATE " . USERS_TABLE . "
- SET user_level = " . MOD . "
- WHERE user_id IN ($ug_sql)";
- query($sql, "Couldn't set moderator status for users");
- }
-
- print "OK \n";
-
- end_step('convert_privforums');
-
- case 'convert_privforums':
- $sql = "SELECT fa.*, f.forum_name
- FROM forum_access fa
- LEFT JOIN " . FORUMS_TABLE . " f ON fa.forum_id = f.forum_id
- ORDER BY fa.forum_id, fa.user_id";
- $forum_access = query($sql, "Couldn't get list with special forum access (forum_access)");
-
- $forum_id = -1;
- while( $row = $db->sql_fetchrow($forum_access) )
- {
- // Iterate trough access table
- if ( $row['forum_id'] != $forum_id )
- {
- // This is a new forum, create new group.
- $forum_id = $row['forum_id'];
-
- print " * Creating new group for forum $forum_id :: ";
- flush();
-
- $sql = "INSERT INTO " . GROUPS_TABLE . " (group_type, group_name, group_description, group_moderator, group_single_user)
- VALUES (" . GROUP_HIDDEN . ", '" . addslashes($row['forum_name']) . " Group', 'Converted Private Forum Group', " . $row['user_id'] . ", 0)";
- $result = query($sql, "Couldn't create group for ".$row['forum_name']);
-
- $group_id = $db->sql_nextid();
-
- if ( $group_id <= 0 )
- {
- print "Group creation failed. Aborting creation of groups... \n";
- continue 2;
- }
-
- print "OK \n";
-
- print " * Creating auth_access group for forum $forum_id :: ";
- flush();
-
- $sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate)
- VALUES ($group_id, $forum_id, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1)";
- $result = query($sql, "Unable to set group auth access.");
-
- if ( $db->sql_affectedrows($result) <= 0 )
- {
- print "Group creation failed. Aborting creation of groups... \n";
- continue 2;
- }
-
- print "OK \n";
- }
-
- // Add user to the group
- $user_id = $row['user_id'];
-
- $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)
- VALUES ($group_id, $user_id, 0)";
- query($sql, "Unable to add user_id $user_id to group_id $group_id \n");
- }
-
- end_step('update_schema');
-
- case 'update_schema':
- $rename = array(
- $table_prefix . "users" => array(
- "user_interests" => "user_intrest",
- "user_allowsmile" => "user_desmile",
- "user_allowhtml" => "user_html",
- "user_allowbbcode" => "user_bbcode",
- "user_style" => "user_theme"
- ),
- $table_prefix . "privmsgs" => array(
- "privmsgs_id" => "msg_id",
- "privmsgs_from_userid" => "from_userid",
- "privmsgs_to_userid" => "to_userid",
- "privmsgs_date" => "msg_time",
- "privmsgs_ip" => "poster_ip",
- "privmsgs_type" => "msg_status"
- ),
- $table_prefix . "smilies" => array(
- "smilies_id" => "id"
- )
- );
-
- $schema = get_schema();
-
- $table_def = $schema['table_def'];
- $field_def = $schema['field_def'];
-
- // Loop tables in schema
- while (list($table, $table_def) = @each($field_def))
- {
- // Loop fields in table
- print " * Updating table '$table' :: ";
- flush();
-
- $sql = "SHOW FIELDS
- FROM $table";
- $result = query($sql, "Can't get definition of current $table table");
-
- while( $row = $db->sql_fetchrow($result) )
- {
- $current_fields[] = $row['Field'];
- }
-
- $alter_sql = "ALTER TABLE $table ";
- while (list($field, $definition) = each($table_def))
- {
- if ( $field == '' )
- {
- // Skip empty fields if any (shouldn't be needed)
- continue;
- }
-
- $type = $definition['type'];
- $size = $definition['size'];
-
- $default = isset($definition['default']) ? "DEFAULT " . $definition['default'] : '';
-
- $notnull = $definition['notnull'] == 1 ? 'NOT NULL' : '';
-
- $auto_increment = $definition['auto_increment'] == 1 ? 'auto_increment' : '';
-
- $oldfield = isset($rename[$table][$field]) ? $rename[$table][$field] : $field;
-
- if ( !inarray($field, $current_fields) && $oldfield == $field )
- {
- // If the current is not a key of $current_def and it is not a field that is
- // to be renamed then the field doesn't currently exist.
- $changes[] = " ADD $field " . $create_def[$table][$field];
- }
- else
- {
- $changes[] = " CHANGE $oldfield $field " . $create_def[$table][$field];
- }
- }
-
- $alter_sql .= join(',', $changes);
- unset($changes);
- unset($current_fields);
-
- $sql = "SHOW INDEX
- FROM $table";
- $result = query($sql, "Couldn't get list of indices for table $table");
-
- unset($indices);
-
- while( $row = $db->sql_fetchrow($result) )
- {
- $indices[] = $row['Key_name'];
- }
-
- while ( list($key_name, $key_field) = each($key_def[$table]) )
- {
- if ( !inarray($key_name, $indices) )
- {
- $alter_sql .= ($key_name == 'PRIMARY') ? ", ADD PRIMARY KEY ($key_field)" : ", ADD INDEX $key_name ($key_field)";
- }
- }
- query($alter_sql, "Couldn't alter table $table");
-
- print "OK \n";
- flush();
- }
-
- end_step('convert_forums');
-
- case 'convert_forums':
- $sql = "SELECT *
- FROM " . FORUMS_TABLE;
- $result = query($sql, "Couldn't get list with all forums");
-
- while( $row = $db->sql_fetchrow($result) )
- {
- print " * Converting forum '" . $row['forum_name'] . "' :: ";
- flush();
-
- // forum_access: (only concerns posting)
- // 1 = Registered users only
- // 2 = Anonymous Posting
- // 3 = Moderators/Administrators only
- switch( $row['forum_access'] )
- {
- case 1:
- // Public forum, no anonymous posting
- $auth_view = AUTH_ALL;
- $auth_read = AUTH_ALL;
- $auth_post = AUTH_REG;
- $auth_reply = AUTH_REG;
- $auth_edit = AUTH_REG;
- $auth_delete = AUTH_REG;
- $auth_vote = AUTH_REG;
- $auth_pollcreate = AUTH_REG;
- $auth_sticky = AUTH_MOD;
- $auth_announce = AUTH_MOD;
- break;
- case 2:
- $auth_post = AUTH_ALL;
- $auth_reply = AUTH_ALL;
- $auth_edit = AUTH_REG;
- $auth_delete = AUTH_REG;
- $auth_vote = AUTH_ALL;
- $auth_pollcreate = AUTH_ALL;
- $auth_sticky = AUTH_MOD;
- $auth_announce = AUTH_MOD;
- break;
- default:
- $auth_post = AUTH_MOD;
- $auth_reply = AUTH_MOD;
- $auth_edit = AUTH_MOD;
- $auth_delete = AUTH_MOD;
- $auth_vote = AUTH_MOD;
- $auth_pollcreate = AUTH_MOD;
- $auth_sticky = AUTH_MOD;
- $auth_announce = AUTH_MOD;
- break;
- }
-
- // Old auth structure:
- // forum_type: (only concerns viewing)
- // 0 = Public
- // 1 = Private
- switch( $row['forum_type'] )
- {
- case 0:
- $auth_view = AUTH_ALL;
- $auth_read = AUTH_ALL;
- break;
- default:
- //
- // Make it really private ...
- //
- $auth_view = AUTH_ACL;
- $auth_read = AUTH_ACL;
- $auth_post = AUTH_ACL;
- $auth_reply = AUTH_ACL;
- $auth_edit = AUTH_ACL;
- $auth_delete = AUTH_ACL;
- $auth_vote = AUTH_ACL;
- $auth_pollcreate = AUTH_ACL;
- $auth_sticky = AUTH_ACL;
- $auth_announce = AUTH_MOD;
- break;
- }
-
- $sql = "UPDATE " . FORUMS_TABLE . " SET
- auth_view = $auth_view,
- auth_read = $auth_read,
- auth_post = $auth_post,
- auth_reply = $auth_reply,
- auth_edit = $auth_edit,
- auth_delete = $auth_delete,
- auth_vote = $auth_vote,
- auth_pollcreate = $auth_pollcreate,
- auth_sticky = $auth_sticky,
- auth_announce = $auth_announce
- WHERE forum_id = ". $row['forum_id'];
- query($sql, "Was unable to update forum permissions!");
-
- print "OK \n";
- }
-
- end_step('insert_themes');
-
- case 'insert_themes':
- print " * Inserting new values into themes table :: ";
-
- @reset($inserts);
- while( list($table, $inserts_table) = each($inserts) )
- {
- if ( $table == THEMES_TABLE )
- {
- $per_pct = ceil( count($inserts_table) / 40 );
- $inc = 0;
-
- while( list($nr, $insert) = each($inserts_table) )
- {
- query($insert, "Couldn't insert value into " . THEMES_TABLE);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
- }
- }
-
- print " OK \n";
- end_step('update_topics');
-
- case 'update_topics':
- $sql = "SELECT MAX(topic_id) AS max_topic
- FROM " . TOPICS_TABLE;
- $result = query($sql, "Couldn't get max topic id");
-
- $row = $db->sql_fetchrow($result);
-
- $maxid = $row['max_topic'];
-
- lock_tables(1, array(TOPICS_TABLE, POSTS_TABLE));
-
- $batchsize = 1000;
- for($i = 0; $i <= $maxid; $i += $batchsize)
- {
- $batchstart = $i + 1;
- $batchend = $i + $batchsize;
-
- print " * Setting topic first post_id ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT MIN(post_id) AS first_post_id, topic_id
- FROM " . POSTS_TABLE . "
- WHERE topic_id
- BETWEEN $batchstart
- AND $batchend
- GROUP BY topic_id
- ORDER BY topic_id ASC";
- $result = query($sql, "Couldn't get post id data");
-
- $per_pct = ceil( $db->sql_numrows($result) / 40 );
- $inc = 0;
-
- if ( $row = $db->sql_fetchrow($result) )
- {
- do
- {
- $sql = "UPDATE " . TOPICS_TABLE . "
- SET topic_first_post_id = " . $row['first_post_id'] . "
- WHERE topic_id = " . $row['topic_id'];
- query($sql, "Couldn't update topic first post id in topic :: $topic_id");
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
- while ( $row = $db->sql_fetchrow($result) );
- }
-
- print " OK \n";
- }
-
- lock_tables(0);
- end_step('final_configuration');
-
- case 'final_configuration':
- //
- // Update forum last post information
- //
- $sql = "SELECT forum_id, forum_name
- FROM " . FORUMS_TABLE;
- $f_result = query($sql, "Couldn't obtain forum_ids");
-
- while( $forum_row = $db->sql_fetchrow($f_result) )
- {
- print " * Updating '" . $forum_row['forum_name'] . "' post info :: ";
- flush();
-
- $id = $forum_row['forum_id'];
-
- $sql = "SELECT MIN(p.post_id) AS first_post, MAX(p.post_id) AS last_post
- FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t
- WHERE p.forum_id = $id
- AND p.topic_id = t.topic_id";
- $result = query($sql, "Could not get post ID forum post information :: $id");
-
- if ( $row = $db->sql_fetchrow($result) )
- {
- $first_post = ( $row['first_post'] ) ? $row['first_post'] : 0;
- $last_post = ($row['last_post']) ? $row['last_post'] : 0;
- }
- else
- {
- $first_post = 0;
- $last_post = 0;
- }
-
- $sql = "SELECT COUNT(post_id) AS total
- FROM " . POSTS_TABLE . "
- WHERE forum_id = $id";
- $result = query($sql, "Could not get post count forum post information :: $id");
-
- if ( $row = $db->sql_fetchrow($result) )
- {
- $total_posts = ($row['total']) ? $row['total'] : 0;
- }
- else
- {
- $total_posts = 0;
- }
-
- $sql = "SELECT COUNT(topic_id) AS total
- FROM " . TOPICS_TABLE . "
- WHERE forum_id = $id
- AND topic_status <> " . TOPIC_MOVED;
- $result = query($sql, "Could not get topic count forum post information :: $id");
-
- if ( $row = $db->sql_fetchrow($result) )
- {
- $total_topics = ($row['total']) ? $row['total'] : 0;
- }
- else
- {
- $total_topics = 0;
- }
-
- $sql = "UPDATE " . FORUMS_TABLE . "
- SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics
- WHERE forum_id = $id";
- query($sql, "Could not update forum post information :: $id");
-
- print "OK \n";
- }
-
- print " \n * Update default user and finalise configuration :: ";
- flush();
-
- //
- // Update the default admin user with their information.
- //
- $sql = "SELECT MIN(user_regdate) AS oldest_time
- FROM " . USERS_TABLE . "
- WHERE user_regdate > 0 AND user_id > 0";
- $result = query($sql, "Couldn't obtain oldest post time");
-
- $row = $db->sql_fetchrow($result);
-
- $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
- VALUES ('board_startdate', " . $row['oldest_time'] . ")";
- query($sql, "Couldn't insert board_startdate");
-
- $sql = "UPDATE " . $table_prefix . "config
- SET config_value = '" . $server_name . "'
- WHERE config_name = 'server_name'
- OR config_name = 'cookie_domain'";
- query($sql, "Couldn't insert Board Server domain");
-
- $sql = "UPDATE " . $table_prefix . "config
- SET config_value = '" . $server_port . "'
- WHERE config_name = 'server_port'";
- query($sql, "Couldn't insert Board server port");
-
- $sql = "UPDATE " . $table_prefix . "config
- SET config_value = '" . $board_email . "'
- WHERE config_name = 'board_email'";
- query($sql, "Couldn't insert Board admin email");
-
- $sql = "UPDATE " . $table_prefix . "config
- SET config_value = '" . $script_path . "'
- WHERE config_name = 'script_path'";
- query($sql, "Couldn't insert Board script path");
-
- //
- // Change session table to HEAP if MySQL version matches
- //
- $sql = "SELECT VERSION() AS mysql_version";
- $result = query($sql, "Couldn't obtain MySQL Version");
-
- $row = $db->sql_fetchrow($result);
-
- $version = $row['mysql_version'];
-
- if ( preg_match("/^(3\.23)|(4\.)/", $version) )
- {
- $sql = "ALTER TABLE " . $table_prefix . "sessions
- TYPE=HEAP MAX_ROWS=500";
- $db->sql_query($sql);
- }
-
- echo "OK \n";
- end_step('drop_fields');
-
- case 'drop_fields':
- $fields = array(
- BANLIST_TABLE => array("ban_start", "ban_end", "ban_time_type"),
- FORUMS_TABLE => array("forum_access", "forum_moderator", "forum_type"),
- PRIVMSGS_TABLE => array("msg_text"),
- RANKS_TABLE => array("rank_max"),
- SMILIES_TABLE => array("emotion"),
- TOPICS_TABLE => array("topic_notify")
- );
-
- while( list($table, $field_data) = each($fields) )
- {
- for($i = 0; $i < count($field_data); $i++)
- {
- print " * Drop field '" . $field_data[$i] . "' in '$table' :: ";
- flush();
-
- $sql = "ALTER TABLE $table
- DROP COLUMN " . $field_data[$i];
- query($sql, "Couldn't drop field :: " . $field_data[$i] . " from table :: $table");
-
- print "OK \n";
-
- }
- }
-
- end_step('drop_tables');
-
- case 'drop_tables':
- $drop_tables = array('access', 'forum_access', 'forum_mods', 'headermetafooter', 'whosonline', $table_prefix . 'old_config');
-
- for($i = 0; $i < count($drop_tables); $i++)
- {
- print " * Dropping table '" . $drop_tables[$i] . "' :: ";
- flush();
-
- $sql = "DROP TABLE " . $drop_tables[$i];
- query($sql, "Couldn't drop table :: " . $drop_tables[$i]);
-
- print "OK \n";
- }
-
- end_step('fulltext_search_indexing');
-
- case 'fulltext_search_indexing':
- //
- // Generate search word list
- //
- // Fetch a batch of posts_text entries
- //
- $sql = "SELECT COUNT(*) as total, MAX(post_id) as max_post_id
- FROM " . POSTS_TEXT_TABLE;
- $result = query($sql, "Couldn't get post count totals");
-
- $max_post_id = $db->sql_fetchrow($result);
-
- $totalposts = $max_post_id['total'];
- $max_post_id = $max_post_id['max_post_id'];
- $per_percent = round(( $totalposts / 500 ) * 10);
-
- $postcounter = ( !isset($HTTP_GET_VARS['batchstart']) ) ? 0 : $HTTP_GET_VARS['batchstart'];
-
- $batchsize = 150; // Process this many posts per loop
- $batchcount = 0;
- $total_percent = 0;
-
- for(;$postcounter <= $max_post_id; $postcounter += $batchsize)
- {
- $batchstart = $postcounter + 1;
- $batchend = $postcounter + $batchsize;
- $batchcount++;
-
- print " * Fulltext Indexing ( $batchstart to $batchend ) :: ";
- flush();
-
- $sql = "SELECT *
- FROM " . POSTS_TEXT_TABLE ."
- WHERE post_id
- BETWEEN $batchstart
- AND $batchend";
- $posts_result = query($sql, "Couldn't obtain post_text");
-
- $per_pct = ceil( $db->sql_numrows($posts_result) / 40 );
- $inc = 0;
-
- if ( $row = $db->sql_fetchrow($posts_result) )
- {
- do
- {
- add_search_words('global', $row['post_id'], $row['post_text'], $row['post_subject']);
-
- $inc++;
- if ( $inc == $per_pct )
- {
- print ".";
- flush();
- $inc = 0;
- }
- }
- while( $row = $db->sql_fetchrow($posts_result) );
- }
-
- $db->sql_freeresult($posts_result);
-
- // Remove common words after the first 2 batches and after every 4th batch after that.
- if ( $batchcount % 4 == 3 )
- {
- remove_common('global', 0.4);
- }
-
- print " OK \n";
- }
-
- echo "\n
\n\nUPGRADE COMPLETED \n";
- }
-}
-
-print " If the upgrade completed without error you may click Here to proceed to the index ";
-
-common_footer();
-
-?>