cvs diff: Diffing modules/project/release
Index: modules/project/release/package-release-nodes.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/package-release-nodes.php,v
retrieving revision 1.22
diff -u -p -u -p -r1.22 package-release-nodes.php
--- modules/project/release/package-release-nodes.php	22 Aug 2007 16:30:52 -0000	1.22
+++ modules/project/release/package-release-nodes.php	19 Sep 2007 16:45:31 -0000
@@ -167,6 +167,7 @@ elseif ($task == 'repair') {
 // ------------------------------------------------------------
 
 function package_releases($type, $project_id) {
+  global $wd_err_msg;
   if ($type == 'tag') {
     $where = " AND (prn.rebuild = 0) AND (prn.file_path = '')";
     $plural = t('tags');
@@ -198,6 +199,7 @@ function package_releases($type, $projec
   $num_considered = 0;
   $project_nids = array();
   while ($release = db_fetch_object($query)) {
+    $wd_err_msg = array();
     $version = $release->version;
     $uri = $release->uri;
     $tag = $release->tag;
@@ -207,6 +209,7 @@ function package_releases($type, $projec
     $uri = escapeshellcmd($uri);
     $version = escapeshellcmd($version);
     $rev = escapeshellcmd($rev);
+    db_query("DELETE FROM {project_release_package_errors} WHERE nid = %d", $nid);
     if ($release->rid == 1) {
       $built = package_release_core($nid, $uri, $version, $rev);
     }
@@ -219,6 +222,9 @@ function package_releases($type, $projec
       $project_nids[$pid] = TRUE;
     }
     $num_considered++;
+    if (count($wd_err_msg)) {
+      db_query("INSERT INTO {project_release_package_errors} (nid, messages) values (%d, '%s')", $nid, serialize($wd_err_msg));
+    }
   }
   if ($num_built || $type == 'branch') {
     if (!empty($project_id)) {
@@ -589,8 +595,13 @@ function wd_msg($msg, $link = NULL) {
  * Wrapper function for watchdog() to log error messages.
  */
 function wd_err($msg, $link = NULL) {
+  global $wd_err_msg;
+  if (!isset($wd_err_msg)) {
+    $wd_err_msg = array();
+  }
   watchdog('package_error', $msg, WATCHDOG_ERROR, $link);
   echo $msg ."\n";
+  $wd_err_msg[] = $msg;
 }
 
 /**
Index: modules/project/release/project_release.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.install,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 project_release.install
--- modules/project/release/project_release.install	22 Aug 2007 16:30:52 -0000	1.12
+++ modules/project/release/project_release.install	19 Sep 2007 16:45:32 -0000
@@ -36,6 +36,11 @@ function project_release_install() {
           major int unsigned NOT NULL default '0',
           PRIMARY KEY (nid, tid)
         ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
+      db_query("CREATE TABLE IF NOT EXISTS {project_release_package_errors} (
+          nid int unsigned NOT NULL default '0',
+          messages text,
+          PRIMARY KEY (nid)
+        ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
       db_query("CREATE TABLE IF NOT EXISTS {cache_project_release} (
         cid varchar(255) BINARY NOT NULL default '',
         data longblob,
@@ -84,6 +89,13 @@ function project_release_install() {
             PRIMARY KEY (nid, tid)
           );");
       }
+      if (!db_table_exists('project_release_package_errors')) {
+        db_query("CREATE TABLE {project_release_package_errors} (
+          nid int NOT NULL default '0',
+          messages text,
+          PRIMARY KEY (nid)
+        )");
+      }
       if (!db_table_exists('cache_project_release')) {
         db_query("CREATE TABLE {cache_project_release} (
           cid varchar(255) NOT NULL default '',
@@ -247,3 +259,30 @@ function project_release_update_5001() {
   }
   return $ret;
 }
+
+/**
+ * Add {project_release_package_errors} table to track packaging errors.
+ */
+function project_release_update_5002() {
+  $ret = array();
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("CREATE TABLE IF NOT EXISTS {project_release_package_errors} (
+          nid int unsigned NOT NULL default '0',
+          messages text NOT NULL,
+          PRIMARY KEY (nid)
+        ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
+      break;
+    case 'pgsql':
+      if (!db_table_exists('project_release_package_errors')) {
+        $ret[] = update_sql("CREATE TABLE {project_release_package_errors} (
+          nid int NOT NULL default '0',
+          messages text,
+          PRIMARY KEY (nid)
+        )");
+      }
+      break;
+  }
+  return $ret;
+}
Index: modules/project/release/project_release.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release/project_release.module,v
retrieving revision 1.46
diff -u -p -u -p -r1.46 project_release.module
--- modules/project/release/project_release.module	23 Aug 2007 23:26:38 -0000	1.46
+++ modules/project/release/project_release.module	19 Sep 2007 16:45:33 -0000
@@ -754,8 +754,23 @@ function project_release_view($node, $te
   }
   $node->content['release_info'] = array(
     '#value' => '<div class="project-release">'. $output .'</div>',
-    '#weight' => -1,
+    '#weight' => -2,
   );
+
+  // Display packaging errors to admins.
+  if (project_check_admin_access($node->pid)) {
+    $rows = array();
+    $result = db_query('SELECT * FROM {project_release_package_errors} WHERE nid = %d', $node->nid);
+    $error = db_fetch_object($result);
+    $rows = unserialize($error->messages);
+    if (!empty($rows)) {
+      $node->content['release_errors'] = array(
+        '#value' => theme('item_list', $rows, t('Packaging error messages')),
+        '#weight' => -1,
+      );
+    }
+  }
+
   return $node;
 }
 
