Elgg\Application::upgrade PHP Метод

upgrade() публичный статический Метод

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.
public static upgrade ( ) : void
Результат void
    public static function upgrade()
    {
        // we want to know if an error occurs
        ini_set('display_errors', 1);
        define('UPGRADING', 'upgrading');
        self::start();
        // check security settings
        if (elgg_get_config('security_protect_upgrade') && !elgg_is_admin_logged_in()) {
            // only admin's or users with a valid token can run upgrade.php
            elgg_signed_request_gatekeeper();
        }
        $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 = _elgg_services()->upgrades;
            $result = $upgrader->run();
            if ($result['failure'] == true) {
                register_error($result['reason']);
                forward($forward_url);
            }
            // Find unprocessed batch uprade classes and save them as ElggUpgrade objects
            $has_pending_upgrades = _elgg_services()->upgradeLocator->run();
            if ($has_pending_upgrades) {
                // Forward to the list of pending upgrades
                $forward_url = '/admin/upgrades';
            }
        } 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);
    }

Usage Example

Пример #1
0
<?php

$autoload_path = __DIR__ . '/vendor/autoload.php';
$autoload_available = (include_once $autoload_path);
if (!$autoload_available) {
    die("Couldn't include '{$autoload_path}'. Did you run `composer install`?");
}
\Elgg\Application::upgrade();