GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Branch dev (231e41)
by Liuta
03:38
created

Xcloner_Scheduler::_xcloner_scheduler_callback()   F

Complexity

Conditions 23
Paths 5764

Size

Total Lines 169
Code Lines 94

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 23
eloc 94
nc 5764
nop 2
dl 0
loc 169
rs 0
c 2
b 1
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
class Xcloner_Scheduler {
4
5
	private $db;
6
	private $scheduler_table = "xcloner_scheduler";
7
8
	private $xcloner_remote_storage;
9
	private $archive_system;
10
	private $xcloner_database;
11
	private $xcloner_settings;
12
	private $logger;
13
	private $xcloner_file_system;
14
	private $xcloner_encryption;
15
16
	private $allowed_schedules = array("hourly", "twicedaily", "daily", "weekly", "monthly");
17
18
	/*public function __call($method, $args) {
19
		echo "$method is not defined";
20
	}*/
21
22
	public function __construct(Xcloner $xcloner_container) {
23
		global $wpdb;
24
25
		$this->db          = $wpdb;
26
		$wpdb->show_errors = false;
27
28
		$this->xcloner_container = $xcloner_container;
0 ignored issues
show
Bug Best Practice introduced by
The property xcloner_container does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
29
		$this->xcloner_settings  = $this->xcloner_container->get_xcloner_settings();
30
31
		$this->scheduler_table = $this->db->prefix.$this->scheduler_table;
32
	}
33
34
	private function get_xcloner_container() {
35
		return $this->xcloner_container;
36
	}
37
38
	private function set_xcloner_container(Xcloner $container) {
39
		$this->xcloner_container = $container;
0 ignored issues
show
Bug Best Practice introduced by
The property xcloner_container does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
40
	}
41
42
	public function get_scheduler_list($return_only_enabled = 0) {
43
		$list = $this->db->get_results("SELECT * FROM ".$this->scheduler_table);
44
45
		if ($return_only_enabled) {
46
			$new_list = array();
47
48
			foreach ($list as $res) {
49
				if ($res->status) {
50
					$res->next_run_time = wp_next_scheduled('xcloner_scheduler_'.$res->id, array($res->id)) + (get_option('gmt_offset') * HOUR_IN_SECONDS);
0 ignored issues
show
Bug introduced by
The constant HOUR_IN_SECONDS was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
Bug introduced by
The function wp_next_scheduled was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

50
					$res->next_run_time = /** @scrutinizer ignore-call */ wp_next_scheduled('xcloner_scheduler_'.$res->id, array($res->id)) + (get_option('gmt_offset') * HOUR_IN_SECONDS);
Loading history...
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

50
					$res->next_run_time = wp_next_scheduled('xcloner_scheduler_'.$res->id, array($res->id)) + (/** @scrutinizer ignore-call */ get_option('gmt_offset') * HOUR_IN_SECONDS);
Loading history...
51
					$new_list[]         = $res;
52
				}
53
			}
54
			$list = $new_list;
55
		}
56
57
		return $list;
58
	}
59
60
	public function get_next_run_schedule( ) {
61
		$list = $this->get_scheduler_list($return_only_enabled = 1);
62
63
		return $list;
64
	}
65
66
	public function get_schedule_by_id_object($id) {
67
		$data = $this->db->get_row("SELECT * FROM ".$this->scheduler_table." WHERE id=".$id);
68
69
		return $data;
70
	}
71
72
	public function get_schedule_by_id($id) {
73
		$data = $this->db->get_row("SELECT * FROM ".$this->scheduler_table." WHERE id=".$id, ARRAY_A);
0 ignored issues
show
Bug introduced by
The constant ARRAY_A was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
74
75
		if (!$data) {
76
			return false;
77
		}
78
79
		$params = json_decode($data['params']);
80
81
		//print_r($params);
82
		$data['params']         = "";
83
		$data['backup_params']  = $params->backup_params;
84
		$data['table_params']   = json_encode($params->database);
85
		$data['excluded_files'] = json_encode($params->excluded_files);
86
87
		return $data;
88
	}
89
90
	public function delete_schedule_by_id($id) {
91
		$hook = 'xcloner_scheduler_'.$id;
92
		wp_clear_scheduled_hook($hook, array($id));
0 ignored issues
show
Bug introduced by
The function wp_clear_scheduled_hook was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

92
		/** @scrutinizer ignore-call */ 
93
  wp_clear_scheduled_hook($hook, array($id));
Loading history...
93
94
		$data = $this->db->delete($this->scheduler_table, array('id' => $id));
95
96
		return $data;
97
	}
98
99
	public function deactivate_wp_cron_hooks() {
100
		$list = $this->get_scheduler_list();
101
102
		foreach ($list as $schedule) {
103
			$hook = 'xcloner_scheduler_'.$schedule->id;
104
105
			$timestamp = wp_next_scheduled($hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_next_scheduled was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

105
			$timestamp = /** @scrutinizer ignore-call */ wp_next_scheduled($hook, array($schedule->id));
Loading history...
106
			wp_unschedule_event($timestamp, $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_unschedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

106
			/** @scrutinizer ignore-call */ 
107
   wp_unschedule_event($timestamp, $hook, array($schedule->id));
Loading history...
107
		}
108
	}
109
110
	public function update_wp_cron_hooks() {
111
		$list = $this->get_scheduler_list();
112
113
		foreach ($list as $schedule) {
114
			$hook = 'xcloner_scheduler_'.$schedule->id;
115
116
			//adding the xcloner_scheduler hook with xcloner_scheduler_callback callback
117
			add_action($hook, array($this, 'xcloner_scheduler_callback'), 10, 1);
0 ignored issues
show
Bug introduced by
The function add_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

117
			/** @scrutinizer ignore-call */ 
118
   add_action($hook, array($this, 'xcloner_scheduler_callback'), 10, 1);
Loading history...
118
119
			if (!wp_next_scheduled($hook, array($schedule->id)) and $schedule->status) {
0 ignored issues
show
Bug introduced by
The function wp_next_scheduled was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

119
			if (!/** @scrutinizer ignore-call */ wp_next_scheduled($hook, array($schedule->id)) and $schedule->status) {
Loading history...
120
121
				if ($schedule->recurrence == "single") {
122
					wp_schedule_single_event(strtotime($schedule->start_at), $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_schedule_single_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

122
					/** @scrutinizer ignore-call */ 
123
     wp_schedule_single_event(strtotime($schedule->start_at), $hook, array($schedule->id));
Loading history...
123
				} else {
124
					wp_schedule_event(strtotime($schedule->start_at), $schedule->recurrence, $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_schedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

124
					/** @scrutinizer ignore-call */ 
125
     wp_schedule_event(strtotime($schedule->start_at), $schedule->recurrence, $hook, array($schedule->id));
Loading history...
125
				}
126
127
			} elseif (!$schedule->status) {
128
				$timestamp = wp_next_scheduled($hook, array($schedule->id));
129
				wp_unschedule_event($timestamp, $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_unschedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

129
				/** @scrutinizer ignore-call */ 
130
    wp_unschedule_event($timestamp, $hook, array($schedule->id));
Loading history...
130
			}
131
		}
132
133
	}
134
135
	public function update_cron_hook($id) {
136
		$schedule = $this->get_schedule_by_id_object($id);
137
		$hook     = 'xcloner_scheduler_'.$schedule->id;
138
139
		$timestamp = wp_next_scheduled($hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_next_scheduled was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

139
		$timestamp = /** @scrutinizer ignore-call */ wp_next_scheduled($hook, array($schedule->id));
Loading history...
140
		wp_unschedule_event($timestamp, $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_unschedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

140
		/** @scrutinizer ignore-call */ 
141
  wp_unschedule_event($timestamp, $hook, array($schedule->id));
Loading history...
141
142
		if ($schedule->status) {
143
144
			if ($schedule->recurrence == "single") {
145
				wp_schedule_single_event(strtotime($schedule->start_at), $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_schedule_single_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

145
				/** @scrutinizer ignore-call */ 
146
    wp_schedule_single_event(strtotime($schedule->start_at), $hook, array($schedule->id));
Loading history...
146
			} else {
147
				wp_schedule_event(strtotime($schedule->start_at), $schedule->recurrence, $hook, array($schedule->id));
0 ignored issues
show
Bug introduced by
The function wp_schedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

147
				/** @scrutinizer ignore-call */ 
148
    wp_schedule_event(strtotime($schedule->start_at), $schedule->recurrence, $hook, array($schedule->id));
Loading history...
148
			}
149
150
		}
151
	}
152
153
	public function disable_single_cron($schedule_id) {
154
		$hook      = 'xcloner_scheduler_'.$schedule_id;
155
		$timestamp = wp_next_scheduled($hook, array($schedule_id));
0 ignored issues
show
Bug introduced by
The function wp_next_scheduled was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

155
		$timestamp = /** @scrutinizer ignore-call */ wp_next_scheduled($hook, array($schedule_id));
Loading history...
156
		wp_unschedule_event($timestamp, $hook, array($schedule_id));
0 ignored issues
show
Bug introduced by
The function wp_unschedule_event was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

156
		/** @scrutinizer ignore-call */ 
157
  wp_unschedule_event($timestamp, $hook, array($schedule_id));
Loading history...
157
158
		$schedule['status'] = 0;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$schedule was never initialized. Although not strictly required by PHP, it is generally a good practice to add $schedule = array(); before regardless.
Loading history...
159
160
		$update = $this->db->update(
161
			$this->scheduler_table,
162
			$schedule,
163
			array('id' => $schedule_id),
164
			array(
165
				'%s',
166
				'%s'
167
			)
168
		);
169
170
		return $update;
171
	}
172
173
	public function update_hash( $schedule_id, $hash ) {
174
		$schedule = array();
175
176
		$schedule['hash'] = $hash;
177
178
		$update = $this->db->update(
179
			$this->scheduler_table,
180
			$schedule,
181
			array('id' => $schedule_id),
182
			array(
183
				'%s',
184
				'%s'
185
			)
186
		);
187
188
		return $update;
189
	}
190
191
	public function update_last_backup($schedule_id, $last_backup) {
192
193
		$this->logger->info(sprintf('Updating last backup %s for schedule id #%s', $last_backup, $schedule_id));
194
195
		$schedule['last_backup'] = $last_backup;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$schedule was never initialized. Although not strictly required by PHP, it is generally a good practice to add $schedule = array(); before regardless.
Loading history...
196
197
		$update = $this->db->update(
198
			$this->scheduler_table,
199
			$schedule,
200
			array('id' => $schedule_id),
201
			array(
202
				'%s',
203
				'%s'
204
			)
205
		);
206
207
		return $update;
208
	}
209
210
	private function _xcloner_scheduler_callback( $id, $schedule ) {
211
		set_time_limit( 0 );
212
213
		$xcloner = new XCloner();
214
		$xcloner->init();
215
		$this->set_xcloner_container( $xcloner );
216
217
		#$hash = $this->xcloner_settings->get_hash();
218
		#$this->get_xcloner_container()->get_xcloner_settings()->set_hash($hash);
219
220
		//$this->xcloner_settings 		= $this->get_xcloner_container()->get_xcloner_settings();		
221
		$this->xcloner_file_system    = $this->get_xcloner_container()->get_xcloner_filesystem();
222
		$this->xcloner_encryption    = $this->get_xcloner_container()->get_xcloner_encryption();
223
		$this->xcloner_database       = $this->get_xcloner_container()->get_xcloner_database();
224
		$this->archive_system         = $this->get_xcloner_container()->get_archive_system();
225
		$this->logger                 = $this->get_xcloner_container()->get_xcloner_logger()->withName( "xcloner_scheduler" );
226
		$this->xcloner_remote_storage = $this->get_xcloner_container()->get_xcloner_remote_storage();
227
228
		$this->logger->info( sprintf( "New schedule hash is %s", $this->xcloner_settings->get_hash() ) );
229
230
		if ( isset( $schedule['backup_params']->diff_start_date ) && $schedule['backup_params']->diff_start_date ) {
231
			$this->xcloner_file_system->set_diff_timestamp_start( $schedule['backup_params']->diff_start_date );
232
		}
233
234
		if ( $schedule['recurrence'] == "single" ) {
235
			$this->disable_single_cron( $schedule['id'] );
236
		}
237
238
		if ( ! $schedule ) {
239
			$this->logger->info( sprintf( "Could not load schedule with id'%s'", $id ), array( "CRON" ) );
240
241
			return;
242
		}
243
244
		//echo $this->get_xcloner_container()->get_xcloner_settings()->get_hash(); exit;
245
246
		$this->update_hash( $schedule['id'], $this->xcloner_settings->get_hash() );
247
248
		$this->logger->info( sprintf( "Starting cron schedule '%s'", $schedule['name'] ), array( "CRON" ) );
249
250
		$this->xcloner_file_system->set_excluded_files( json_decode( $schedule['excluded_files'] ) );
251
252
		$init     = 1;
253
		$continue = 1;
254
255
		while ( $continue ) {
256
			$continue = $this->xcloner_file_system->start_file_recursion( $init );
257
258
			$init = 0;
259
		}
260
261
		$this->logger->info( sprintf( "File scan finished" ), array( "CRON" ) );
262
263
		$this->logger->info( sprintf( "Starting the database backup" ), array( "CRON" ) );
264
265
		$init               = 1;
266
		$return['finished'] = 0;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$return was never initialized. Although not strictly required by PHP, it is generally a good practice to add $return = array(); before regardless.
Loading history...
267
268
		while ( ! $return['finished'] ) {
269
			$return = $this->xcloner_database->start_database_recursion( (array) json_decode( $schedule['table_params'] ), $return, $init );
270
			$init   = 0;
271
		}
272
273
		$this->logger->info( sprintf( "Database backup done" ), array( "CRON" ) );
274
275
		$this->logger->info( sprintf( "Starting file archive process" ), array( "CRON" ) );
276
277
		$init               = 0;
278
		$return['finished'] = 0;
279
		$return['extra']    = array();
280
281
		while ( ! $return['finished'] ) {
282
			$return = $this->archive_system->start_incremental_backup( (array) $schedule['backup_params'], $return['extra'], $init );
283
			$init   = 0;
284
		}
285
		$this->logger->info( sprintf( "File archive process FINISHED." ), array( "CRON" ) );
286
287
		//getting the last backup archive file
288
		$return['extra']['backup_parent'] = $this->archive_system->get_archive_name_with_extension();
289
		if ( $this->xcloner_file_system->is_part( $this->archive_system->get_archive_name_with_extension() ) ) {
290
			$return['extra']['backup_parent'] = $this->archive_system->get_archive_name_multipart();
291
		}
292
293
		//Updating schedule last backup archive
294
		$this->update_last_backup( $schedule['id'], $return['extra']['backup_parent'] );
295
296
		//Encrypting the backup archive
297
		$return_encrypted['finished'] = 0;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$return_encrypted was never initialized. Although not strictly required by PHP, it is generally a good practice to add $return_encrypted = array(); before regardless.
Loading history...
298
		$return_encrypted['start'] = 0;
299
		$return_encrypted['iv'] = '';
300
		$return_encrypted['target_file'] = '';
301
		$part = 0;
302
		$backup_parts = array();
303
304
		if( $schedule['backup_params']->backup_encrypt){
305
			$this->logger->info( sprintf( "Encrypting backup archive %s.", $return['extra']['backup_parent'] ), array( "CRON" ) );
306
307
			$backup_file = $return['extra']['backup_parent'];
308
309
			if ($this->xcloner_file_system->is_multipart($return['extra']['backup_parent'])) {
310
				$backup_parts = $this->xcloner_file_system->get_multipart_files($return['extra']['backup_parent']);
311
				$backup_file = $backup_parts[$part];
312
			}
313
314
			while ( ! $return_encrypted['finished'] ) {
315
				$return_encrypted = $this->xcloner_encryption->encrypt_file(
316
											$backup_file,
317
											"",
318
											"",
319
											"",
320
											"",
321
											true,
322
											true
323
				);
324
325
				if($return_encrypted['finished']) {
326
					++$part;
327
328
					if ($part < sizeof($backup_parts)) {
329
						$return_encrypted['finished'] = 0;
330
						$backup_file = $backup_parts[$part];
331
					}
332
				}
333
			}
334
		}
335
336
		//Sending backup to remote storage
337
		if ( isset( $schedule['remote_storage'] ) && $schedule['remote_storage'] && array_key_exists( $schedule['remote_storage'], $this->xcloner_remote_storage->get_available_storages() ) ) {
338
			$backup_file = $return['extra']['backup_parent'];
339
340
			$this->logger->info( sprintf( "Transferring backup to remote storage %s", strtoupper( $schedule['remote_storage'] ) ), array( "CRON" ) );
341
342
			if ( method_exists( $this->xcloner_remote_storage, "upload_backup_to_storage" ) ) {
343
				call_user_func_array( array(
344
					$this->xcloner_remote_storage,
345
					"upload_backup_to_storage"
346
				), array( $backup_file, $schedule['remote_storage'] ) );
347
			}
348
		}
349
350
		//Sending email notification
351
		if ( isset( $schedule['backup_params']->email_notification ) and $to = $schedule['backup_params']->email_notification ) {
352
			try {
353
				$from                      = "";
354
				$additional['lines_total'] = $return['extra']['lines_total'];
0 ignored issues
show
Comprehensibility Best Practice introduced by
$additional was never initialized. Although not strictly required by PHP, it is generally a good practice to add $additional = array(); before regardless.
Loading history...
355
				$subject                   = sprintf( __( "%s - new backup generated %s" ), $schedule['name'], $return['extra']['backup_parent'] );
0 ignored issues
show
Bug introduced by
The function __ was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

355
				$subject                   = sprintf( /** @scrutinizer ignore-call */ __( "%s - new backup generated %s" ), $schedule['name'], $return['extra']['backup_parent'] );
Loading history...
356
357
				$this->archive_system->send_notification( $to, $from, $subject, $return['extra']['backup_parent'], $schedule, "", $additional );
358
359
			} catch ( Exception $e ) {
360
				$this->logger->error( $e->getMessage() );
361
			}
362
		}
363
364
		//CHECK IF WE SHOULD DELETE BACKUP AFTER REMOTE TRANSFER IS DONE
365
		if ( $schedule['remote_storage'] && $this->xcloner_settings->get_xcloner_option( 'xcloner_cleanup_delete_after_remote_transfer' ) ) {
366
			$this->logger->info( sprintf( "Deleting %s from local storage matching rule xcloner_cleanup_delete_after_remote_transfer", $return['extra']['backup_parent'] ) );
367
			$this->xcloner_file_system->delete_backup_by_name( $return['extra']['backup_parent'] );
368
369
		}
370
371
		//Removing the tmp filesystem used for backup
372
		$this->xcloner_file_system->remove_tmp_filesystem();
373
374
		//Backup Storage Cleanup
375
		$this->xcloner_file_system->backup_storage_cleanup();
376
377
		//Filesystem Cleanup
378
		$this->xcloner_file_system->cleanup_tmp_directories();
379
	}
380
381
	public function xcloner_scheduler_callback( $id, $schedule = "" ) {
382
		if ( $id ) {
383
			$schedule = $this->get_schedule_by_id( $id );
384
		}
385
386
		try {
387
			if( get_option('xcloner_disable_email_notification') ) {
0 ignored issues
show
Bug introduced by
The function get_option was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

387
			if( /** @scrutinizer ignore-call */ get_option('xcloner_disable_email_notification') ) {
Loading history...
388
				//we disable email notifications
389
				$schedule['backup_params']->email_notification = "";
390
			}
391
			$this->_xcloner_scheduler_callback( $id, $schedule );
392
393
		} catch ( Exception $e ) {
394
395
			//send email to site admin if email notification is not set in the scheduler
396
			if ( ! isset( $schedule['backup_params']->email_notification ) || ! $schedule['backup_params']->email_notification ) {
397
				$schedule['backup_params']->email_notification = get_option( 'admin_email' );
398
			}
399
400
			if ( isset( $schedule['backup_params']->email_notification ) && $to = $schedule['backup_params']->email_notification ) {
401
				$from = "";
402
				$this->archive_system->send_notification( $to, $from, $schedule['name'] . " - backup error", "", "", $e->getMessage() );
403
			}
404
405
		}
406
407
	}
408
409
	public function get_available_intervals() {
410
		$schedules     = wp_get_schedules();
0 ignored issues
show
Bug introduced by
The function wp_get_schedules was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

410
		$schedules     = /** @scrutinizer ignore-call */ wp_get_schedules();
Loading history...
411
		$new_schedules = array();
412
413
		foreach ($schedules as $key => $row) {
414
			if (in_array($key, $this->allowed_schedules)) {
415
				$new_schedules[$key] = $row;
416
				$intervals[$key]     = $row['interval'];
417
			}
418
		}
419
420
		array_multisort($intervals, SORT_ASC, $new_schedules);
421
422
		return $new_schedules;
423
	}
424
425
426
}
427