# HG changeset patch # User Tom Fredrik "BFG" Klaussen # Date 1458051097 -3600 # Node ID 4854db07f14f18d4f07a05f509d32e31dd70c06b # Parent adf7b11921f4bb962939fe826d3bc0666e7a268a Fix bug when creating sitemaps introduced when adding common element. diff -r adf7b11921f4 -r 4854db07f14f Sitemap.inc --- 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 = ''; $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) {