? task/.hosting_task.module.swp
Index: task/hosting_task.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/hosting/task/hosting_task.module,v
retrieving revision 1.75
diff -u -p -r1.75 hosting_task.module
--- task/hosting_task.module	21 Sep 2009 10:10:58 -0000	1.75
+++ task/hosting_task.module	23 Sep 2009 16:11:47 -0000
@@ -138,7 +138,7 @@ function hosting_task_retry($task_id) {
   if (!$node->queued) {
     drupal_set_message(t("The task is being retried and has been added to the hosting queue again"));
     hosting_task_log($node->vid, 'queue', t("The task is being retried and has been added to the hosting queue again"));
-    $node->revision = FALSE;
+    $node->revision = TRUE;
     $node->queued = 1;
     node_save($node);
   }
@@ -151,16 +151,21 @@ function hosting_task_retry($task_id) {
 function hosting_add_task($nid, $type, $args = null) {
  global $user;
 
- $node = node_load($nid);
- $task = new stdClass();
- $task->type = 'task';
+ $task = hosting_get_most_recent_task($nid, $type);
+
+ if (!$task) {
+    $node = node_load($nid);
+    $task = new stdClass();
+    $task->type = 'task';
+    # TODO: make this pretty
+    $task->title = t("!type !title", array('!type' => $type, '!title' => $node->title) );
+    $task->task_type = $type;
+    $task->rid = $node->nid;
+ }
  $task->uid = $user->uid;
  $task->status = 1;
- #todo: make this pretty
- $task->title = t("!type !title", array('!type' => $type, '!title' => $node->title) );
- $task->task_type = $type;
  $task->task_status = HOSTING_TASK_QUEUED;
- $task->rid = $node->nid;
+ $task->revision = TRUE;
  $task->queued = 1;
 
  #arguments, such as which backup to restore.
@@ -274,7 +279,7 @@ function hosting_task_insert($node) {
     db_query("INSERT INTO {hosting_task_queue} (nid, timestamp, status) VALUES (%d, %d, %d)", $node->nid, mktime(), 1);
   }
   else {
-    db_query("UPDATE {hosting_task_queue} SET status = %d WHERE nid=%d", $node->queued, $node->nid);
+    db_query("UPDATE {hosting_task_queue} SET status=%d, timestamp=%d WHERE nid=%d", $node->queued, mktime(), $node->nid);
   }
 }
 
@@ -293,7 +298,7 @@ function hosting_task_update($node) {
     hosting_task_set_title($node);
     db_query("UPDATE {hosting_task} SET nid=%d, task_type = '%s', rid = %d, executed=%d, task_status=%d WHERE vid=%d",
       $node->nid, $node->task_type, $node->rid, $node->executed, $node->task_status, $node->vid);
-    db_query("UPDATE {hosting_task_queue} SET status=%d WHERE nid=%d", $node->queued, $node->nid);
+    db_query("UPDATE {hosting_task_queue} SET status=%d, timestamp=%d WHERE nid=%d", $node->queued, mktime(), $node->nid);
     if (is_array($node->task_args)) {
       # Wipe out old arguments first, since arguments could theoretically be removed.
       db_query("DELETE FROM {hosting_task_arguments} WHERE vid=%d", $node->vid);
@@ -506,7 +511,7 @@ function hosting_get_tasks($filter_by = 
     $cond = ' AND t.' . $filter_by . ' = %d';
     $args[] = $filter_value;
   }
-  $result = pager_query(db_rewrite_sql("SELECT *, t.task_status,q.status as queued FROM {node} n left join {hosting_task} t on n.vid=t.vid LEFT JOIN {hosting_task_queue} q ON t.nid=q.nid WHERE type='%s'" . $cond . " ORDER BY n.nid DESC"), $count, $element, NULL, $args);
+  $result = pager_query(db_rewrite_sql("SELECT *, t.task_status,q.status as queued FROM {node} n left join {hosting_task} t on n.vid=t.vid LEFT JOIN {hosting_task_queue} q ON t.nid=q.nid WHERE type='%s'" . $cond . " ORDER BY n.changed DESC, n.nid DESC"), $count, $element, NULL, $args);
   
   while ($row = db_fetch_object($result)) {
     $nodes[] = $row;
