PluginProbe
WANotifier for Forms and Actions / 2.7.5
WANotifier for Forms and Actions v2.7.5
3.1.1 3.1.0 3.0.4 2.7.10 2.7.11 2.7.12 2.7.13 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 3.0.0 3.0.1 3.0.2 3.0.3 trunk 0.1.0 0.1.1 1.0.0 1.0.1 1.0.2 All 67 releases
notifier / libraries / action-scheduler / classes / abstracts / ActionScheduler_Abstract_RecurringSchedule.php

ActionScheduler_Abstract_RecurringSchedule.php in WANotifier for Forms and Actions 2.7.5, at libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php

103 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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