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) {