/** * Elgg upgrade script. * * This script triggers any necessary upgrades. If the site has been upgraded * to the most recent version of the code, no upgrades are run but the caches * are flushed. * * Upgrades use a table {db_prefix}upgrade_lock as a mutex to prevent concurrent upgrades. * * The URL to forward to after upgrades are complete can be specified by setting $_GET['forward'] * to a relative URL. * * @return void */ public static function upgrade() { // we want to know if an error occurs ini_set('display_errors', 1); define('UPGRADING', 'upgrading'); self::start(); $site_url = elgg_get_config('url'); $site_host = parse_url($site_url, PHP_URL_HOST) . '/'; // turn any full in-site URLs into absolute paths $forward_url = get_input('forward', '/admin', false); $forward_url = str_replace(array($site_url, $site_host), '/', $forward_url); if (strpos($forward_url, '/') !== 0) { $forward_url = '/' . $forward_url; } if (get_input('upgrade') == 'upgrade') { $upgrader = new \Elgg\UpgradeService(); $result = $upgrader->run(); if ($result['failure'] == true) { register_error($result['reason']); forward($forward_url); } } else { $rewriteTester = new \ElggRewriteTester(); $url = elgg_get_site_url() . "__testing_rewrite?__testing_rewrite=1"; if (!$rewriteTester->runRewriteTest($url)) { // see if there is a problem accessing the site at all // due to ip restrictions for example if (!$rewriteTester->runLocalhostAccessTest()) { // note: translation may not be available until after upgrade $msg = elgg_echo("installation:htaccess:localhost:connectionfailed"); if ($msg === "installation:htaccess:localhost:connectionfailed") { $msg = "Elgg cannot connect to itself to test rewrite rules properly. Check " . "that curl is working and there are no IP restrictions preventing " . "localhost connections."; } echo $msg; exit; } // note: translation may not be available until after upgrade $msg = elgg_echo("installation:htaccess:needs_upgrade"); if ($msg === "installation:htaccess:needs_upgrade") { $msg = "You must update your .htaccess file so that the path is injected " . "into the GET parameter __elgg_uri (you can use install/config/htaccess.dist as a guide)."; } echo $msg; exit; } $vars = array('forward' => $forward_url); // reset cache to have latest translations available during upgrade elgg_reset_system_cache(); echo elgg_view_page(elgg_echo('upgrading'), '', 'upgrade', $vars); exit; } forward($forward_url); }
<?php /** * Admin control panel widget */ elgg_register_menu_item('admin_control_panel', array('name' => 'flush', 'text' => elgg_echo('admin:cache:flush'), 'href' => 'action/admin/site/flush_cache', 'is_action' => true, 'link_class' => 'elgg-button elgg-button-action')); $upgrader = new Elgg\UpgradeService(); $is_locked = $upgrader->isUpgradeLocked(); if (!$is_locked) { elgg_register_menu_item('admin_control_panel', array('name' => 'upgrade', 'text' => elgg_echo('upgrade'), 'href' => 'upgrade.php', 'link_class' => 'elgg-button elgg-button-action')); } else { elgg_register_menu_item('admin_control_panel', array('name' => 'unlock_upgrade', 'text' => elgg_echo('upgrade:unlock'), 'href' => 'action/admin/site/unlock_upgrade', 'is_action' => true, 'link_class' => 'elgg-button elgg-button-action', 'confirm' => elgg_echo('upgrade:unlock:confirm'))); } echo elgg_view_menu('admin_control_panel', array('class' => 'elgg-menu-hz', 'item_class' => 'mrm'));
* @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"; $site_url = elgg_get_config('url'); $site_host = parse_url($site_url, PHP_URL_HOST) . '/'; // turn any full in-site URLs into absolute paths $forward_url = get_input('forward', '/admin', false); $forward_url = str_replace(array($site_url, $site_host), '/', $forward_url); if (strpos($forward_url, '/') !== 0) { $forward_url = '/' . $forward_url; } if (get_input('upgrade') == 'upgrade') { $upgrader = new \Elgg\UpgradeService(); $result = $upgrader->run(); if ($result['failure'] == true) { register_error($result['reason']); forward($forward_url); } } else { // test the URL rewrite rules if (!class_exists('ElggRewriteTester')) { require dirname(__FILE__) . '/install/ElggRewriteTester.php'; } $rewriteTester = new \ElggRewriteTester(); $url = elgg_get_site_url() . "__testing_rewrite?__testing_rewrite=1"; if (!$rewriteTester->runRewriteTest($url)) { // see if there is a problem accessing the site at all // due to ip restrictions for example
<?php /** * Unlocks the upgrade script */ $upgrader = new Elgg\UpgradeService(); if ($upgrader->isUpgradeLocked()) { $upgrader->releaseUpgradeMutex(); } system_message(elgg_echo('upgrade:unlock:success')); forward(REFERER);