PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / woocommerce / action-scheduler / classes / abstracts / ActionScheduler_Abstract_RecurringSchedule.php
surecart / vendor / woocommerce / action-scheduler / classes / abstracts Last commit date
ActionScheduler.php 2 years ago ActionScheduler_Abstract_ListTable.php 1 year ago ActionScheduler_Abstract_QueueRunner.php 2 years ago ActionScheduler_Abstract_RecurringSchedule.php 3 years ago ActionScheduler_Abstract_Schedule.php 3 years ago ActionScheduler_Abstract_Schema.php 2 years ago ActionScheduler_Lock.php 2 years ago ActionScheduler_Logger.php 3 years ago ActionScheduler_Store.php 1 year ago ActionScheduler_TimezoneHelper.php 1 year ago
ActionScheduler_Abstract_RecurringSchedule.php
103 lines
1 <?php
2
3 /**
4 * Class ActionScheduler_Abstract_RecurringSchedule
5 */
6 abstract class ActionScheduler_Abstract_RecurringSchedule extends ActionScheduler_Abstract_Schedule {
7
8 /**
9 * The date & time the first instance of this schedule was setup to run (which may not be this instance).
10 *
11 * Schedule objects are attached to an action object. Each schedule stores the run date for that
12 * object as the start date - @see $this->start - and logic to calculate the next run date after
13 * that - @see $this->calculate_next(). The $first_date property also keeps a record of when the very
14 * first instance of this chain of schedules ran.
15 *
16 * @var DateTime
17 */
18 private $first_date = NULL;
19
20 /**
21 * Timestamp equivalent of @see $this->first_date
22 *
23 * @var int
24 */
25 protected $first_timestamp = NULL;
26
27 /**
28 * The recurrance between each time an action is run using this schedule.
29 * Used to calculate the start date & time. Can be a number of seconds, in the
30 * case of ActionScheduler_IntervalSchedule, or a cron expression, as in the
31 * case of ActionScheduler_CronSchedule. Or something else.
32 *
33 * @var mixed
34 */
35 protected $recurrence;
36
37 /**
38 * @param DateTime $date The date & time to run the action.
39 * @param mixed $recurrence The data used to determine the schedule's recurrance.
40 * @param DateTime|null $first (Optional) The date & time the first instance of this interval schedule ran. Default null, meaning this is the first instance.
41 */
42 public function __construct( DateTime $date, $recurrence, DateTime $first = null ) {
43 parent::__construct( $date );
44 $this->first_date = empty( $first ) ? $date : $first;
45 $this->recurrence = $recurrence;
46 }
47
48 /**
49 * @return bool
50 */
51 public function is_recurring() {
52 return true;
53 }
54
55 /**
56 * Get the date & time of the first schedule in this recurring series.
57 *
58 * @return DateTime|null
59 */
60 public function get_first_date() {
61 return clone $this->first_date;
62 }
63
64 /**
65 * @return string
66 */
67 public function get_recurrence() {
68 return $this->recurrence;
69 }
70
71 /**
72 * For PHP 5.2 compat, since DateTime objects can't be serialized
73 * @return array
74 */
75 public function __sleep() {
76 $sleep_params = parent::__sleep();
77 $this->first_timestamp = $this->first_date->getTimestamp();
78 return array_merge( $sleep_params, array(
79 'first_timestamp',
80 'recurrence'
81 ) );
82 }
83
84 /**
85 * Unserialize recurring schedules serialized/stored prior to AS 3.0.0
86 *
87 * Prior to Action Scheduler 3.0.0, schedules used different property names to refer
88 * to equivalent data. For example, ActionScheduler_IntervalSchedule::start_timestamp
89 * was the same as ActionScheduler_SimpleSchedule::timestamp. This was addressed in
90 * Action Scheduler 3.0.0, where properties and property names were aligned for better
91 * inheritance. To maintain backward compatibility with scheduled serialized and stored
92 * prior to 3.0, we need to correctly map the old property names.
93 */
94 public function __wakeup() {
95 parent::__wakeup();
96 if ( $this->first_timestamp > 0 ) {
97 $this->first_date = as_get_datetime_object( $this->first_timestamp );
98 } else {
99 $this->first_date = $this->get_date();
100 }
101 }
102 }
103