<?php if ( ! class_exists( 'Mailchimp_Woocommerce_Job' ) ) { abstract class Mailchimp_Woocommerce_Job { private $attempts = 0; /** * @param $attempts */ public function set_attempts( $attempts ) { $this->attempts = (int) $attempts; } /** * @return int */ public function get_attempts( ) { return $this->attempts; } /** * @param int $delay */ public function retry( $delay = 30 ) { $job = $this; if (null == $job->attempts) $job->set_attempts(0); $job->set_attempts($job->get_attempts() + 1); mailchimp_as_push($job, $delay); } /** * @return $this */ protected function applyRateLimitedScenario() { mailchimp_set_transient('api-rate-limited', true ); $this->retry(); return $this; } /** * Handle the job. */ abstract public function handle(); } }