<?php namespace dokuwiki\Sitemap; /** * An item of a sitemap. * * @author Michael Hamann */ class Item { public $url; public $lastmod; public $changefreq; public $priority; /** * Create a new item. * * @param string $url The url of the item * @param int $lastmod Timestamp of the last modification * @param string $changefreq How frequently the item is likely to change. * Valid values: always, hourly, daily, weekly, monthly, yearly, never. * @param $priority float|string The priority of the item relative to other URLs on your site. * Valid values range from 0.0 to 1.0. */ public function __construct($url, $lastmod, $changefreq = null, $priority = null) { $this->url = $url; $this->lastmod = $lastmod; $this->changefreq = $changefreq; $this->priority = $priority; } /** * Helper function for creating an item for a wikipage id. * * @param string $id A wikipage id. * @param string $changefreq How frequently the item is likely to change. * Valid values: always, hourly, daily, weekly, monthly, yearly, never. * @param float|string $priority The priority of the item relative to other URLs on your site. * Valid values range from 0.0 to 1.0. * @return Item The sitemap item. */ public static function createFromID($id, $changefreq = null, $priority = null) { $id = trim($id); $date = @filemtime(wikiFN($id)); if (!$date) return null; return new Item(wl($id, '', true), $date, $changefreq, $priority); } /** * Get the XML representation of the sitemap item. * * @return string The XML representation. */ public function toXML() { $result = ' <url>' . NL . ' <loc>' . hsc($this->url) . '</loc>' . NL . ' <lastmod>' . date_iso8601($this->lastmod) . '</lastmod>' . NL; if ($this->changefreq !== null) $result .= ' <changefreq>' . hsc($this->changefreq) . '</changefreq>' . NL; if ($this->priority !== null) $result .= ' <priority>' . hsc($this->priority) . '</priority>' . NL; $result .= ' </url>' . NL; return $result; } }