%PDF- %PDF-
Direktori : /var/www/html/itworks/wp-content/plugins/mailchimp-for-wp/includes/ |
Current File : /var/www/html/itworks/wp-content/plugins/mailchimp-for-wp/includes/class-queue.php |
<?php /** * Class MC4WP_Queue * * @ignore */ class MC4WP_Queue { /** * @var MC4WP_Queue_Job[] */ protected $jobs; /** * @var string */ protected $option_name; /** * @var bool */ protected $dirty = false; /** * MC4WP_Ecommerce_Queue constructor. * * @param string $option_name */ public function __construct($option_name) { $this->option_name = $option_name; register_shutdown_function(array( $this, 'save' )); } /** * Load jobs from option */ protected function load() { $jobs = get_option($this->option_name, array()); if (! is_array($jobs)) { $jobs = array(); } $this->jobs = $jobs; } /** * Get all jobs in the queue * * @return MC4WP_Queue_Job[] Array of jobs */ public function all() { if (is_null($this->jobs)) { $this->load(); } return $this->jobs; } /** * Add job to queue * * @param mixed $data * @return boolean */ public function put($data) { if (is_null($this->jobs)) { $this->load(); } // check if we already have a job with same data foreach ($this->jobs as $job) { if ($job->data === $data) { return false; } } // add job to queue $job = new MC4WP_Queue_Job($data); $this->jobs[] = $job; $this->dirty = true; return true; } /** * Get all jobs in the queue * * @return MC4WP_Queue_Job|false */ public function get() { if (is_null($this->jobs)) { $this->load(); } // do we have jobs? if (count($this->jobs) === 0) { return false; } // return first element return reset($this->jobs); } /** * @param MC4WP_Queue_Job $job */ public function delete(MC4WP_Queue_Job $job) { if (is_null($this->jobs)) { $this->load(); } $index = array_search($job, $this->jobs, true); // check for "false" here, as 0 is a valid index. if ($index !== false) { unset($this->jobs[ $index ]); $this->jobs = array_values($this->jobs); $this->dirty = true; } } /** * @param MC4WP_Queue_Job $job */ public function reschedule(MC4WP_Queue_Job $job) { if (is_null($this->jobs)) { $this->load(); } // delete job from start of queue $this->delete($job); // add job to end of queue $this->jobs[] = $job; $this->dirty = true; } /** * Reset queue */ public function reset() { $this->jobs = array(); $this->dirty = true; } /** * Save the queue */ public function save() { if (! $this->dirty || is_null($this->jobs)) { return false; } $success = update_option($this->option_name, $this->jobs, false); if ($success) { $this->dirty = false; } return $success; } }