Esempio n. 1
0
function array_csort()
{
    $args = func_get_args();
    $marray = array_shift($args);
    if (empty($marray)) {
        return array();
    }
    $i = 0;
    $msortline = 'return(array_multisort(';
    $sortarr = array();
    foreach ($args as $arg) {
        if ($i % 3) {
            $msortline .= $arg . ', ';
        } else {
            foreach ($marray as $j => $item) {
                /* we have to calculate the end_date via start_date+duration for 
                		 ** end='0000-00-00 00:00:00' before sorting, see mantis #1509:
                		 
                		 ** Task definition writes the following to the DB:
                		 ** A without start date: start = end = NULL
                		 ** B with start date and empty end date: start = startdate, 
                		                                          end = '0000-00-00 00:00:00'
                		 ** C start + end date: start= startdate, end = end date
                		 
                		 ** A the end_date for the middle task (B) is ('dynamically') calculated on display 
                		 ** via start_date+duration, it may be that the order gets wrong due to the fact 
                		 ** that sorting has taken place _before_.
                		 */
                if ($item['task_end_date'] == '0000-00-00 00:00:00') {
                    $item['task_end_date'] = calcEndByStartAndDuration($marray[$j]);
                }
                $sortarr[$i][$j] = $marray[$j][$arg];
            }
            $msortline .= '$sortarr[' . $i . '], ';
        }
        $i++;
    }
    $msortline .= '$marray));';
    eval($msortline);
    return $marray;
}
Esempio n. 2
0
 if ($task_sort_item1 != '') {
     if ($task_sort_item2 != '' && $task_sort_item1 != $task_sort_item2) {
         $p['tasks'] = array_csort($p['tasks'], $task_sort_item1, $task_sort_order1, $task_sort_type1, $task_sort_item2, $task_sort_order2, $task_sort_type2);
     } else {
         $p['tasks'] = array_csort($p['tasks'], $task_sort_item1, $task_sort_order1, $task_sort_type1);
     }
 } else {
     /* we have to calculate the end_date via start_date+duration for 
      ** end='0000-00-00 00:00:00' if array_csort function is not used
      ** as it is normally done in array_csort function in order to economise
      ** cpu time as we have to go through the array there anyway
      */
     if (is_array($p['tasks'])) {
         foreach ($p['tasks'] as $j => $task_change_end_date) {
             if ($task_change_end_date['task_end_date'] == '0000-00-00 00:00:00') {
                 $task_change_end_date['task_end_date'] = calcEndByStartAndDuration($task_change_end_date);
             }
         }
     }
 }
 global $tasks_filtered, $children_of;
 //get list of task ids and set-up array of children
 if (is_array($p['tasks'])) {
     foreach ($p['tasks'] as $i => $t) {
         $tasks_filtered[] = $t['task_id'];
         $children_of[$t['task_parent']] = $children_of[$t['task_parent']] ? $children_of[$t['task_parent']] : array();
         if ($t['task_parent'] != $t['task_id']) {
             array_push($children_of[$t['task_parent']], $t['task_id']);
         }
     }
 }
Esempio n. 3
0
    }
} else {
    // All this appears to already be handled in todo.php ... should consider deleting this else block
    /* we have to calculate the end_date via start_date+duration for
     ** end='0000-00-00 00:00:00' if array_csort function is not used
     ** as it is normally done in array_csort function in order to economise
     ** cpu time as we have to go through the array there anyway
     */
    for ($j = 0, $j_cmp = count($tasks); $j < $j_cmp; $j++) {
        if ($tasks[$j]['task_end_date'] == '0000-00-00 00:00:00' || $tasks[$j]['task_end_date'] == '') {
            if ($tasks[$j]['task_start_date'] == '0000-00-00 00:00:00' || $tasks[$j]['task_start_date'] == '') {
                $tasks[$j]['task_start_date'] = '0000-00-00 00:00:00';
                //just to be sure start date is "zeroed"
                $tasks[$j]['task_end_date'] = '0000-00-00 00:00:00';
            } else {
                $tasks[$j]['task_end_date'] = calcEndByStartAndDuration($tasks[$j]);
            }
        }
    }
}
$history_active = false;
// showing tasks
foreach ($tasks as $task) {
    echo showtask($task, 0, false, true);
}
if (w2PgetConfig('direct_edit_assignment')) {
    ?>
        <tr>
            <td colspan="9" align="right" height="30">
                <input type="submit" class="button" value="<?php 
    echo $AppUI->_('update task');
Esempio n. 4
0
function array_csort()
{
    //coded by Ichier2003
    $args = func_get_args();
    $marray = array_shift($args);
    if (empty($marray)) {
        return array();
    }
    $i = 0;
    $msortline = "return(array_multisort(";
    $sortarr = array();
    foreach ($args as $arg) {
        $i++;
        if (is_string($arg)) {
            for ($j = 0; $j < count($marray); $j++) {
                /* we have to calculate the end_date via start_date+duration for
                 ** end='0000-00-00 00:00:00' before sorting, see mantis #1509:
                 ** Task definition writes the following to the DB:
                 ** A without start date: start = end = NULL
                 ** B with start date and empty end date: start = startdate, end = "0000-00-00 00:00:00"
                 ** C start + end date: start= startdate, end = end date
                 ** A the end_date for the middle task (B) is ('dynamically') calculated on display
                 ** via start_date+duration, it may be that the order gets wrong due to the fact
                 ** that sorting has taken place _before_.
                 */
                if ($marray[$j]['task_end_date'] == '0000-00-00 00:00:00') {
                    $marray[$j]['task_end_date'] = calcEndByStartAndDuration($marray[$j]);
                }
                $sortarr[$i][] = $marray[$j][$arg];
            }
        } else {
            $sortarr[$i] = $arg;
        }
        $msortline .= "\$sortarr[" . $i . "],";
    }
    $msortline .= "\$marray));";
    eval($msortline);
    return $marray;
}