/** * Final step, clean up and a complete message! */ function action_deleteInstall() { global $txt, $incontext, $db_character_set; global $current_version, $databases, $forum_version, $modSettings, $user_info, $db_type; // A few items we will load in from settings and make avaialble. global $boardurl, $db_prefix, $cookiename, $mbname, $language; $incontext['page_title'] = $txt['congratulations']; $incontext['sub_template'] = 'delete_install'; $incontext['continue'] = 0; require dirname(__FILE__) . '/Settings.php'; if (!defined('ELK')) { define('ELK', 1); } definePaths(); $db = load_database(); if (!defined('SUBSDIR')) { define('SUBSDIR', dirname(__FILE__) . '/sources/subs'); } chdir(dirname(__FILE__)); require_once SOURCEDIR . '/Errors.php'; require_once SOURCEDIR . '/Logging.php'; require_once SOURCEDIR . '/Subs.php'; require_once SOURCEDIR . '/Load.php'; require_once SUBSDIR . '/Cache.subs.php'; require_once SOURCEDIR . '/Security.php'; require_once SUBSDIR . '/Auth.subs.php'; require_once SUBSDIR . '/Util.class.php'; // Bring a warning over. if (!empty($incontext['account_existed'])) { $incontext['warning'] = $incontext['account_existed']; } if (!empty($db_character_set) && !empty($databases[$db_type]['utf8_support'])) { $db->query('', ' SET NAMES {raw:db_character_set}', array('db_character_set' => $db_character_set, 'db_error_skip' => true)); } // As track stats is by default enabled let's add some activity. $db->insert('ignore', '{db_prefix}log_activity', array('date' => 'date', 'topics' => 'int', 'posts' => 'int', 'registers' => 'int'), array(strftime('%Y-%m-%d', time()), 1, 1, !empty($incontext['member_id']) ? 1 : 0), array('date')); // We're going to want our lovely $modSettings now. $request = $db->query('', ' SELECT variable, value FROM {db_prefix}settings', array('db_error_skip' => true)); // Only proceed if we can load the data. if ($request) { while ($row = $db->fetch_row($request)) { $modSettings[$row[0]] = $row[1]; } $db->free_result($request); } // Automatically log them in ;) if (isset($incontext['member_id']) && isset($incontext['member_salt'])) { setLoginCookie(3153600 * 60, $incontext['member_id'], hash('sha256', $incontext['passwd'] . $incontext['member_salt'])); } $result = $db->query('', ' SELECT value FROM {db_prefix}settings WHERE variable = {string:db_sessions}', array('db_sessions' => 'databaseSession_enable', 'db_error_skip' => true)); if ($db->num_rows($result) != 0) { list($db_sessions) = $db->fetch_row($result); } $db->free_result($result); if (empty($db_sessions)) { $_SESSION['admin_time'] = time(); } else { $_SERVER['HTTP_USER_AGENT'] = substr($_SERVER['HTTP_USER_AGENT'], 0, 211); $db->insert('replace', '{db_prefix}sessions', array('session_id' => 'string', 'last_update' => 'int', 'data' => 'string'), array(session_id(), time(), 'USER_AGENT|s:' . strlen($_SERVER['HTTP_USER_AGENT']) . ':"' . $_SERVER['HTTP_USER_AGENT'] . '";admin_time|i:' . time() . ';'), array('session_id')); } updateStats('member'); updateStats('message'); updateStats('topic'); $request = $db->query('', ' SELECT id_msg FROM {db_prefix}messages WHERE id_msg = 1 AND modified_time = 0 LIMIT 1', array('db_error_skip' => true)); if ($db->num_rows($request) > 0) { updateStats('subject', 1, htmlspecialchars($txt['default_topic_subject'])); } $db->free_result($request); // Now is the perfect time to fetch remote files. require_once SUBSDIR . '/ScheduledTask.class.php'; // Sanity check that they loaded earlier! if (isset($modSettings['recycle_board'])) { // The variable is usually defined in index.php so lets just use our variable to do it for us. $forum_version = $current_version; // Now go get those files! $task = new Scheduled_Task(); $task->fetchFiles(); // We've just installed! $user_info['ip'] = $_SERVER['REMOTE_ADDR']; $user_info['id'] = isset($incontext['member_id']) ? $incontext['member_id'] : 0; logAction('install', array('version' => $forum_version), 'admin'); } // Check if we need some stupid MySQL fix. $server_version = $db->db_server_info(); if ($db_type == 'mysql' && in_array(substr($server_version, 0, 6), array('5.0.50', '5.0.51'))) { updateSettings(array('db_mysql_group_by_fix' => '1')); } // Some final context for the template. $incontext['dir_still_writable'] = is_writable(dirname(__FILE__)) && substr(__FILE__, 1, 2) != ':\\'; $incontext['probably_delete_install'] = isset($_SESSION['installer_temp_ftp']) || is_writable(dirname(__FILE__)) || is_writable(__FILE__); return false; }
<?php define('ELK_INSTALL_DIR', '/vagrant/Elkarte/install'); define('TMP_BOARDDIR', '/var/www'); require ELK_INSTALL_DIR . '/installcore.php'; require ELK_INSTALL_DIR . '/CommonCode.php'; // Load settings require TMP_BOARDDIR . '/Settings.php'; definePaths(); $db = load_database(); require TMP_BOARDDIR . '/themes/default/languages/english/Install.english.php'; $modSettings['disableQueryCheck'] = true; $db->query('', ' SET NAMES {string:utf8}', array('db_error_skip' => true, 'utf8' => 'utf8')); $replaces = array('{$db_prefix}' => $db_prefix, '{BOARDDIR}' => TMP_BOARDDIR, '{$boardurl}' => $boardurl, '{$enableCompressedOutput}' => isset($_POST['compress']) ? '1' : '0', '{$databaseSession_enable}' => isset($_POST['dbsession']) ? '1' : '0', '{$current_version}' => CURRENT_VERSION, '{$current_time}' => time(), '{$sched_task_offset}' => 82800 + mt_rand(0, 86399)); foreach ($txt as $key => $value) { if (substr($key, 0, 8) == 'default_') { $replaces['{$' . $key . '}'] = addslashes($value); } } $replaces['{$default_reserved_names}'] = strtr($replaces['{$default_reserved_names}'], array('\\\\n' => '\\n')); // If the UTF-8 setting was enabled, add it to the table definitions. if (!empty($databases[$db_type]['utf8_support'])) { $replaces[') ENGINE=MyISAM;'] = ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;'; } // Populate database $db_table = db_table_install(); $db_wrapper = new DbWrapper($db, $replaces); $db_table_wrapper = new DbTableWrapper($db_table); $exists = array(); require_once ELK_INSTALL_DIR . '/install_1-1.php';