PluginProbe ʕ •ᴥ•ʔ
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz / 2.12.6
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz v2.12.6
2.12.6 2.12.5 2.12.4 2.12.3 2.12.2 2.12.1 2.12.0 2.11.1 2.11.0 2.10.1 2.10.0 2.9.1 2.9.0 2.8.2 2.8.1 2.7.0 2.7.1 2.8.0 trunk 0.0.10 0.0.11 0.0.12 0.0.13 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8 0.0.9 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.1.0 1.1.1 1.1.2 1.10.0 1.10.1 1.11.0 1.12.0 1.12.1 1.12.2 1.12.3 1.13.0 1.13.1 1.13.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.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5.0 1.5.1 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.8.0 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.2 2.6.0
sureforms / inc / lib / action-scheduler / classes / abstracts / ActionScheduler_Abstract_RecurringSchedule.php
sureforms / inc / lib / action-scheduler / classes / abstracts Last commit date
ActionScheduler.php 2 years ago ActionScheduler_Abstract_ListTable.php 2 years ago ActionScheduler_Abstract_QueueRunner.php 2 years ago ActionScheduler_Abstract_RecurringSchedule.php 2 years ago ActionScheduler_Abstract_Schedule.php 2 years ago ActionScheduler_Abstract_Schema.php 2 years ago ActionScheduler_Lock.php 2 years ago ActionScheduler_Logger.php 5 months ago ActionScheduler_Store.php 2 years ago ActionScheduler_TimezoneHelper.php 2 years ago
ActionScheduler_Abstract_RecurringSchedule.php
107 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 *
74 * @return array
75 */
76 public function __sleep() {
77 $sleep_params = parent::__sleep();
78 $this->first_timestamp = $this->first_date->getTimestamp();
79 return array_merge(
80 $sleep_params,
81 array(
82 'first_timestamp',
83 'recurrence',
84 )
85 );
86 }
87
88 /**
89 * Unserialize recurring schedules serialized/stored prior to AS 3.0.0
90 *
91 * Prior to Action Scheduler 3.0.0, schedules used different property names to refer
92 * to equivalent data. For example, ActionScheduler_IntervalSchedule::start_timestamp
93 * was the same as ActionScheduler_SimpleSchedule::timestamp. This was addressed in
94 * Action Scheduler 3.0.0, where properties and property names were aligned for better
95 * inheritance. To maintain backward compatibility with scheduled serialized and stored
96 * prior to 3.0, we need to correctly map the old property names.
97 */
98 public function __wakeup() {
99 parent::__wakeup();
100 if ( $this->first_timestamp > 0 ) {
101 $this->first_date = as_get_datetime_object( $this->first_timestamp );
102 } else {
103 $this->first_date = $this->get_date();
104 }
105 }
106 }
107