/** * Run any php upgrade scripts which are required * * @param int $version Version upgrading from. * @param bool $quiet Suppress errors. Don't use this. * * @return bool * @access private */ function upgrade_code($version, $quiet = FALSE) { // do not remove - upgrade scripts depend on this global $CONFIG; $version = (int) $version; $upgrade_path = elgg_get_config('path') . 'engine/lib/upgrades/'; $processed_upgrades = elgg_get_processed_upgrades(); // upgrading from 1.7 to 1.8. Need to bootstrap. if (!$processed_upgrades) { elgg_upgrade_bootstrap_17_to_18(); // grab accurate processed upgrades $processed_upgrades = elgg_get_processed_upgrades(); } $upgrade_files = elgg_get_upgrade_files($upgrade_path); if ($upgrade_files === false) { return false; } $upgrades = elgg_get_unprocessed_upgrades($upgrade_files, $processed_upgrades); // Sort and execute sort($upgrades); foreach ($upgrades as $upgrade) { $upgrade_version = elgg_get_upgrade_file_version($upgrade); $success = true; // hide all errors. if ($quiet) { // hide include errors as well as any exceptions that might happen try { if (!@(include "{$upgrade_path}/{$upgrade}")) { $success = false; error_log("Could not include {$upgrade_path}/{$upgrade}"); } } catch (Exception $e) { $success = false; error_log($e->getmessage()); } } else { if (!(include "{$upgrade_path}/{$upgrade}")) { $success = false; error_log("Could not include {$upgrade_path}/{$upgrade}"); } } if ($success) { // incrementally set upgrade so we know where to start if something fails. $processed_upgrades[] = $upgrade; // don't set the version to a lower number in instances where an upgrade // has been merged from a lower version of Elgg if ($upgrade_version > $version) { datalist_set('version', $upgrade_version); } elgg_set_processed_upgrades($processed_upgrades); } else { return false; } } return true; }
function file_tools_upgrade_handler() { $upgrades_path = dirname(dirname(__FILE__)) . "/upgrades/"; // find all upgrade files $upgrade_files = elgg_get_upgrade_files($upgrades_path); // get processed upgrade file, so we can add our own files when done $processed_upgrades = elgg_get_processed_upgrades(); // get unprocessed upgrade files if ($unprocessed_upgrades = elgg_get_unprocessed_upgrades($upgrade_files, $processed_upgrades)) { foreach ($unprocessed_upgrades as $upgrade_file) { // make sure we don't try to run someone elses upgrade files if (in_array($upgrade_file, $upgrade_files) && file_exists($upgrades_path . $upgrade_file)) { // run upgrade include $upgrades_path . $upgrade_file; // make sure we don't do it again $processed_upgrades[] = $upgrade_file; } } // store processed upgrade files elgg_set_processed_upgrades($processed_upgrades); } }
* after an upgrade, you can delete it. Future versions of Elgg will include a * new version of the script. Deleting the script is not a requirement and * leaving it behind does not affect the security of the site. * * @package Elgg.Core * @subpackage Upgrade */ // we want to know if an error occurs ini_set('display_errors', 1); define('UPGRADING', 'upgrading'); require_once dirname(__FILE__) . "/engine/start.php"; if (get_input('upgrade') == 'upgrade') { // disable the system log for upgrades to avoid exceptions when the schema changes. elgg_unregister_event_handler('log', 'systemlog', 'system_log_default_logger'); elgg_unregister_event_handler('all', 'all', 'system_log_listener'); if (elgg_get_unprocessed_upgrades()) { version_upgrade(); } elgg_trigger_event('upgrade', 'system', null); elgg_invalidate_simplecache(); elgg_reset_system_cache(); } else { // if upgrading from < 1.8.0, check for the core view 'welcome' and bail if it's found. // see http://trac.elgg.org/ticket/3064 // we're not checking the view itself because it's likely themes will override this view. // we're only concerned with core files. $welcome = dirname(__FILE__) . '/views/default/welcome.php'; if (file_exists($welcome)) { elgg_set_viewtype('failsafe'); // can't have pretty messages because we don't know the state of the views. $content = elgg_echo('upgrade:unable_to_upgrade_info');
/** * Run any php upgrade scripts which are required * * @param int $version Version upgrading from. * @param bool $quiet Suppress errors. Don't use this. * * @return bool */ function upgrade_code($version, $quiet = FALSE) { global $CONFIG; $version = (int) $version; $upgrade_path = elgg_get_config('path') . 'engine/lib/upgrades/'; $processed_upgrades = unserialize(datalist_get('processed_upgrades')); // the day we started the new upgrade names $upgrade_epoch = 2011021700; if (!$processed_upgrades) { $processed_upgrades = array(); } $upgrades = array(); $upgrade_files = elgg_get_upgrade_files($upgrade_path); if ($upgrade_files === false) { return false; } // bootstrap into the new upgrade system. // can't do this in an upgrade because we need to check for 2010050701, // which would already have been run by then. if ($version < $upgrade_epoch) { foreach ($upgrade_files as $upgrade_file) { $upgrade_version = elgg_get_upgrade_file_version($upgrade_file); // the upgrade that made life difficult // the only way to test if we're upgrading from 1.7 to 1.8 or within 1.8 // is to test for the the walled_garden config option, which // 2010050701 explicitly sets if ($upgrade_version == 2010050701) { $db_prefix = elgg_get_config('dbprefix'); $site_guid = elgg_get_config('site_guid'); $q = "SELECT value FROM {$db_prefix}config\n\t\t\t\t\tWHERE name = 'walled_garden' AND site_guid = {$site_guid}"; $result = get_data_row($q); if (!$result) { $upgrades[] = $upgrade_file; } continue; } elseif ($version < $upgrade_version) { $upgrades[] = $upgrade_file; } else { // all of the upgrades before the epoch have been run except one... $processed_upgrades[] = $upgrade_file; } } } else { // add any upgrades that haven't been run to the upgrades list $upgrades = elgg_get_unprocessed_upgrades($upgrade_files, $processed_upgrades); } // Sort and execute sort($upgrades); foreach ($upgrades as $upgrade) { $upgrade_version = elgg_get_upgrade_file_version($upgrade); $success = true; // hide all errors. if ($quiet) { // hide include errors as well as any exceptions that might happen try { if (!@(include "{$upgrade_path}/{$upgrade}")) { $success = false; error_log($e->getmessage()); } } catch (Exception $e) { $success = false; error_log($e->getmessage()); } } else { if (!(include "{$upgrade_path}/{$upgrade}")) { $success = false; } } if ($success) { // incrementally set upgrade so we know where to start if something fails. $processed_upgrades[] = $upgrade; // don't set the version to a lower number in instances where an upgrade // has been merged from a lower version if ($upgrade_version > $version) { datalist_set('version', $upgrade_version); } $processed_upgrades = array_unique($processed_upgrades); datalist_set('processed_upgrades', serialize($processed_upgrades)); } else { return false; } } return true; }