1<?php 2 3namespace dokuwiki\Sitemap; 4 5/** 6 * An item of a sitemap. 7 * 8 * @author Michael Hamann 9 */ 10class Item 11{ 12 public $url; 13 public $lastmod; 14 public $changefreq; 15 public $priority; 16 17 /** 18 * Create a new item. 19 * 20 * @param string $url The url of the item 21 * @param int $lastmod Timestamp of the last modification 22 * @param string $changefreq How frequently the item is likely to change. 23 * Valid values: always, hourly, daily, weekly, monthly, yearly, never. 24 * @param $priority float|string The priority of the item relative to other URLs on your site. 25 * Valid values range from 0.0 to 1.0. 26 */ 27 public function __construct($url, $lastmod, $changefreq = null, $priority = null) 28 { 29 $this->url = $url; 30 $this->lastmod = $lastmod; 31 $this->changefreq = $changefreq; 32 $this->priority = $priority; 33 } 34 35 /** 36 * Helper function for creating an item for a wikipage id. 37 * 38 * @param string $id A wikipage id. 39 * @param string $changefreq How frequently the item is likely to change. 40 * Valid values: always, hourly, daily, weekly, monthly, yearly, never. 41 * @param float|string $priority The priority of the item relative to other URLs on your site. 42 * Valid values range from 0.0 to 1.0. 43 * @return Item The sitemap item. 44 */ 45 public static function createFromID($id, $changefreq = null, $priority = null) 46 { 47 $id = trim($id); 48 $date = @filemtime(wikiFN($id)); 49 if(!$date) return null; 50 return new Item(wl($id, '', true), $date, $changefreq, $priority); 51 } 52 53 /** 54 * Get the XML representation of the sitemap item. 55 * 56 * @return string The XML representation. 57 */ 58 public function toXML() 59 { 60 $result = ' <url>'.NL 61 .' <loc>'.hsc($this->url).'</loc>'.NL 62 .' <lastmod>'.date_iso8601($this->lastmod).'</lastmod>'.NL; 63 if ($this->changefreq !== null) 64 $result .= ' <changefreq>'.hsc($this->changefreq).'</changefreq>'.NL; 65 if ($this->priority !== null) 66 $result .= ' <priority>'.hsc($this->priority).'</priority>'.NL; 67 $result .= ' </url>'.NL; 68 return $result; 69 } 70} 71