Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/zendframework/zend-queue/library/ZendQueue/Message/PlatformJob.php
Строк: 174
<?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 * @package   Zend_Queue
 */

namespace ZendQueueMessage;

use 
ZendQueueException;

/**
 * Class for managing Zend Platform JobQueue jobs via Zend_Queue
 *
 * @category   Zend
 * @package    Zend_Queue
 * @subpackage Message
 */
class PlatformJob extends Message
{
    
/**
     * @var ZendAPI_Job
     */
    
protected $_job;

    
/**
     * Job identifier
     * @var string
     */
    
protected $_id null;

    
/**
     * Constructor
     *
     * The constructor should be an array of options.
     *
     * If the option 'data' is provided, and is an instance of ZendAPI_Job,
     * that object will be used as the internal job; if that option is not a
     * ZendAPI_Job instance, an exception will be thrown.
     *
     * Alternately, you may specify the 'script' parameter, which should be a
     * JobQueue script the job will request. A new ZendAPI_Job object will then
     * be created using that script and any options you provide.
     *
     * @param  array $options
     * @return void
     * @throws ZendQueueException
     */
    
public function __construct(array $options = array())
    {
        if (isset(
$options['data'])) {
            if (!(
$options['data'] instanceof ZendAPI_Job)) {
                throw new 
ExceptionInvalidArgumentException('Data must be an instance of ZendAPI_Job');
            }
            
$this->_job $options['data'];
            
parent::__construct($this->_job->getProperties());
        } else {
            
parent::__construct($options);

            if (!isset(
$options['script'])) {
                throw new 
ExceptionInvalidArgumentException('The script is mandatory data');
            }

            
$this->_job = new ZendAPI_Job($options['script']);
            
$this->_setJobProperties();
        }
    }

    
/**
     * Set the job identifier
     *
     * Used within Zend_Queue only.
     *
     * @param  string $id
     * @return ZendQueueMessagePlatformJob
     */
    
public function setJobId($id)
    {
        
$this->_id $id;
        return 
$this;
    }

    
/**
     * Retrieve the job identifier
     *
     * @return string
     */
    
public function getJobId()
    {
        return ((
$this->_id) ?  $this->_id $this->_job->getID());
    }

    
/**
     * Retrieve the internal ZendAPI_Job instance
     *
     * @return ZendAPI_Job
     */
    
public function getJob()
    {
        return 
$this->_job;
    }

    
/**
     * Store queue and data in serialized object
     *
     * @return array
     */
    
public function __sleep()
    {
        return 
serialize('_job''_id''_data');
    }

    
/**
     * Query the class name of the Queue object for which this
     * Message was created.
     *
     * @return string
     */
    
public function getQueueClass()
    {
        return 
'ZendQueueAdapterPlatformJobQueue';
    }

    
/**
     * Sets properties on the ZendAPI_Job instance
     *
     * Any options in the {@link $_data} array will be checked. Those matching
     * options in ZendAPI_Job will be used to set those options in that
     * instance.
     *
     * @return void
     */
    
protected function _setJobProperties()
    {
        if (isset(
$this->_data['script'])) {
            
$this->_job->setScript($this->_data['script']);
        }

        if (isset(
$this->_data['priority'])) {
            
$this->_job->setJobPriority($this->_data['priority']);
        }

        if (isset(
$this->_data['name'])) {
            
$this->_job->setJobName($this->_data['name']);
        }

        if (isset(
$this->_data['predecessor'])) {
            
$this->_job->setJobDependency($this->_data['predecessor']);
        }

        if (isset(
$this->_data['preserved'])) {
            
$this->_job->setPreserved($this->_data['preserved']);
        }

        if (isset(
$this->_data['user_variables'])) {
            
$this->_job->setUserVariables($this->_data['user_variables']);
        }

        if (!empty(
$this->_data['interval'])) {
            
$endTime = isset($this->_data['end_time']) ? $this->_data['end_time'] : null;
            
$this->_job->setRecurrenceData($this->_data['interval'], $endTime);
        } elseif (isset(
$this->_data['interval']) && ($this->_data['interval'] === '')) {
            
$this->_job->setRecurrenceData(0,0);
        }

        if (isset(
$this->_data['scheduled_time'])) {
            
$this->_job->setScheduledTime($this->_data['scheduled_time']);
        }

        if (isset(
$this->_data['application_id'])) {
            
$this->_job->setApplicationID($this->_data['application_id']);
        }
    }
}
Онлайн: 0
Реклама