function upd_create_table($table_name, $declaration) { global $config, $update_tables; if (!$update_tables[$table_name]) { upd_do_query('set foreign_key_checks = 0;', true); $result = upd_do_query("CREATE TABLE IF NOT EXISTS `{$config->db_prefix}{$table_name}` {$declaration}"); $error = db_error(); if ($error) { die("Creating error for table `{$table_name}`: {$error}<br />" . dump($declaration)); } upd_do_query('set foreign_key_checks = 1;', true); upd_load_table_info($table_name, false); sys_refresh_tablelist(); } return $result; }
if ($config->db_version < 26) { $sys_log_disabled = true; } $upd_log = ''; $new_version = floatval($config->db_version); upd_check_key('upd_lock_time', 300, !isset($config->upd_lock_time)); set_time_limit($config->upd_lock_time + 10); upd_log_message('Update started. Disabling server'); $old_server_status = $config->db_loadItem('game_disable'); $config->db_saveItem('game_disable', GAME_DISABLE_UPDATE); upd_log_message('Server disabled. Loading table info...'); $update_tables = array(); $update_indexes = array(); $query = upd_do_query('SHOW TABLES;', true); while ($row = db_fetch_row($query)) { upd_load_table_info($row[0]); } upd_log_message('Table info loaded. Now looking DB for upgrades...'); upd_do_query('SET FOREIGN_KEY_CHECKS=0;', true); if ($new_version < 37) { require_once 'update_old.php'; } ini_set('memory_limit', '1024M'); switch ($new_version) { case 37: upd_log_version_update(); upd_check_key('player_vacation_timeout', PERIOD_WEEK, $config->player_vacation_timeout != PERIOD_WEEK); upd_check_key('player_vacation_time', PERIOD_WEEK, $config->player_vacation_time != PERIOD_WEEK); upd_alter_table('users', "ADD `vacation_next` INT(11) NOT NULL DEFAULT 0 COMMENT 'Next datetime when player can go on vacation'", !$update_tables['users']['vacation_next']); upd_alter_table('users', "ADD `metamatter` BIGINT(20) NOT NULL DEFAULT 0 COMMENT 'Metamatter amount'", !$update_tables['users']['metamatter']); upd_check_key('url_purchase_metamatter', $config->url_dark_matter, !$config->url_purchase_metamatter && $config->url_dark_matter);