1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<?php
/*********************************************************\
| Show the roadmap |
| ~~~~~~~~~~~~~~~~~~~ |
\*********************************************************/
if (!defined('IN_FS')) {
die('Do not access this file directly.');
}
if (!$proj->id) {
Flyspray::show_error(25);
}
if ((!$user->isAnon() && !$user->perms('view_roadmap')) || ($user->isAnon() && $proj->prefs['others_viewroadmap'] !=1)) {
# better set redirect to false to avoid endless loops
Flyspray::show_error(28, false);
} else{
if($proj->prefs['use_effort_tracking']){
require_once(BASEDIR . '/includes/class.effort.php');
}
$page->setTitle($fs->prefs['page_title'] . L('roadmap'));
// Get milestones
$milestones = $db->query('SELECT version_id, version_name
FROM {list_version}
WHERE (project_id = ? OR project_id=0) AND version_tense = 3
ORDER BY list_position ASC',
array($proj->id));
$data = array();
while ($row = $db->fetchRow($milestones)) {
// Get all tasks related to a milestone
$all_tasks = $db->query('SELECT percent_complete, is_closed
FROM {tasks}
WHERE closedby_version = ? AND project_id = ?',
array($row['version_id'], $proj->id));
$all_tasks = $db->fetchAllArray($all_tasks);
$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));
$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']);
} # end while
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');
}
} # end if allowed roadmap view
?>
|