/** * Tests values that are not strings * */ public function testNotString() { $values = array(1, 1.4, null, new stdClass(), true, false); foreach ($values as $value) { $this->assertSame(false, $this->_validator->isValid($value)); } }
/** * Returns a DOMDocument containing the Sitemap XML for the given container * * @param Zym_Navigation_Container $container [optional] container to get * breadcrumbs from, defaults * to what is registered in the * helper * @return DOMDocument * @throws DomainException if schema validation is on and the sitemap * is invalid according to the sitemap schema, or * of sitemap validators are used and the loc * element fails validation */ public function getDomSitemap(Zym_Navigation_Container $container = null) { if (null === $container) { $container = $this->getNavigation(); } // create iterator $iterator = new RecursiveIteratorIterator($container, RecursiveIteratorIterator::SELF_FIRST); if (is_int($this->_maxDepth)) { $iterator->setMaxDepth($this->_maxDepth); } // check if we should validate using our own validators if ($this->getUseSitemapValidators()) { require_once 'Zym/Validate/Sitemap/Changefreq.php'; require_once 'Zym/Validate/Sitemap/Lastmod.php'; require_once 'Zym/Validate/Sitemap/Loc.php'; require_once 'Zym/Validate/Sitemap/Priority.php'; // create validators $locValidator = new Zym_Validate_Sitemap_Loc(); $lastmodValidator = new Zym_Validate_Sitemap_Lastmod(); $changefreqValidator = new Zym_Validate_Sitemap_Changefreq(); $priorityValidator = new Zym_Validate_Sitemap_Priority(); } // create document $dom = new DOMDocument('1.0', 'UTF-8'); $dom->formatOutput = $this->_formatOutput; // ...and urlset (root) element $urlSet = $dom->createElementNS(self::SITEMAP_NS, 'urlset'); $dom->appendChild($urlSet); // iterate navigation foreach ($iterator as $page) { if (!$this->_accept($page)) { // page is not accepted continue; } // create url node for this page $urlNode = $dom->createElementNS(self::SITEMAP_NS, 'url'); // get absolute url from page $url = $this->_getUrl($page); $urlSet->appendChild($urlNode); if ($this->getUseSitemapValidators() && !$locValidator->isValid($url)) { $msg = "Invalid sitemap URL: '{$url}'"; throw new DomainException($msg); } // put url in 'loc' element $urlNode->appendChild($dom->createElementNS(self::SITEMAP_NS, 'loc', $url)); // add 'lastmod' element if a valid lastmod is set in page if (isset($page->lastmod)) { $lastmod = strtotime((string) $page->lastmod); // prevent 1970-01-01... if ($lastmod !== false) { $lastmod = date('c', $lastmod); } if (!$this->getUseSitemapValidators() || $lastmodValidator->isValid($lastmod)) { $urlNode->appendChild($dom->createElementNS(self::SITEMAP_NS, 'lastmod', $lastmod)); } } // add 'changefreq' element if a valid changefreq is set in page if (isset($page->changefreq)) { $changefreq = $page->changefreq; if (!$this->getUseSitemapValidators() || $changefreqValidator->isValid($changefreq)) { $urlNode->appendChild($dom->createElementNS(self::SITEMAP_NS, 'changefreq', $changefreq)); } } // add 'priority' element if a valid priority is set in page if (isset($page->priority)) { $priority = $page->priority; if (!$this->getUseSitemapValidators() || $priorityValidator->isValid($priority)) { $urlNode->appendChild($dom->createElementNS(self::SITEMAP_NS, 'priority', $priority)); } } } // validate using schema if specified if ($this->getUseSchemaValidation()) { if (!@$dom->schemaValidate(self::SITEMAP_XSD)) { $msg = 'Sitemap is invalid according to ' . self::SITEMAP_XSD; throw new DomainException($msg); } } return $dom; }