Вход Регистрация
Файл: library/XenForo/Install/run-upgrade.php
Строк: 246
<?php

// CLI only
if (PHP_SAPI != 'cli')
{
    die(
'This script may only be run at the command line.');
}

$fileDir realpath(dirname(__FILE__) . '/../../../');
chdir($fileDir);

require_once(
$fileDir '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir '/library');

XenForo_Application::initialize($fileDir '/library'$fileDir);
XenForo_Error::setIgnorePendingUpgrade(true);

XenForo_Phrase::setPhrases(require($fileDir '/install/language_en.php'));
XenForo_Template_Install::setFilePath($fileDir '/install/templates');

XenForo_Application::get('db')->setProfiler(false); // this causes lots of memory usage in debug mode, so stop that

$dependencies = new XenForo_Dependencies_Install();
$dependencies->preLoadData();

/** @var $upgradeModel XenForo_Install_Model_Upgrade */
$upgradeModel XenForo_Model::create('XenForo_Install_Model_Upgrade');

/** @var $installModel XenForo_Install_Model_Install */
$installModel XenForo_Model::create('XenForo_Install_Model_Install');

$cliHelper = new XenForo_Install_CliHelper();

if (
$upgradeModel->getNewestUpgradeVersionId() > XenForo_Application::$versionId)
{
    
$cliHelper->triggerFatalError('An upgrade was found for a version of XenForo that is newer than the uploaded files. Please reupload all of the files for the new version and reload this page.');
}

if (
$upgradeModel->getLatestUpgradeVersionId() === XenForo_Application::$versionId
    
&& XenForo_Application::get('options')->currentVersionId >= XenForo_Application::$versionId)
{
    
//$cliHelper->triggerFatalError('You are already running the latest version.');
}

if (
class_exists('XenForo_Install_Data_FileSums'))
{
    
$hashes XenForo_Install_Data_FileSums::getHashes();
    foreach (
$hashes AS $key => $hash)
    {
        if (!
preg_match('#^(./)?(install/|library/XenForo/Install/|library/XenForo/Application.php)#'$key))
        {
            unset(
$hashes[$key]);
        }
    }
    
$fileErrors XenForo_Helper_Hash::compareHashes($hashes);
    
$hashesExist true;
}
else
{
    
$fileErrors = array();
    
$hashesExist false;
}

if (
$fileErrors)
{
    
$cliHelper->printWarning("Some files do not contain the expected contents:nt" implode("nt"array_keys($fileErrors)) . "nContinue only if you're sure.");
}

$lastCompletedVersion $upgradeModel->getLatestUpgradeVersionId();

$cliHelper->printMessage(sprintf(
    
"Current version: %snUpgrade target: %s (%s)",
    
$lastCompletedVersionXenForo_Application::$versionIdXenForo_Application::$version
), 2);

do
{
    
$response $cliHelper->askQuestion('Are you sure you want to upgrade? [y/n]');
    if (
$cliHelper->validateYesNoAnswer($response$continue))
    {
        if (!
$continue)
        {
            
$cliHelper->triggerFatalError("You chose to not continue with the upgrade. Process terminated.");
        }
        break;
    }
}
while (
true);

if (
$lastCompletedVersion XenForo_Application::$versionId)
{
    
$controller = new XenForo_Install_Controller_Upgrade(
        new 
Zend_Controller_Request_Http(),
        new 
Zend_Controller_Response_Http(),
        new 
XenForo_RouteMatch()
    );

    do
    {
        
$nextVersionId $upgradeModel->getNextUpgradeVersionId($lastCompletedVersion);
        
$upgrade $nextVersionId $upgradeModel->getUpgrade($nextVersionId) : false;
        if (!
$upgrade)
        {
            break;
        }

        
$step 1;
        
$position 0;
        
$data = array();
        
$versionName $upgrade->getVersionName();

        while (
method_exists($upgrade'step' $step))
        {
            if (
$position)
            {
                
$cliHelper->printStatus("Running upgrade to $versionName, step $step ($position)...");
            }
            else
            {
                
$cliHelper->printStatus("Running upgrade to $versionName, step $step...");
            }

            
$result $upgrade->{'step' $step}($position$data$controller);
            if (
$result instanceof XenForo_ControllerResponse_Abstract)
            {
                
$cliHelper->clearStatus();
                
$cliHelper->triggerFatalError('This step must be completed via the web interface.');
            }
            else if (
$result === 'complete')
            {
                
$cliHelper->clearStatus(null"Running upgrade to $versionName, step $step... done.");
                break;
            }
            else if (
$result === true || $result === null)
            {
                
$cliHelper->clearStatus(null"Running upgrade to $versionName, step $step... done.");

                
$step++;
                
$position 0;
                
$data = array();
            }
            else if (
is_array($result))
            {
                
// stay on the same step
                
$position $result[0];
                
$data = !empty($result[2]) ? $result[2] : array();
            }
            else
            {
                
$cliHelper->clearStatus();
                
$cliHelper->triggerFatalError('The upgrade step returned an unexpected result.');
            }
        }

        
$upgradeModel->insertUpgradeLog($nextVersionId);
        
$lastCompletedVersion $nextVersionId;
    }
    while (
true);

    
$upgradeModel->insertUpgradeLog();
}

$cliHelper->printMessage("Rebuilding / importing data...");

/** @var $deferModel XenForo_Model_Deferred */
$deferModel XenForo_Model::create('XenForo_Model_Deferred');

$installModel->insertDeferredRebuild();

while (
$deferModel->runByUniqueKey('installUpgradeRebuild'null$status))
{
    
$cliHelper->printStatus($status);
}

$cliHelper->clearStatus();

if (
$upgradeModel->getLatestUpgradeVersionId() === XenForo_Application::$versionId)
{
    
$upgradeModel->updateVersion();

    
$schemaErrors $upgradeModel->getDefaultSchemaErrors();
    if (
$schemaErrors)
    {
        
$cliHelper->printMessage("Upgrade completed but errors were found:");
        foreach (
$schemaErrors AS $error)
        {
            
$cliHelper->printMessage("t* $error");
        }
        
$cliHelper->printMessage("This is likely caused by an add-on conflict. You may need to restore a backup, remove the offending add-on data from the database, and retry the upgrade. Contact support if you are not sure how to proceed.");
    }
    else
    {
        
$cliHelper->printMessage("Upgrade completed successfully!");
    }
}
else
{
    
$cliHelper->printMessage("Upgrade failed to complete!");
}
Онлайн: 0
Реклама