JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
set ord span for production, sets ord properly for tasks entering the queue.
authorJason Woofenden <jason283@herkamire.com>
Wed, 17 Dec 2008 20:36:14 +0000 (15:36 -0500)
committerJason Woofenden <jason283@herkamire.com>
Wed, 17 Dec 2008 20:36:14 +0000 (15:36 -0500)
Specifically entering the queue because:
   new record with state=TASK_QUEUE (currently from contractor entering a tiny job w/o approval)
   contractor setting a tiny price
   Note: this was already commited: clicking 'approve price'

tasks.php

index 128023a..e4a8b50 100644 (file)
--- a/tasks.php
+++ b/tasks.php
@@ -168,7 +168,7 @@ function tasks_display_main() {
        }
 }
 
-define('MAX_PRIORITY', 20);
+define('MAX_PRIORITY', 2000000000);
 define('MIN_PRIORITY', 0);
 define('MID_PRIORITY', floor((MAX_PRIORITY - MIN_PRIORITY) / 2));
 
@@ -206,7 +206,6 @@ function prioritize_task($id, $change) {
        list($client_id, $ord) = $row;
        switch($change) {
                case 'top':
-                       message('top');
                        list($highest_id, $highest_ord) = db_get_row('tasks', 'id,ord', 'where client_id=%i && state=%i order by ord desc limit 1', $client_id, TASK_QUEUED);
                        if($highest_id == $id) {
                                message('Already highest priority');
@@ -343,7 +342,8 @@ function tasks_edit_main() {
                        message("Error: can't approve a task entered by/for another client.");
                        return './';
                }
-               db_update('tasks', 'state', TASK_QUEUED, 'where id=%i', $id);
+               $ord = new_lowest_priority($owner);
+               db_update('tasks', 'state,ord', TASK_QUEUED, $ord, 'where id=%i', $id);
                message('Price approved.');
                return './';
        }
@@ -394,6 +394,7 @@ function tasks_edit_main() {
 
        if(isset($_REQUEST['title'])) {
                list($title, $url, $description, $price) = tasks_get_fields();
+               $queuing = false;
 
                # FIXME
                if(isset($_REQUEST['save_draft'])) {
@@ -406,6 +407,7 @@ function tasks_edit_main() {
                        $tiny_agreement = db_get_value('people', 'tiny_agreement', 'where id=%i', $client_id);
                        if($price <= $tiny_agreement) {
                                $state = TASK_QUEUED;
+                               $queuing = true;
                        } else {
                                $state = TASK_NEEDS_GO_AHEAD;
                        }
@@ -422,11 +424,18 @@ function tasks_edit_main() {
 
                if("you're happy with the POSTed values") { # if you change this change the one above
                        if($edit_id) {
+                               $tables = 'title,url,description,state';
+                               $values = array($title, $url, $description, $state);
                                if(isset($_REQUEST['price']) && logged_in_as_contractor()) {
-                                       db_update('tasks', 'title,url,description,state,price', $title, $url, $description, $state, $price, 'where id=%i', $edit_id);
-                               } else {
-                                       db_update('tasks', 'title,url,description,state', $title, $url, $description, $state, 'where id=%i', $edit_id);
+                                       $tables .= ',price';
+                                       array_push($values, $price);
+                               }
+                               if($queuing) {
+                                       $client_id = db_get_value('tasks', 'client_id', 'where id=%i', $edit_id);
+                                       $tables .= ',ord';
+                                       array_push($values, new_lowest_priority($client_id));
                                }
+                               db_update('tasks', $tables, $values, 'where id=%i', $edit_id);
                                message('Task updated.');
                        } else {
                                # new task
@@ -438,7 +447,11 @@ function tasks_edit_main() {
                                        # if client entered the task, no price is set
                                        $price = 0;
                                }
-                               $ord = new_lowest_priority($client_id);
+                               if($state == TASK_QUEUED) {
+                                       $ord = new_lowest_priority($client_id);
+                               } else {
+                                       $ord = 0;
+                               }
                                db_insert('tasks', 'client_id,title,url,description,state,paid,price,ord', $client_id, $title, $url, $description, $state, $paid, $price, $ord);
                                message('Task saved.');
                        }