Exemple #1
0
 function show()
 {
     global $page, $db, $fs, $proj, $user;
     $page->setTitle($fs->prefs['page_title'] . L('roadmap'));
     // Get milestones
     $list_id = $db->x->GetOne('SELECT list_id FROM {fields} WHERE field_id = ?', null, $proj->prefs['roadmap_field']);
     $milestones = array();
     if ($list_id) {
         $milestones = $db->x->getAll('SELECT list_item_id AS version_id, item_name AS version_name
                                         FROM {list_items} li
                                        WHERE list_id = ? AND version_tense = 3
                                     ORDER BY list_position ASC', null, $list_id);
     }
     $data = array();
     foreach ($milestones as $row) {
         // Get all tasks related to a milestone
         $all_tasks = $db->x->getAll('SELECT  percent_complete, is_closed, t.*
                                    FROM  {tasks} t
                               LEFT JOIN  {field_values} fv ON (fv.task_id = t.task_id AND field_id = ?)
                                   WHERE  field_value = ? AND project_id = ?', null, array($proj->prefs['roadmap_field'], $row['version_id'], $proj->id));
         $all_tasks = array_filter($all_tasks, array($user, 'can_view_task'));
         $percent_complete = 0;
         foreach ($all_tasks as $task) {
             if ($task['is_closed']) {
                 $percent_complete += 100;
             } else {
                 $percent_complete += $task['percent_complete'];
             }
         }
         $percent_complete = round($percent_complete / max(count($all_tasks), 1));
         if (count($all_tasks)) {
             $tasks = $db->x->getAll('SELECT t.task_id, item_summary, detailed_desc, mark_private, fs.field_value AS field' . $fs->prefs['color_field'] . ',
                                           opened_by, content, task_token, t.project_id, prefix_id
                                    FROM {tasks} t
                               LEFT JOIN {cache} ca ON (t.task_id = ca.topic AND ca.type = ? AND t.last_edited_time <= ca.last_updated)
                               LEFT JOIN {field_values} f ON f.task_id = t.task_id
                               LEFT JOIN {field_values} fs ON (fs.task_id = t.task_id AND fs.field_id = ?)
                                   WHERE f.field_value = ? AND f.field_id = ? AND t.project_id = ? AND is_closed = 0', null, array('rota', $fs->prefs['color_field'], $row['version_id'], $proj->prefs['roadmap_field'], $proj->id));
             $count = count($tasks);
             for ($i = 0; $i < $count; $i++) {
                 if (!$user->can_view_task($tasks[$i])) {
                     unset($tasks[$i]);
                 }
             }
         }
         $data[] = array('id' => $row['version_id'], 'open_tasks' => isset($tasks) ? $tasks : array(), 'percent_complete' => $percent_complete, 'all_tasks' => $all_tasks ? $all_tasks : array(), 'name' => $row['version_name']);
         unset($tasks);
     }
     if (Get::val('txt')) {
         $page = new FSTpl();
         header('Content-Type: text/plain; charset=UTF-8');
         $page->assign('data', $data);
         $page->display('roadmap.text.tpl');
         exit;
     } else {
         $page->assign('data', $data);
         $page->pushTpl('roadmap.tpl');
     }
 }
Exemple #2
0
 function show()
 {
     global $page, $db, $fs, $proj, $user;
     $page->setTitle($fs->prefs['page_title'] . L('changelog'));
     // Get milestones
     $list_id = $db->x->GetOne('SELECT list_id FROM {fields} WHERE field_id = ?', null, $proj->prefs['roadmap_field']);
     if (!$list_id) {
         trigger_error('Roadmap / changelog has not been configured in the project management area.', E_USER_ERROR);
     }
     $milestones = $db->x->getAll('SELECT list_item_id AS version_id, item_name AS version_name
                                 FROM {list_items} li
                                WHERE list_id = ? AND (version_tense = 1 OR version_tense = 2) AND show_in_list = 1
                             ORDER BY list_position ASC', null, $list_id);
     $data = array();
     $reasons = implode(',', explode(' ', $proj->prefs['changelog_reso']));
     while ((list(, $row) = each($milestones)) && $reasons) {
         $tasks = $db->x->getAll('SELECT t.task_id, percent_complete, item_summary, detailed_desc, mark_private, fs.field_value AS field' . $fs->prefs['color_field'] . ',
                                       opened_by, task_token, t.project_id, prefix_id, li.item_name AS res_name, li.list_item_id AS res_id
                                FROM {tasks} t
                           LEFT JOIN {field_values} f ON f.task_id = t.task_id
                           LEFT JOIN {field_values} fs ON (fs.task_id = t.task_id AND fs.field_id = ?)
                           LEFT JOIN {list_items} li ON t.resolution_reason = li.list_item_id
                               WHERE f.field_value = ? AND f.field_id = ? AND t.project_id = ? AND is_closed = 1
                                     AND t.resolution_reason IN (' . $reasons . ')
                            ORDER BY t.resolution_reason DESC', null, array($fs->prefs['color_field'], $row['version_id'], $proj->prefs['roadmap_field'], $proj->id));
         $tasks = array_filter($tasks, array($user, 'can_view_task'));
         if (count($tasks)) {
             $resolutions = array();
             foreach ($tasks as $task) {
                 $resolutions[$task['res_name']] = isset($resolutions[$task['res_name']]) ? $resolutions[$task['res_name']] + 1 : 1;
             }
             $data[] = array('tasks' => $tasks, 'name' => $row['version_name'], 'resolutions' => $resolutions);
         }
     }
     if (Get::val('txt')) {
         $page = new FSTpl();
         header('Content-Type: text/plain; charset=UTF-8');
         $page->assign('data', $data);
         $page->display('changelog.text.tpl');
         exit;
     } else {
         $page->assign('data', $data);
         $page->pushTpl('changelog.tpl');
     }
 }
Exemple #3
0
function tpl_userselect($name, $value = null, $id = '', $attrs = array())
{
    global $db, $user;
    if (!$id) {
        $id = $name;
    }
    if ($value && ctype_digit($value)) {
        $sql = $db->Query('SELECT user_name FROM {users} WHERE user_id = ?', array($value));
        $value = $db->FetchOne($sql);
    }
    if (!$value) {
        $value = '';
    }
    $page = new FSTpl();
    $page->assign('name', $name);
    $page->assign('id', $id);
    $page->assign('value', $value);
    $page->assign('attrs', $attrs);
    $page->display('common.userselect.tpl');
}
Exemple #4
0
<?php

/*
    This script gets the history of a task and
    returns it for HTML display in a page.
*/
define('IN_FS', true);
header('Content-type: text/html; charset=utf-8');
require_once '../../header.php';
$baseurl = dirname(dirname($baseurl)) . '/';
$user->save_search();
$page = new FSTpl();
$page->display('links.searches.tpl');
Exemple #5
0
// Initialise user
if (Cookie::has('flyspray_userid') && Cookie::has('flyspray_passhash')) {
    $user = new User(Cookie::val('flyspray_userid'));
    $user->check_account_ok();
} else {
    $user = new User(0, $proj);
}
// Check permissions
if (!$user->perms('view_history')) {
    die;
}
// Load translations
load_translations();
if ($details = Get::num('details')) {
    $details = " AND h.history_id = {$details}";
} else {
    $details = null;
}
$sql = get_events(Get::num('task_id'), $details);
$histories = $db->fetchAllArray($sql);
$page = new FSTpl();
$page->setTheme($proj->prefs['theme_style']);
$page->uses('histories', 'details');
if ($details) {
    event_description($histories[0]);
    // modifies global variables
    $page->assign('details_previous', $GLOBALS['details_previous']);
    $page->assign('details_new', $GLOBALS['details_new']);
}
$page->display('details.tabs.history.callback.tpl');
Exemple #6
0
    foreach ($all_tasks as $task) {
        if ($task['is_closed']) {
            $percent_complete += 100;
        } else {
            $percent_complete += $task['percent_complete'];
        }
    }
    $percent_complete = round($percent_complete / max(count($all_tasks), 1));
    $tasks = $db->Query('SELECT task_id, item_summary, detailed_desc, item_status, task_severity, task_priority, task_type, mark_private, opened_by, content, task_token, t.project_id,estimated_effort
                           FROM {tasks} t
                      LEFT JOIN {cache} ca ON (t.task_id = ca.topic AND ca.type = \'rota\' AND t.last_edited_time <= ca.last_updated)
                          WHERE closedby_version = ? AND t.project_id = ? AND is_closed = 0', array($row['version_id'], $proj->id));
    $tasks = $db->fetchAllArray($tasks);
    $count = count($tasks);
    for ($i = 0; $i < $count; $i++) {
        if (!$user->can_view_task($tasks[$i])) {
            unset($tasks[$i]);
        }
    }
    $data[] = array('id' => $row['version_id'], 'open_tasks' => $tasks, 'percent_complete' => $percent_complete, 'all_tasks' => $all_tasks, 'name' => $row['version_name']);
}
if (Get::val('txt')) {
    $page = new FSTpl();
    header('Content-Type: text/plain; charset=UTF-8');
    $page->uses('data', 'page');
    $page->display('roadmap.text.tpl');
    exit;
} else {
    $page->uses('data', 'page');
    $page->pushTpl('roadmap.tpl');
}
Exemple #7
0
        break;
    case 'assignedto':
        // additional permission check is needed
        if (!$user->perms('edit_assignments')) {
            header('HTTP/1.1 400 Bad Request');
            exit;
        }
        $field = 'assigned_to';
        $page = new FSTpl();
        $page->assign('id', 'task' . $task['task_id'] . '_' . $field);
        $list = $db->x->getCol('SELECT u.user_name
                                  FROM {assigned} a, {users} u
                                 WHERE a.user_id = u.user_id AND task_id = ?
                                 ORDER BY u.user_name DESC', null, $task['task_id']);
        $page->assign('userlist', $list);
        $page->display('common.multiuserselect.tpl');
        break;
    default:
        // consider custom fields
        $field_id = substr($field, 5);
        $f = new Field($field_id);
        if ($f->id) {
            echo $f->edit(!USE_DEFAULT, !LOCK_FIELD, $task, array(), array(), 'task' . $task['task_id'] . '_qe');
            $field = 'qe' . $field;
        } else {
            header('HTTP/1.1 400 Bad Request');
            exit;
        }
        break;
}
$args = sprintf("%s, '%s'", $task['task_id'], $field);
Exemple #8
0
function tpl_userselect($input_name, $value = null, $input_id = '', $attrs = array())
{
    global $db, $user;
    if (!$input_id) {
        $input_id = $input_name;
    }
    if ($value && is_numeric($value)) {
        $value = $db->x->GetOne('SELECT user_name FROM {users} WHERE user_id = ?', null, $value);
    }
    if (!$value) {
        $value = '';
    }
    $page = new FSTpl();
    $page->assign('name', $input_name);
    $page->assign('id', $input_id);
    $page->assign('value', $value);
    $page->assign('attrs', $attrs);
    $page->display('common.userselect.tpl');
}