Example #1
0
$projTasksWithEndDates = array($object->task_id => $AppUI->_('None'));
//arrays contains task end date info for setting new task start date as maximum end date of dependenced tasks
$all_tasks = array();
$subtasks = $object->getNonRootTasks($task_project);
foreach ($subtasks as $sub_task) {
    // Build parent/child task list
    $parents[$sub_task['task_parent']][] = $sub_task['task_id'];
    $all_tasks[$sub_task['task_id']] = $sub_task;
    build_date_list($projTasksWithEndDates, $sub_task);
}
$task_parent_options = '';
$root_tasks = $object->getRootTasks((int) $task_project);
foreach ($root_tasks as $root_task) {
    build_date_list($projTasksWithEndDates, $root_task);
    if ($root_task['task_id'] != $object_id) {
        $task_parent_options .= buildTaskTree($root_task, 0, array(), $all_tasks, $parents, $task_parent, $object_id);
    }
}
// setup the title block
$ttl = $object_id > 0 ? 'Edit Task' : 'Add Task';
$titleBlock = new w2p_Theme_TitleBlock($ttl, 'icon.png', $m);
$titleBlock->addViewLink('project', $task_project);
$titleBlock->addViewLink('task', $object_id);
$titleBlock->show();
// Get contacts list
$selected_contacts = array();
if ($object_id) {
    $myContacts = $object->getContacts(null, $object_id);
    $selected_contacts = array_keys($myContacts);
}
if ($object_id == 0 && (isset($contact_id) && $contact_id > 0)) {
/**
 * Deprecated in favor of buildTaskTree which doesn't use any globals.
 * TODO:  Remove for v4.0 - caseydk 20 September 2012
 *
 * @deprecated
 */
function constructTaskTree_pd($task_data, $parents, $all_tasks, $depth = 0)
{
    global $projTasks, $all_tasks, $task_parent, $task_id;
    trigger_error("The constructTaskTree_pd function has been deprecated and will be removed in v4.0. Use buildTaskTree() instead.", E_USER_NOTICE);
    return buildTaskTree($task_data, $depth, $projTasks, $all_tasks, $parents, $task_parent, $task_id);
}
function buildTaskTree($task_data, $depth = 0, $projTasks, $all_tasks, $parents, $task_parent, $task_id)
{
    $output = '';
    $projTasks[$task_data['task_id']] = $task_data['task_name'];
    $task_data['task_name'] = mb_strlen($task_data['task_name']) > 45 ? mb_substr($task_data['task_name'], 0, 45) . '...' : $task_data['task_name'];
    $selected = $task_data['task_id'] == $task_parent ? ' selected="selected"' : '';
    $output .= '<option value="' . $task_data['task_id'] . '"' . $selected . '>' . str_repeat('&nbsp;', $depth * 3) . w2PFormSafe($task_data['task_name']) . '</option>';
    if (isset($parents[$task_data['task_id']])) {
        foreach ($parents[$task_data['task_id']] as $child_task) {
            if ($child_task != $task_id) {
                $output .= buildTaskTree($all_tasks[$child_task], $depth + 1, $projTasks, $all_tasks, $parents, $task_parent, $task_id);
            }
        }
    }
    return $output;
}