X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=tasks.php;h=dd4ad15460119282d004c97f363c5eaa289705cb;hb=ba364b253f2a61970eee1432b4e4393ad9a3241a;hp=128023a2825ccb4210e6d238cfbeff7243f05f62;hpb=5cbc553fa7adf352e63aaff4fe99600e476e6c59;p=contractor-progress.git diff --git a/tasks.php b/tasks.php index 128023a..dd4ad15 100644 --- a/tasks.php +++ b/tasks.php @@ -84,12 +84,12 @@ function tasks_display_main() { $task_id = format_int($_REQUEST['tasks_id']);; $client_id = logged_in(); if(logged_in_as_contractor()) { - $row = db_get_row('tasks', 'title,url,description,state,price,client_id', 'where id=%i', $task_id); + $row = db_get_row('tasks', 'title,url,description,state,price,client_id,paid', 'where id=%i', $task_id); } else { - $row = db_get_row('tasks', 'title,url,description,state,price,client_id', 'where id=%i && client_id=%i', $task_id, $client_id); + $row = db_get_row('tasks', 'title,url,description,state,price,client_id,paid', 'where id=%i && client_id=%i', $task_id, $client_id); } if($row) { - list($title, $url, $description, $state, $price, $owner_id) = $row; + list($title, $url, $description, $state, $price, $owner_id, $paid) = $row; tem_set('task_id', $task_id); tem_set('title', $title); tem_set('url', $url); @@ -129,8 +129,12 @@ function tasks_display_main() { } # FALL THROUGH case TASK_FINISHED: + if($paid) { + tem_show('marked_paid'); + } else { + tem_show('mark_paid_link'); + } tem_show('price_row'); - tem_show('mark_paid_link'); # FIXME break; } } else { @@ -168,7 +172,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 +210,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 +346,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 './'; } @@ -355,8 +359,8 @@ function tasks_edit_main() { return './'; } db_update('tasks', 'state', TASK_WORKING, 'where id=%i', $id); - message('OK, client locked out of modifying that one.'); - return './'; + message('Task marked as "in progress".'); + return './tasks?tasks_id=' . $id; } if(isset($_REQUEST['tasks_needs_testing_id'])) { @@ -394,6 +398,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 +411,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 +428,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 +451,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.'); }