Passed
Pull Request — master (#284)
by Brian
09:53
created
includes/libraries/action-scheduler/classes/ActionScheduler_ActionClaim.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -4,20 +4,20 @@
 block discarded – undo
4 4
  * Class ActionScheduler_ActionClaim
5 5
  */
6 6
 class ActionScheduler_ActionClaim {
7
-	private $id = '';
8
-	private $action_ids = array();
7
+    private $id = '';
8
+    private $action_ids = array();
9 9
 
10
-	public function __construct( $id, array $action_ids ) {
11
-		$this->id = $id;
12
-		$this->action_ids = $action_ids;
13
-	}
10
+    public function __construct( $id, array $action_ids ) {
11
+        $this->id = $id;
12
+        $this->action_ids = $action_ids;
13
+    }
14 14
 
15
-	public function get_id() {
16
-		return $this->id;
17
-	}
15
+    public function get_id() {
16
+        return $this->id;
17
+    }
18 18
 
19
-	public function get_actions() {
20
-		return $this->action_ids;
21
-	}
19
+    public function get_actions() {
20
+        return $this->action_ids;
21
+    }
22 22
 }
23
- 
24 23
\ No newline at end of file
24
+    
25 25
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@
 block discarded – undo
7 7
 	private $id = '';
8 8
 	private $action_ids = array();
9 9
 
10
-	public function __construct( $id, array $action_ids ) {
10
+	public function __construct($id, array $action_ids) {
11 11
 		$this->id = $id;
12 12
 		$this->action_ids = $action_ids;
13 13
 	}
Please login to merge, or discard this patch.
includes/libraries/action-scheduler/classes/ActionScheduler_QueueRunner.php 2 patches
Indentation   +191 added lines, -191 removed lines patch added patch discarded remove patch
@@ -4,195 +4,195 @@
 block discarded – undo
4 4
  * Class ActionScheduler_QueueRunner
5 5
  */
6 6
 class ActionScheduler_QueueRunner extends ActionScheduler_Abstract_QueueRunner {
7
-	const WP_CRON_HOOK = 'action_scheduler_run_queue';
8
-
9
-	const WP_CRON_SCHEDULE = 'every_minute';
10
-
11
-	/** @var ActionScheduler_AsyncRequest_QueueRunner */
12
-	protected $async_request;
13
-
14
-	/** @var ActionScheduler_QueueRunner  */
15
-	private static $runner = null;
16
-
17
-	/**
18
-	 * @return ActionScheduler_QueueRunner
19
-	 * @codeCoverageIgnore
20
-	 */
21
-	public static function instance() {
22
-		if ( empty(self::$runner) ) {
23
-			$class = apply_filters('action_scheduler_queue_runner_class', 'ActionScheduler_QueueRunner');
24
-			self::$runner = new $class();
25
-		}
26
-		return self::$runner;
27
-	}
28
-
29
-	/**
30
-	 * ActionScheduler_QueueRunner constructor.
31
-	 *
32
-	 * @param ActionScheduler_Store             $store
33
-	 * @param ActionScheduler_FatalErrorMonitor $monitor
34
-	 * @param ActionScheduler_QueueCleaner      $cleaner
35
-	 */
36
-	public function __construct( ActionScheduler_Store $store = null, ActionScheduler_FatalErrorMonitor $monitor = null, ActionScheduler_QueueCleaner $cleaner = null, ActionScheduler_AsyncRequest_QueueRunner $async_request = null ) {
37
-		parent::__construct( $store, $monitor, $cleaner );
38
-
39
-		if ( is_null( $async_request ) ) {
40
-			$async_request = new ActionScheduler_AsyncRequest_QueueRunner( $this->store );
41
-		}
42
-
43
-		$this->async_request = $async_request;
44
-	}
45
-
46
-	/**
47
-	 * @codeCoverageIgnore
48
-	 */
49
-	public function init() {
50
-
51
-		add_filter( 'cron_schedules', array( self::instance(), 'add_wp_cron_schedule' ) );
52
-
53
-		$cron_context = array( 'WP Cron' );
54
-
55
-		if ( ! wp_next_scheduled( self::WP_CRON_HOOK, $cron_context ) ) {
56
-
57
-			// Check for and remove any WP Cron hook scheduled by Action Scheduler < 3.0.0, which didn't include the $context param
58
-			$next_timestamp = wp_next_scheduled( self::WP_CRON_HOOK );
59
-			if ( $next_timestamp ) {
60
-				wp_unschedule_event( $next_timestamp, self::WP_CRON_HOOK );
61
-			}
62
-
63
-			$schedule = apply_filters( 'action_scheduler_run_schedule', self::WP_CRON_SCHEDULE );
64
-			wp_schedule_event( time(), $schedule, self::WP_CRON_HOOK, $cron_context );
65
-		}
66
-
67
-		add_action( self::WP_CRON_HOOK, array( self::instance(), 'run' ) );
68
-		$this->hook_dispatch_async_request();
69
-	}
70
-
71
-	/**
72
-	 * Hook check for dispatching an async request.
73
-	 */
74
-	public function hook_dispatch_async_request() {
75
-		add_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
76
-	}
77
-
78
-	/**
79
-	 * Unhook check for dispatching an async request.
80
-	 */
81
-	public function unhook_dispatch_async_request() {
82
-		remove_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
83
-	}
84
-
85
-	/**
86
-	 * Check if we should dispatch an async request to process actions.
87
-	 *
88
-	 * This method is attached to 'shutdown', so is called frequently. To avoid slowing down
89
-	 * the site, it mitigates the work performed in each request by:
90
-	 * 1. checking if it's in the admin context and then
91
-	 * 2. haven't run on the 'shutdown' hook within the lock time (60 seconds by default)
92
-	 * 3. haven't exceeded the number of allowed batches.
93
-	 *
94
-	 * The order of these checks is important, because they run from a check on a value:
95
-	 * 1. in memory - is_admin() maps to $GLOBALS or the WP_ADMIN constant
96
-	 * 2. in memory - transients use autoloaded options by default
97
-	 * 3. from a database query - has_maximum_concurrent_batches() run the query
98
-	 *    $this->store->get_claim_count() to find the current number of claims in the DB.
99
-	 *
100
-	 * If all of these conditions are met, then we request an async runner check whether it
101
-	 * should dispatch a request to process pending actions.
102
-	 */
103
-	public function maybe_dispatch_async_request() {
104
-		if ( is_admin() && ! ActionScheduler::lock()->is_locked( 'async-request-runner' ) ) {
105
-			// Only start an async queue at most once every 60 seconds
106
-			ActionScheduler::lock()->set( 'async-request-runner' );
107
-			$this->async_request->maybe_dispatch();
108
-		}
109
-	}
110
-
111
-	/**
112
-	 * Process actions in the queue. Attached to self::WP_CRON_HOOK i.e. 'action_scheduler_run_queue'
113
-	 *
114
-	 * The $context param of this method defaults to 'WP Cron', because prior to Action Scheduler 3.0.0
115
-	 * that was the only context in which this method was run, and the self::WP_CRON_HOOK hook had no context
116
-	 * passed along with it. New code calling this method directly, or by triggering the self::WP_CRON_HOOK,
117
-	 * should set a context as the first parameter. For an example of this, refer to the code seen in
118
-	 * @see ActionScheduler_AsyncRequest_QueueRunner::handle()
119
-	 *
120
-	 * @param string $context Optional identifer for the context in which this action is being processed, e.g. 'WP CLI' or 'WP Cron'
121
-	 *        Generally, this should be capitalised and not localised as it's a proper noun.
122
-	 * @return int The number of actions processed.
123
-	 */
124
-	public function run( $context = 'WP Cron' ) {
125
-		ActionScheduler_Compatibility::raise_memory_limit();
126
-		ActionScheduler_Compatibility::raise_time_limit( $this->get_time_limit() );
127
-		do_action( 'action_scheduler_before_process_queue' );
128
-		$this->run_cleanup();
129
-		$processed_actions = 0;
130
-		if ( false === $this->has_maximum_concurrent_batches() ) {
131
-			$batch_size = apply_filters( 'action_scheduler_queue_runner_batch_size', 25 );
132
-			do {
133
-				$processed_actions_in_batch = $this->do_batch( $batch_size, $context );
134
-				$processed_actions         += $processed_actions_in_batch;
135
-			} while ( $processed_actions_in_batch > 0 && ! $this->batch_limits_exceeded( $processed_actions ) ); // keep going until we run out of actions, time, or memory
136
-		}
137
-
138
-		do_action( 'action_scheduler_after_process_queue' );
139
-		return $processed_actions;
140
-	}
141
-
142
-	/**
143
-	 * Process a batch of actions pending in the queue.
144
-	 *
145
-	 * Actions are processed by claiming a set of pending actions then processing each one until either the batch
146
-	 * size is completed, or memory or time limits are reached, defined by @see $this->batch_limits_exceeded().
147
-	 *
148
-	 * @param int $size The maximum number of actions to process in the batch.
149
-	 * @param string $context Optional identifer for the context in which this action is being processed, e.g. 'WP CLI' or 'WP Cron'
150
-	 *        Generally, this should be capitalised and not localised as it's a proper noun.
151
-	 * @return int The number of actions processed.
152
-	 */
153
-	protected function do_batch( $size = 100, $context = '' ) {
154
-		$claim = $this->store->stake_claim($size);
155
-		$this->monitor->attach($claim);
156
-		$processed_actions = 0;
157
-
158
-		foreach ( $claim->get_actions() as $action_id ) {
159
-			// bail if we lost the claim
160
-			if ( ! in_array( $action_id, $this->store->find_actions_by_claim_id( $claim->get_id() ) ) ) {
161
-				break;
162
-			}
163
-			$this->process_action( $action_id, $context );
164
-			$processed_actions++;
165
-
166
-			if ( $this->batch_limits_exceeded( $processed_actions ) ) {
167
-				break;
168
-			}
169
-		}
170
-		$this->store->release_claim($claim);
171
-		$this->monitor->detach();
172
-		$this->clear_caches();
173
-		return $processed_actions;
174
-	}
175
-
176
-	/**
177
-	 * Running large batches can eat up memory, as WP adds data to its object cache.
178
-	 *
179
-	 * If using a persistent object store, this has the side effect of flushing that
180
-	 * as well, so this is disabled by default. To enable:
181
-	 *
182
-	 * add_filter( 'action_scheduler_queue_runner_flush_cache', '__return_true' );
183
-	 */
184
-	protected function clear_caches() {
185
-		if ( ! wp_using_ext_object_cache() || apply_filters( 'action_scheduler_queue_runner_flush_cache', false ) ) {
186
-			wp_cache_flush();
187
-		}
188
-	}
189
-
190
-	public function add_wp_cron_schedule( $schedules ) {
191
-		$schedules['every_minute'] = array(
192
-			'interval' => 60, // in seconds
193
-			'display'  => __( 'Every minute', 'action-scheduler' ),
194
-		);
195
-
196
-		return $schedules;
197
-	}
7
+    const WP_CRON_HOOK = 'action_scheduler_run_queue';
8
+
9
+    const WP_CRON_SCHEDULE = 'every_minute';
10
+
11
+    /** @var ActionScheduler_AsyncRequest_QueueRunner */
12
+    protected $async_request;
13
+
14
+    /** @var ActionScheduler_QueueRunner  */
15
+    private static $runner = null;
16
+
17
+    /**
18
+     * @return ActionScheduler_QueueRunner
19
+     * @codeCoverageIgnore
20
+     */
21
+    public static function instance() {
22
+        if ( empty(self::$runner) ) {
23
+            $class = apply_filters('action_scheduler_queue_runner_class', 'ActionScheduler_QueueRunner');
24
+            self::$runner = new $class();
25
+        }
26
+        return self::$runner;
27
+    }
28
+
29
+    /**
30
+     * ActionScheduler_QueueRunner constructor.
31
+     *
32
+     * @param ActionScheduler_Store             $store
33
+     * @param ActionScheduler_FatalErrorMonitor $monitor
34
+     * @param ActionScheduler_QueueCleaner      $cleaner
35
+     */
36
+    public function __construct( ActionScheduler_Store $store = null, ActionScheduler_FatalErrorMonitor $monitor = null, ActionScheduler_QueueCleaner $cleaner = null, ActionScheduler_AsyncRequest_QueueRunner $async_request = null ) {
37
+        parent::__construct( $store, $monitor, $cleaner );
38
+
39
+        if ( is_null( $async_request ) ) {
40
+            $async_request = new ActionScheduler_AsyncRequest_QueueRunner( $this->store );
41
+        }
42
+
43
+        $this->async_request = $async_request;
44
+    }
45
+
46
+    /**
47
+     * @codeCoverageIgnore
48
+     */
49
+    public function init() {
50
+
51
+        add_filter( 'cron_schedules', array( self::instance(), 'add_wp_cron_schedule' ) );
52
+
53
+        $cron_context = array( 'WP Cron' );
54
+
55
+        if ( ! wp_next_scheduled( self::WP_CRON_HOOK, $cron_context ) ) {
56
+
57
+            // Check for and remove any WP Cron hook scheduled by Action Scheduler < 3.0.0, which didn't include the $context param
58
+            $next_timestamp = wp_next_scheduled( self::WP_CRON_HOOK );
59
+            if ( $next_timestamp ) {
60
+                wp_unschedule_event( $next_timestamp, self::WP_CRON_HOOK );
61
+            }
62
+
63
+            $schedule = apply_filters( 'action_scheduler_run_schedule', self::WP_CRON_SCHEDULE );
64
+            wp_schedule_event( time(), $schedule, self::WP_CRON_HOOK, $cron_context );
65
+        }
66
+
67
+        add_action( self::WP_CRON_HOOK, array( self::instance(), 'run' ) );
68
+        $this->hook_dispatch_async_request();
69
+    }
70
+
71
+    /**
72
+     * Hook check for dispatching an async request.
73
+     */
74
+    public function hook_dispatch_async_request() {
75
+        add_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
76
+    }
77
+
78
+    /**
79
+     * Unhook check for dispatching an async request.
80
+     */
81
+    public function unhook_dispatch_async_request() {
82
+        remove_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
83
+    }
84
+
85
+    /**
86
+     * Check if we should dispatch an async request to process actions.
87
+     *
88
+     * This method is attached to 'shutdown', so is called frequently. To avoid slowing down
89
+     * the site, it mitigates the work performed in each request by:
90
+     * 1. checking if it's in the admin context and then
91
+     * 2. haven't run on the 'shutdown' hook within the lock time (60 seconds by default)
92
+     * 3. haven't exceeded the number of allowed batches.
93
+     *
94
+     * The order of these checks is important, because they run from a check on a value:
95
+     * 1. in memory - is_admin() maps to $GLOBALS or the WP_ADMIN constant
96
+     * 2. in memory - transients use autoloaded options by default
97
+     * 3. from a database query - has_maximum_concurrent_batches() run the query
98
+     *    $this->store->get_claim_count() to find the current number of claims in the DB.
99
+     *
100
+     * If all of these conditions are met, then we request an async runner check whether it
101
+     * should dispatch a request to process pending actions.
102
+     */
103
+    public function maybe_dispatch_async_request() {
104
+        if ( is_admin() && ! ActionScheduler::lock()->is_locked( 'async-request-runner' ) ) {
105
+            // Only start an async queue at most once every 60 seconds
106
+            ActionScheduler::lock()->set( 'async-request-runner' );
107
+            $this->async_request->maybe_dispatch();
108
+        }
109
+    }
110
+
111
+    /**
112
+     * Process actions in the queue. Attached to self::WP_CRON_HOOK i.e. 'action_scheduler_run_queue'
113
+     *
114
+     * The $context param of this method defaults to 'WP Cron', because prior to Action Scheduler 3.0.0
115
+     * that was the only context in which this method was run, and the self::WP_CRON_HOOK hook had no context
116
+     * passed along with it. New code calling this method directly, or by triggering the self::WP_CRON_HOOK,
117
+     * should set a context as the first parameter. For an example of this, refer to the code seen in
118
+     * @see ActionScheduler_AsyncRequest_QueueRunner::handle()
119
+     *
120
+     * @param string $context Optional identifer for the context in which this action is being processed, e.g. 'WP CLI' or 'WP Cron'
121
+     *        Generally, this should be capitalised and not localised as it's a proper noun.
122
+     * @return int The number of actions processed.
123
+     */
124
+    public function run( $context = 'WP Cron' ) {
125
+        ActionScheduler_Compatibility::raise_memory_limit();
126
+        ActionScheduler_Compatibility::raise_time_limit( $this->get_time_limit() );
127
+        do_action( 'action_scheduler_before_process_queue' );
128
+        $this->run_cleanup();
129
+        $processed_actions = 0;
130
+        if ( false === $this->has_maximum_concurrent_batches() ) {
131
+            $batch_size = apply_filters( 'action_scheduler_queue_runner_batch_size', 25 );
132
+            do {
133
+                $processed_actions_in_batch = $this->do_batch( $batch_size, $context );
134
+                $processed_actions         += $processed_actions_in_batch;
135
+            } while ( $processed_actions_in_batch > 0 && ! $this->batch_limits_exceeded( $processed_actions ) ); // keep going until we run out of actions, time, or memory
136
+        }
137
+
138
+        do_action( 'action_scheduler_after_process_queue' );
139
+        return $processed_actions;
140
+    }
141
+
142
+    /**
143
+     * Process a batch of actions pending in the queue.
144
+     *
145
+     * Actions are processed by claiming a set of pending actions then processing each one until either the batch
146
+     * size is completed, or memory or time limits are reached, defined by @see $this->batch_limits_exceeded().
147
+     *
148
+     * @param int $size The maximum number of actions to process in the batch.
149
+     * @param string $context Optional identifer for the context in which this action is being processed, e.g. 'WP CLI' or 'WP Cron'
150
+     *        Generally, this should be capitalised and not localised as it's a proper noun.
151
+     * @return int The number of actions processed.
152
+     */
153
+    protected function do_batch( $size = 100, $context = '' ) {
154
+        $claim = $this->store->stake_claim($size);
155
+        $this->monitor->attach($claim);
156
+        $processed_actions = 0;
157
+
158
+        foreach ( $claim->get_actions() as $action_id ) {
159
+            // bail if we lost the claim
160
+            if ( ! in_array( $action_id, $this->store->find_actions_by_claim_id( $claim->get_id() ) ) ) {
161
+                break;
162
+            }
163
+            $this->process_action( $action_id, $context );
164
+            $processed_actions++;
165
+
166
+            if ( $this->batch_limits_exceeded( $processed_actions ) ) {
167
+                break;
168
+            }
169
+        }
170
+        $this->store->release_claim($claim);
171
+        $this->monitor->detach();
172
+        $this->clear_caches();
173
+        return $processed_actions;
174
+    }
175
+
176
+    /**
177
+     * Running large batches can eat up memory, as WP adds data to its object cache.
178
+     *
179
+     * If using a persistent object store, this has the side effect of flushing that
180
+     * as well, so this is disabled by default. To enable:
181
+     *
182
+     * add_filter( 'action_scheduler_queue_runner_flush_cache', '__return_true' );
183
+     */
184
+    protected function clear_caches() {
185
+        if ( ! wp_using_ext_object_cache() || apply_filters( 'action_scheduler_queue_runner_flush_cache', false ) ) {
186
+            wp_cache_flush();
187
+        }
188
+    }
189
+
190
+    public function add_wp_cron_schedule( $schedules ) {
191
+        $schedules['every_minute'] = array(
192
+            'interval' => 60, // in seconds
193
+            'display'  => __( 'Every minute', 'action-scheduler' ),
194
+        );
195
+
196
+        return $schedules;
197
+    }
198 198
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
 	 * @codeCoverageIgnore
20 20
 	 */
21 21
 	public static function instance() {
22
-		if ( empty(self::$runner) ) {
22
+		if (empty(self::$runner)) {
23 23
 			$class = apply_filters('action_scheduler_queue_runner_class', 'ActionScheduler_QueueRunner');
24 24
 			self::$runner = new $class();
25 25
 		}
@@ -33,11 +33,11 @@  discard block
 block discarded – undo
33 33
 	 * @param ActionScheduler_FatalErrorMonitor $monitor
34 34
 	 * @param ActionScheduler_QueueCleaner      $cleaner
35 35
 	 */
36
-	public function __construct( ActionScheduler_Store $store = null, ActionScheduler_FatalErrorMonitor $monitor = null, ActionScheduler_QueueCleaner $cleaner = null, ActionScheduler_AsyncRequest_QueueRunner $async_request = null ) {
37
-		parent::__construct( $store, $monitor, $cleaner );
36
+	public function __construct(ActionScheduler_Store $store = null, ActionScheduler_FatalErrorMonitor $monitor = null, ActionScheduler_QueueCleaner $cleaner = null, ActionScheduler_AsyncRequest_QueueRunner $async_request = null) {
37
+		parent::__construct($store, $monitor, $cleaner);
38 38
 
39
-		if ( is_null( $async_request ) ) {
40
-			$async_request = new ActionScheduler_AsyncRequest_QueueRunner( $this->store );
39
+		if (is_null($async_request)) {
40
+			$async_request = new ActionScheduler_AsyncRequest_QueueRunner($this->store);
41 41
 		}
42 42
 
43 43
 		$this->async_request = $async_request;
@@ -48,23 +48,23 @@  discard block
 block discarded – undo
48 48
 	 */
49 49
 	public function init() {
50 50
 
51
-		add_filter( 'cron_schedules', array( self::instance(), 'add_wp_cron_schedule' ) );
51
+		add_filter('cron_schedules', array(self::instance(), 'add_wp_cron_schedule'));
52 52
 
53
-		$cron_context = array( 'WP Cron' );
53
+		$cron_context = array('WP Cron');
54 54
 
55
-		if ( ! wp_next_scheduled( self::WP_CRON_HOOK, $cron_context ) ) {
55
+		if (!wp_next_scheduled(self::WP_CRON_HOOK, $cron_context)) {
56 56
 
57 57
 			// Check for and remove any WP Cron hook scheduled by Action Scheduler < 3.0.0, which didn't include the $context param
58
-			$next_timestamp = wp_next_scheduled( self::WP_CRON_HOOK );
59
-			if ( $next_timestamp ) {
60
-				wp_unschedule_event( $next_timestamp, self::WP_CRON_HOOK );
58
+			$next_timestamp = wp_next_scheduled(self::WP_CRON_HOOK);
59
+			if ($next_timestamp) {
60
+				wp_unschedule_event($next_timestamp, self::WP_CRON_HOOK);
61 61
 			}
62 62
 
63
-			$schedule = apply_filters( 'action_scheduler_run_schedule', self::WP_CRON_SCHEDULE );
64
-			wp_schedule_event( time(), $schedule, self::WP_CRON_HOOK, $cron_context );
63
+			$schedule = apply_filters('action_scheduler_run_schedule', self::WP_CRON_SCHEDULE);
64
+			wp_schedule_event(time(), $schedule, self::WP_CRON_HOOK, $cron_context);
65 65
 		}
66 66
 
67
-		add_action( self::WP_CRON_HOOK, array( self::instance(), 'run' ) );
67
+		add_action(self::WP_CRON_HOOK, array(self::instance(), 'run'));
68 68
 		$this->hook_dispatch_async_request();
69 69
 	}
70 70
 
@@ -72,14 +72,14 @@  discard block
 block discarded – undo
72 72
 	 * Hook check for dispatching an async request.
73 73
 	 */
74 74
 	public function hook_dispatch_async_request() {
75
-		add_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
75
+		add_action('shutdown', array($this, 'maybe_dispatch_async_request'));
76 76
 	}
77 77
 
78 78
 	/**
79 79
 	 * Unhook check for dispatching an async request.
80 80
 	 */
81 81
 	public function unhook_dispatch_async_request() {
82
-		remove_action( 'shutdown', array( $this, 'maybe_dispatch_async_request' ) );
82
+		remove_action('shutdown', array($this, 'maybe_dispatch_async_request'));
83 83
 	}
84 84
 
85 85
 	/**
@@ -101,9 +101,9 @@  discard block
 block discarded – undo
101 101
 	 * should dispatch a request to process pending actions.
102 102
 	 */
103 103
 	public function maybe_dispatch_async_request() {
104
-		if ( is_admin() && ! ActionScheduler::lock()->is_locked( 'async-request-runner' ) ) {
104
+		if (is_admin() && !ActionScheduler::lock()->is_locked('async-request-runner')) {
105 105
 			// Only start an async queue at most once every 60 seconds
106
-			ActionScheduler::lock()->set( 'async-request-runner' );
106
+			ActionScheduler::lock()->set('async-request-runner');
107 107
 			$this->async_request->maybe_dispatch();
108 108
 		}
109 109
 	}
@@ -121,21 +121,21 @@  discard block
 block discarded – undo
121 121
 	 *        Generally, this should be capitalised and not localised as it's a proper noun.
122 122
 	 * @return int The number of actions processed.
123 123
 	 */
124
-	public function run( $context = 'WP Cron' ) {
124
+	public function run($context = 'WP Cron') {
125 125
 		ActionScheduler_Compatibility::raise_memory_limit();
126
-		ActionScheduler_Compatibility::raise_time_limit( $this->get_time_limit() );
127
-		do_action( 'action_scheduler_before_process_queue' );
126
+		ActionScheduler_Compatibility::raise_time_limit($this->get_time_limit());
127
+		do_action('action_scheduler_before_process_queue');
128 128
 		$this->run_cleanup();
129 129
 		$processed_actions = 0;
130
-		if ( false === $this->has_maximum_concurrent_batches() ) {
131
-			$batch_size = apply_filters( 'action_scheduler_queue_runner_batch_size', 25 );
130
+		if (false === $this->has_maximum_concurrent_batches()) {
131
+			$batch_size = apply_filters('action_scheduler_queue_runner_batch_size', 25);
132 132
 			do {
133
-				$processed_actions_in_batch = $this->do_batch( $batch_size, $context );
133
+				$processed_actions_in_batch = $this->do_batch($batch_size, $context);
134 134
 				$processed_actions         += $processed_actions_in_batch;
135
-			} while ( $processed_actions_in_batch > 0 && ! $this->batch_limits_exceeded( $processed_actions ) ); // keep going until we run out of actions, time, or memory
135
+			} while ($processed_actions_in_batch > 0 && !$this->batch_limits_exceeded($processed_actions)); // keep going until we run out of actions, time, or memory
136 136
 		}
137 137
 
138
-		do_action( 'action_scheduler_after_process_queue' );
138
+		do_action('action_scheduler_after_process_queue');
139 139
 		return $processed_actions;
140 140
 	}
141 141
 
@@ -150,20 +150,20 @@  discard block
 block discarded – undo
150 150
 	 *        Generally, this should be capitalised and not localised as it's a proper noun.
151 151
 	 * @return int The number of actions processed.
152 152
 	 */
153
-	protected function do_batch( $size = 100, $context = '' ) {
153
+	protected function do_batch($size = 100, $context = '') {
154 154
 		$claim = $this->store->stake_claim($size);
155 155
 		$this->monitor->attach($claim);
156 156
 		$processed_actions = 0;
157 157
 
158
-		foreach ( $claim->get_actions() as $action_id ) {
158
+		foreach ($claim->get_actions() as $action_id) {
159 159
 			// bail if we lost the claim
160
-			if ( ! in_array( $action_id, $this->store->find_actions_by_claim_id( $claim->get_id() ) ) ) {
160
+			if (!in_array($action_id, $this->store->find_actions_by_claim_id($claim->get_id()))) {
161 161
 				break;
162 162
 			}
163
-			$this->process_action( $action_id, $context );
163
+			$this->process_action($action_id, $context);
164 164
 			$processed_actions++;
165 165
 
166
-			if ( $this->batch_limits_exceeded( $processed_actions ) ) {
166
+			if ($this->batch_limits_exceeded($processed_actions)) {
167 167
 				break;
168 168
 			}
169 169
 		}
@@ -182,15 +182,15 @@  discard block
 block discarded – undo
182 182
 	 * add_filter( 'action_scheduler_queue_runner_flush_cache', '__return_true' );
183 183
 	 */
184 184
 	protected function clear_caches() {
185
-		if ( ! wp_using_ext_object_cache() || apply_filters( 'action_scheduler_queue_runner_flush_cache', false ) ) {
185
+		if (!wp_using_ext_object_cache() || apply_filters('action_scheduler_queue_runner_flush_cache', false)) {
186 186
 			wp_cache_flush();
187 187
 		}
188 188
 	}
189 189
 
190
-	public function add_wp_cron_schedule( $schedules ) {
190
+	public function add_wp_cron_schedule($schedules) {
191 191
 		$schedules['every_minute'] = array(
192 192
 			'interval' => 60, // in seconds
193
-			'display'  => __( 'Every minute', 'action-scheduler' ),
193
+			'display'  => __('Every minute', 'action-scheduler'),
194 194
 		);
195 195
 
196 196
 		return $schedules;
Please login to merge, or discard this patch.
action-scheduler/classes/ActionScheduler_AsyncRequest_QueueRunner.php 2 patches
Indentation   +84 added lines, -84 removed lines patch added patch discarded remove patch
@@ -10,88 +10,88 @@
 block discarded – undo
10 10
  */
11 11
 class ActionScheduler_AsyncRequest_QueueRunner extends WP_Async_Request {
12 12
 
13
-	/**
14
-	 * Data store for querying actions
15
-	 *
16
-	 * @var ActionScheduler_Store
17
-	 * @access protected
18
-	 */
19
-	protected $store;
20
-
21
-	/**
22
-	 * Prefix for ajax hooks
23
-	 *
24
-	 * @var string
25
-	 * @access protected
26
-	 */
27
-	protected $prefix = 'as';
28
-
29
-	/**
30
-	 * Action for ajax hooks
31
-	 *
32
-	 * @var string
33
-	 * @access protected
34
-	 */
35
-	protected $action = 'async_request_queue_runner';
36
-
37
-	/**
38
-	 * Initiate new async request
39
-	 */
40
-	public function __construct( ActionScheduler_Store $store ) {
41
-		parent::__construct();
42
-		$this->store = $store;
43
-	}
44
-
45
-	/**
46
-	 * Handle async requests
47
-	 *
48
-	 * Run a queue, and maybe dispatch another async request to run another queue
49
-	 * if there are still pending actions after completing a queue in this request.
50
-	 */
51
-	protected function handle() {
52
-		do_action( 'action_scheduler_run_queue', 'Async Request' ); // run a queue in the same way as WP Cron, but declare the Async Request context
53
-
54
-		$sleep_seconds = $this->get_sleep_seconds();
55
-
56
-		if ( $sleep_seconds ) {
57
-			sleep( $sleep_seconds );
58
-		}
59
-
60
-		$this->maybe_dispatch();
61
-	}
62
-
63
-	/**
64
-	 * If the async request runner is needed and allowed to run, dispatch a request.
65
-	 */
66
-	public function maybe_dispatch() {
67
-		if ( ! $this->allow() ) {
68
-			return;
69
-		}
70
-
71
-		$this->dispatch();
72
-		ActionScheduler_QueueRunner::instance()->unhook_dispatch_async_request();
73
-	}
74
-
75
-	/**
76
-	 * Only allow async requests when needed.
77
-	 *
78
-	 * Also allow 3rd party code to disable running actions via async requests.
79
-	 */
80
-	protected function allow() {
81
-
82
-		if ( ! has_action( 'action_scheduler_run_queue' ) || ActionScheduler::runner()->has_maximum_concurrent_batches() || ! $this->store->has_pending_actions_due() ) {
83
-			$allow = false;
84
-		} else {
85
-			$allow = true;
86
-		}
87
-
88
-		return apply_filters( 'action_scheduler_allow_async_request_runner', $allow );
89
-	}
90
-
91
-	/**
92
-	 * Chaining async requests can crash MySQL. A brief sleep call in PHP prevents that.
93
-	 */
94
-	protected function get_sleep_seconds() {
95
-		return apply_filters( 'action_scheduler_async_request_sleep_seconds', 5, $this );
96
-	}
13
+    /**
14
+     * Data store for querying actions
15
+     *
16
+     * @var ActionScheduler_Store
17
+     * @access protected
18
+     */
19
+    protected $store;
20
+
21
+    /**
22
+     * Prefix for ajax hooks
23
+     *
24
+     * @var string
25
+     * @access protected
26
+     */
27
+    protected $prefix = 'as';
28
+
29
+    /**
30
+     * Action for ajax hooks
31
+     *
32
+     * @var string
33
+     * @access protected
34
+     */
35
+    protected $action = 'async_request_queue_runner';
36
+
37
+    /**
38
+     * Initiate new async request
39
+     */
40
+    public function __construct( ActionScheduler_Store $store ) {
41
+        parent::__construct();
42
+        $this->store = $store;
43
+    }
44
+
45
+    /**
46
+     * Handle async requests
47
+     *
48
+     * Run a queue, and maybe dispatch another async request to run another queue
49
+     * if there are still pending actions after completing a queue in this request.
50
+     */
51
+    protected function handle() {
52
+        do_action( 'action_scheduler_run_queue', 'Async Request' ); // run a queue in the same way as WP Cron, but declare the Async Request context
53
+
54
+        $sleep_seconds = $this->get_sleep_seconds();
55
+
56
+        if ( $sleep_seconds ) {
57
+            sleep( $sleep_seconds );
58
+        }
59
+
60
+        $this->maybe_dispatch();
61
+    }
62
+
63
+    /**
64
+     * If the async request runner is needed and allowed to run, dispatch a request.
65
+     */
66
+    public function maybe_dispatch() {
67
+        if ( ! $this->allow() ) {
68
+            return;
69
+        }
70
+
71
+        $this->dispatch();
72
+        ActionScheduler_QueueRunner::instance()->unhook_dispatch_async_request();
73
+    }
74
+
75
+    /**
76
+     * Only allow async requests when needed.
77
+     *
78
+     * Also allow 3rd party code to disable running actions via async requests.
79
+     */
80
+    protected function allow() {
81
+
82
+        if ( ! has_action( 'action_scheduler_run_queue' ) || ActionScheduler::runner()->has_maximum_concurrent_batches() || ! $this->store->has_pending_actions_due() ) {
83
+            $allow = false;
84
+        } else {
85
+            $allow = true;
86
+        }
87
+
88
+        return apply_filters( 'action_scheduler_allow_async_request_runner', $allow );
89
+    }
90
+
91
+    /**
92
+     * Chaining async requests can crash MySQL. A brief sleep call in PHP prevents that.
93
+     */
94
+    protected function get_sleep_seconds() {
95
+        return apply_filters( 'action_scheduler_async_request_sleep_seconds', 5, $this );
96
+    }
97 97
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * ActionScheduler_AsyncRequest_QueueRunner
4 4
  */
5 5
 
6
-defined( 'ABSPATH' ) || exit;
6
+defined('ABSPATH') || exit;
7 7
 
8 8
 /**
9 9
  * ActionScheduler_AsyncRequest_QueueRunner class.
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 	/**
38 38
 	 * Initiate new async request
39 39
 	 */
40
-	public function __construct( ActionScheduler_Store $store ) {
40
+	public function __construct(ActionScheduler_Store $store) {
41 41
 		parent::__construct();
42 42
 		$this->store = $store;
43 43
 	}
@@ -49,12 +49,12 @@  discard block
 block discarded – undo
49 49
 	 * if there are still pending actions after completing a queue in this request.
50 50
 	 */
51 51
 	protected function handle() {
52
-		do_action( 'action_scheduler_run_queue', 'Async Request' ); // run a queue in the same way as WP Cron, but declare the Async Request context
52
+		do_action('action_scheduler_run_queue', 'Async Request'); // run a queue in the same way as WP Cron, but declare the Async Request context
53 53
 
54 54
 		$sleep_seconds = $this->get_sleep_seconds();
55 55
 
56
-		if ( $sleep_seconds ) {
57
-			sleep( $sleep_seconds );
56
+		if ($sleep_seconds) {
57
+			sleep($sleep_seconds);
58 58
 		}
59 59
 
60 60
 		$this->maybe_dispatch();
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 	 * If the async request runner is needed and allowed to run, dispatch a request.
65 65
 	 */
66 66
 	public function maybe_dispatch() {
67
-		if ( ! $this->allow() ) {
67
+		if (!$this->allow()) {
68 68
 			return;
69 69
 		}
70 70
 
@@ -79,19 +79,19 @@  discard block
 block discarded – undo
79 79
 	 */
80 80
 	protected function allow() {
81 81
 
82
-		if ( ! has_action( 'action_scheduler_run_queue' ) || ActionScheduler::runner()->has_maximum_concurrent_batches() || ! $this->store->has_pending_actions_due() ) {
82
+		if (!has_action('action_scheduler_run_queue') || ActionScheduler::runner()->has_maximum_concurrent_batches() || !$this->store->has_pending_actions_due()) {
83 83
 			$allow = false;
84 84
 		} else {
85 85
 			$allow = true;
86 86
 		}
87 87
 
88
-		return apply_filters( 'action_scheduler_allow_async_request_runner', $allow );
88
+		return apply_filters('action_scheduler_allow_async_request_runner', $allow);
89 89
 	}
90 90
 
91 91
 	/**
92 92
 	 * Chaining async requests can crash MySQL. A brief sleep call in PHP prevents that.
93 93
 	 */
94 94
 	protected function get_sleep_seconds() {
95
-		return apply_filters( 'action_scheduler_async_request_sleep_seconds', 5, $this );
95
+		return apply_filters('action_scheduler_async_request_sleep_seconds', 5, $this);
96 96
 	}
97 97
 }
Please login to merge, or discard this patch.
libraries/action-scheduler/classes/ActionScheduler_WPCommentCleaner.php 2 patches
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -7,109 +7,109 @@
 block discarded – undo
7 7
  */
8 8
 class ActionScheduler_WPCommentCleaner {
9 9
 
10
-	/**
11
-	 * Post migration hook used to cleanup the WP comment table.
12
-	 *
13
-	 * @var string
14
-	 */
15
-	protected static $cleanup_hook = 'action_scheduler/cleanup_wp_comment_logs';
16
-
17
-	/**
18
-	 * An instance of the ActionScheduler_wpCommentLogger class to interact with the comments table.
19
-	 *
20
-	 * This instance should only be used as an interface. It should not be initialized.
21
-	 *
22
-	 * @var ActionScheduler_wpCommentLogger
23
-	 */
24
-	protected static $wp_comment_logger = null;
25
-
26
-	/**
27
-	 * The key used to store the cached value of whether there are logs in the WP comment table.
28
-	 *
29
-	 * @var string
30
-	 */
31
-	protected static $has_logs_option_key = 'as_has_wp_comment_logs';
32
-
33
-	/**
34
-	 * Initialize the class and attach callbacks.
35
-	 */
36
-	public static function init() {
37
-		if ( empty( self::$wp_comment_logger ) ) {
38
-			self::$wp_comment_logger = new ActionScheduler_wpCommentLogger();
39
-		}
40
-
41
-		add_action( self::$cleanup_hook, array( __CLASS__, 'delete_all_action_comments' ) );
42
-
43
-		// While there are orphaned logs left in the comments table, we need to attach the callbacks which filter comment counts.
44
-		add_action( 'pre_get_comments', array( self::$wp_comment_logger, 'filter_comment_queries' ), 10, 1 );
45
-		add_action( 'wp_count_comments', array( self::$wp_comment_logger, 'filter_comment_count' ), 20, 2 ); // run after WC_Comments::wp_count_comments() to make sure we exclude order notes and action logs
46
-		add_action( 'comment_feed_where', array( self::$wp_comment_logger, 'filter_comment_feed' ), 10, 2 );
47
-
48
-		// Action Scheduler may be displayed as a Tools screen or WooCommerce > Status administration screen
49
-		add_action( 'load-tools_page_action-scheduler', array( __CLASS__, 'register_admin_notice' ) );
50
-		add_action( 'load-woocommerce_page_wc-status', array( __CLASS__, 'register_admin_notice' ) );
51
-	}
52
-
53
-	/**
54
-	 * Determines if there are log entries in the wp comments table.
55
-	 *
56
-	 * Uses the flag set on migration completion set by @see self::maybe_schedule_cleanup().
57
-	 *
58
-	 * @return boolean Whether there are scheduled action comments in the comments table.
59
-	 */
60
-	public static function has_logs() {
61
-		return 'yes' === get_option( self::$has_logs_option_key );
62
-	}
63
-
64
-	/**
65
-	 * Schedules the WP Post comment table cleanup to run in 6 months if it's not already scheduled.
66
-	 * Attached to the migration complete hook 'action_scheduler/migration_complete'.
67
-	 */
68
-	public static function maybe_schedule_cleanup() {
69
-		if ( (bool) get_comments( array( 'type' => ActionScheduler_wpCommentLogger::TYPE, 'number' => 1, 'fields' => 'ids' ) ) ) {
70
-			update_option( self::$has_logs_option_key, 'yes' );
71
-
72
-			if ( ! as_next_scheduled_action( self::$cleanup_hook ) ) {
73
-				as_schedule_single_action( gmdate( 'U' ) + ( 6 * MONTH_IN_SECONDS ), self::$cleanup_hook );
74
-			}
75
-		}
76
-	}
77
-
78
-	/**
79
-	 * Delete all action comments from the WP Comments table.
80
-	 */
81
-	public static function delete_all_action_comments() {
82
-		global $wpdb;
83
-		$wpdb->delete( $wpdb->comments, array( 'comment_type' => ActionScheduler_wpCommentLogger::TYPE, 'comment_agent' => ActionScheduler_wpCommentLogger::AGENT ) );
84
-		delete_option( self::$has_logs_option_key );
85
-	}
86
-
87
-	/**
88
-	 * Registers admin notices about the orphaned action logs.
89
-	 */
90
-	public static function register_admin_notice() {
91
-		add_action( 'admin_notices', array( __CLASS__, 'print_admin_notice' ) );
92
-	}
10
+    /**
11
+     * Post migration hook used to cleanup the WP comment table.
12
+     *
13
+     * @var string
14
+     */
15
+    protected static $cleanup_hook = 'action_scheduler/cleanup_wp_comment_logs';
16
+
17
+    /**
18
+     * An instance of the ActionScheduler_wpCommentLogger class to interact with the comments table.
19
+     *
20
+     * This instance should only be used as an interface. It should not be initialized.
21
+     *
22
+     * @var ActionScheduler_wpCommentLogger
23
+     */
24
+    protected static $wp_comment_logger = null;
25
+
26
+    /**
27
+     * The key used to store the cached value of whether there are logs in the WP comment table.
28
+     *
29
+     * @var string
30
+     */
31
+    protected static $has_logs_option_key = 'as_has_wp_comment_logs';
32
+
33
+    /**
34
+     * Initialize the class and attach callbacks.
35
+     */
36
+    public static function init() {
37
+        if ( empty( self::$wp_comment_logger ) ) {
38
+            self::$wp_comment_logger = new ActionScheduler_wpCommentLogger();
39
+        }
40
+
41
+        add_action( self::$cleanup_hook, array( __CLASS__, 'delete_all_action_comments' ) );
42
+
43
+        // While there are orphaned logs left in the comments table, we need to attach the callbacks which filter comment counts.
44
+        add_action( 'pre_get_comments', array( self::$wp_comment_logger, 'filter_comment_queries' ), 10, 1 );
45
+        add_action( 'wp_count_comments', array( self::$wp_comment_logger, 'filter_comment_count' ), 20, 2 ); // run after WC_Comments::wp_count_comments() to make sure we exclude order notes and action logs
46
+        add_action( 'comment_feed_where', array( self::$wp_comment_logger, 'filter_comment_feed' ), 10, 2 );
47
+
48
+        // Action Scheduler may be displayed as a Tools screen or WooCommerce > Status administration screen
49
+        add_action( 'load-tools_page_action-scheduler', array( __CLASS__, 'register_admin_notice' ) );
50
+        add_action( 'load-woocommerce_page_wc-status', array( __CLASS__, 'register_admin_notice' ) );
51
+    }
52
+
53
+    /**
54
+     * Determines if there are log entries in the wp comments table.
55
+     *
56
+     * Uses the flag set on migration completion set by @see self::maybe_schedule_cleanup().
57
+     *
58
+     * @return boolean Whether there are scheduled action comments in the comments table.
59
+     */
60
+    public static function has_logs() {
61
+        return 'yes' === get_option( self::$has_logs_option_key );
62
+    }
63
+
64
+    /**
65
+     * Schedules the WP Post comment table cleanup to run in 6 months if it's not already scheduled.
66
+     * Attached to the migration complete hook 'action_scheduler/migration_complete'.
67
+     */
68
+    public static function maybe_schedule_cleanup() {
69
+        if ( (bool) get_comments( array( 'type' => ActionScheduler_wpCommentLogger::TYPE, 'number' => 1, 'fields' => 'ids' ) ) ) {
70
+            update_option( self::$has_logs_option_key, 'yes' );
71
+
72
+            if ( ! as_next_scheduled_action( self::$cleanup_hook ) ) {
73
+                as_schedule_single_action( gmdate( 'U' ) + ( 6 * MONTH_IN_SECONDS ), self::$cleanup_hook );
74
+            }
75
+        }
76
+    }
77
+
78
+    /**
79
+     * Delete all action comments from the WP Comments table.
80
+     */
81
+    public static function delete_all_action_comments() {
82
+        global $wpdb;
83
+        $wpdb->delete( $wpdb->comments, array( 'comment_type' => ActionScheduler_wpCommentLogger::TYPE, 'comment_agent' => ActionScheduler_wpCommentLogger::AGENT ) );
84
+        delete_option( self::$has_logs_option_key );
85
+    }
86
+
87
+    /**
88
+     * Registers admin notices about the orphaned action logs.
89
+     */
90
+    public static function register_admin_notice() {
91
+        add_action( 'admin_notices', array( __CLASS__, 'print_admin_notice' ) );
92
+    }
93 93
 	
94
-	/**
95
-	 * Prints details about the orphaned action logs and includes information on where to learn more.
96
-	 */
97
-	public static function print_admin_notice() {
98
-		$next_cleanup_message        = '';
99
-		$next_scheduled_cleanup_hook = as_next_scheduled_action( self::$cleanup_hook );
100
-
101
-		if ( $next_scheduled_cleanup_hook ) {
102
-			/* translators: %s: date interval */
103
-			$next_cleanup_message = sprintf( __( 'This data will be deleted in %s.', 'action-scheduler' ), human_time_diff( gmdate( 'U' ), $next_scheduled_cleanup_hook ) );
104
-		}
105
-
106
-		$notice = sprintf(
107
-			/* translators: 1: next cleanup message 2: github issue URL */
108
-			__( 'Action Scheduler has migrated data to custom tables; however, orphaned log entries exist in the WordPress Comments table. %1$s <a href="%2$s">Learn more &raquo;</a>', 'action-scheduler' ),
109
-			$next_cleanup_message,
110
-			'https://github.com/woocommerce/action-scheduler/issues/368'
111
-		);
112
-
113
-		echo '<div class="notice notice-warning"><p>' . wp_kses_post( $notice ) . '</p></div>';
114
-	}
94
+    /**
95
+     * Prints details about the orphaned action logs and includes information on where to learn more.
96
+     */
97
+    public static function print_admin_notice() {
98
+        $next_cleanup_message        = '';
99
+        $next_scheduled_cleanup_hook = as_next_scheduled_action( self::$cleanup_hook );
100
+
101
+        if ( $next_scheduled_cleanup_hook ) {
102
+            /* translators: %s: date interval */
103
+            $next_cleanup_message = sprintf( __( 'This data will be deleted in %s.', 'action-scheduler' ), human_time_diff( gmdate( 'U' ), $next_scheduled_cleanup_hook ) );
104
+        }
105
+
106
+        $notice = sprintf(
107
+            /* translators: 1: next cleanup message 2: github issue URL */
108
+            __( 'Action Scheduler has migrated data to custom tables; however, orphaned log entries exist in the WordPress Comments table. %1$s <a href="%2$s">Learn more &raquo;</a>', 'action-scheduler' ),
109
+            $next_cleanup_message,
110
+            'https://github.com/woocommerce/action-scheduler/issues/368'
111
+        );
112
+
113
+        echo '<div class="notice notice-warning"><p>' . wp_kses_post( $notice ) . '</p></div>';
114
+    }
115 115
 }
Please login to merge, or discard this patch.
Spacing   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -34,20 +34,20 @@  discard block
 block discarded – undo
34 34
 	 * Initialize the class and attach callbacks.
35 35
 	 */
36 36
 	public static function init() {
37
-		if ( empty( self::$wp_comment_logger ) ) {
37
+		if (empty(self::$wp_comment_logger)) {
38 38
 			self::$wp_comment_logger = new ActionScheduler_wpCommentLogger();
39 39
 		}
40 40
 
41
-		add_action( self::$cleanup_hook, array( __CLASS__, 'delete_all_action_comments' ) );
41
+		add_action(self::$cleanup_hook, array(__CLASS__, 'delete_all_action_comments'));
42 42
 
43 43
 		// While there are orphaned logs left in the comments table, we need to attach the callbacks which filter comment counts.
44
-		add_action( 'pre_get_comments', array( self::$wp_comment_logger, 'filter_comment_queries' ), 10, 1 );
45
-		add_action( 'wp_count_comments', array( self::$wp_comment_logger, 'filter_comment_count' ), 20, 2 ); // run after WC_Comments::wp_count_comments() to make sure we exclude order notes and action logs
46
-		add_action( 'comment_feed_where', array( self::$wp_comment_logger, 'filter_comment_feed' ), 10, 2 );
44
+		add_action('pre_get_comments', array(self::$wp_comment_logger, 'filter_comment_queries'), 10, 1);
45
+		add_action('wp_count_comments', array(self::$wp_comment_logger, 'filter_comment_count'), 20, 2); // run after WC_Comments::wp_count_comments() to make sure we exclude order notes and action logs
46
+		add_action('comment_feed_where', array(self::$wp_comment_logger, 'filter_comment_feed'), 10, 2);
47 47
 
48 48
 		// Action Scheduler may be displayed as a Tools screen or WooCommerce > Status administration screen
49
-		add_action( 'load-tools_page_action-scheduler', array( __CLASS__, 'register_admin_notice' ) );
50
-		add_action( 'load-woocommerce_page_wc-status', array( __CLASS__, 'register_admin_notice' ) );
49
+		add_action('load-tools_page_action-scheduler', array(__CLASS__, 'register_admin_notice'));
50
+		add_action('load-woocommerce_page_wc-status', array(__CLASS__, 'register_admin_notice'));
51 51
 	}
52 52
 
53 53
 	/**
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
 	 * @return boolean Whether there are scheduled action comments in the comments table.
59 59
 	 */
60 60
 	public static function has_logs() {
61
-		return 'yes' === get_option( self::$has_logs_option_key );
61
+		return 'yes' === get_option(self::$has_logs_option_key);
62 62
 	}
63 63
 
64 64
 	/**
@@ -66,11 +66,11 @@  discard block
 block discarded – undo
66 66
 	 * Attached to the migration complete hook 'action_scheduler/migration_complete'.
67 67
 	 */
68 68
 	public static function maybe_schedule_cleanup() {
69
-		if ( (bool) get_comments( array( 'type' => ActionScheduler_wpCommentLogger::TYPE, 'number' => 1, 'fields' => 'ids' ) ) ) {
70
-			update_option( self::$has_logs_option_key, 'yes' );
69
+		if ((bool) get_comments(array('type' => ActionScheduler_wpCommentLogger::TYPE, 'number' => 1, 'fields' => 'ids'))) {
70
+			update_option(self::$has_logs_option_key, 'yes');
71 71
 
72
-			if ( ! as_next_scheduled_action( self::$cleanup_hook ) ) {
73
-				as_schedule_single_action( gmdate( 'U' ) + ( 6 * MONTH_IN_SECONDS ), self::$cleanup_hook );
72
+			if (!as_next_scheduled_action(self::$cleanup_hook)) {
73
+				as_schedule_single_action(gmdate('U') + (6 * MONTH_IN_SECONDS), self::$cleanup_hook);
74 74
 			}
75 75
 		}
76 76
 	}
@@ -80,15 +80,15 @@  discard block
 block discarded – undo
80 80
 	 */
81 81
 	public static function delete_all_action_comments() {
82 82
 		global $wpdb;
83
-		$wpdb->delete( $wpdb->comments, array( 'comment_type' => ActionScheduler_wpCommentLogger::TYPE, 'comment_agent' => ActionScheduler_wpCommentLogger::AGENT ) );
84
-		delete_option( self::$has_logs_option_key );
83
+		$wpdb->delete($wpdb->comments, array('comment_type' => ActionScheduler_wpCommentLogger::TYPE, 'comment_agent' => ActionScheduler_wpCommentLogger::AGENT));
84
+		delete_option(self::$has_logs_option_key);
85 85
 	}
86 86
 
87 87
 	/**
88 88
 	 * Registers admin notices about the orphaned action logs.
89 89
 	 */
90 90
 	public static function register_admin_notice() {
91
-		add_action( 'admin_notices', array( __CLASS__, 'print_admin_notice' ) );
91
+		add_action('admin_notices', array(__CLASS__, 'print_admin_notice'));
92 92
 	}
93 93
 	
94 94
 	/**
@@ -96,20 +96,20 @@  discard block
 block discarded – undo
96 96
 	 */
97 97
 	public static function print_admin_notice() {
98 98
 		$next_cleanup_message        = '';
99
-		$next_scheduled_cleanup_hook = as_next_scheduled_action( self::$cleanup_hook );
99
+		$next_scheduled_cleanup_hook = as_next_scheduled_action(self::$cleanup_hook);
100 100
 
101
-		if ( $next_scheduled_cleanup_hook ) {
101
+		if ($next_scheduled_cleanup_hook) {
102 102
 			/* translators: %s: date interval */
103
-			$next_cleanup_message = sprintf( __( 'This data will be deleted in %s.', 'action-scheduler' ), human_time_diff( gmdate( 'U' ), $next_scheduled_cleanup_hook ) );
103
+			$next_cleanup_message = sprintf(__('This data will be deleted in %s.', 'action-scheduler'), human_time_diff(gmdate('U'), $next_scheduled_cleanup_hook));
104 104
 		}
105 105
 
106 106
 		$notice = sprintf(
107 107
 			/* translators: 1: next cleanup message 2: github issue URL */
108
-			__( 'Action Scheduler has migrated data to custom tables; however, orphaned log entries exist in the WordPress Comments table. %1$s <a href="%2$s">Learn more &raquo;</a>', 'action-scheduler' ),
108
+			__('Action Scheduler has migrated data to custom tables; however, orphaned log entries exist in the WordPress Comments table. %1$s <a href="%2$s">Learn more &raquo;</a>', 'action-scheduler'),
109 109
 			$next_cleanup_message,
110 110
 			'https://github.com/woocommerce/action-scheduler/issues/368'
111 111
 		);
112 112
 
113
-		echo '<div class="notice notice-warning"><p>' . wp_kses_post( $notice ) . '</p></div>';
113
+		echo '<div class="notice notice-warning"><p>' . wp_kses_post($notice) . '</p></div>';
114 114
 	}
115 115
 }
Please login to merge, or discard this patch.
action-scheduler/classes/actions/ActionScheduler_FinishedAction.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -5,12 +5,12 @@
 block discarded – undo
5 5
  */
6 6
 class ActionScheduler_FinishedAction extends ActionScheduler_Action {
7 7
 
8
-	public function execute() {
9
-		// don't execute
10
-	}
8
+    public function execute() {
9
+        // don't execute
10
+    }
11 11
 
12
-	public function is_finished() {
13
-		return TRUE;
14
-	}
12
+    public function is_finished() {
13
+        return TRUE;
14
+    }
15 15
 }
16
- 
17 16
\ No newline at end of file
17
+    
18 18
\ No newline at end of file
Please login to merge, or discard this patch.
action-scheduler/classes/actions/ActionScheduler_CanceledAction.php 2 patches
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -8,16 +8,16 @@
 block discarded – undo
8 8
  */
9 9
 class ActionScheduler_CanceledAction extends ActionScheduler_FinishedAction {
10 10
 
11
-	/**
12
-	 * @param string $hook
13
-	 * @param array $args
14
-	 * @param ActionScheduler_Schedule $schedule
15
-	 * @param string $group
16
-	 */
17
-	public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '' ) {
18
-		parent::__construct( $hook, $args, $schedule, $group );
19
-		if ( is_null( $schedule ) ) {
20
-			$this->set_schedule( new ActionScheduler_NullSchedule() );
21
-		}
22
-	}
11
+    /**
12
+     * @param string $hook
13
+     * @param array $args
14
+     * @param ActionScheduler_Schedule $schedule
15
+     * @param string $group
16
+     */
17
+    public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '' ) {
18
+        parent::__construct( $hook, $args, $schedule, $group );
19
+        if ( is_null( $schedule ) ) {
20
+            $this->set_schedule( new ActionScheduler_NullSchedule() );
21
+        }
22
+    }
23 23
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -14,10 +14,10 @@
 block discarded – undo
14 14
 	 * @param ActionScheduler_Schedule $schedule
15 15
 	 * @param string $group
16 16
 	 */
17
-	public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '' ) {
18
-		parent::__construct( $hook, $args, $schedule, $group );
19
-		if ( is_null( $schedule ) ) {
20
-			$this->set_schedule( new ActionScheduler_NullSchedule() );
17
+	public function __construct($hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '') {
18
+		parent::__construct($hook, $args, $schedule, $group);
19
+		if (is_null($schedule)) {
20
+			$this->set_schedule(new ActionScheduler_NullSchedule());
21 21
 		}
22 22
 	}
23 23
 }
Please login to merge, or discard this patch.
libraries/action-scheduler/classes/actions/ActionScheduler_Action.php 2 patches
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -4,72 +4,72 @@
 block discarded – undo
4 4
  * Class ActionScheduler_Action
5 5
  */
6 6
 class ActionScheduler_Action {
7
-	protected $hook = '';
8
-	protected $args = array();
9
-	/** @var ActionScheduler_Schedule */
10
-	protected $schedule = NULL;
11
-	protected $group = '';
7
+    protected $hook = '';
8
+    protected $args = array();
9
+    /** @var ActionScheduler_Schedule */
10
+    protected $schedule = NULL;
11
+    protected $group = '';
12 12
 
13
-	public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = NULL, $group = '' ) {
14
-		$schedule = empty( $schedule ) ? new ActionScheduler_NullSchedule() : $schedule;
15
-		$this->set_hook($hook);
16
-		$this->set_schedule($schedule);
17
-		$this->set_args($args);
18
-		$this->set_group($group);
19
-	}
13
+    public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = NULL, $group = '' ) {
14
+        $schedule = empty( $schedule ) ? new ActionScheduler_NullSchedule() : $schedule;
15
+        $this->set_hook($hook);
16
+        $this->set_schedule($schedule);
17
+        $this->set_args($args);
18
+        $this->set_group($group);
19
+    }
20 20
 
21
-	public function execute() {
22
-		return do_action_ref_array($this->get_hook(), $this->get_args());
23
-	}
21
+    public function execute() {
22
+        return do_action_ref_array($this->get_hook(), $this->get_args());
23
+    }
24 24
 
25
-	/**
26
-	 * @param string $hook
27
-	 */
28
-	protected function set_hook( $hook ) {
29
-		$this->hook = $hook;
30
-	}
25
+    /**
26
+     * @param string $hook
27
+     */
28
+    protected function set_hook( $hook ) {
29
+        $this->hook = $hook;
30
+    }
31 31
 
32
-	public function get_hook() {
33
-		return $this->hook;
34
-	}
32
+    public function get_hook() {
33
+        return $this->hook;
34
+    }
35 35
 
36
-	protected function set_schedule( ActionScheduler_Schedule $schedule ) {
37
-		$this->schedule = $schedule;
38
-	}
36
+    protected function set_schedule( ActionScheduler_Schedule $schedule ) {
37
+        $this->schedule = $schedule;
38
+    }
39 39
 
40
-	/**
41
-	 * @return ActionScheduler_Schedule
42
-	 */
43
-	public function get_schedule() {
44
-		return $this->schedule;
45
-	}
40
+    /**
41
+     * @return ActionScheduler_Schedule
42
+     */
43
+    public function get_schedule() {
44
+        return $this->schedule;
45
+    }
46 46
 
47
-	protected function set_args( array $args ) {
48
-		$this->args = $args;
49
-	}
47
+    protected function set_args( array $args ) {
48
+        $this->args = $args;
49
+    }
50 50
 
51
-	public function get_args() {
52
-		return $this->args;
53
-	}
51
+    public function get_args() {
52
+        return $this->args;
53
+    }
54 54
 
55
-	/**
56
-	 * @param string $group
57
-	 */
58
-	protected function set_group( $group ) {
59
-		$this->group = $group;
60
-	}
55
+    /**
56
+     * @param string $group
57
+     */
58
+    protected function set_group( $group ) {
59
+        $this->group = $group;
60
+    }
61 61
 
62
-	/**
63
-	 * @return string
64
-	 */
65
-	public function get_group() {
66
-		return $this->group;
67
-	}
62
+    /**
63
+     * @return string
64
+     */
65
+    public function get_group() {
66
+        return $this->group;
67
+    }
68 68
 
69
-	/**
70
-	 * @return bool If the action has been finished
71
-	 */
72
-	public function is_finished() {
73
-		return FALSE;
74
-	}
69
+    /**
70
+     * @return bool If the action has been finished
71
+     */
72
+    public function is_finished() {
73
+        return FALSE;
74
+    }
75 75
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -10,8 +10,8 @@  discard block
 block discarded – undo
10 10
 	protected $schedule = NULL;
11 11
 	protected $group = '';
12 12
 
13
-	public function __construct( $hook, array $args = array(), ActionScheduler_Schedule $schedule = NULL, $group = '' ) {
14
-		$schedule = empty( $schedule ) ? new ActionScheduler_NullSchedule() : $schedule;
13
+	public function __construct($hook, array $args = array(), ActionScheduler_Schedule $schedule = NULL, $group = '') {
14
+		$schedule = empty($schedule) ? new ActionScheduler_NullSchedule() : $schedule;
15 15
 		$this->set_hook($hook);
16 16
 		$this->set_schedule($schedule);
17 17
 		$this->set_args($args);
@@ -25,7 +25,7 @@  discard block
 block discarded – undo
25 25
 	/**
26 26
 	 * @param string $hook
27 27
 	 */
28
-	protected function set_hook( $hook ) {
28
+	protected function set_hook($hook) {
29 29
 		$this->hook = $hook;
30 30
 	}
31 31
 
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
 		return $this->hook;
34 34
 	}
35 35
 
36
-	protected function set_schedule( ActionScheduler_Schedule $schedule ) {
36
+	protected function set_schedule(ActionScheduler_Schedule $schedule) {
37 37
 		$this->schedule = $schedule;
38 38
 	}
39 39
 
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 		return $this->schedule;
45 45
 	}
46 46
 
47
-	protected function set_args( array $args ) {
47
+	protected function set_args(array $args) {
48 48
 		$this->args = $args;
49 49
 	}
50 50
 
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 	/**
56 56
 	 * @param string $group
57 57
 	 */
58
-	protected function set_group( $group ) {
58
+	protected function set_group($group) {
59 59
 		$this->group = $group;
60 60
 	}
61 61
 
Please login to merge, or discard this patch.
libraries/action-scheduler/classes/actions/ActionScheduler_NullAction.php 2 patches
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -5,12 +5,12 @@
 block discarded – undo
5 5
  */
6 6
 class ActionScheduler_NullAction extends ActionScheduler_Action {
7 7
 
8
-	public function __construct( $hook = '', array $args = array(), ActionScheduler_Schedule $schedule = NULL ) {
9
-		$this->set_schedule( new ActionScheduler_NullSchedule() );
10
-	}
8
+    public function __construct( $hook = '', array $args = array(), ActionScheduler_Schedule $schedule = NULL ) {
9
+        $this->set_schedule( new ActionScheduler_NullSchedule() );
10
+    }
11 11
 
12
-	public function execute() {
13
-		// don't execute
14
-	}
12
+    public function execute() {
13
+        // don't execute
14
+    }
15 15
 }
16
- 
17 16
\ No newline at end of file
17
+    
18 18
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -5,8 +5,8 @@
 block discarded – undo
5 5
  */
6 6
 class ActionScheduler_NullAction extends ActionScheduler_Action {
7 7
 
8
-	public function __construct( $hook = '', array $args = array(), ActionScheduler_Schedule $schedule = NULL ) {
9
-		$this->set_schedule( new ActionScheduler_NullSchedule() );
8
+	public function __construct($hook = '', array $args = array(), ActionScheduler_Schedule $schedule = NULL) {
9
+		$this->set_schedule(new ActionScheduler_NullSchedule());
10 10
 	}
11 11
 
12 12
 	public function execute() {
Please login to merge, or discard this patch.
includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php 2 patches
Indentation   +145 added lines, -145 removed lines patch added patch discarded remove patch
@@ -6,149 +6,149 @@
 block discarded – undo
6 6
  */
7 7
 class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated {
8 8
 
9
-	private static $admin_view = NULL;
10
-
11
-	private static $screen_id = 'tools_page_action-scheduler';
12
-
13
-	/** @var ActionScheduler_ListTable */
14
-	protected $list_table;
15
-
16
-	/**
17
-	 * @return ActionScheduler_AdminView
18
-	 * @codeCoverageIgnore
19
-	 */
20
-	public static function instance() {
21
-
22
-		if ( empty( self::$admin_view ) ) {
23
-			$class = apply_filters('action_scheduler_admin_view_class', 'ActionScheduler_AdminView');
24
-			self::$admin_view = new $class();
25
-		}
26
-
27
-		return self::$admin_view;
28
-	}
29
-
30
-	/**
31
-	 * @codeCoverageIgnore
32
-	 */
33
-	public function init() {
34
-		if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || false == DOING_AJAX ) ) {
35
-
36
-			if ( class_exists( 'WooCommerce' ) ) {
37
-				add_action( 'woocommerce_admin_status_content_action-scheduler', array( $this, 'render_admin_ui' ) );
38
-				add_action( 'woocommerce_system_status_report', array( $this, 'system_status_report' ) );
39
-				add_filter( 'woocommerce_admin_status_tabs', array( $this, 'register_system_status_tab' ) );
40
-			}
41
-
42
-			add_action( 'admin_menu', array( $this, 'register_menu' ) );
43
-
44
-			add_action( 'current_screen', array( $this, 'add_help_tabs' ) );
45
-		}
46
-	}
47
-
48
-	public function system_status_report() {
49
-		$table = new ActionScheduler_wcSystemStatus( ActionScheduler::store() );
50
-		$table->render();
51
-	}
52
-
53
-	/**
54
-	 * Registers action-scheduler into WooCommerce > System status.
55
-	 *
56
-	 * @param array $tabs An associative array of tab key => label.
57
-	 * @return array $tabs An associative array of tab key => label, including Action Scheduler's tabs
58
-	 */
59
-	public function register_system_status_tab( array $tabs ) {
60
-		$tabs['action-scheduler'] = __( 'Scheduled Actions', 'action-scheduler' );
61
-
62
-		return $tabs;
63
-	}
64
-
65
-	/**
66
-	 * Include Action Scheduler's administration under the Tools menu.
67
-	 *
68
-	 * A menu under the Tools menu is important for backward compatibility (as that's
69
-	 * where it started), and also provides more convenient access than the WooCommerce
70
-	 * System Status page, and for sites where WooCommerce isn't active.
71
-	 */
72
-	public function register_menu() {
73
-		$hook_suffix = add_submenu_page(
74
-			'tools.php',
75
-			__( 'Scheduled Actions', 'action-scheduler' ),
76
-			__( 'Scheduled Actions', 'action-scheduler' ),
77
-			'manage_options',
78
-			'action-scheduler',
79
-			array( $this, 'render_admin_ui' )
80
-		);
81
-		add_action( 'load-' . $hook_suffix , array( $this, 'process_admin_ui' ) );
82
-	}
83
-
84
-	/**
85
-	 * Triggers processing of any pending actions.
86
-	 */
87
-	public function process_admin_ui() {
88
-		$this->get_list_table();
89
-	}
90
-
91
-	/**
92
-	 * Renders the Admin UI
93
-	 */
94
-	public function render_admin_ui() {
95
-		$table = $this->get_list_table();
96
-		$table->display_page();
97
-	}
98
-
99
-	/**
100
-	 * Get the admin UI object and process any requested actions.
101
-	 *
102
-	 * @return ActionScheduler_ListTable
103
-	 */
104
-	protected function get_list_table() {
105
-		if ( null === $this->list_table ) {
106
-			$this->list_table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
107
-			$this->list_table->process_actions();
108
-		}
109
-
110
-		return $this->list_table;
111
-	}
112
-
113
-	/**
114
-	 * Provide more information about the screen and its data in the help tab.
115
-	 */
116
-	public function add_help_tabs() {
117
-		$screen = get_current_screen();
118
-
119
-		if ( ! $screen || self::$screen_id != $screen->id ) {
120
-			return;
121
-		}
122
-
123
-		$as_version = ActionScheduler_Versions::instance()->latest_version();
124
-		$screen->add_help_tab(
125
-			array(
126
-				'id'      => 'action_scheduler_about',
127
-				'title'   => __( 'About', 'action-scheduler' ),
128
-				'content' =>
129
-					'<h2>' . sprintf( __( 'About Action Scheduler %s', 'action-scheduler' ), $as_version ) . '</h2>' .
130
-					'<p>' .
131
-						__( 'Action Scheduler is a scalable, traceable job queue for background processing large sets of actions. Action Scheduler works by triggering an action hook to run at some time in the future. Scheduled actions can also be scheduled to run on a recurring schedule.', 'action-scheduler' ) .
132
-					'</p>',
133
-			)
134
-		);
135
-
136
-		$screen->add_help_tab(
137
-			array(
138
-				'id'      => 'action_scheduler_columns',
139
-				'title'   => __( 'Columns', 'action-scheduler' ),
140
-				'content' =>
141
-					'<h2>' . __( 'Scheduled Action Columns', 'action-scheduler' ) . '</h2>' .
142
-					'<ul>' .
143
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Hook', 'action-scheduler' ), __( 'Name of the action hook that will be triggered.', 'action-scheduler' ) ) .
144
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Status', 'action-scheduler' ), __( 'Action statuses are Pending, Complete, Canceled, Failed', 'action-scheduler' ) ) .
145
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Arguments', 'action-scheduler' ), __( 'Optional data array passed to the action hook.', 'action-scheduler' ) ) .
146
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Group', 'action-scheduler' ), __( 'Optional action group.', 'action-scheduler' ) ) .
147
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Recurrence', 'action-scheduler' ), __( 'The action\'s schedule frequency.', 'action-scheduler' ) ) .
148
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Scheduled', 'action-scheduler' ), __( 'The date/time the action is/was scheduled to run.', 'action-scheduler' ) ) .
149
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Log', 'action-scheduler' ), __( 'Activity log for the action.', 'action-scheduler' ) ) .
150
-					'</ul>',
151
-			)
152
-		);
153
-	}
9
+    private static $admin_view = NULL;
10
+
11
+    private static $screen_id = 'tools_page_action-scheduler';
12
+
13
+    /** @var ActionScheduler_ListTable */
14
+    protected $list_table;
15
+
16
+    /**
17
+     * @return ActionScheduler_AdminView
18
+     * @codeCoverageIgnore
19
+     */
20
+    public static function instance() {
21
+
22
+        if ( empty( self::$admin_view ) ) {
23
+            $class = apply_filters('action_scheduler_admin_view_class', 'ActionScheduler_AdminView');
24
+            self::$admin_view = new $class();
25
+        }
26
+
27
+        return self::$admin_view;
28
+    }
29
+
30
+    /**
31
+     * @codeCoverageIgnore
32
+     */
33
+    public function init() {
34
+        if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || false == DOING_AJAX ) ) {
35
+
36
+            if ( class_exists( 'WooCommerce' ) ) {
37
+                add_action( 'woocommerce_admin_status_content_action-scheduler', array( $this, 'render_admin_ui' ) );
38
+                add_action( 'woocommerce_system_status_report', array( $this, 'system_status_report' ) );
39
+                add_filter( 'woocommerce_admin_status_tabs', array( $this, 'register_system_status_tab' ) );
40
+            }
41
+
42
+            add_action( 'admin_menu', array( $this, 'register_menu' ) );
43
+
44
+            add_action( 'current_screen', array( $this, 'add_help_tabs' ) );
45
+        }
46
+    }
47
+
48
+    public function system_status_report() {
49
+        $table = new ActionScheduler_wcSystemStatus( ActionScheduler::store() );
50
+        $table->render();
51
+    }
52
+
53
+    /**
54
+     * Registers action-scheduler into WooCommerce > System status.
55
+     *
56
+     * @param array $tabs An associative array of tab key => label.
57
+     * @return array $tabs An associative array of tab key => label, including Action Scheduler's tabs
58
+     */
59
+    public function register_system_status_tab( array $tabs ) {
60
+        $tabs['action-scheduler'] = __( 'Scheduled Actions', 'action-scheduler' );
61
+
62
+        return $tabs;
63
+    }
64
+
65
+    /**
66
+     * Include Action Scheduler's administration under the Tools menu.
67
+     *
68
+     * A menu under the Tools menu is important for backward compatibility (as that's
69
+     * where it started), and also provides more convenient access than the WooCommerce
70
+     * System Status page, and for sites where WooCommerce isn't active.
71
+     */
72
+    public function register_menu() {
73
+        $hook_suffix = add_submenu_page(
74
+            'tools.php',
75
+            __( 'Scheduled Actions', 'action-scheduler' ),
76
+            __( 'Scheduled Actions', 'action-scheduler' ),
77
+            'manage_options',
78
+            'action-scheduler',
79
+            array( $this, 'render_admin_ui' )
80
+        );
81
+        add_action( 'load-' . $hook_suffix , array( $this, 'process_admin_ui' ) );
82
+    }
83
+
84
+    /**
85
+     * Triggers processing of any pending actions.
86
+     */
87
+    public function process_admin_ui() {
88
+        $this->get_list_table();
89
+    }
90
+
91
+    /**
92
+     * Renders the Admin UI
93
+     */
94
+    public function render_admin_ui() {
95
+        $table = $this->get_list_table();
96
+        $table->display_page();
97
+    }
98
+
99
+    /**
100
+     * Get the admin UI object and process any requested actions.
101
+     *
102
+     * @return ActionScheduler_ListTable
103
+     */
104
+    protected function get_list_table() {
105
+        if ( null === $this->list_table ) {
106
+            $this->list_table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
107
+            $this->list_table->process_actions();
108
+        }
109
+
110
+        return $this->list_table;
111
+    }
112
+
113
+    /**
114
+     * Provide more information about the screen and its data in the help tab.
115
+     */
116
+    public function add_help_tabs() {
117
+        $screen = get_current_screen();
118
+
119
+        if ( ! $screen || self::$screen_id != $screen->id ) {
120
+            return;
121
+        }
122
+
123
+        $as_version = ActionScheduler_Versions::instance()->latest_version();
124
+        $screen->add_help_tab(
125
+            array(
126
+                'id'      => 'action_scheduler_about',
127
+                'title'   => __( 'About', 'action-scheduler' ),
128
+                'content' =>
129
+                    '<h2>' . sprintf( __( 'About Action Scheduler %s', 'action-scheduler' ), $as_version ) . '</h2>' .
130
+                    '<p>' .
131
+                        __( 'Action Scheduler is a scalable, traceable job queue for background processing large sets of actions. Action Scheduler works by triggering an action hook to run at some time in the future. Scheduled actions can also be scheduled to run on a recurring schedule.', 'action-scheduler' ) .
132
+                    '</p>',
133
+            )
134
+        );
135
+
136
+        $screen->add_help_tab(
137
+            array(
138
+                'id'      => 'action_scheduler_columns',
139
+                'title'   => __( 'Columns', 'action-scheduler' ),
140
+                'content' =>
141
+                    '<h2>' . __( 'Scheduled Action Columns', 'action-scheduler' ) . '</h2>' .
142
+                    '<ul>' .
143
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Hook', 'action-scheduler' ), __( 'Name of the action hook that will be triggered.', 'action-scheduler' ) ) .
144
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Status', 'action-scheduler' ), __( 'Action statuses are Pending, Complete, Canceled, Failed', 'action-scheduler' ) ) .
145
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Arguments', 'action-scheduler' ), __( 'Optional data array passed to the action hook.', 'action-scheduler' ) ) .
146
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Group', 'action-scheduler' ), __( 'Optional action group.', 'action-scheduler' ) ) .
147
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Recurrence', 'action-scheduler' ), __( 'The action\'s schedule frequency.', 'action-scheduler' ) ) .
148
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Scheduled', 'action-scheduler' ), __( 'The date/time the action is/was scheduled to run.', 'action-scheduler' ) ) .
149
+                    sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Log', 'action-scheduler' ), __( 'Activity log for the action.', 'action-scheduler' ) ) .
150
+                    '</ul>',
151
+            )
152
+        );
153
+    }
154 154
 }
Please login to merge, or discard this patch.
Spacing   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
 	 */
20 20
 	public static function instance() {
21 21
 
22
-		if ( empty( self::$admin_view ) ) {
22
+		if (empty(self::$admin_view)) {
23 23
 			$class = apply_filters('action_scheduler_admin_view_class', 'ActionScheduler_AdminView');
24 24
 			self::$admin_view = new $class();
25 25
 		}
@@ -31,22 +31,22 @@  discard block
 block discarded – undo
31 31
 	 * @codeCoverageIgnore
32 32
 	 */
33 33
 	public function init() {
34
-		if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || false == DOING_AJAX ) ) {
34
+		if (is_admin() && (!defined('DOING_AJAX') || false == DOING_AJAX)) {
35 35
 
36
-			if ( class_exists( 'WooCommerce' ) ) {
37
-				add_action( 'woocommerce_admin_status_content_action-scheduler', array( $this, 'render_admin_ui' ) );
38
-				add_action( 'woocommerce_system_status_report', array( $this, 'system_status_report' ) );
39
-				add_filter( 'woocommerce_admin_status_tabs', array( $this, 'register_system_status_tab' ) );
36
+			if (class_exists('WooCommerce')) {
37
+				add_action('woocommerce_admin_status_content_action-scheduler', array($this, 'render_admin_ui'));
38
+				add_action('woocommerce_system_status_report', array($this, 'system_status_report'));
39
+				add_filter('woocommerce_admin_status_tabs', array($this, 'register_system_status_tab'));
40 40
 			}
41 41
 
42
-			add_action( 'admin_menu', array( $this, 'register_menu' ) );
42
+			add_action('admin_menu', array($this, 'register_menu'));
43 43
 
44
-			add_action( 'current_screen', array( $this, 'add_help_tabs' ) );
44
+			add_action('current_screen', array($this, 'add_help_tabs'));
45 45
 		}
46 46
 	}
47 47
 
48 48
 	public function system_status_report() {
49
-		$table = new ActionScheduler_wcSystemStatus( ActionScheduler::store() );
49
+		$table = new ActionScheduler_wcSystemStatus(ActionScheduler::store());
50 50
 		$table->render();
51 51
 	}
52 52
 
@@ -56,8 +56,8 @@  discard block
 block discarded – undo
56 56
 	 * @param array $tabs An associative array of tab key => label.
57 57
 	 * @return array $tabs An associative array of tab key => label, including Action Scheduler's tabs
58 58
 	 */
59
-	public function register_system_status_tab( array $tabs ) {
60
-		$tabs['action-scheduler'] = __( 'Scheduled Actions', 'action-scheduler' );
59
+	public function register_system_status_tab(array $tabs) {
60
+		$tabs['action-scheduler'] = __('Scheduled Actions', 'action-scheduler');
61 61
 
62 62
 		return $tabs;
63 63
 	}
@@ -72,13 +72,13 @@  discard block
 block discarded – undo
72 72
 	public function register_menu() {
73 73
 		$hook_suffix = add_submenu_page(
74 74
 			'tools.php',
75
-			__( 'Scheduled Actions', 'action-scheduler' ),
76
-			__( 'Scheduled Actions', 'action-scheduler' ),
75
+			__('Scheduled Actions', 'action-scheduler'),
76
+			__('Scheduled Actions', 'action-scheduler'),
77 77
 			'manage_options',
78 78
 			'action-scheduler',
79
-			array( $this, 'render_admin_ui' )
79
+			array($this, 'render_admin_ui')
80 80
 		);
81
-		add_action( 'load-' . $hook_suffix , array( $this, 'process_admin_ui' ) );
81
+		add_action('load-' . $hook_suffix, array($this, 'process_admin_ui'));
82 82
 	}
83 83
 
84 84
 	/**
@@ -102,8 +102,8 @@  discard block
 block discarded – undo
102 102
 	 * @return ActionScheduler_ListTable
103 103
 	 */
104 104
 	protected function get_list_table() {
105
-		if ( null === $this->list_table ) {
106
-			$this->list_table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
105
+		if (null === $this->list_table) {
106
+			$this->list_table = new ActionScheduler_ListTable(ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner());
107 107
 			$this->list_table->process_actions();
108 108
 		}
109 109
 
@@ -116,7 +116,7 @@  discard block
 block discarded – undo
116 116
 	public function add_help_tabs() {
117 117
 		$screen = get_current_screen();
118 118
 
119
-		if ( ! $screen || self::$screen_id != $screen->id ) {
119
+		if (!$screen || self::$screen_id != $screen->id) {
120 120
 			return;
121 121
 		}
122 122
 
@@ -124,11 +124,11 @@  discard block
 block discarded – undo
124 124
 		$screen->add_help_tab(
125 125
 			array(
126 126
 				'id'      => 'action_scheduler_about',
127
-				'title'   => __( 'About', 'action-scheduler' ),
127
+				'title'   => __('About', 'action-scheduler'),
128 128
 				'content' =>
129
-					'<h2>' . sprintf( __( 'About Action Scheduler %s', 'action-scheduler' ), $as_version ) . '</h2>' .
129
+					'<h2>' . sprintf(__('About Action Scheduler %s', 'action-scheduler'), $as_version) . '</h2>' .
130 130
 					'<p>' .
131
-						__( 'Action Scheduler is a scalable, traceable job queue for background processing large sets of actions. Action Scheduler works by triggering an action hook to run at some time in the future. Scheduled actions can also be scheduled to run on a recurring schedule.', 'action-scheduler' ) .
131
+						__('Action Scheduler is a scalable, traceable job queue for background processing large sets of actions. Action Scheduler works by triggering an action hook to run at some time in the future. Scheduled actions can also be scheduled to run on a recurring schedule.', 'action-scheduler') .
132 132
 					'</p>',
133 133
 			)
134 134
 		);
@@ -136,17 +136,17 @@  discard block
 block discarded – undo
136 136
 		$screen->add_help_tab(
137 137
 			array(
138 138
 				'id'      => 'action_scheduler_columns',
139
-				'title'   => __( 'Columns', 'action-scheduler' ),
139
+				'title'   => __('Columns', 'action-scheduler'),
140 140
 				'content' =>
141
-					'<h2>' . __( 'Scheduled Action Columns', 'action-scheduler' ) . '</h2>' .
141
+					'<h2>' . __('Scheduled Action Columns', 'action-scheduler') . '</h2>' .
142 142
 					'<ul>' .
143
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Hook', 'action-scheduler' ), __( 'Name of the action hook that will be triggered.', 'action-scheduler' ) ) .
144
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Status', 'action-scheduler' ), __( 'Action statuses are Pending, Complete, Canceled, Failed', 'action-scheduler' ) ) .
145
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Arguments', 'action-scheduler' ), __( 'Optional data array passed to the action hook.', 'action-scheduler' ) ) .
146
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Group', 'action-scheduler' ), __( 'Optional action group.', 'action-scheduler' ) ) .
147
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Recurrence', 'action-scheduler' ), __( 'The action\'s schedule frequency.', 'action-scheduler' ) ) .
148
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Scheduled', 'action-scheduler' ), __( 'The date/time the action is/was scheduled to run.', 'action-scheduler' ) ) .
149
-					sprintf( '<li><strong>%1$s</strong>: %2$s</li>', __( 'Log', 'action-scheduler' ), __( 'Activity log for the action.', 'action-scheduler' ) ) .
143
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Hook', 'action-scheduler'), __('Name of the action hook that will be triggered.', 'action-scheduler')) .
144
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Status', 'action-scheduler'), __('Action statuses are Pending, Complete, Canceled, Failed', 'action-scheduler')) .
145
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Arguments', 'action-scheduler'), __('Optional data array passed to the action hook.', 'action-scheduler')) .
146
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Group', 'action-scheduler'), __('Optional action group.', 'action-scheduler')) .
147
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Recurrence', 'action-scheduler'), __('The action\'s schedule frequency.', 'action-scheduler')) .
148
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Scheduled', 'action-scheduler'), __('The date/time the action is/was scheduled to run.', 'action-scheduler')) .
149
+					sprintf('<li><strong>%1$s</strong>: %2$s</li>', __('Log', 'action-scheduler'), __('Activity log for the action.', 'action-scheduler')) .
150 150
 					'</ul>',
151 151
 			)
152 152
 		);
Please login to merge, or discard this patch.