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

class XenForo_Model_MailQueue extends XenForo_Model
{
    public function 
insertMailQueue(Zend_Mail $mailObj)
    {
        
XenForo_Application::defer('MailQueue', array(), 'MailQueue');
        
XenForo_Application::getDb()->insert('xf_mail_queue', array(
            
'mail_data' => serialize($mailObj),
            
'queue_date' => XenForo_Application::$time
        
));

        return 
true;
    }

    public function 
hasMailQueue()
    {
        
$res $this->_getDb()->fetchOne('
            SELECT MIN(mail_queue_id)
            FROM xf_mail_queue
        '
);
        return (bool)
$res;
    }

    public function 
getMailQueue($limit 20)
    {
        return 
$this->fetchAllKeyed($this->limitQueryResults(
            
'
                SELECT *
                FROM xf_mail_queue
                ORDER BY queue_date
            '
$limit
        
), 'mail_queue_id');
    }

    public function 
runMailQueue($targetRunTime)
    {
        
$s microtime(true);
        
$transport XenForo_Mail::getTransport();
        
$db $this->_getDb();

        do
        {
            
$queue $this->getMailQueue($targetRunTime 20 0);

            foreach (
$queue AS $id => $record)
            {
                if (!
$db->delete('xf_mail_queue''mail_queue_id = ' $db->quote($id)))
                {
                    
// already been deleted - run elsewhere
                    
continue;
                }

                
$mailObj = @unserialize($record['mail_data']);
                if (!(
$mailObj instanceof Zend_Mail))
                {
                    continue;
                }

                try
                {
                    
$mailObj->send($transport);
                }
                catch (
Exception $e)
                {
                    
XenForo_Error::logException($efalse);

                    
// pipe may be messed up now, so let's be sure to get another one
                    
unset($transport);
                    
$transport XenForo_Mail::getTransport();
                }

                if (
$targetRunTime && microtime(true) - $s $targetRunTime)
                {
                    
$queue false;
                    break;
                }
            }
        }
        while (
$queue);

        return 
$this->hasMailQueue();
    }
}
Онлайн: 1
Реклама