%PDF- %PDF-
Direktori : /data/www_bck/varak.cloud_bck/tracker.varak.cloud/vendor/samdark/sitemap/ |
Current File : //data/www_bck/varak.cloud_bck/tracker.varak.cloud/vendor/samdark/sitemap/Index.php |
<?php namespace samdark\sitemap; use XMLWriter; /** * A class for generating Sitemap index (http://www.sitemaps.org/) * * @author Alexander Makarov <sam@rmcreative.ru> */ class Index { /** * @var XMLWriter */ private $writer; /** * @var string index file path */ private $filePath; /** * @var bool whether to gzip the resulting file or not */ private $useGzip = false; /** * @param string $filePath index file path */ public function __construct($filePath) { $this->filePath = $filePath; } /** * Creates new file */ private function createNewFile() { $this->writer = new XMLWriter(); $this->writer->openMemory(); $this->writer->startDocument('1.0', 'UTF-8'); $this->writer->setIndent(true); $this->writer->startElement('sitemapindex'); $this->writer->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); } /** * Adds sitemap link to the index file * * @param string $location URL of the sitemap * @param integer $lastModified unix timestamp of sitemap modification time * @throws \InvalidArgumentException */ public function addSitemap($location, $lastModified = null) { if (false === filter_var($location, FILTER_VALIDATE_URL)) { throw new \InvalidArgumentException( "The location must be a valid URL. You have specified: {$location}." ); } if ($this->writer === null) { $this->createNewFile(); } $this->writer->startElement('sitemap'); $this->writer->writeElement('loc', $location); if ($lastModified !== null) { $this->writer->writeElement('lastmod', date('c', $lastModified)); } $this->writer->endElement(); } /** * @return string index file path */ public function getFilePath() { return $this->filePath; } /** * Finishes writing */ public function write() { if ($this->writer instanceof XMLWriter) { $this->writer->endElement(); $this->writer->endDocument(); $filePath = $this->getFilePath(); if ($this->useGzip) { $filePath = 'compress.zlib://' . $filePath; } file_put_contents($filePath, $this->writer->flush()); } } /** * Sets whether the resulting file will be gzipped or not. * @param bool $value * @throws \RuntimeException when trying to enable gzip while zlib is not available */ public function setUseGzip($value) { if ($value && !extension_loaded('zlib')) { throw new \RuntimeException('Zlib extension must be installed to gzip the sitemap.'); } $this->useGzip = $value; } }