-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSchedule.php
More file actions
146 lines (123 loc) · 2.12 KB
/
Copy pathSchedule.php
File metadata and controls
146 lines (123 loc) · 2.12 KB
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
/**
* Schedule Class.
*
* @package Schedule_Terms
*/
namespace Torounit\WP\Schedule_Terms;
use WP_Term;
/**
* Schedule Object
*/
class Schedule {
public const ATTACH = 'attach';
public const DETACH = 'detach';
/**
* Schedule tyoe.
*
* @var 'attach'|'detach'
*/
private $type;
/**
* Taxonomy slug.
*
* @var string
*/
private $taxonomy;
/**
* Term slug.
*
* @var string
*/
private $term;
/**
* ISO 8601 formatted datetime.
*
* @var string
*/
private $datetime;
/**
* WP_Term object cache.
*
* @var WP_Term
*/
private $wp_term;
/**
* Constructor.
*
* @param array{ type: string, taxonomy: string, term: string, datetime: string } $values values.
*/
public function __construct( array $values ) {
$this->type = $values['type'];
$this->taxonomy = $values['taxonomy'];
$this->term = $values['term'];
$this->datetime = $values['datetime'];
}
/**
* Get unixtime.
*
* @return int
*/
public function get_timestamp(): int {
try {
$date_time = new \DateTime( $this->datetime );
} catch ( \Exception $e ) {
wp_die( esc_html( $e->getMessage() ) );
}
return $date_time->getTimestamp();
}
/**
* Check if schedule is expired.
*
* @param int $timestamp Unix timestamp.
*
* @return bool
*/
public function is_expired( int $timestamp ): bool {
$this->get_timestamp();
return $timestamp >= $this->get_timestamp();
}
/**
* Get action type.
*
* @return string
*/
public function get_type(): string {
return $this->type;
}
/**
* Get taxonomy slug.
*
* @return string
*/
public function get_taxonomy(): string {
return $this->taxonomy;
}
/**
* Get term slug.
*
* @return string
*/
public function get_term(): string {
return $this->term;
}
/**
* Get WP_Term.
*
* @return ?WP_Term
*/
public function get_wp_term(): ?WP_Term {
if ( $this->wp_term ) {
return $this->wp_term;
}
$term = get_term_by( 'slug', $this->term, $this->taxonomy );
if ( is_wp_error( $term ) ) {
return null;
}
if ( ! $term ) {
return null;
}
$this->wp_term = $term;
return $this->wp_term;
}
}