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

class XenForo_Deferred_ThreadDelete extends XenForo_Deferred_Abstract
{
    public function 
canTriggerManually()
    {
        return 
false;
    }

    public function 
execute(array $deferred, array $data$targetRunTime, &$status)
    {
        if (!isset(
$data['conditions']))
        {
            
$data = array('conditions' => $data);
        }

        
$data array_merge(array(
            
'conditions' => false,
            
'count' => 0,
            
'total' => null
        
), $data);

        if (!
$data['conditions'])
        {
            return 
false;
        }

        
$s microtime(true);

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

        if (
$data['total'] === null)
        {
            
$data['total'] = $threadModel->countThreads($data['conditions']);
            if (!
$data['total'])
            {
                return 
false;
            }
        }

        
$threadIds $threadModel->getThreadIds($data['conditions'], array('limit' => 1000));
        if (!
$threadIds)
        {
            return 
false;
        }

        
$continue count($threadIds) < 1000 false true;

        foreach (
$threadIds AS $threadId)
        {
            
$dw XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread'XenForo_DataWriter::ERROR_SILENT);
            if (
$dw->setExistingData($threadId))
            {
                
$dw->delete();
            }

            
$data['count']++;

            if (
$targetRunTime && microtime(true) - $s $targetRunTime)
            {
                
$continue true;
                break;
            }
        }

        if (!
$continue)
        {
            return 
false;
        }

        
$actionPhrase = new XenForo_Phrase('deleting');
        
$typePhrase = new XenForo_Phrase('threads');
        
$status sprintf('%s... %s (%s/%s)'$actionPhrase$typePhrase,
            
XenForo_Locale::numberFormat($data['count']), XenForo_Locale::numberFormat($data['total'])
        );

        return 
$data;
    }

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