summaryrefslogtreecommitdiff
path: root/app/Model/Project.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-08-22 16:20:53 -0400
committerFrederic Guillot <fred@kanboard.net>2015-08-22 16:20:53 -0400
commitfd60964c239627d2d55c6eca0888be84a8f6653f (patch)
tree062836c4a49857625a25b2cfdd3bbb93732f915d /app/Model/Project.php
parent18fd39e6d648a58be0782d514604877504833832 (diff)
Add global Gantt chart for all projects
Diffstat (limited to 'app/Model/Project.php')
-rw-r--r--app/Model/Project.php51
1 files changed, 49 insertions, 2 deletions
diff --git a/app/Model/Project.php b/app/Model/Project.php
index 161a0cae..52500820 100644
--- a/app/Model/Project.php
+++ b/app/Model/Project.php
@@ -115,6 +115,54 @@ class Project extends Base
}
/**
+ * Get all projects to generate the Gantt chart
+ *
+ * @access public
+ * @param array $project_ids
+ * @return array
+ */
+ public function getGanttBars(array $project_ids)
+ {
+ if (empty($project_ids)) {
+ return array();
+ }
+
+ $colors = $this->color->getDefaultColors();
+ $projects = $this->db->table(self::TABLE)->asc('start_date')->in('id', $project_ids)->eq('is_active', self::ACTIVE)->eq('is_private', 0)->findAll();
+ $bars = array();
+
+ foreach ($projects as $project) {
+ $start = empty($project['start_date']) ? time() : strtotime($project['start_date']);
+ $end = empty($project['end_date']) ? $start : strtotime($project['end_date']);
+ $color = next($colors) ?: reset($colors);
+
+ $bars[] = array(
+ 'type' => 'project',
+ 'id' => $project['id'],
+ 'title' => $project['name'],
+ 'start' => array(
+ (int) date('Y', $start),
+ (int) date('n', $start),
+ (int) date('j', $start),
+ ),
+ 'end' => array(
+ (int) date('Y', $end),
+ (int) date('n', $end),
+ (int) date('j', $end),
+ ),
+ 'link' => $this->helper->url->href('project', 'show', array('project_id' => $project['id'])),
+ 'board_link' => $this->helper->url->href('board', 'show', array('project_id' => $project['id'])),
+ 'gantt_link' => $this->helper->url->href('gantt', 'project', array('project_id' => $project['id'])),
+ 'color' => $color,
+ 'not_defined' => empty($project['start_date']) || empty($project['end_date']),
+ 'users' => $this->projectPermission->getProjectUsers($project['id']),
+ );
+ }
+
+ return $bars;
+ }
+
+ /**
* Get all projects
*
* @access public
@@ -271,8 +319,7 @@ class Project extends Base
{
foreach ($projects as &$project) {
$this->getColumnStats($project);
- $project['managers'] = $this->projectPermission->getManagers($project['id']);
- $project['members'] = $this->projectPermission->getOnlyMembers($project['id']);
+ $project = array_merge($project, $this->projectPermission->getProjectUsers($project['id']));
}
return $projects;