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

class XenForo_Deferred_Thread extends XenForo_Deferred_Abstract
{
    public function 
execute(array $deferred, array $data$targetRunTime, &$status)
    {
        
$data array_merge(array(
            
'batch' => 100,
            
'position' => 0,
            
'positionRebuild' => false
        
), $data);

        
/* @var $threadModel XenForo_Model_Thread */
        
$threadModel XenForo_Model::create('XenForo_Model_Thread');

        
$threadIds $threadModel->getThreadIdsInRange($data['position'], $data['batch']);
        if (
sizeof($threadIds) == 0)
        {
            return 
false;
        }

        
$forums XenForo_Model::create('XenForo_Model_Forum')->getForumsByThreadIds($threadIds);

        foreach (
$threadIds AS $threadId)
        {
            
$data['position'] = $threadId;

            
$dw XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread'XenForo_DataWriter::ERROR_SILENT);
            if (
$dw->setExistingData($threadId))
            {
                
$dw->setOption(XenForo_DataWriter_Discussion::OPTION_UPDATE_CONTAINERfalse);

                if (isset(
$forums[$dw->get('node_id')]))
                {
                    
$dw->setExtraData(XenForo_DataWriter_Discussion_Thread::DATA_FORUM$forums[$dw->get('node_id')]);
                }

                if (
$data['positionRebuild'])
                {
                    
$dw->rebuildDiscussion();
                }
                else
                {
                    
$dw->rebuildDiscussionCounters();
                }
                
$dw->save();
            }
        }

        
$actionPhrase = new XenForo_Phrase('rebuilding');
        
$typePhrase = new XenForo_Phrase('threads');
        
$status sprintf('%s... %s (%s)'$actionPhrase$typePhraseXenForo_Locale::numberFormat($data['position']));

        return 
$data;
    }

    public function 
canCancel()
    {
        return 
true;
    }
}
Онлайн: 1
Реклама