Вход Регистрация
Файл: library/XenForo/CacheRebuilder/Abstract.php
Строк: 149
<?php

/**
 * Base class for cache/data rebuilders.
 *
 * @package XenForo_CacheRebuilder
 */
abstract class XenForo_CacheRebuilder_Abstract
{
    
/**
     * List of cache builders.
     *
     * @var array [key name] => class name
     */
    
public static $builders = array(
        
'AdminTemplate' => 'XenForo_CacheRebuilder_AdminTemplate',
        
'DailyStats' => 'XenForo_CacheRebuilder_DailyStats',
        
'EmailTemplate' => 'XenForo_CacheRebuilder_EmailTemplate',
        
'Forum' => 'XenForo_CacheRebuilder_Forum',
        
'ImportAdminTemplate' => 'XenForo_CacheRebuilder_ImportAdminTemplate',
        
'ImportEmailTemplate' => 'XenForo_CacheRebuilder_ImportEmailTemplate',
        
'ImportMasterData' => 'XenForo_CacheRebuilder_ImportMasterData',
        
'ImportPhrase' => 'XenForo_CacheRebuilder_ImportPhrase',
        
'ImportTemplate' => 'XenForo_CacheRebuilder_ImportTemplate',
        
'Phrase' => 'XenForo_CacheRebuilder_Phrase',
        
'Permission' => 'XenForo_CacheRebuilder_Permission',
        
'Poll' => 'XenForo_CacheRebuilder_Poll',
        
'SearchIndex' => 'XenForo_CacheRebuilder_SearchIndex',
        
'Template' => 'XenForo_CacheRebuilder_Template',
        
'Thread' => 'XenForo_CacheRebuilder_Thread',
        
'User' => 'XenForo_CacheRebuilder_User'
    
);

    
/**
     * Key name used for this object.
     *
     * @var string
     */
    
protected $_keyName '';

    
/**
     * Gets a message about the type of content being rebuilt.
     * Likely depends on phrases existing.
     *
     * @return string|XenForo_Phrase
     */
    
abstract public function getRebuildMessage();

    
/**
     * Rebuilds the data as requested. If there is a large amount of data, it should
     * only be partially rebuilt in each invocation.
     *
     * If true is returned, then the rebuild is done. Otherwise, an integer should be returned.
     * This will be passed to the next call as the position.
     *
     * @param integer $position Position to start building from.
     * @param array $options List of options. Can be modified and updated value will be passed to next call.
     * @param string $detailedMessage A detailed message about the progress to return.
     *
     * @return integer|true
     */
    
abstract public function rebuild($position 0, array &$options = array(), &$detailedMessage '');

    
/**
     * Constructor.
     *
     * @param string$keyName
     */
    
public function __construct($keyName)
    {
        
$this->_keyName $keyName;

        @
set_time_limit(0);
        
ignore_user_abort(true);
        
XenForo_Application::getDb()->setProfiler(false); // this can use a lot of memory
    
}

    
/**
     * Whether or not an exit link should be shown. Only show this if the rebuild can be interrupted
     * without doing bad things.
     *
     * @return boolean
     */
    
public function showExitLink()
    {
        return 
false;
    }

    
/**
     * Gets the key name.
     *
     * @return string
     */
    
public function getKeyName()
    {
        return 
$this->_keyName;
    }

    
/**
     * Gets the specified cache rebuilder.
     *
     * @param string $keyName
     *
     * @return XenForo_CacheRebuilder_Abstract
     */
    
public static function getCacheRebuilder($keyName)
    {
        if (!isset(
self::$builders[$keyName]))
        {
            throw new 
XenForo_Exception('Invalid cache builder ' $keyName ' specified.');
        }

        
$class self::$builders[$keyName];
        return new 
$class($keyName);
    }

    
/**
     * Gets a controller response that reroutes to start rebuilding the caches.
     * Admin CP only.
     *
     * @param XenForo_ControllerAdmin_Abstract $controller
     * @param array $caches List of caches to build. Either array of strings, or array of pairs: [cache name, options]
     * @param string|null $redirect URL to redirect to; null to use referrer
     *
     * @return XenForo_ControllerResponse_Reroute
     */
    
public static function getRebuilderResponse(XenForo_ControllerAdmin_Abstract $controller$caches$redirect null)
    {
        
$controller->getRequest()->setParam('caches'$caches);
        if (
$redirect !== null)
        {
            
$controller->getRequest()->setParam('redirect'$redirect);
        }

        return 
$controller->responseReroute('XenForo_ControllerAdmin_Tools''cacheRebuild');
    }
}
Онлайн: 3
Реклама