Server IP : 192.64.112.168 / Your IP : 3.147.63.222 Web Server : Apache System : Linux nc-ph-2300-85.bluforrest.com 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64 User : expressoneac ( 1128) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/expressoneac/www/wp-content/plugins/mailchimp-for-wp/includes/ |
Upload File : |
<?php /** * Class MC4WP_Queue * * @ignore */ class MC4WP_Queue { /** * @var MC4WP_Queue_Job[] */ protected $jobs; /** * @var string */ protected $option_name; /** * @var bool */ protected $dirty = false; /** * @var int */ const MAX_JOB_COUNT = 1000; /** * 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() { if (! is_null($this->jobs)) { return; } $jobs = get_option($this->option_name, array()); if (! is_array($jobs)) { $jobs = array(); } else { $valid_jobs = array(); foreach ($jobs as $i => $obj) { // filter invalid data from array if (! is_object($obj) || empty($obj->data)) { continue; } // make sure each job is instance of MC4WP_Queue_Job if ($obj instanceof MC4WP_Queue_Job) { $job = $obj; } else { $job = new MC4WP_Queue_Job($obj->data); $job->id = $obj->id; } $valid_jobs[] = $job; } $jobs = $valid_jobs; } $this->jobs = $jobs; } /** * Get all jobs in the queue * * @return MC4WP_Queue_Job[] Array of jobs */ public function all() { $this->load(); return $this->jobs; } /** * Add job to queue * * @param mixed $data * @return boolean */ public function put($data) { $this->load(); // check if we already have a job with same data foreach ($this->jobs as $job) { if ($job->data === $data) { return false; } } // if we have more than MAX_JOB_COUNT jobs, remove first job item. // this protects against an ever-growing job list, but also potentially loses jobs if the queue is not processed soon enough. if (count($this->jobs) > self::MAX_JOB_COUNT) { array_shift($this->jobs); } // add job to end of jobs array $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() { $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) { $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) { $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; } }