Вход Регистрация
Файл: contao-3.5.8/system/modules/core/classes/LiveUpdate.php
Строк: 149
<?php

/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */

namespace Contao;


/**
 * Maintenance module "Live Update".
 *
 * @author Leo Feyer <https://github.com/leofeyer>
 */
class LiveUpdate extends Backend implements executable
{

    
/**
     * Return true if the module is active
     *
     * @return boolean
     */
    
public function isActive()
    {
        return 
false;
    }


    
/**
     * Generate the module
     *
     * @return string
     */
    
public function run()
    {
        
/** @var BackendTemplate|object $objTemplate */
        
$objTemplate = new BackendTemplate('be_live_update');

        
$objTemplate->updateClass 'tl_confirm';
        
$objTemplate->updateHeadline $GLOBALS['TL_LANG']['tl_maintenance']['liveUpdate'];
        
$objTemplate->isActive $this->isActive();
        
$strMessage ' <a href="contao/changelog.php" onclick="Backend.openModalIframe({'width':860,'title':'CHANGELOG','url':this.href});return false" title="' specialchars($GLOBALS['TL_LANG']['tl_maintenance']['changelog']) . '"><img src="' TL_FILES_URL 'system/themes/' Backend::getTheme() . '/images/changelog.gif" width="14" height="14" alt="" style="vertical-align:text-bottom;padding-left:3px"></a>';

        
// Newer version available
        
if (Config::get('latestVersion') && version_compare(VERSION '.' BUILDConfig::get('latestVersion'), '<'))
        {
            
$objTemplate->updateClass 'tl_info';
            
$objTemplate->updateMessage sprintf($GLOBALS['TL_LANG']['tl_maintenance']['newVersion'], Config::get('latestVersion')) . $strMessage;
        }
        
// Current version up to date
        
else
        {
            
$objTemplate->updateClass 'tl_confirm';
            
$objTemplate->updateMessage sprintf($GLOBALS['TL_LANG']['tl_maintenance']['upToDate'], VERSION '.' BUILD) . $strMessage;
        }

        
// Automatically switch to SSL
        
if (Environment::get('ssl'))
        {
            
Config::set('liveUpdateBase'str_replace('http://''https://'Config::get('liveUpdateBase')));
        }

        
$objTemplate->uid Config::get('liveUpdateId');
        
$objTemplate->updateServer Config::get('liveUpdateBase') . 'index.php';

        
// Run the update
        
if (Input::get('token') != '')
        {
            
$this->runLiveUpdate($objTemplate);
        }

        
$objTemplate->version VERSION '.' .  BUILD;
        
$objTemplate->liveUpdateId $GLOBALS['TL_LANG']['tl_maintenance']['liveUpdateId'];
        
$objTemplate->runLiveUpdate specialchars($GLOBALS['TL_LANG']['tl_maintenance']['runLiveUpdate']);
        
$objTemplate->referer base64_encode(Environment::get('base') . Environment::get('request') . '|' Environment::get('server'));
        
$objTemplate->updateHelp sprintf($GLOBALS['TL_LANG']['tl_maintenance']['updateHelp'], '<a href="http://luid.inetrobots.com" target="_blank">Live Update ID</a>');
        
$objTemplate->phar file_exists(TL_ROOT '/contao/update.phar.php');
        
$objTemplate->toLiveUpdate $GLOBALS['TL_LANG']['tl_maintenance']['toLiveUpdate'];

        return 
$objTemplate->parse();
    }


    
/**
     * Run the Live Update
     *
     * @param BackendTemplate|object $objTemplate
     */
    
protected function runLiveUpdate(BackendTemplate $objTemplate)
    {
        
$archive 'system/tmp/' Input::get('token');

        
// Download the archive
        
if (!file_exists(TL_ROOT '/' $archive))
        {
            
// HOOK: proxy module
            
if (Config::get('useProxy')) {
                
$objRequest = new ProxyRequest();
            } else {
                
$objRequest = new Request();
            }

            
$objRequest->send(Config::get('liveUpdateBase') . 'request.php?token=' Input::get('token'));

            if (
$objRequest->hasError())
            {
                
$objTemplate->updateClass 'tl_error';
                
$objTemplate->updateMessage $objRequest->response;

                return;
            }

            
File::putContent($archive$objRequest->response);
        }

        
$objArchive = new ZipReader($archive);

        
// Extract
        
while ($objArchive->next())
        {
            if (
$objArchive->file_name != 'TOC.txt')
            {
                try
                {
                    
File::putContent($objArchive->file_name$objArchive->unzip());
                }
                catch (
Exception $e)
                {
                    
/** @var BackendTemplate|object $objTemplate */
                    
$objTemplate->updateClass 'tl_error';
                    
$objTemplate->updateMessage 'Error updating ' $objArchive->file_name ': ' $e->getMessage();

                    return;
                }
            }
        }

        
// Delete the archive
        
$this->import('Files');
        
$this->Files->delete($archive);

        
// Run once
        
$this->handleRunOnce();
    }
}
Онлайн: 1
Реклама