class-sitemap-cache-data.php
4.73 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\XML_Sitemaps
*/
/**
* Sitemap Cache Data object, manages sitemap data stored in cache.
*/
class WPSEO_Sitemap_Cache_Data implements Serializable, WPSEO_Sitemap_Cache_Data_Interface {
/**
* Sitemap XML data.
*
* @var string
*/
private $sitemap = '';
/**
* Status of the sitemap, usable or not.
*
* @var string
*/
private $status = self::UNKNOWN;
/**
* Set the sitemap XML data
*
* @param string $sitemap XML Content of the sitemap.
*/
public function set_sitemap( $sitemap ) {
if ( ! is_string( $sitemap ) ) {
$sitemap = '';
}
$this->sitemap = $sitemap;
/*
* Empty sitemap is not usable.
*/
if ( ! empty( $sitemap ) ) {
$this->set_status( self::OK );
}
else {
$this->set_status( self::ERROR );
}
}
/**
* Set the status of the sitemap, is it usable.
*
* @param bool|string $usable Is the sitemap usable or not.
*
* @return void
*/
public function set_status( $usable ) {
if ( $usable === self::OK ) {
$this->status = self::OK;
return;
}
if ( $usable === self::ERROR ) {
$this->status = self::ERROR;
$this->sitemap = '';
return;
}
$this->status = self::UNKNOWN;
}
/**
* Is the sitemap usable.
*
* @return bool True if usable, False if bad or unknown.
*/
public function is_usable() {
return $this->status === self::OK;
}
/**
* Get the XML content of the sitemap.
*
* @return string The content of the sitemap.
*/
public function get_sitemap() {
return $this->sitemap;
}
/**
* Get the status of the sitemap.
*
* @return string Status of the sitemap, 'ok'/'error'/'unknown'.
*/
public function get_status() {
return $this->status;
}
/**
* String representation of object.
*
* {@internal This magic method is only "magic" as of PHP 7.4 in which the magic method was introduced.}
*
* @link https://www.php.net/language.oop5.magic#object.serialize
* @link https://wiki.php.net/rfc/custom_object_serialization
*
* @since 17.8.0
*
* @return array The data to be serialized.
*/
public function __serialize() { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__serializeFound
$data = [
'status' => $this->status,
'xml' => $this->sitemap,
];
return $data;
}
/**
* Constructs the object.
*
* {@internal This magic method is only "magic" as of PHP 7.4 in which the magic method was introduced.}
*
* @link https://www.php.net/language.oop5.magic#object.serialize
* @link https://wiki.php.net/rfc/custom_object_serialization
*
* @since 17.8.0
*
* @param array $data The unserialized data to use to (re)construct the object.
*
* @return void
*/
public function __unserialize( $data ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound
$this->set_sitemap( $data['xml'] );
$this->set_status( $data['status'] );
}
/**
* String representation of object.
*
* {@internal The magic methods take precedence over the Serializable interface.
* This means that in practice, this method will now only be called on PHP < 7.4.
* For PHP 7.4 and higher, the magic methods will be used instead.}
*
* {@internal The Serializable interface is being phased out, in favour of the magic methods.
* This method should be deprecated and removed and the class should no longer
* implement the `Serializable` interface.
* This change, however, can't be made until the minimum PHP version goes up to PHP 7.4 or higher.}
*
* @link http://php.net/manual/en/serializable.serialize.php
* @link https://wiki.php.net/rfc/phase_out_serializable
*
* @since 5.1.0
*
* @return string The string representation of the object or null in C-format.
*/
public function serialize() {
return serialize( $this->__serialize() );
}
/**
* Constructs the object.
*
* {@internal The magic methods take precedence over the Serializable interface.
* This means that in practice, this method will now only be called on PHP < 7.4.
* For PHP 7.4 and higher, the magic methods will be used instead.}
*
* {@internal The Serializable interface is being phased out, in favour of the magic methods.
* This method should be deprecated and removed and the class should no longer
* implement the `Serializable` interface.
* This change, however, can't be made until the minimum PHP version goes up to PHP 7.4 or higher.}
*
* @link http://php.net/manual/en/serializable.unserialize.php
* @link https://wiki.php.net/rfc/phase_out_serializable
*
* @since 5.1.0
*
* @param string $data The string representation of the object in C or O-format.
*
* @return void
*/
public function unserialize( $data ) {
$data = unserialize( $data );
$this->__unserialize( $data );
}
}