Exemple #1
0
function process_dependencies($i)
{
    global $tasks, $option_advance_if_possible;
    if ($tasks[$i]["fixed"]) {
        return;
    }
    log_info("<div style='padding-left: 1em'>Dependecies for '" . $tasks[$i]["task_name"] . "':<br />");
    // query dependencies for this task
    $query = mysql_query("select tasks.* from tasks,task_dependencies where task_id=dependencies_req_task_id and dependencies_task_id=" . $tasks[$i]["task_id"]);
    if (mysql_num_rows($query) != 0) {
        $all_fixed = true;
        $latest_end_date = null;
        // store dependencies in an array (for adding more entries on the fly)
        $dependencies = array();
        while ($row = mysql_fetch_array($query)) {
            array_push($dependencies, $row);
        }
        $d = 0;
        while ($d < count($dependencies)) {
            $row = $dependencies[$d];
            $index = search_task($row["task_id"]);
            if ($index == -1) {
                // task is not listed => it's a task group
                // => $i depends on all its subtasks
                // => add all subtasks to the dependencies array
                log_info("- task '" . $row["task_name"] . "' is a task group (processing subtask's dependencies)");
                $children = get_last_children($row);
                // replace this taskgroup with all its subtasks
                array_splice($dependencies, $d, 1, $children);
                continue;
            }
            log_info(" - '" . $tasks[$index]["task_name"] . ($tasks[$index]["fixed"] ? " (FIXED)" : "") . "'");
            // TODO: Detect dependencies loops (A->B, B->C, C->A)
            process_dependencies($index);
            if (!$tasks[$index]["fixed"]) {
                $all_fixed = false;
            } else {
                // ignore dependencies of finished tasks if option is enabled
                if (!$option_advance_if_possible || $tasks[$index]["task_percent_complete"] != 100) {
                    // get latest end_date
                    $end_date = db_dateTime2unix($tasks[$index]["task_end_date"]);
                    if (!$latest_end_date || $end_date > $latest_end_date) {
                        $latest_end_date = $end_date;
                        $dep_on_task = $row;
                    }
                } else {
                    log_info("this task is complete => don't check dependency");
                }
                $d++;
            }
        }
        if ($all_fixed) {
            // this task depends only on fixated tasks
            log_info("all dependencies are fixed");
            fixate_task($i, $latest_end_date, $dep_on_task);
        } else {
            log_error("task has not fixed dependencies");
        }
    } else {
        // task has no dependencies
        log_info("no dependencies => ");
        fixate_task($i, time(), "");
    }
    log_info("</div><br />\n");
}
     task_preview();
     break;
 case 2:
     delete_task();
     break;
 case 3:
     add_task();
     break;
 case 4:
     update_task();
     break;
 case 5:
     display_tasks();
     break;
 case 6:
     search_task();
     break;
 case 7:
     user_login();
     break;
 case 8:
     delete_tasks();
     break;
 case 9:
     select_collaborator();
     break;
 case 10:
     display_created_task();
     break;
 case 11:
     search_created_tasks();
Exemple #3
0
        $query .= " AND Task.Status='{$pLevel}'";
    }
    if ($pKeyword != '') {
        $query .= " AND Task.Target LIKE '%{$pKeyword}%'";
    }
    if (is_int($pId) and $pId > 0) {
        $query .= " AND Task.ID={$pId}";
    }
    // echo $query.'<br>';
    $ret = array('data' => array());
    $result = mysql_query($query);
    while ($row = mysql_fetch_row($result)) {
        // var_dump($row);
        foreach ($row as $key => $value) {
            // echo $key.' => '.$value;
            $row[$key] = check_xss($value);
        }
        $ret['data'][] = $row;
        // var_dump($row);
    }
    return $ret;
}
//	check login first
if (!already_login()) {
    die;
}
$keyword = check_sql(trim($_REQUEST['keyword']));
$level = (int) $_REQUEST['level'];
$taskID = (int) $_REQUEST['taskid'];
$data = search_task($level, $keyword, $taskID);
echo json_encode($data);