diff --git a/app/Controller/Task.php b/app/Controller/Task.php index 64017582f..9bd6e711a 100644 --- a/app/Controller/Task.php +++ b/app/Controller/Task.php @@ -84,6 +84,22 @@ class Task extends Base ))); } + /** + * Display task activities + * + * @access public + */ + public function activites() + { + $task = $this->getTask(); + $this->response->html($this->taskLayout('task/events', array( + 'title' => $task['title'], + 'task' => $task, + 'ajax' => $this->request->isAjax(), + 'events' => $this->projectActivity->getTasks([$task['id']]), + ))); + } + /** * Display a form to create a new task * diff --git a/app/Model/ProjectActivity.php b/app/Model/ProjectActivity.php index c5fbbd38a..46d71fc71 100644 --- a/app/Model/ProjectActivity.php +++ b/app/Model/ProjectActivity.php @@ -50,6 +50,52 @@ class ProjectActivity extends Base return $this->db->table(self::TABLE)->insert($values); } + /** + * Get all events for the given task + * + * @access public + * @param integer[] $task_ids Task ids + * @param integer $limit Maximum events number + * @param integer $start Timestamp of earliest activity + * @param integer $end Timestamp of latest activity + * @return array + */ + public function getTasks(array $task_ids, $limit = 50, $start = null, $end = null) + { + $query = $this->db->table(self::TABLE) + ->columns( + self::TABLE.'.*', + User::TABLE.'.username AS author_username', + User::TABLE.'.name AS author_name' + ) + ->in('task_id', $task_ids) + ->join(User::TABLE, 'id', 'creator_id') + ->desc(self::TABLE.'.id') + ->limit($limit); + + if(!is_null($start)){ + $query->gte('date_creation', $start); + } + + if(!is_null($end)){ + $query->lte('date_creation', $end); + } + + $events = $query->findAll(); + + foreach ($events as &$event) { + + $event += $this->decode($event['data']); + unset($event['data']); + + $event['author'] = $event['author_name'] ?: $event['author_username']; + $event['event_title'] = $this->getTitle($event); + $event['event_content'] = $this->getContent($event); + } + + return $events; + } + /** * Get all events for the given project * diff --git a/app/Template/task/events.php b/app/Template/task/events.php new file mode 100644 index 000000000..188f46fe3 --- /dev/null +++ b/app/Template/task/events.php @@ -0,0 +1,25 @@ +
= t('No activity.') ?>
+ + + ++ contains($event['event_name'], 'subtask')): ?> + + contains($event['event_name'], 'task')): ?> + + contains($event['event_name'], 'comment')): ?> + + + = dt('%B %e, %Y at %k:%M %p', $event['date_creation']) ?> +
+