Index: modules/project/project.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.inc,v
retrieving revision 1.62
diff -u -r1.62 project.inc
--- modules/project/project.inc	8 Nov 2005 19:36:59 -0000	1.62
+++ modules/project/project.inc	14 Dec 2005 17:08:01 -0000
@@ -348,12 +348,8 @@
       // Download section
       $links = array();
 
-      if ($release->version == 'cvs') {
-        $links[] = '<a href="' . $release->path . '">' . t('Download latest release (%version)', array('%version' => $release->version)) . '</a>';
-      }
-      else {
-        $links[] = '<a href="' . $release->path . '">' . t('Download latest release (%version, %date)', array('%version' => $release->version, '%date' => format_date($release->created, 'small')))  . '</a>';
-      }
+      $links[] = '<a href="' . $release->path . '">' . t('Download latest release (%version, %date, %size)', array('%version' => $release->version, '%date' => format_date($release->changed, 'small'), '%size' => format_size(filesize($release->path))))  . '</a>';
+
       if ($release->changes) {
         $links[] = l(t('Read release notes'), 'node/'. $node->nid .'/release', null, null, 'version-'. $release->version);
       }
Index: modules/project/project.mysql
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.mysql,v
retrieving revision 1.19
diff -u -r1.19 project.mysql
--- modules/project/project.mysql	6 Nov 2005 19:45:39 -0000	1.19
+++ modules/project/project.mysql	17 Nov 2005 01:40:24 -0000
@@ -47,6 +47,7 @@
   KEY project_releases_nid (nid)
 ) TYPE=MyISAM;
 ALTER TABLE project_releases ADD status tinyint(1) unsigned NOT NULL default '1';
+ALTER TABLE project_releases ADD hash varchar(32) NOT NULL default '';
 
 --
 -- Table structure for table 'project_issues'
Index: modules/project/project.pgsql
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.pgsql,v
retrieving revision 1.7
diff -u -r1.7 project.pgsql
--- modules/project/project.pgsql	16 Nov 2005 18:51:06 -0000	1.7
+++ modules/project/project.pgsql	17 Nov 2005 01:40:33 -0000
@@ -37,6 +37,7 @@
   fid int NOT NULL default '0',
   path varchar(255) NOT NULL default '',
   created int NOT NULL default '0',
+  hash varchar(32) NOT NULL default '',
   version varchar(255) NOT NULL default '',
   changes text,
   weight smallint NOT NULL default '0',
Index: modules/project/release.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/release.inc,v
retrieving revision 1.62
diff -u -r1.62 release.inc
--- modules/project/release.inc	8 Nov 2005 21:03:25 -0000	1.62
+++ modules/project/release.inc	14 Dec 2005 17:13:19 -0000
@@ -271,11 +271,15 @@
   }
 
   if ($release->path) {
-    $output .= '<small>Download: <a href="' . $release->path . '">' . $release->path . '</a>' . '</small><br />';
+    $output .= '<small>' . t('Download: <a href="%path">%path</a>', array('%path' => $release->path)) . '</small><br />';
+    $output .= '<small>' . t('Size: %size', array('%size' => format_size(filesize($release->path)))) . '</small><br />';
+    $output .= '<small>' . t('md5_file hash: %hash', array('%hash' => $release->hash)) . '</small><br />';
   }
-
   if ($release->created) {
-    $output .= '<small>Released: ' . format_date($release->created) . '</small><br />';
+    $output .= '<small>' . t('First released: %created', array('%created' => format_date($release->created))) . '</small><br />';
+  }
+  if ($release->changed  && ($release->changed != $release->created)) {
+    $output .= '<small>' . t('Last updated: %changed', array('%changed' => format_date($release->changed))) . '</small><br />';
   }
 
   $output .= $release->changes;
@@ -316,7 +320,7 @@
 function project_release_save($release) {
   $fields = array('rid' => '%d', 'nid' => '%d', 'fid' => '%d',
                     'path' => "'%s'", 'created' => '%d',
-                    'changed' => '%d', 'version' => "'%s'",
+                    'changed' => '%d', 'hash' => '"%s"', 'version' => "'%s'",
                     'changes' => "'%s'", 'status' => '%d');
 
   $node = node_load($release->nid);
@@ -340,6 +344,7 @@
     if ($release->path) {
       $release->created = ($release->version == 'cvs') ? 0 : filectime($release->path);
       $release->changed = filemtime($release->path);
+      $release->hash = md5_file($release->path);
     }
     else {
       $release->created = ($release->version == 'cvs') ? 0 : time();
@@ -369,8 +374,19 @@
     */
 
     unset($release->created);
-    if (!$release->scan) {
-      $release->changed = filemtime($release->path);
+    if($release->path) {
+      if ($release->scan) {
+        // Load previous md5_file hash value, and test it agains the current one to see if the file has changed.
+        $previous = db_fetch_object(db_query("SELECT hash FROM {project_releases} WHERE rid = %d", $release->rid));
+        if (md5_file($release->path) != $previous->hash) {
+          $release->hash = md5_file($release->path);
+          $release->changed = time();
+        }
+      }
+      else {
+        $release->hash = md5_file($release->path);
+        $release->changed = filemtime($release->path);
+      }
     }
 
     // Prepare the query:
