From e90004964fdb60e88e5e77d0ee035679c251ccfd Mon Sep 17 00:00:00 2001
From: Evan Prodromou <evan@prodromou.name>
Date: Mon, 11 Aug 2008 16:00:58 -0400
Subject: [PATCH] correct sitemapindex output

darcs-hash:20080811200058-84dde-8a45ed98a331d3b53ba8e50494e44f52928c7a04.gz
---
 sitemap.php | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/sitemap.php b/sitemap.php
index ae40d7a89a..ca18196586 100644
--- a/sitemap.php
+++ b/sitemap.php
@@ -29,7 +29,7 @@ function index_map() {
 		# Just the file name please.
 		$file_name = preg_replace("|$output_dir|", '', $file_name);
 
-		$index_urls .= url(
+		$index_urls .= sitemap(
 						   array(
 								 'url' => $output_url . $file_name,
 								 'changefreq' => 'daily'
@@ -37,8 +37,7 @@ function index_map() {
 						   );
 	}
 
-	write_file($output_paths['index_file'], urlset($index_urls));
-
+	write_file($output_paths['index_file'], sitemapindex($index_urls));
 }
 
 # Generate sitemap of standard site elements.
@@ -274,6 +273,26 @@ function url($url_args) {
 	return $url_out;
 }
 
+function sitemap($sitemap_args) {
+	$url        = preg_replace('/&/', '&amp;', $sitemap_args['url']); # escape ampersands for XML
+	$lastmod    = $sitemap_args['lastmod'];
+
+	if (is_null($url)) {
+		error("url() arguments require 'url' value.");
+	}
+
+	$sitemap_out = "\t<sitemap>\n";
+	$sitemap_out .= "\t\t<loc>$url</loc>\n";
+
+	if ($lastmod) {
+		$sitemap_out .= "\t\t<lastmod>$lastmod</lastmod>\n";
+	}
+
+	$sitemap_out .= "\t</sitemap>\n";
+
+	return $sitemap_out;
+}
+
 # Generate a <urlset></urlset> element.
 function urlset($urlset_text) {
 	$urlset = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" .
@@ -284,6 +303,16 @@ function urlset($urlset_text) {
 	return $urlset;
 }
 
+# Generate a <urlset></urlset> element.
+function sitemapindex($sitemapindex_text) {
+	$sitemapindex = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" .
+	  '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n" .
+	  $sitemapindex_text .
+	  '</sitemapindex>';
+
+	return $sitemapindex;
+}
+
 # Generate a sitemap from an array containing <url></url> elements and write it to a file.
 function array_to_map($url_list, $filename_prefix) {
 	global $output_paths;
-- 
2.39.5