Changeset 1610

Show
Ignore:
Timestamp:
04/21/08 12:49:47 (3 months ago)
Author:
Neal
Message:

Changed $db to $pun_db in order to make it easier to integrate PunBB with other software. This changeset will break any third party code (extensions, etc) that relied on the database. Changing all instances of $db-> to $pun_db-> in your code should be enough to fix this. Oh yes, and hurray for massive search/replaces!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/punbb-1.3-dev/extras/db_update.php

    r1576 r1610  
    8484 
    8585// Check current version 
    86 $result = $db->query('SELECT conf_value FROM '.$db->prefix.'config WHERE conf_name=\'o_cur_version\''); 
    87 $cur_version = $db->result($result); 
     86$result = $pun_db->query('SELECT conf_value FROM '.$pun_db->prefix.'config WHERE conf_name=\'o_cur_version\''); 
     87$cur_version = $pun_db->result($result); 
    8888if (version_compare($cur_version, '1.2', '<')) 
    8989        error('Version mismatch. The database \''.$db_name.'\' doesn\'t seem to be running a PunBB database schema supported by this update script.', __FILE__, __LINE__); 
     
    9191// If we've already done charset conversion in a previous update, we have to do SET NAMES 
    9292if (strpos($cur_version, '1.3') === 0) 
    93         $db->query('SET NAMES \'utf8\'') or error(__FILE__, __LINE__); 
     93        $pun_db->query('SET NAMES \'utf8\'') or error(__FILE__, __LINE__); 
    9494 
    9595 
     
    9797if ($db_type == 'mysql' || $db_type == 'mysqli') 
    9898{ 
    99         $result = $db->query('SELECT VERSION()') or error(__FILE__, __LINE__); 
    100         $mysql_version = $db->result($result); 
     99        $result = $pun_db->query('SELECT VERSION()') or error(__FILE__, __LINE__); 
     100        $mysql_version = $pun_db->result($result); 
    101101        if (version_compare($mysql_version, MIN_MYSQL_VERSION, '<')) 
    102102                error('You are running MySQL version '.$mysql_version.'. PunBB '.UPDATE_TO.' requires at least MySQL '.MIN_MYSQL_VERSION.' to run properly. You must upgrade your MySQL installation before you can continue.'); 
     
    105105 
    106106// Get the forum config 
    107 $result = $db->query('SELECT * FROM '.$db->prefix.'config'); 
    108 while ($cur_config_item = $db->fetch_row($result)) 
     107$result = $pun_db->query('SELECT * FROM '.$pun_db->prefix.'config'); 
     108while ($cur_config_item = $pun_db->fetch_row($result)) 
    109109        $pun_config[$cur_config_item[0]] = $cur_config_item[1]; 
    110110 
     
    121121        $pun_user['style'] = 'Oxygen'; 
    122122 
    123         $db->query('UPDATE '.$db->prefix.'config SET conf_value=\'Oxygen\' WHERE conf_name=\'o_default_style\'') or error(__FILE__, __LINE__); 
     123        $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_value=\'Oxygen\' WHERE conf_name=\'o_default_style\'') or error(__FILE__, __LINE__); 
    124124} 
    125125 
     
    128128if (!file_exists(PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/common.php')) 
    129129{ 
    130         $db->query('UPDATE '.$db->prefix.'config SET conf_value=\'English\' WHERE conf_name=\'o_default_lang\'') or error(__FILE__, __LINE__); 
     130        $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_value=\'English\' WHERE conf_name=\'o_default_lang\'') or error(__FILE__, __LINE__); 
    131131} 
    132132 
     
    263263        $seems_utf8 = true; 
    264264 
    265         $result = $db->query('SELECT MIN(id), MAX(id) FROM '.$db->prefix.'posts') or error(__FILE__, __LINE__); 
    266         list($min_id, $max_id) = $db->fetch_row($result); 
     265        $result = $pun_db->query('SELECT MIN(id), MAX(id) FROM '.$pun_db->prefix.'posts') or error(__FILE__, __LINE__); 
     266        list($min_id, $max_id) = $pun_db->fetch_row($result); 
    267267 
    268268        // Get a random soup of data and check if it appears to be UTF-8 
     
    271271                $id = ($i == 0) ? $min_id : (($i == 1) ? $max_id : rand($min_id, $max_id)); 
    272272 
    273                 $result = $db->query('SELECT p.message, p.poster, t.subject, f.forum_name FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'topics AS t ON t.id = p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id = t.forum_id WHERE p.id>='.$id.' LIMIT 1') or error(__FILE__, __LINE__); 
    274                 $temp = $db->fetch_row($result); 
     273                $result = $pun_db->query('SELECT p.message, p.poster, t.subject, f.forum_name FROM '.$pun_db->prefix.'posts AS p INNER JOIN '.$pun_db->prefix.'topics AS t ON t.id = p.topic_id INNER JOIN '.$pun_db->prefix.'forums AS f ON f.id = t.forum_id WHERE p.id>='.$id.' LIMIT 1') or error(__FILE__, __LINE__); 
     274                $temp = $pun_db->fetch_row($result); 
    275275 
    276276                if (!seems_utf8($temp[0].$temp[1].$temp[2].$temp[3])) 
     
    306306 
    307307        // Set table default charset to utf8 
    308         $db->query('ALTER TABLE `'.$table.'` CHARACTER SET utf8') or error(__FILE__, __LINE__); 
     308        $pun_db->query('ALTER TABLE `'.$table.'` CHARACTER SET utf8') or error(__FILE__, __LINE__); 
    309309 
    310310        // Find out which columns need converting and build SQL statements 
    311         $result = $db->query('SHOW FULL COLUMNS FROM `'.$table.'`') or error(__FILE__, __LINE__); 
    312         while ($cur_column = $db->fetch_assoc($result)) 
     311        $result = $pun_db->query('SHOW FULL COLUMNS FROM `'.$table.'`') or error(__FILE__, __LINE__); 
     312        while ($cur_column = $pun_db->fetch_assoc($result)) 
    313313        { 
    314314                list($type) = explode('(', $cur_column['Type']); 
     
    320320                        // Only supply a default value if a default value is specified 
    321321                        if ($cur_column['Default'] !== null) 
    322                                 $attributes .= ' DEFAULT \''.$db->escape($cur_column['Default']).'\''; 
     322                                $attributes .= ' DEFAULT \''.$pun_db->escape($cur_column['Default']).'\''; 
    323323 
    324324                        $convert_to_binary[] = $names.preg_replace('/'. $type .'/i', $types[$type], $cur_column['Type']) . $attributes; 
     
    330330        { 
    331331                // Convert text columns to binary 
    332                 $db->query('ALTER TABLE `'.$table.'` '.implode(', ', $convert_to_binary)) or error(__FILE__, __LINE__); 
     332                $pun_db->query('ALTER TABLE `'.$table.'` '.implode(', ', $convert_to_binary)) or error(__FILE__, __LINE__); 
    333333                // Convert binary columns to utf8 
    334                 $db->query('ALTER TABLE `'.$table.'` '.implode(', ', $convert_to_utf8)) or error(__FILE__, __LINE__); 
     334                $pun_db->query('ALTER TABLE `'.$table.'` '.implode(', ', $convert_to_utf8)) or error(__FILE__, __LINE__); 
    335335        } 
    336336} 
     
    478478        case 'start': 
    479479                // Add the extensions table if it doesn't already exist 
    480                 if (!$db->table_exists($db->prefix.'extensions')) 
     480                if (!$pun_db->table_exists($pun_db->prefix.'extensions')) 
    481481                { 
    482482                        switch ($db_type) 
     
    484484                                case 'mysql': 
    485485                                case 'mysqli': 
    486                                         $sql = 'CREATE TABLE '.$db->prefix."extensions ( 
     486                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extensions ( 
    487487                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    488488                                                        title VARCHAR(255) NOT NULL DEFAULT '', 
     
    498498 
    499499                                case 'pgsql': 
    500                                         $sql = 'CREATE TABLE '.$db->prefix."extensions ( 
     500                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extensions ( 
    501501                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    502502                                                        title VARCHAR(255) NOT NULL DEFAULT '', 
     
    512512 
    513513                                case 'sqlite': 
    514                                         $sql = 'CREATE TABLE '.$db->prefix."extensions ( 
     514                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extensions ( 
    515515                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    516516                                                        title VARCHAR(255) NOT NULL DEFAULT '', 
     
    526526                        } 
    527527 
    528                         $db->query($sql) or error(__FILE__, __LINE__); 
     528                        $pun_db->query($sql) or error(__FILE__, __LINE__); 
    529529                } 
    530530 
    531531                // Add uninstall_note field to extensions 
    532                 $db->add_field($db->prefix.'extensions', 'uninstall_note', 'TEXT', true, null, 'uninstall'); 
     532                $pun_db->add_field($pun_db->prefix.'extensions', 'uninstall_note', 'TEXT', true, null, 'uninstall'); 
    533533 
    534534                // Drop uninstall_notes (plural) field 
    535                 $db->drop_field($db->prefix.'extensions', 'uninstall_notes'); 
     535                $pun_db->drop_field($pun_db->prefix.'extensions', 'uninstall_notes'); 
    536536 
    537537                // Add disabled field to extensions 
    538                 $db->add_field($db->prefix.'extensions', 'disabled', 'TINYINT(1)', false, 0, 'uninstall_note'); 
     538                $pun_db->add_field($pun_db->prefix.'extensions', 'disabled', 'TINYINT(1)', false, 0, 'uninstall_note'); 
    539539 
    540540                // Add the extension_hooks table 
    541                 if (!$db->table_exists($db->prefix.'extension_hooks')) 
     541                if (!$pun_db->table_exists($pun_db->prefix.'extension_hooks')) 
    542542                { 
    543543                        switch ($db_type) 
     
    545545                                case 'mysql': 
    546546                                case 'mysqli': 
    547                                         $sql = 'CREATE TABLE '.$db->prefix."extension_hooks ( 
     547                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extension_hooks ( 
    548548                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    549549                                                        extension_id VARCHAR(50) NOT NULL DEFAULT '', 
     
    555555 
    556556                                case 'pgsql': 
    557                                         $sql = 'CREATE TABLE '.$db->prefix."extension_hooks ( 
     557                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extension_hooks ( 
    558558                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    559559                                                        extension_id VARCHAR(50) NOT NULL DEFAULT '', 
     
    565565 
    566566                                case 'sqlite': 
    567                                         $sql = 'CREATE TABLE '.$db->prefix."extension_hooks ( 
     567                                        $sql = 'CREATE TABLE '.$pun_db->prefix."extension_hooks ( 
    568568                                                        id VARCHAR(50) NOT NULL DEFAULT '', 
    569569                                                        extension_id VARCHAR(50) NOT NULL DEFAULT '', 
     
    575575                        } 
    576576 
    577                         $db->query($sql) or error(__FILE__, __LINE__); 
     577                        $pun_db->query($sql) or error(__FILE__, __LINE__); 
    578578                } 
    579579 
     
    581581                { 
    582582                        // Make all e-mail fields VARCHAR(80) 
    583                         $db->query('ALTER TABLE '.$db->prefix.'bans CHANGE email email VARCHAR(80)') or error(__FILE__, __LINE__); 
    584                         $db->query('ALTER TABLE '.$db->prefix.'posts CHANGE poster_email poster_email VARCHAR(80)') or error(__FILE__, __LINE__); 
    585                         $db->query('ALTER TABLE '.$db->prefix.'users CHANGE email email VARCHAR(80)') or error(__FILE__, __LINE__); 
    586                         $db->query('ALTER TABLE '.$db->prefix.'users CHANGE jabber jabber VARCHAR(80)') or error(__FILE__, __LINE__); 
    587                         $db->query('ALTER TABLE '.$db->prefix.'users CHANGE msn msn VARCHAR(80)') or error(__FILE__, __LINE__); 
    588                         $db->query('ALTER TABLE '.$db->prefix.'users CHANGE activate_string activate_string VARCHAR(80)') or error(__FILE__, __LINE__); 
     583                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'bans CHANGE email email VARCHAR(80)') or error(__FILE__, __LINE__); 
     584                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'posts CHANGE poster_email poster_email VARCHAR(80)') or error(__FILE__, __LINE__); 
     585                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'users CHANGE email email VARCHAR(80)') or error(__FILE__, __LINE__); 
     586                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'users CHANGE jabber jabber VARCHAR(80)') or error(__FILE__, __LINE__); 
     587                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'users CHANGE msn msn VARCHAR(80)') or error(__FILE__, __LINE__); 
     588                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'users CHANGE activate_string activate_string VARCHAR(80)') or error(__FILE__, __LINE__); 
    589589 
    590590                        // Remove NOT NULL from TEXT fields for consistency. See http://dev.punbb.org/changeset/596 
    591                         $db->query('ALTER TABLE '.$db->prefix.'posts CHANGE message message TEXT') or error(__FILE__, __LINE__); 
    592                         $db->query('ALTER TABLE '.$db->prefix.'reports CHANGE message message TEXT') or error(__FILE__, __LINE__); 
     591                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'posts CHANGE message message TEXT') or error(__FILE__, __LINE__); 
     592                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'reports CHANGE message message TEXT') or error(__FILE__, __LINE__); 
    593593                } 
    594594 
    595595                // Add the DST option to the users table 
    596                 $db->add_field($db->prefix.'users', 'dst', 'TINYINT(1)', false, 0, 'timezone'); 
     596                $pun_db->add_field($pun_db->prefix.'users', 'dst', 'TINYINT(1)', false, 0, 'timezone'); 
    597597 
    598598                // Add the salt field to the users table 
    599                 $db->add_field($db->prefix.'users', 'salt', 'VARCHAR(12)', true, null, 'password'); 
     599                $pun_db->add_field($pun_db->prefix.'users', 'salt', 'VARCHAR(12)', true, null, 'password'); 
    600600 
    601601                // Add the access_keys field to the users table 
    602                 $db->add_field($db->prefix.'users', 'access_keys', 'TINYINT(1)', false, 0, 'show_sig'); 
     602                $pun_db->add_field($pun_db->prefix.'users', 'access_keys', 'TINYINT(1)', false, 0, 'show_sig'); 
    603603 
    604604                // Add the CSRF token field to the online table 
    605                 $db->add_field($db->prefix.'online', 'csrf_token', 'VARCHAR(40)', false, '', null); 
     605                $pun_db->add_field($pun_db->prefix.'online', 'csrf_token', 'VARCHAR(40)', false, '', null); 
    606606 
    607607                // Add the prev_url field to the online table 
    608                 $db->add_field($db->prefix.'online', 'prev_url', 'VARCHAR(255)', true, null, null); 
     608                $pun_db->add_field($pun_db->prefix.'online', 'prev_url', 'VARCHAR(255)', true, null, null); 
    609609 
    610610                // Drop use_avatar column from users table 
    611                 $db->drop_field($db->prefix.'users', 'use_avatar'); 
     611                $pun_db->drop_field($pun_db->prefix.'users', 'use_avatar'); 
    612612 
    613613                // Make sure we have o_additional_navlinks (was added in 1.2.1) 
    614614                if (!array_key_exists('o_additional_navlinks', $pun_config)) 
    615                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_additional_navlinks\', \'\')') or error(__FILE__, __LINE__); 
     615                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_additional_navlinks\', \'\')') or error(__FILE__, __LINE__); 
    616616 
    617617                // Insert new config options o_sef 
    618618                if (!array_key_exists('o_sef', $pun_config)) 
    619                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_sef\', \'Default\')') or error(__FILE__, __LINE__); 
     619                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_sef\', \'Default\')') or error(__FILE__, __LINE__); 
    620620 
    621621                // Insert new config option o_topic_views 
    622622                if (!array_key_exists('o_topic_views', $pun_config)) 
    623                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_topic_views\', \'1\')') or error(__FILE__, __LINE__); 
     623                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_topic_views\', \'1\')') or error(__FILE__, __LINE__); 
    624624 
    625625                // Insert new config option o_signatures 
    626626                if (!array_key_exists('o_signatures', $pun_config)) 
    627                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_signatures\', \'1\')') or error(__FILE__, __LINE__); 
     627                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_signatures\', \'1\')') or error(__FILE__, __LINE__); 
    628628 
    629629                // Insert new config option o_smtp_ssl 
    630630                if (!array_key_exists('o_smtp_ssl', $pun_config)) 
    631                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_smtp_ssl\', \'0\')') or error(__FILE__, __LINE__); 
     631                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_smtp_ssl\', \'0\')') or error(__FILE__, __LINE__); 
    632632 
    633633                // Insert new config option o_check_for_updates 
     
    635635                { 
    636636                        $check_for_updates = (function_exists('curl_init') || function_exists('fsockopen') || in_array(strtolower(@ini_get('allow_url_fopen')), array('on', 'true', '1'))) ? 1 : 0; 
    637                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_check_for_updates\', \''.$check_for_updates.'\')') or error(__FILE__, __LINE__); 
     637                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_check_for_updates\', \''.$check_for_updates.'\')') or error(__FILE__, __LINE__); 
    638638                } 
    639639 
    640640                // Insert new config option o_announcement_heading 
    641641                if (!array_key_exists('o_announcement_heading', $pun_config)) 
    642                         $db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'o_announcement_heading\', \'\')') or error(__FILE__, __LINE__); 
     642                        $pun_db->query('INSERT INTO '.$pun_db->prefix.'config (conf_name, conf_value) VALUES(\'o_announcement_heading\', \'\')') or error(__FILE__, __LINE__); 
    643643 
    644644                // Server timezone is now simply the default timezone 
    645645                if (!array_key_exists('o_default_timezone', $pun_config)) 
    646                         $db->query('UPDATE '.$db->prefix.'config SET conf_name=\'o_default_timezone\' WHERE conf_name=\'o_server_timezone\'') or error(__FILE__, __LINE__); 
     646                        $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_name=\'o_default_timezone\' WHERE conf_name=\'o_server_timezone\'') or error(__FILE__, __LINE__); 
    647647 
    648648                // Increase visit timeout to 30 minutes (only if it hasn't been changed from the default) 
    649649                if ($pun_config['o_timeout_visit'] == '600') 
    650                         $db->query('UPDATE '.$db->prefix.'config SET conf_value=\'1800\' WHERE conf_name=\'o_timeout_visit\'') or error(__FILE__, __LINE__); 
     650                        $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_value=\'1800\' WHERE conf_name=\'o_timeout_visit\'') or error(__FILE__, __LINE__); 
    651651 
    652652                // Remove obsolete g_post_polls permission from groups table 
    653                 if ($db->field_exists($db->prefix.'groups', 'g_post_polls') && $db_type != 'sqlite')  // No DROP column in SQLite 
    654                         $db->query('ALTER TABLE '.$db->prefix.'groups DROP g_post_polls') or error(__FILE__, __LINE__); 
     653                if ($pun_db->field_exists($pun_db->prefix.'groups', 'g_post_polls') && $db_type != 'sqlite')  // No DROP column in SQLite 
     654                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'groups DROP g_post_polls') or error(__FILE__, __LINE__); 
    655655 
    656656                // Make room for multiple moderator groups 
    657                 if (!$db->field_exists($db->prefix.'groups', 'g_moderator')) 
     657                if (!$pun_db->field_exists($pun_db->prefix.'groups', 'g_moderator')) 
    658658                { 
    659659                        // Add g_moderator column to groups table 
    660                         $db->add_field($db->prefix.'groups', 'g_moderator', 'TINYINT(1)', false, 0, 'g_user_title'); 
     660                        $pun_db->add_field($pun_db->prefix.'groups', 'g_moderator', 'TINYINT(1)', false, 0, 'g_user_title'); 
    661661 
    662662                        // Give the moderator group moderator privileges 
    663                         $db->query('UPDATE '.$db->prefix.'groups SET g_moderator=1 WHERE g_id=2') or error(__FILE__, __LINE__); 
     663                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_moderator=1 WHERE g_id=2') or error(__FILE__, __LINE__); 
    664664 
    665665                        // Shuffle the group IDs around a bit 
    666                         $result = $db->query('SELECT MAX(g_id)+1 FROM '.$db->prefix.'groups') or error(__FILE__, __LINE__); 
    667                         $temp_id = $db->result($result); 
    668  
    669                         $db->query('UPDATE '.$db->prefix.'groups SET g_id='.$temp_id.' WHERE g_id=2') or error(__FILE__, __LINE__); 
    670                         $db->query('UPDATE '.$db->prefix.'groups SET g_id=2 WHERE g_id=3') or error(__FILE__, __LINE__); 
    671                         $db->query('UPDATE '.$db->prefix.'groups SET g_id=3 WHERE g_id=4') or error(__FILE__, __LINE__); 
    672                         $db->query('UPDATE '.$db->prefix.'groups SET g_id=4 WHERE g_id='.$temp_id) or error(__FILE__, __LINE__); 
    673  
    674                         $db->query('UPDATE '.$db->prefix.'users SET group_id='.$temp_id.' WHERE group_id=2') or error(__FILE__, __LINE__); 
    675                         $db->query('UPDATE '.$db->prefix.'users SET group_id=2 WHERE group_id=3') or error(__FILE__, __LINE__); 
    676                         $db->query('UPDATE '.$db->prefix.'users SET group_id=3 WHERE group_id=4') or error(__FILE__, __LINE__); 
    677                         $db->query('UPDATE '.$db->prefix.'users SET group_id=4 WHERE group_id='.$temp_id) or error(__FILE__, __LINE__); 
    678  
    679                         $db->query('UPDATE '.$db->prefix.'forum_perms SET group_id='.$temp_id.' WHERE group_id=2') or error(__FILE__, __LINE__); 
    680                         $db->query('UPDATE '.$db->prefix.'forum_perms SET group_id=2 WHERE group_id=3') or error(__FILE__, __LINE__); 
    681                         $db->query('UPDATE '.$db->prefix.'forum_perms SET group_id=3 WHERE group_id=4') or error(__FILE__, __LINE__); 
    682                         $db->query('UPDATE '.$db->prefix.'forum_perms SET group_id=4 WHERE group_id='.$temp_id) or error(__FILE__, __LINE__); 
     666                        $result = $pun_db->query('SELECT MAX(g_id)+1 FROM '.$pun_db->prefix.'groups') or error(__FILE__, __LINE__); 
     667                        $temp_id = $pun_db->result($result); 
     668 
     669                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_id='.$temp_id.' WHERE g_id=2') or error(__FILE__, __LINE__); 
     670                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_id=2 WHERE g_id=3') or error(__FILE__, __LINE__); 
     671                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_id=3 WHERE g_id=4') or error(__FILE__, __LINE__); 
     672                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_id=4 WHERE g_id='.$temp_id) or error(__FILE__, __LINE__); 
     673 
     674                        $pun_db->query('UPDATE '.$pun_db->prefix.'users SET group_id='.$temp_id.' WHERE group_id=2') or error(__FILE__, __LINE__); 
     675                        $pun_db->query('UPDATE '.$pun_db->prefix.'users SET group_id=2 WHERE group_id=3') or error(__FILE__, __LINE__); 
     676                        $pun_db->query('UPDATE '.$pun_db->prefix.'users SET group_id=3 WHERE group_id=4') or error(__FILE__, __LINE__); 
     677                        $pun_db->query('UPDATE '.$pun_db->prefix.'users SET group_id=4 WHERE group_id='.$temp_id) or error(__FILE__, __LINE__); 
     678 
     679                        $pun_db->query('UPDATE '.$pun_db->prefix.'forum_perms SET group_id='.$temp_id.' WHERE group_id=2') or error(__FILE__, __LINE__); 
     680                        $pun_db->query('UPDATE '.$pun_db->prefix.'forum_perms SET group_id=2 WHERE group_id=3') or error(__FILE__, __LINE__); 
     681                        $pun_db->query('UPDATE '.$pun_db->prefix.'forum_perms SET group_id=3 WHERE group_id=4') or error(__FILE__, __LINE__); 
     682                        $pun_db->query('UPDATE '.$pun_db->prefix.'forum_perms SET group_id=4 WHERE group_id='.$temp_id) or error(__FILE__, __LINE__); 
    683683 
    684684                        // Update the default usergroup if it uses the old ID for the members group 
    685                         $db->query('UPDATE '.$db->prefix.'config SET conf_value="3" WHERE conf_name="o_default_user_group" and conf_value="4"') or error(__FILE__, __LINE__); 
     685                        $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_value="3" WHERE conf_name="o_default_user_group" and conf_value="4"') or error(__FILE__, __LINE__); 
    686686                } 
    687687 
     
    689689                if (array_key_exists('p_mod_edit_users', $pun_config)) 
    690690                { 
    691                         $db->query('DELETE FROM '.$db->prefix.'config WHERE conf_name=\'p_mod_edit_users\'') or error(__FILE__, __LINE__); 
    692                         $db->add_field($db->prefix.'groups', 'g_mod_edit_users', 'TINYINT(1)', false, 0, 'g_moderator'); 
    693                         $db->query('UPDATE '.$db->prefix.'groups SET g_mod_edit_users='.$pun_config['p_mod_edit_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
     691                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'config WHERE conf_name=\'p_mod_edit_users\'') or error(__FILE__, __LINE__); 
     692                        $pun_db->add_field($pun_db->prefix.'groups', 'g_mod_edit_users', 'TINYINT(1)', false, 0, 'g_moderator'); 
     693                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_mod_edit_users='.$pun_config['p_mod_edit_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
    694694                } 
    695695 
     
    697697                if (array_key_exists('p_mod_rename_users', $pun_config)) 
    698698                { 
    699                         $db->query('DELETE FROM '.$db->prefix.'config WHERE conf_name=\'p_mod_rename_users\'') or error(__FILE__, __LINE__); 
    700                         $db->add_field($db->prefix.'groups', 'g_mod_rename_users', 'TINYINT(1)', false, 0, 'g_mod_edit_users'); 
    701                         $db->query('UPDATE '.$db->prefix.'groups SET g_mod_rename_users='.$pun_config['p_mod_rename_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
     699                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'config WHERE conf_name=\'p_mod_rename_users\'') or error(__FILE__, __LINE__); 
     700                        $pun_db->add_field($pun_db->prefix.'groups', 'g_mod_rename_users', 'TINYINT(1)', false, 0, 'g_mod_edit_users'); 
     701                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_mod_rename_users='.$pun_config['p_mod_rename_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
    702702                } 
    703703 
     
    705705                if (array_key_exists('p_mod_change_passwords', $pun_config)) 
    706706                { 
    707                         $db->query('DELETE FROM '.$db->prefix.'config WHERE conf_name=\'p_mod_change_passwords\'') or error(__FILE__, __LINE__); 
    708                         $db->add_field($db->prefix.'groups', 'g_mod_change_passwords', 'TINYINT(1)', false, 0, 'g_mod_rename_users'); 
    709                         $db->query('UPDATE '.$db->prefix.'groups SET g_mod_change_passwords='.$pun_config['p_mod_change_passwords'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
     707                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'config WHERE conf_name=\'p_mod_change_passwords\'') or error(__FILE__, __LINE__); 
     708                        $pun_db->add_field($pun_db->prefix.'groups', 'g_mod_change_passwords', 'TINYINT(1)', false, 0, 'g_mod_rename_users'); 
     709                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_mod_change_passwords='.$pun_config['p_mod_change_passwords'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
    710710                } 
    711711 
     
    713713                if (array_key_exists('p_mod_ban_users', $pun_config)) 
    714714                { 
    715                         $db->query('DELETE FROM '.$db->prefix.'config WHERE conf_name=\'p_mod_ban_users\'') or error(__FILE__, __LINE__); 
    716                         $db->add_field($db->prefix.'groups', 'g_mod_ban_users', 'TINYINT(1)', false, 0, 'g_mod_change_passwords'); 
    717                         $db->query('UPDATE '.$db->prefix.'groups SET g_mod_ban_users='.$pun_config['p_mod_ban_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
     715                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'config WHERE conf_name=\'p_mod_ban_users\'') or error(__FILE__, __LINE__); 
     716                        $pun_db->add_field($pun_db->prefix.'groups', 'g_mod_ban_users', 'TINYINT(1)', false, 0, 'g_mod_change_passwords'); 
     717                        $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_mod_ban_users='.$pun_config['p_mod_ban_users'].' WHERE g_moderator=1') or error(__FILE__, __LINE__); 
    718718                } 
    719719 
    720720                // We need to add a unique index to avoid users having multiple rows in the online table 
    721                 if (!$db->index_exists($db->prefix.'online', $db->prefix.'online_user_id_ident_idx')) 
    722                 { 
    723                         $db->query('DELETE FROM '.$db->prefix.'online') or error(__FILE__, __LINE__); 
     721                if (!$pun_db->index_exists($pun_db->prefix.'online', $pun_db->prefix.'online_user_id_ident_idx')) 
     722                { 
     723                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'online') or error(__FILE__, __LINE__); 
    724724 
    725725                        switch ($db_type) 
     
    727727                                case 'mysql': 
    728728                                case 'mysqli': 
    729                                         $db->query('ALTER TABLE '.$db->prefix.'online ADD UNIQUE INDEX '.$db->prefix.'online_user_id_ident_idx (user_id, ident(25))') or error(__FILE__, __LINE__); 
     729                                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'online ADD UNIQUE INDEX '.$pun_db->prefix.'online_user_id_ident_idx (user_id, ident(25))') or error(__FILE__, __LINE__); 
    730730                                        break; 
    731731 
    732732                                default: 
    733                                         $db->query('CREATE UNIQUE INDEX '.$db->prefix.'online_user_id_ident_idx ON '.$db->prefix.'online(user_id, ident)') or error(__FILE__, __LINE__); 
     733                                        $pun_db->query('CREATE UNIQUE INDEX '.$pun_db->prefix.'online_user_id_ident_idx ON '.$pun_db->prefix.'online(user_id, ident)') or error(__FILE__, __LINE__); 
    734734                                        break; 
    735735                        } 
     
    737737 
    738738                // Get rid of the old search tables for mysql/mysqli 
    739                 if (($db_type == 'mysql' || $db_type == 'mysqli') && $db->table_exists($db->prefix.'search_cache') && $db->table_exists($db->prefix.'search_matches') && $db->table_exists($db->prefix.'search_words')) 
    740                         $db->query('DROP TABLE '.$db->prefix.'search_cache, '.$db->prefix.'search_matches, '.$db->prefix.'search_words') or error(__FILE__, __LINE__); 
     739                if (($db_type == 'mysql' || $db_type == 'mysqli') && $pun_db->table_exists($pun_db->prefix.'search_cache') && $pun_db->table_exists($pun_db->prefix.'search_matches') && $pun_db->table_exists($pun_db->prefix.'search_words')) 
     740                        $pun_db->query('DROP TABLE '.$pun_db->prefix.'search_cache, '.$pun_db->prefix.'search_matches, '.$pun_db->prefix.'search_words') or error(__FILE__, __LINE__); 
    741741 
    742742                // Add an index on last_post in the topics table 
    743                 if (!$db->index_exists($db->prefix.'topics', $db->prefix.'topics_last_post_idx')) 
     743                if (!$pun_db->index_exists($pun_db->prefix.'topics', $pun_db->prefix.'topics_last_post_idx')) 
    744744                { 
    745745                        switch ($db_type) 
     
    747747                                case 'mysql': 
    748748                                case 'mysqli': 
    749                                         $db->query('ALTER TABLE '.$db->prefix.'topics ADD INDEX '.$db->prefix.'topics_last_post_idx(last_post)') or error(__FILE__, __LINE__); 
     749                                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'topics ADD INDEX '.$pun_db->prefix.'topics_last_post_idx(last_post)') or error(__FILE__, __LINE__); 
    750750                                        break; 
    751751 
    752752                                default: 
    753                                         $db->query('CREATE INDEX '.$db->prefix.'topics_last_post_idx ON '.$db->prefix.'topics(last_post)') or error(__FILE__, __LINE__); 
     753                                        $pun_db->query('CREATE INDEX '.$pun_db->prefix.'topics_last_post_idx ON '.$pun_db->prefix.'topics(last_post)') or error(__FILE__, __LINE__); 
    754754                                        break; 
    755755                        } 
     
    757757 
    758758                // Remove any remnants of the now defunct post approval system 
    759                 $db->drop_field($db->prefix.'forums', 'approval'); 
    760                 $db->drop_field($db->prefix.'groups', 'g_posts_approved'); 
    761                 $db->drop_field($db->prefix.'posts', 'approved'); 
     759                $pun_db->drop_field($pun_db->prefix.'forums', 'approval'); 
     760                $pun_db->drop_field($pun_db->prefix.'groups', 'g_posts_approved'); 
     761                $pun_db->drop_field($pun_db->prefix.'posts', 'approved'); 
    762762 
    763763                // Add g_view_users field to groups table 
    764                 $db->add_field($db->prefix.'groups', 'g_view_users', 'TINYINT(1)', false, 1, 'g_read_board'); 
     764                $pun_db->add_field($pun_db->prefix.'groups', 'g_view_users', 'TINYINT(1)', false, 1, 'g_read_board'); 
    765765 
    766766                // Add the time/date format settings to the user table 
    767                 $db->add_field($db->prefix.'users', 'time_format', 'INT(10)', false, 0, 'dst'); 
    768                 $db->add_field($db->prefix.'users', 'date_format', 'INT(10)', false, 0, 'dst'); 
     767                $pun_db->add_field($pun_db->prefix.'users', 'time_format', 'INT(10)', false, 0, 'dst'); 
     768                $pun_db->add_field($pun_db->prefix.'users', 'date_format', 'INT(10)', false, 0, 'dst'); 
    769769 
    770770                // Add the last_search column to the users table 
    771                 $db->add_field($db->prefix.'users', 'last_search', 'INT(10)', true, null, 'last_post'); 
     771                $pun_db->add_field($pun_db->prefix.'users', 'last_search', 'INT(10)', true, null, 'last_post'); 
    772772 
    773773                // Add the last_email_sent column to the users table and the g_send_email and 
    774774                // g_email_flood columns to the groups table 
    775                 $db->add_field($db->prefix.'users', 'last_email_sent', 'INT(10)', true, null, 'last_search'); 
    776                 $db->add_field($db->prefix.'groups', 'g_send_email', 'TINYINT(1)', false, 1, 'g_search_users'); 
    777                 $db->add_field($db->prefix.'groups', 'g_email_flood', 'INT(10)', false, 60, 'g_search_flood'); 
     775                $pun_db->add_field($pun_db->prefix.'users', 'last_email_sent', 'INT(10)', true, null, 'last_search'); 
     776                $pun_db->add_field($pun_db->prefix.'groups', 'g_send_email', 'TINYINT(1)', false, 1, 'g_search_users'); 
     777                $pun_db->add_field($pun_db->prefix.'groups', 'g_email_flood', 'INT(10)', false, 60, 'g_search_flood'); 
    778778 
    779779                // Set non-default g_send_email and g_flood_email values properly 
    780                 $db->query('UPDATE '.$db->prefix.'groups SET g_send_email=0 WHERE g_id=2') or error(__FILE__, __LINE__); 
    781                 $db->query('UPDATE '.$db->prefix.'groups SET g_email_flood=0 WHERE g_id IN (1,2,4)') or error(__FILE__, __LINE__); 
     780                $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_send_email=0 WHERE g_id=2') or error(__FILE__, __LINE__); 
     781                $pun_db->query('UPDATE '.$pun_db->prefix.'groups SET g_email_flood=0 WHERE g_id IN (1,2,4)') or error(__FILE__, __LINE__); 
    782782 
    783783                // Add the auto notify/subscription option to the users table 
    784                 $db->add_field($db->prefix.'users', 'auto_notify', 'TINYINT(1)', false, 0, 'notify_with_post'); 
     784                $pun_db->add_field($pun_db->prefix.'users', 'auto_notify', 'TINYINT(1)', false, 0, 'notify_with_post'); 
    785785 
    786786                // Add the first_post_id column to the topics table 
    787                 if (!$db->field_exists($db->prefix.'topics', 'first_post_id')) 
     787                if (!$pun_db->field_exists($pun_db->prefix.'topics', 'first_post_id')) 
    788788                { 
    789789                        switch ($db_type) 
     
    791791                                case 'mysql': 
    792792                                case 'mysqli': 
    793                                         $db->query('ALTER TABLE '.$db->prefix.'topics ADD first_post_id INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER posted') or error(__FILE__, __LINE__); 
    794                                         $db->query('ALTER TABLE '.$db->prefix.'topics ADD INDEX '.$db->prefix.'topics_first_post_id_idx(first_post_id)') or error(__FILE__, __LINE__); 
     793                                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'topics ADD first_post_id INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER posted') or error(__FILE__, __LINE__); 
     794                                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'topics ADD INDEX '.$pun_db->prefix.'topics_first_post_id_idx(first_post_id)') or error(__FILE__, __LINE__); 
    795795                                        break; 
    796796 
    797797                                default: 
    798                                         $db->add_field($db->prefix.'topics', 'first_post_id', 'INT', false, 0, null); 
    799                                         $db->query('CREATE INDEX '.$db->prefix.'topics_first_post_id_idx ON '.$db->prefix.'topics(first_post_id)') or error(__FILE__, __LINE__); 
     798                                        $pun_db->add_field($pun_db->prefix.'topics', 'first_post_id', 'INT', false, 0, null); 
     799                                        $pun_db->query('CREATE INDEX '.$pun_db->prefix.'topics_first_post_id_idx ON '.$pun_db->prefix.'topics(first_post_id)') or error(__FILE__, __LINE__); 
    800800                                        break; 
    801801                        } 
    802802 
    803803                        // Now that we've added the column and indexed it, we need to give it correct data 
    804                         $result = $db->query('SELECT min(id) AS first_post, topic_id FROM '.$db->prefix.'posts GROUP BY topic_id') or error(__FILE__, __LINE__); 
    805  
    806                         while ($cur_post = $db->fetch_assoc($result)) 
    807                         { 
    808                                 $db->query('UPDATE '.$db->prefix.'topics SET first_post_id = '.$cur_post['first_post'].' WHERE id = '.$cur_post['topic_id']) or error(__FILE__, __LINE__); 
     804                        $result = $pun_db->query('SELECT min(id) AS first_post, topic_id FROM '.$pun_db->prefix.'posts GROUP BY topic_id') or error(__FILE__, __LINE__); 
     805 
     806                        while ($cur_post = $pun_db->fetch_assoc($result)) 
     807                        { 
     808                                $pun_db->query('UPDATE '.$pun_db->prefix.'topics SET first_post_id = '.$cur_post['first_post'].' WHERE id = '.$cur_post['topic_id']) or error(__FILE__, __LINE__); 
    809809                        } 
    810810                } 
    811811 
    812812                // Move any users with the old unverified status to their new group 
    813                 $db->query('UPDATE '.$db->prefix.'users SET group_id=0 WHERE group_id=32000') or error(__FILE__, __LINE__); 
     813                $pun_db->query('UPDATE '.$pun_db->prefix.'users SET group_id=0 WHERE group_id=32000') or error(__FILE__, __LINE__); 
    814814 
    815815                // Add the ban_creator column to the bans table 
    816                 if (!$db->field_exists($db->prefix.'bans', 'ban_creator')) 
     816                if (!$pun_db->field_exists($pun_db->prefix.'bans', 'ban_creator')) 
    817817                { 
    818818                        switch ($db_type) 
     
    820820                                case 'mysql': 
    821821                                case 'mysqli': 
    822                                         $db->query('ALTER TABLE '.$db->prefix.'bans ADD ban_creator INT(10) UNSIGNED NOT NULL DEFAULT 0') or error(__FILE__, __LINE__); 
     822                                        $pun_db->query('ALTER TABLE '.$pun_db->prefix.'bans ADD ban_creator INT(10) UNSIGNED NOT NULL DEFAULT 0') or error(__FILE__, __LINE__); 
    823823                                        break; 
    824824 
    825825                                default: 
    826                                         $db->add_field($db->prefix.'bans', 'ban_creator', 'INT', false, 0, null); 
     826                                        $pun_db->add_field($pun_db->prefix.'bans', 'ban_creator', 'INT', false, 0, null); 
    827827                                        break; 
    828828                        } 
     
    832832                if (!empty($supersedes_ext)) 
    833833                { 
    834                         $db->query('DELETE FROM '.$db->prefix.'extension_hooks WHERE extension_id IN(\''.implode('\',\'', $supersedes_ext).'\')') or error(__FILE__, __LINE__); 
    835                         $db->query('DELETE FROM '.$db->prefix.'extensions WHERE id IN(\''.implode('\',\'', $supersedes_ext).'\')') or error(__FILE__, __LINE__); 
     834                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'extension_hooks WHERE extension_id IN(\''.implode('\',\'', $supersedes_ext).'\')') or error(__FILE__, __LINE__); 
     835                        $pun_db->query('DELETE FROM '.$pun_db->prefix.'extensions WHERE id IN(\''.implode('\',\'', $supersedes_ext).'\')') or error(__FILE__, __LINE__); 
    836836                } 
    837837 
     
    851851                { 
    852852                        if (convert_to_utf8($conf_value, $old_charset)) 
    853                                 $db->query('UPDATE '.$db->prefix.'config SET conf_value=\''.$db->escape($conf_value).'\' WHERE conf_name=\''.$conf_name.'\'') or error(__FILE__, __LINE__); 
     853                                $pun_db->query('UPDATE '.$pun_db->prefix.'config SET conf_value=\''.$pun_db->escape($conf_value).'\' WHERE conf_name=\''.$conf_name.'\'') or error(__FILE__, __LINE__); 
    854854                } 
    855855 
    856856                // Convert categories 
    857857                echo 'Converting categories 
'."<br />\n"; 
    858                 $result = $db->query('SELECT id, cat_name FROM '.$db->prefix.'categories ORDER BY id') or error(__FILE__, __LINE__); 
    859                 while ($cur_item = $db->fetch_assoc($result)) 
     858                $result = $pun_db->query('SELECT id, cat_name FROM '.$pun_db->prefix.'categories ORDER BY id') or error(__FILE__, __LINE__); 
     859                while ($cur_item = $pun_db->fetch_assoc($result)) 
    860860                { 
    861861                        if (convert_to_utf8($cur_item['cat_name'], $old_charset)) 
    862                                 $db->query('UPDATE '.$db->prefix.'categories SET cat_name=\''.$db->escape($cur_item['cat_name']).'\' WHERE id='.$cur_item['id']) or error(__FILE__, __LINE__); 
     862                                $pun_db->query('UPDATE '.$pun_db->prefix.'categories SET cat_name=\''.$pun_db->escape($cur_item['cat_name']).'\' WHERE id='.$cur_item['id']) or error(__FILE__, __LINE__); 
    863863                } 
    864864 
    865865                // Convert forums 
    866866                echo 'Converting forums 
'."<br />\n"; 
    867                 $result = $db->query('SELECT id, forum_name, forum_desc, moderators FROM '.$db->prefix.'forums ORDER BY id') or error(__FILE__, __LINE__); 
    868                 while ($cur_item = $db->fetch_assoc($result))