Mercurial > SimpleWebPresenter
changeset 112:4854db07f14f
Fix bug when creating sitemaps introduced when adding common element.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Tue, 15 Mar 2016 15:11:37 +0100 |
| parents | adf7b11921f4 |
| children | d547cae319f0 |
| files | Sitemap.inc |
| diffstat | 1 files changed, 51 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/Sitemap.inc Tue Mar 15 12:55:42 2016 +0100 +++ b/Sitemap.inc Tue Mar 15 15:11:37 2016 +0100 @@ -69,7 +69,49 @@ return false; } + private function processDir($dir, $lang, $acceptedLanguages, $base) { + $urls = array(); + + if ($handle = opendir(basePath() . "/${dir}")) { + while (false !== ($entry = readdir($handle))) { + if (endsWith($entry, '.xml')) { + $fentry = basepath() . "/${dir}/${entry}"; + + $doc = new DOMDocument(); + + if (file_exists($fentry)) { + $doc->load($fentry); + + $opts = array(); + if (count($acceptedLanguages) > 1) { + $opts['lang'] = $lang; + } + + $toplevel = $doc->getElementsByTagName("toplevel"); + + if($toplevel->length) { + $name = substr($entry, 0, -4); + + if ($name != $this->options->getInputDefault('name')) { + $opts['name'] = $name; + } + + $optstring = genUrl($opts, array(), array('lang', 'name')); + + $location = "${base}${optstring}/"; + + array_push($urls, $location); + } + } + } + } + closedir($handle); + } + return $urls; + } + function generateContent() { + /// The final output variable $out = '<?xml version="1.0" encoding="UTF-8"?>'; $out .= "\n"; @@ -92,42 +134,16 @@ $urls = array(); foreach($this->options->getAcceptedLanguages() as $lang) { - if ($handle = opendir(basePath() . "/${lang}")) { - while (false !== ($entry = readdir($handle))) { - if (endsWith($entry, '.xml')) { - $fentry = basepath() . "/${lang}/${entry}"; - $doc = new DOMDocument(); - - if (file_exists($fentry)) { - $doc->load($fentry); - - $opts = array(); - if (count($acceptedLanguages) > 1) { - $opts['lang'] = $lang; - } - - $toplevel = $doc->getElementsByTagName("toplevel"); - - if($toplevel->length) { - $name = substr($entry, 0, -4); - - if ($name != $this->options->getInputDefault('name')) { - $opts['name'] = $name; - } - - $optstring = genUrl($opts, array(), array('lang', 'name')); - - $location = "${base}${optstring}/"; - - array_push($urls, $location); - } - } - } - } - closedir($handle); - } + $urls=array_merge($urls, + $this->processDir($lang, $lang, + $acceptedLanguages, $base) + ); + $urls=array_merge($urls, + $this->processDir("common", $lang, + $acceptedLanguages, $base) + ); } - + usort($urls, "cmp_length_lex"); foreach($urls as $location) {
