--- multisite_manager.module.orig	Tue Aug 28 13:16:32 2007
+++ multisite_manager.module	Tue Aug 28 15:08:19 2007
@@ -12,6 +12,8 @@
  * test postgres
  * actual 'management' options?
  * update.php support
+ * option to run each sub-site's cron (add default parameter and drupal site
+ *   parameter; requires upgrade script)
  */
 
 /**
@@ -36,18 +38,40 @@
 }
 
 /**
+ * Implementation of hook_cron()
+ */
+function multisite_manager_cron() {
+  global $db_prefix, $conf;
+
+  // TODO: check if we should run sub-sites' cron jobs
+
+  // find all drupal sites
+  $res = db_query('SELECT `nid` FROM {node} WHERE `type` = "%s"', 'drupal_site');
+  while ($node = db_fetch_object($res)) {
+    $node = node_load($node->nid);
+    $node = _multisite_manager_node_url($node);
+    $node_cron_url = $node->url . '/cron.php';
+    watchdog('cron', t('Running cron for %title at "%url".', array('%title' => $node->title, '%url' => $node_cron_url)));
+    $result = drupal_http_request($node_cron_url);
+
+    if ($result->code >= 400) {
+      watchdog('cron', t('Error running cron for %title due to %error.', array('%title' => $node->title, '%error' => $result->code .' '. $result->error)), WATCHDOG_WARNING);
+    } // end if error
+  } // end while nodes
+} // end function multisite_manager_cron()
+
+/**
  * Implementation of hook_view().
  */
 function multisite_manager_view($node, $teaser = FALSE, $page = FALSE) {
   global $base_url;
   $node = node_prepare($node, $teaser);
   if ($node->link) {
-    $url = str_replace('{base_url}', $base_url, $node->link);
-    $url = str_replace('{shortname}', $node->shortname, $url);
+    $node = _multisite_manager_node_url($node);
     
     //header('Location: '. $url);
     $node->content['link'] = array(
-     '#value' => "<a href=\"$url\">$node->title Site</a>",
+     '#value' => "<a href=\"$node->url\">$node->title Site</a>",
      '#weight' => 1,
      );
   }
@@ -744,4 +768,20 @@
   return system_settings_form($form);
 }
 
-?>
+/**
+ * Gets the node url from the link
+ * 
+ * @param object $node
+ * @return object
+ */
+function _multisite_manager_node_url($node) {
+  if ($node->link) {
+    $node->url = str_replace('{base_url}', $base_url, $node->link);
+    $node->url = str_replace('{shortname}', $node->shortname, $node->url);
+  } // end if node link
+
+  return $node;
+} // end function _multisite_manager_node_url()
+
+// vim:fenc=utf-8:ft=php:ai:si:ts=2:sw=2:et:
+
