67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
|     }
 | |
| }
 |