PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor / woocommerce / action-scheduler / classes / ActionScheduler_ActionFactory.php
mailpoet / vendor / woocommerce / action-scheduler / classes Last commit date
WP_CLI 1 year ago abstracts 1 year ago actions 1 year ago data-stores 1 year ago migration 1 year ago schedules 1 year ago schema 1 year ago ActionScheduler_ActionClaim.php 1 year ago ActionScheduler_ActionFactory.php 1 year ago ActionScheduler_AdminView.php 1 year ago ActionScheduler_AsyncRequest_QueueRunner.php 1 year ago ActionScheduler_Compatibility.php 1 year ago ActionScheduler_DataController.php 1 year ago ActionScheduler_DateTime.php 1 year ago ActionScheduler_Exception.php 4 years ago ActionScheduler_FatalErrorMonitor.php 1 year ago ActionScheduler_InvalidActionException.php 1 year ago ActionScheduler_ListTable.php 1 year ago ActionScheduler_LogEntry.php 1 year ago ActionScheduler_NullLogEntry.php 1 year ago ActionScheduler_OptionLock.php 2 years ago ActionScheduler_QueueCleaner.php 1 year ago ActionScheduler_QueueRunner.php 1 year ago ActionScheduler_SystemInformation.php 1 year ago ActionScheduler_Versions.php 1 year ago ActionScheduler_WPCommentCleaner.php 1 year ago ActionScheduler_wcSystemStatus.php 4 years ago index.php 3 years ago
ActionScheduler_ActionFactory.php
161 lines
1 <?php
2 if (!defined('ABSPATH')) exit;
3 class ActionScheduler_ActionFactory {
4 public function get_stored_action( $status, $hook, array $args = array(), ?ActionScheduler_Schedule $schedule = null, $group = '' ) {
5 // The 6th parameter ($priority) is not formally declared in the method signature to maintain compatibility with
6 // third-party subclasses created before this param was added.
7 $priority = func_num_args() >= 6 ? (int) func_get_arg( 5 ) : 10;
8 switch ( $status ) {
9 case ActionScheduler_Store::STATUS_PENDING:
10 $action_class = 'ActionScheduler_Action';
11 break;
12 case ActionScheduler_Store::STATUS_CANCELED:
13 $action_class = 'ActionScheduler_CanceledAction';
14 if ( ! is_null( $schedule ) && ! is_a( $schedule, 'ActionScheduler_CanceledSchedule' ) && ! is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
15 $schedule = new ActionScheduler_CanceledSchedule( $schedule->get_date() );
16 }
17 break;
18 default:
19 $action_class = 'ActionScheduler_FinishedAction';
20 break;
21 }
22 $action_class = apply_filters( 'action_scheduler_stored_action_class', $action_class, $status, $hook, $args, $schedule, $group );
23 $action = new $action_class( $hook, $args, $schedule, $group );
24 $action->set_priority( $priority );
25 return apply_filters( 'action_scheduler_stored_action_instance', $action, $hook, $args, $schedule, $group, $priority );
26 }
27 public function async( $hook, $args = array(), $group = '' ) {
28 return $this->async_unique( $hook, $args, $group, false );
29 }
30 public function async_unique( $hook, $args = array(), $group = '', $unique = true ) {
31 $schedule = new ActionScheduler_NullSchedule();
32 $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
33 return $unique ? $this->store_unique_action( $action, $unique ) : $this->store( $action );
34 }
35 public function single( $hook, $args = array(), $when = null, $group = '' ) {
36 return $this->single_unique( $hook, $args, $when, $group, false );
37 }
38 public function single_unique( $hook, $args = array(), $when = null, $group = '', $unique = true ) {
39 $date = as_get_datetime_object( $when );
40 $schedule = new ActionScheduler_SimpleSchedule( $date );
41 $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
42 return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
43 }
44 public function recurring( $hook, $args = array(), $first = null, $interval = null, $group = '' ) {
45 return $this->recurring_unique( $hook, $args, $first, $interval, $group, false );
46 }
47 public function recurring_unique( $hook, $args = array(), $first = null, $interval = null, $group = '', $unique = true ) {
48 if ( empty( $interval ) ) {
49 return $this->single_unique( $hook, $args, $first, $group, $unique );
50 }
51 $date = as_get_datetime_object( $first );
52 $schedule = new ActionScheduler_IntervalSchedule( $date, $interval );
53 $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
54 return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
55 }
56 public function cron( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '' ) {
57 return $this->cron_unique( $hook, $args, $base_timestamp, $schedule, $group, false );
58 }
59 public function cron_unique( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '', $unique = true ) {
60 if ( empty( $schedule ) ) {
61 return $this->single_unique( $hook, $args, $base_timestamp, $group, $unique );
62 }
63 $date = as_get_datetime_object( $base_timestamp );
64 $cron = CronExpression::factory( $schedule );
65 $schedule = new ActionScheduler_CronSchedule( $date, $cron );
66 $action = new ActionScheduler_Action( $hook, $args, $schedule, $group );
67 return $unique ? $this->store_unique_action( $action ) : $this->store( $action );
68 }
69 public function repeat( $action ) {
70 $schedule = $action->get_schedule();
71 $next = $schedule->get_next( as_get_datetime_object() );
72 if ( is_null( $next ) || ! $schedule->is_recurring() ) {
73 throw new InvalidArgumentException( __( 'Invalid action - must be a recurring action.', 'action-scheduler' ) );
74 }
75 $schedule_class = get_class( $schedule );
76 $new_schedule = new $schedule( $next, $schedule->get_recurrence(), $schedule->get_first_date() );
77 $new_action = new ActionScheduler_Action( $action->get_hook(), $action->get_args(), $new_schedule, $action->get_group() );
78 $new_action->set_priority( $action->get_priority() );
79 return $this->store( $new_action );
80 }
81 public function create( array $options = array() ) {
82 $defaults = array(
83 'type' => 'single',
84 'hook' => '',
85 'arguments' => array(),
86 'group' => '',
87 'unique' => false,
88 'when' => time(),
89 'pattern' => null,
90 'priority' => 10,
91 );
92 $options = array_merge( $defaults, $options );
93 // Cron/recurring actions without a pattern are treated as single actions (this gives calling code the ability
94 // to use functions like as_schedule_recurring_action() to schedule recurring as well as single actions).
95 if ( ( 'cron' === $options['type'] || 'recurring' === $options['type'] ) && empty( $options['pattern'] ) ) {
96 $options['type'] = 'single';
97 }
98 switch ( $options['type'] ) {
99 case 'async':
100 $schedule = new ActionScheduler_NullSchedule();
101 break;
102 case 'cron':
103 $date = as_get_datetime_object( $options['when'] );
104 $cron = CronExpression::factory( $options['pattern'] );
105 $schedule = new ActionScheduler_CronSchedule( $date, $cron );
106 break;
107 case 'recurring':
108 $date = as_get_datetime_object( $options['when'] );
109 $schedule = new ActionScheduler_IntervalSchedule( $date, $options['pattern'] );
110 break;
111 case 'single':
112 $date = as_get_datetime_object( $options['when'] );
113 $schedule = new ActionScheduler_SimpleSchedule( $date );
114 break;
115 default:
116 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
117 error_log( "Unknown action type '{$options['type']}' specified when trying to create an action for '{$options['hook']}'." );
118 return 0;
119 }
120 $action = new ActionScheduler_Action( $options['hook'], $options['arguments'], $schedule, $options['group'] );
121 $action->set_priority( $options['priority'] );
122 $action_id = 0;
123 try {
124 $action_id = $options['unique'] ? $this->store_unique_action( $action ) : $this->store( $action );
125 } catch ( Exception $e ) {
126 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
127 error_log(
128 sprintf(
129 __( 'Caught exception while enqueuing action "%1$s": %2$s', 'action-scheduler' ),
130 $options['hook'],
131 $e->getMessage()
132 )
133 );
134 }
135 return $action_id;
136 }
137 protected function store( ActionScheduler_Action $action ) {
138 $store = ActionScheduler_Store::instance();
139 return $store->save_action( $action );
140 }
141 protected function store_unique_action( ActionScheduler_Action $action ) {
142 $store = ActionScheduler_Store::instance();
143 if ( method_exists( $store, 'save_unique_action' ) ) {
144 return $store->save_unique_action( $action );
145 } else {
146 $existing_action_id = (int) $store->find_action(
147 $action->get_hook(),
148 array(
149 'args' => $action->get_args(),
150 'status' => ActionScheduler_Store::STATUS_PENDING,
151 'group' => $action->get_group(),
152 )
153 );
154 if ( $existing_action_id > 0 ) {
155 return 0;
156 }
157 return $store->save_action( $action );
158 }
159 }
160 }
161