? xmlsitemap-534170.patch
Index: xmlsitemap.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap.inc,v
retrieving revision 1.1.2.43
diff -u -p -r1.1.2.43 xmlsitemap.inc
--- xmlsitemap.inc	18 Jan 2010 08:32:31 -0000	1.1.2.43
+++ xmlsitemap.inc	20 Jan 2010 16:46:46 -0000
@@ -65,10 +65,24 @@ function xmlsitemap_regenerate() {
     // since the index page (chunk 0) will also need to be generated.
     $chunk_count++;
   }
-  foreach (xmlsitemap_var('languages') as $language) {
-    for ($i = 0; $i < $chunk_count; $i++) {
-      xmlsitemap_generate($i, xmlsitemap_language_load($language));
+
+  if(module_exists('domain')) {
+    $domains = domain_domains();
+    foreach($domains AS $domain) {
+      $domain_name = $domain['path'];
+      $domain_name = str_replace(array("/", "http:"), array("","http://"), $domain_name);
+      foreach (xmlsitemap_var('languages') as $language) {
+        for ($i = 0; $i < $chunk_count; $i++) {
+          xmlsitemap_generate($i, xmlsitemap_language_load($language),$domain_name);
+        }
+      }
     }
+  } else {
+    foreach (xmlsitemap_var('languages') as $language) {
+      for ($i = 0; $i < $chunk_count; $i++) {
+        xmlsitemap_generate($i, xmlsitemap_language_load($language));
+      }
+    }   
   }
 
   _xmlsitemap_regenerate_after();
@@ -173,7 +187,7 @@ function _xmlsitemap_regenerate_after() 
  *
  * @todo Revise/simplify or remove the function.
  */
-function xmlsitemap_generate($chunk = 0, $language = NULL) {
+function xmlsitemap_generate($chunk = 0, $language = NULL, $domain = NULL) {
   if (!is_numeric($chunk) || $chunk > xmlsitemap_get_chunk_count()) {
     // Don't bother translating this string.
     trigger_error('Improper condition hit in xmlsitemap_generate(). Chunk: ' . $chunk . ', Chunk Count: ' . xmlsitemap_get_chunk_count());
@@ -184,7 +198,12 @@ function xmlsitemap_generate($chunk = 0,
     $language = language_default();
   }
 
-  $file = xmlsitemap_get_chunk_file($chunk, $language->language);
+  if(module_exists("domain") && !isset($domain)) {
+    $domain = domain_get_domain();    
+    $domain = $domain['path'];
+  }
+  
+  $file = xmlsitemap_get_chunk_file($chunk, $language->language, 'xml', $domain);
 
   if (!$handle = fopen($file, 'wb')) {
     trigger_error(t('Could not open file @file for writing.', array('@file' => $file)));
@@ -193,10 +212,10 @@ function xmlsitemap_generate($chunk = 0,
 
   $status = TRUE;
   if (xmlsitemap_get_chunk_count() > 1 && !$chunk) {
-    xmlsitemap_generate_index($handle, $status, $language);
+    xmlsitemap_generate_index($handle, $status, $language, $domain);
   }
   else {
-    xmlsitemap_generate_chunk($handle, $status, $chunk, $language);
+    xmlsitemap_generate_chunk($handle, $status, $chunk, $language, $domain);
   }
   fclose($handle);
 
@@ -204,7 +223,7 @@ function xmlsitemap_generate($chunk = 0,
     trigger_error(t('Unknown error occurred while writing to file @file.', array('@file' => $file)));
   }
   elseif (xmlsitemap_var('gz')) {
-    $file_gz = xmlsitemap_get_chunk_file($chunk, $language->language, 'gz');
+    $file_gz = xmlsitemap_get_chunk_file($chunk, $language->language, 'gz', $domain);
     file_put_contents($file_gz, gzencode(file_get_contents($file), 9));
   }
 
@@ -259,7 +278,7 @@ function xmlsitemap_generate_chunk_heade
  * @param $language
  *   A language object for the sitemap chunk.
  */
-function xmlsitemap_generate_chunk($handle, &$status, $chunk, $language) {
+function xmlsitemap_generate_chunk($handle, &$status, $chunk, $language, $domain = NULL) {
   $last_url = '';
 
   $query = array(
@@ -277,6 +296,11 @@ function xmlsitemap_generate_chunk($hand
 
   $sql = implode($query, ' ');
   $url_options = xmlsitemap_get_url_options(array('alias' => TRUE));
+
+  if(isset($domain)) {
+    $url_options['base_url'] = $domain;
+  }
+  
   $offset = max($chunk - 1, 0) * xmlsitemap_get_chunk_size();
   $limit = xmlsitemap_get_chunk_size();
   $query = db_query_range($sql, $args, $offset, $limit);
@@ -343,9 +367,13 @@ function xmlsitemap_generate_index($hand
   // Add the XML header and XSL if desired.
   xmlsitemap_generate_chunk_header('sitemapindex', $handle, $status, $language);
 
+  if(isset($domain)) {
+    $domain = $domain.'-';
+  }
+  
   for ($i = 1; $i <= $chunk_count; $i++) {
     $output = '<sitemap>';
-    $output .= '<loc>' . url('sitemap-' . $i . '.xml', $url_options) . '</loc>';
+    $output .= '<loc>' . url('sitemap-' . $domain . $i . '.xml', $url_options) . '</loc>';
     // @todo Use the actual lastmod value of the chunk file.
     $output .= '<lastmod>' . gmdate(DATE_W3C, REQUEST_TIME) . '</lastmod>';
     $output .= '</sitemap>' . PHP_EOL;
Index: xmlsitemap.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap.module,v
retrieving revision 1.20.2.45.2.130
diff -u -p -r1.20.2.45.2.130 xmlsitemap.module
--- xmlsitemap.module	18 Jan 2010 08:32:31 -0000	1.20.2.45.2.130
+++ xmlsitemap.module	20 Jan 2010 16:46:46 -0000
@@ -566,8 +566,14 @@ function xmlsitemap_delete_link(array $c
  *
  * @todo Move to xmlsitemap.inc
  */
-function xmlsitemap_get_chunk_file($chunk = 0, $language, $extension = 'xml') {
-  return xmlsitemap_get_directory() . "/xmlsitemap-{$language}-{$chunk}.{$extension}";
+function xmlsitemap_get_chunk_file($chunk = 0, $language, $extension = 'xml', $domain = NULL) {
+  if(isset($domain)) {
+    //$domain = $domain . "-";
+    $domain = str_replace(array("http://", '/'), "", $domain);
+  } else {
+    $domain = "";
+  }
+  return xmlsitemap_get_directory() . "/xmlsitemap-{$domain}-{$language}-{$chunk}.{$extension}";
 }
 
 /**
Index: xmlsitemap.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap.pages.inc,v
retrieving revision 1.1.2.32
diff -u -p -r1.1.2.32 xmlsitemap.pages.inc
--- xmlsitemap.pages.inc	18 Jan 2010 01:44:17 -0000	1.1.2.32
+++ xmlsitemap.pages.inc	20 Jan 2010 16:46:46 -0000
@@ -16,6 +16,12 @@
 function xmlsitemap_output_chunk($chunk = 0) {
   global $language;
 
+  $domain = null;
+  if(module_exists("domain")) {
+    $domain = domain_get_domain();  
+    $domain = $domain['path'];
+  }
+  
   // @todo Remove this from the final version?
   if (isset($_GET['refresh']) && user_access('administer xmlsitemap')) {
     module_load_include('inc', 'xmlsitemap');
