/
class-schedules.php
96 lines (74 loc) · 1.72 KB
/
class-schedules.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace HM\BackUpWordPress;
/**
* A simple class for loading schedules
*/
class Schedules {
/**
* An array of schedules
*
* @var mixed
* @access private
*/
private $schedules;
/**
*
*/
protected static $instance;
public static function get_instance() {
if ( ! ( self::$instance instanceof Schedules ) ) {
self::$instance = new Schedules();
}
return self::$instance;
}
/**
* Load the schedules from wp_options and store in $this->schedules
*
*/
private function __construct() {
$this->refresh_schedules();
}
public function refresh_schedules() {
$schedules = get_transient( 'hmbkp_schedules' );
if ( ! $schedules ) {
global $wpdb;
// Load all schedule options from the database.
$schedules = $wpdb->get_col( "SELECT option_name from $wpdb->options WHERE option_name LIKE 'hmbkp\_schedule\_%'" );
set_transient( 'hmbkp_schedules', $schedules, WEEK_IN_SECONDS );
}
// Instantiate each one as a Scheduled_Backup
$this->schedules = array_map( array( $this, 'instantiate' ), array_filter( (array) $schedules ) );
}
/**
* Get an array of schedules
*
* @return Scheduled_Backup[]
*/
public function get_schedules() {
return $this->schedules;
}
/**
* Get a schedule by ID
*
* @param $id
* @return Scheduled_Backup
*/
public function get_schedule( $id ) {
foreach ( $this->schedules as $schedule ) {
if ( $schedule->get_id() == $id ) {
return $schedule;
}
}
return null;
}
/**
* Instantiate the individual scheduled backup objects
*
* @access private
* @param string $id
* @return Scheduled_Backup
*/
private function instantiate( $id ) {
return new Scheduled_Backup( str_replace( 'hmbkp_schedule_', '', $id ) );
}
}