PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / class-give-cron.php
give / includes Last commit date
admin 5 days ago api 3 years ago database 5 months ago deprecated 1 month ago donors 5 months ago emails 9 months ago forms 5 days ago frontend 6 years ago gateways 5 hours ago libraries 9 months ago payments 2 months ago actions.php 9 months ago ajax-functions.php 1 week ago class-give-async-process.php 1 year ago class-give-background-updater.php 9 months ago class-give-cache-setting.php 1 year ago class-give-cache.php 9 months ago class-give-cli-commands.php 1 year ago class-give-comment.php 9 months ago class-give-cron.php 9 months ago class-give-donate-form.php 1 year ago class-give-donor.php 2 years ago class-give-email-access.php 5 years ago class-give-license-handler.php 1 month ago class-give-logging.php 9 months ago class-give-readme-parser.php 4 years ago class-give-roles.php 5 months ago class-give-scripts.php 3 weeks ago class-give-session.php 9 months ago class-give-stats.php 6 years ago class-give-template-loader.php 6 years ago class-give-tooltips.php 6 years ago class-give-translation.php 4 years ago class-notices.php 9 months ago country-functions.php 7 months ago currencies-list.php 7 months ago currency-functions.php 3 years ago error-tracking.php 6 years ago filters.php 9 months ago formatting.php 9 months ago install.php 9 months ago login-register.php 2 years ago misc-functions.php 1 month ago plugin-compatibility.php 6 years ago post-types.php 1 year ago price-functions.php 6 years ago process-donation.php 1 year ago setting-functions.php 6 years ago shortcodes.php 1 year ago template-functions.php 1 year ago user-functions.php 3 years ago
class-give-cron.php
273 lines
1 <?php
2 /**
3 * Cron
4 *
5 * @package Give
6 * @subpackage Classes/Give_Cron
7 * @copyright Copyright (c) 2016, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.3.2
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17
18 /**
19 * Give_Cron Class
20 *
21 * This class handles scheduled events.
22 *
23 * @since 1.3.2
24 */
25 class Give_Cron {
26
27 /**
28 * Instance.
29 *
30 * @since 1.8.13
31 * @access private
32 * @var
33 */
34 private static $instance;
35
36 /**
37 * Singleton pattern.
38 *
39 * @since 1.8.13
40 * @access private
41 */
42 private function __construct() {
43 }
44
45
46 /**
47 * Get instance.
48 *
49 * @return static
50 * @since 1.8.13
51 * @access public
52 */
53 public static function get_instance() {
54 if ( null === static::$instance ) {
55 self::$instance = new static();
56 self::$instance->setup();
57 }
58
59 return self::$instance;
60 }
61
62
63 /**
64 * Setup
65 *
66 * @since 4.9.0 rename function - PHP 8 compatibility
67 * @since 1.8.13
68 */
69 private function setup() {
70 add_filter( 'cron_schedules', array( self::$instance, 'add_schedules' ) );
71 add_action( 'wp', array( self::$instance, 'schedule_events' ) );
72 }
73
74 /**
75 * Registers new cron schedules
76 *
77 * @param array $schedules An array of non-default cron schedules.
78 *
79 * @return array An array of non-default cron schedules.
80 *
81 * @since 4.9.0 rename function - PHP 8 compatibility
82 * @since 1.3.2
83 * @access public
84 */
85 public function add_schedules( $schedules = array() ) {
86 // Adds once weekly to the existing schedules.
87 $schedules['weekly'] = array(
88 'interval' => 604800, // 7 * 24 * 3600
89 'display' => __( 'Once Weekly', 'give' ),
90 );
91
92 // Adds once weekly to the existing schedules.
93 $schedules['monthly'] = array(
94 'interval' => 2592000, // 30 * 24 * 3600
95 'display' => __( 'Once Monthly', 'give' ),
96 );
97
98 // Adds every third day to the existing schedules.
99 $schedules['thricely'] = array(
100 'interval' => 259200, // 3 * 24 * 3600
101 'display' => __( 'Every Third Day', 'give' ),
102 );
103
104 return $schedules;
105 }
106
107 /**
108 * Schedules our events
109 *
110 * @return void
111 *
112 * @since 4.9.0 rename function - PHP 8 compatibility
113 * @since 1.3.2
114 * @access public
115 */
116 public function schedule_events() {
117 $this->monthly_events();
118 $this->weekly_events();
119 $this->daily_events();
120 $this->thricely_events();
121 }
122
123 /**
124 * Schedule monthly events
125 *
126 * @return void
127 * @since 2.5.0
128 * @access private
129 */
130 private function monthly_events() {
131 if ( ! wp_next_scheduled( 'give_monthly_scheduled_events' ) ) {
132 wp_schedule_event( current_time( 'timestamp' ), 'monthly', 'give_monthly_scheduled_events' );
133 }
134 }
135
136 /**
137 * Schedule weekly events
138 *
139 * @return void
140 * @since 1.3.2
141 * @access private
142 */
143 private function weekly_events() {
144 if ( ! wp_next_scheduled( 'give_weekly_scheduled_events' ) ) {
145 wp_schedule_event( current_time( 'timestamp' ), 'weekly', 'give_weekly_scheduled_events' );
146 }
147 }
148
149 /**
150 * Schedule daily events
151 *
152 * @return void
153 * @since 1.3.2
154 * @access private
155 */
156 private function daily_events() {
157 if ( ! wp_next_scheduled( 'give_daily_scheduled_events' ) ) {
158 wp_schedule_event( current_time( 'timestamp' ), 'daily', 'give_daily_scheduled_events' );
159 }
160 }
161
162 /**
163 * Schedule thricely events
164 *
165 * @return void
166 * @since 2.5.11
167 * @access private
168 */
169 private function thricely_events() {
170 if ( ! wp_next_scheduled( 'give_thricely_scheduled_events' ) ) {
171 wp_schedule_event( current_time( 'timestamp' ), 'thricely', 'give_thricely_scheduled_events' );
172 }
173 }
174
175 /**
176 * get cron job action name
177 *
178 * @param string $type
179 *
180 * @return string
181 * @since 1.8.13
182 * @access public
183 */
184 public static function get_cron_action( $type = 'weekly' ) {
185 $cron_action = '';
186
187 switch ( $type ) {
188 case 'daily':
189 $cron_action = 'give_daily_scheduled_events';
190 break;
191
192 case 'thricely':
193 $cron_action = 'give_thricely_scheduled_events';
194 break;
195
196 case 'monthly':
197 $cron_action = 'give_monthly_scheduled_events';
198 break;
199
200 case 'weekly':
201 $cron_action = 'give_weekly_scheduled_events';
202 break;
203 }
204
205 return $cron_action;
206 }
207
208 /**
209 * Add action to cron action
210 *
211 * @param string $callback
212 * @param string $type
213 *
214 * @since 1.8.13
215 * @access private
216 */
217 private static function add_event( $callback, $type = 'weekly' ) {
218 $cron_event = self::get_cron_action( $type );
219 add_action( $cron_event, $callback );
220 }
221
222 /**
223 * Add weekly event
224 *
225 * @param string $callback
226 *
227 * @since 1.8.13
228 * @access public
229 */
230 public static function add_weekly_event( $callback ) {
231 self::add_event( $callback );
232 }
233
234 /**
235 * Add daily event
236 *
237 * @param $callback
238 *
239 * @since 1.8.13
240 * @access public
241 */
242 public static function add_daily_event( $callback ) {
243 self::add_event( $callback, 'daily' );
244 }
245
246 /**
247 * Add thricely event
248 *
249 * @param $callback
250 *
251 * @since 2.5.11
252 * @access public
253 */
254 public static function add_thricely_event( $callback ) {
255 self::add_event( $callback, 'thricely' );
256 }
257
258 /**
259 * Add monthly event
260 *
261 * @param $callback
262 *
263 * @since 2.5.0
264 * @access public
265 */
266 public static function add_monthly_event( $callback ) {
267 self::add_event( $callback, 'monthly' );
268 }
269 }
270
271 // Initiate class.
272 Give_Cron::get_instance();
273