[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 3 // SPDX-FileCopyrightText: 2004-2023 Ryan Parman, Sam Sneddon, Ryan McCue 4 // SPDX-License-Identifier: BSD-3-Clause 5 6 declare(strict_types=1); 7 8 namespace SimplePie; 9 10 /** 11 * Handles `<atom:source>` 12 * 13 * Used by {@see \SimplePie\Item::get_source()} 14 * 15 * This class can be overloaded with {@see \SimplePie::set_source_class()} 16 */ 17 class Source implements RegistryAware 18 { 19 /** @var Item */ 20 public $item; 21 /** @var array<string, mixed> */ 22 public $data = []; 23 /** @var Registry */ 24 protected $registry; 25 26 /** 27 * @param array<string, mixed> $data 28 */ 29 public function __construct(Item $item, array $data) 30 { 31 $this->item = $item; 32 $this->data = $data; 33 } 34 35 /** 36 * @return void 37 */ 38 public function set_registry(\SimplePie\Registry $registry) 39 { 40 $this->registry = $registry; 41 } 42 43 /** 44 * @return string 45 */ 46 public function __toString() 47 { 48 return md5(serialize($this->data)); 49 } 50 51 /** 52 * @param string $namespace 53 * @param string $tag 54 * @return array<array<string, mixed>>|null 55 */ 56 public function get_source_tags(string $namespace, string $tag) 57 { 58 if (isset($this->data['child'][$namespace][$tag])) { 59 return $this->data['child'][$namespace][$tag]; 60 } 61 62 return null; 63 } 64 65 /** 66 * @param array<string, mixed> $element 67 * @return string 68 */ 69 public function get_base(array $element = []) 70 { 71 return $this->item->get_base($element); 72 } 73 74 /** 75 * @param string $data 76 * @param int-mask-of<SimplePie::CONSTRUCT_*> $type 77 * @param string $base 78 * @return string 79 */ 80 public function sanitize(string $data, $type, string $base = '') 81 { 82 return $this->item->sanitize($data, $type, $base); 83 } 84 85 /** 86 * @return Item 87 */ 88 public function get_item() 89 { 90 return $this->item; 91 } 92 93 /** 94 * @return string|null 95 */ 96 public function get_title() 97 { 98 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'title')) { 99 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_10_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 100 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'title')) { 101 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_03_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 102 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_10, 'title')) { 103 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 104 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_090, 'title')) { 105 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 106 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'title')) { 107 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 108 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'title')) { 109 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 110 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'title')) { 111 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 112 } 113 114 return null; 115 } 116 117 /** 118 * @param int $key 119 * @return Category|null 120 */ 121 public function get_category(int $key = 0) 122 { 123 $categories = $this->get_categories(); 124 if (isset($categories[$key])) { 125 return $categories[$key]; 126 } 127 128 return null; 129 } 130 131 /** 132 * @return array<Category>|null 133 */ 134 public function get_categories() 135 { 136 $categories = []; 137 138 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'category') as $category) { 139 $term = null; 140 $scheme = null; 141 $label = null; 142 if (isset($category['attribs']['']['term'])) { 143 $term = $this->sanitize($category['attribs']['']['term'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 144 } 145 if (isset($category['attribs']['']['scheme'])) { 146 $scheme = $this->sanitize($category['attribs']['']['scheme'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 147 } 148 if (isset($category['attribs']['']['label'])) { 149 $label = $this->sanitize($category['attribs']['']['label'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 150 } 151 $categories[] = $this->registry->create(Category::class, [$term, $scheme, $label]); 152 } 153 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'category') as $category) { 154 // This is really the label, but keep this as the term also for BC. 155 // Label will also work on retrieving because that falls back to term. 156 $term = $this->sanitize($category['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 157 if (isset($category['attribs']['']['domain'])) { 158 $scheme = $this->sanitize($category['attribs']['']['domain'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 159 } else { 160 $scheme = null; 161 } 162 $categories[] = $this->registry->create(Category::class, [$term, $scheme, null]); 163 } 164 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'subject') as $category) { 165 $categories[] = $this->registry->create(Category::class, [$this->sanitize($category['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT), null, null]); 166 } 167 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'subject') as $category) { 168 $categories[] = $this->registry->create(Category::class, [$this->sanitize($category['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT), null, null]); 169 } 170 171 if (!empty($categories)) { 172 return array_unique($categories); 173 } 174 175 return null; 176 } 177 178 /** 179 * @param int $key 180 * @return Author|null 181 */ 182 public function get_author(int $key = 0) 183 { 184 $authors = $this->get_authors(); 185 if (isset($authors[$key])) { 186 return $authors[$key]; 187 } 188 189 return null; 190 } 191 192 /** 193 * @return array<Author>|null 194 */ 195 public function get_authors() 196 { 197 $authors = []; 198 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'author') as $author) { 199 $name = null; 200 $uri = null; 201 $email = null; 202 if (isset($author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['name'][0]['data'])) { 203 $name = $this->sanitize($author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['name'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 204 } 205 if (isset($author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['uri'][0]['data'])) { 206 $uri = $author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['uri'][0]; 207 $uri = $this->sanitize($uri['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($uri)); 208 } 209 if (isset($author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['email'][0]['data'])) { 210 $email = $this->sanitize($author['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['email'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 211 } 212 if ($name !== null || $email !== null || $uri !== null) { 213 $authors[] = $this->registry->create(Author::class, [$name, $uri, $email]); 214 } 215 } 216 if ($author = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'author')) { 217 $name = null; 218 $url = null; 219 $email = null; 220 if (isset($author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['name'][0]['data'])) { 221 $name = $this->sanitize($author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['name'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 222 } 223 if (isset($author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['url'][0]['data'])) { 224 $url = $author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['url'][0]; 225 $url = $this->sanitize($url['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($url)); 226 } 227 if (isset($author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['email'][0]['data'])) { 228 $email = $this->sanitize($author[0]['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['email'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 229 } 230 if ($name !== null || $email !== null || $url !== null) { 231 $authors[] = $this->registry->create(Author::class, [$name, $url, $email]); 232 } 233 } 234 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'creator') as $author) { 235 $authors[] = $this->registry->create(Author::class, [$this->sanitize($author['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT), null, null]); 236 } 237 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'creator') as $author) { 238 $authors[] = $this->registry->create(Author::class, [$this->sanitize($author['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT), null, null]); 239 } 240 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ITUNES, 'author') as $author) { 241 $authors[] = $this->registry->create(Author::class, [$this->sanitize($author['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT), null, null]); 242 } 243 244 if (!empty($authors)) { 245 return array_unique($authors); 246 } 247 248 return null; 249 } 250 251 /** 252 * @param int $key 253 * @return Author|null 254 */ 255 public function get_contributor(int $key = 0) 256 { 257 $contributors = $this->get_contributors(); 258 if (isset($contributors[$key])) { 259 return $contributors[$key]; 260 } 261 262 return null; 263 } 264 265 /** 266 * @return array<Author>|null 267 */ 268 public function get_contributors() 269 { 270 $contributors = []; 271 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'contributor') as $contributor) { 272 $name = null; 273 $uri = null; 274 $email = null; 275 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['name'][0]['data'])) { 276 $name = $this->sanitize($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['name'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 277 } 278 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['uri'][0]['data'])) { 279 $uri = $contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['uri'][0]; 280 $uri = $this->sanitize($uri['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($uri)); 281 } 282 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['email'][0]['data'])) { 283 $email = $this->sanitize($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['email'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 284 } 285 if ($name !== null || $email !== null || $uri !== null) { 286 $contributors[] = $this->registry->create(Author::class, [$name, $uri, $email]); 287 } 288 } 289 foreach ((array) $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'contributor') as $contributor) { 290 $name = null; 291 $url = null; 292 $email = null; 293 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['name'][0]['data'])) { 294 $name = $this->sanitize($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['name'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 295 } 296 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['url'][0]['data'])) { 297 $url = $contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['url'][0]; 298 $url = $this->sanitize($url['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($url)); 299 } 300 if (isset($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['email'][0]['data'])) { 301 $email = $this->sanitize($contributor['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['email'][0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 302 } 303 if ($name !== null || $email !== null || $url !== null) { 304 $contributors[] = $this->registry->create(Author::class, [$name, $url, $email]); 305 } 306 } 307 308 if (!empty($contributors)) { 309 return array_unique($contributors); 310 } 311 312 return null; 313 } 314 315 /** 316 * @param int $key 317 * @param string $rel 318 * @return string|null 319 */ 320 public function get_link(int $key = 0, string $rel = 'alternate') 321 { 322 $links = $this->get_links($rel); 323 if (isset($links[$key])) { 324 return $links[$key]; 325 } 326 327 return null; 328 } 329 330 /** 331 * Added for parity between the parent-level and the item/entry-level. 332 * 333 * @return string|null 334 */ 335 public function get_permalink() 336 { 337 return $this->get_link(0); 338 } 339 340 /** 341 * @param string $rel 342 * @return array<string>|null 343 */ 344 public function get_links(string $rel = 'alternate') 345 { 346 if (!isset($this->data['links'])) { 347 $this->data['links'] = []; 348 if ($links = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'link')) { 349 foreach ($links as $link) { 350 if (isset($link['attribs']['']['href'])) { 351 $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; 352 $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($link)); 353 } 354 } 355 } 356 if ($links = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'link')) { 357 foreach ($links as $link) { 358 if (isset($link['attribs']['']['href'])) { 359 $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; 360 $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($link)); 361 } 362 } 363 } 364 if ($links = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_10, 'link')) { 365 $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($links[0])); 366 } 367 if ($links = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_090, 'link')) { 368 $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($links[0])); 369 } 370 if ($links = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'link')) { 371 $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($links[0])); 372 } 373 374 $keys = array_keys($this->data['links']); 375 foreach ($keys as $key) { 376 $key = (string) $key; 377 378 if ($this->registry->call(Misc::class, 'is_isegment_nz_nc', [$key])) { 379 if (isset($this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key])) { 380 $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]); 381 $this->data['links'][$key] = &$this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key]; 382 } else { 383 $this->data['links'][\SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY . $key] = &$this->data['links'][$key]; 384 } 385 } elseif (substr($key, 0, 41) === \SimplePie\SimplePie::IANA_LINK_RELATIONS_REGISTRY) { 386 $this->data['links'][substr($key, 41)] = &$this->data['links'][$key]; 387 } 388 $this->data['links'][$key] = array_unique($this->data['links'][$key]); 389 } 390 } 391 392 if (isset($this->data['links'][$rel])) { 393 return $this->data['links'][$rel]; 394 } 395 396 return null; 397 } 398 399 /** 400 * @return string|null 401 */ 402 public function get_description() 403 { 404 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'subtitle')) { 405 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_10_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 406 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'tagline')) { 407 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_03_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 408 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_10, 'description')) { 409 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 410 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_090, 'description')) { 411 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 412 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'description')) { 413 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); 414 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'description')) { 415 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 416 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'description')) { 417 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 418 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ITUNES, 'summary')) { 419 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_HTML, $this->get_base($return[0])); 420 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ITUNES, 'subtitle')) { 421 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_HTML, $this->get_base($return[0])); 422 } 423 424 return null; 425 } 426 427 /** 428 * @return string|null 429 */ 430 public function get_copyright() 431 { 432 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'rights')) { 433 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_10_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 434 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_03, 'copyright')) { 435 return $this->sanitize($return[0]['data'], $this->registry->call(Misc::class, 'atom_03_construct_type', [$return[0]['attribs']]), $this->get_base($return[0])); 436 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'copyright')) { 437 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 438 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'rights')) { 439 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 440 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'rights')) { 441 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 442 } 443 444 return null; 445 } 446 447 /** 448 * @return string|null 449 */ 450 public function get_language() 451 { 452 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_RSS_20, 'language')) { 453 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 454 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_11, 'language')) { 455 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 456 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_DC_10, 'language')) { 457 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 458 } elseif (isset($this->data['xml_lang'])) { 459 return $this->sanitize($this->data['xml_lang'], \SimplePie\SimplePie::CONSTRUCT_TEXT); 460 } 461 462 return null; 463 } 464 465 /** 466 * @return float|null 467 */ 468 public function get_latitude() 469 { 470 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_W3C_BASIC_GEO, 'lat')) { 471 return (float) $return[0]['data']; 472 } elseif (($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) { 473 return (float) $match[1]; 474 } 475 476 return null; 477 } 478 479 /** 480 * @return float|null 481 */ 482 public function get_longitude() 483 { 484 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_W3C_BASIC_GEO, 'long')) { 485 return (float) $return[0]['data']; 486 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_W3C_BASIC_GEO, 'lon')) { 487 return (float) $return[0]['data']; 488 } elseif (($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) { 489 return (float) $match[2]; 490 } 491 492 return null; 493 } 494 495 /** 496 * @return string|null 497 */ 498 public function get_image_url() 499 { 500 if ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ITUNES, 'image')) { 501 return $this->sanitize($return[0]['attribs']['']['href'], \SimplePie\SimplePie::CONSTRUCT_IRI); 502 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'logo')) { 503 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($return[0])); 504 } elseif ($return = $this->get_source_tags(\SimplePie\SimplePie::NAMESPACE_ATOM_10, 'icon')) { 505 return $this->sanitize($return[0]['data'], \SimplePie\SimplePie::CONSTRUCT_IRI, $this->get_base($return[0])); 506 } 507 508 return null; 509 } 510 } 511 512 class_alias('SimplePie\Source', 'SimplePie_Source');
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Fri Oct 10 08:20:03 2025 | Cross-referenced by PHPXref |