summaryrefslogtreecommitdiff
path: root/app/Model/TaskFilter.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-09-20 22:18:56 -0400
committerFrederic Guillot <fred@kanboard.net>2015-09-20 22:18:56 -0400
commit689687dd4ee186cb9cf5d0230b4648e242c53b10 (patch)
tree3d26bc2079c6eb45790ba604b3a79997be4768ab /app/Model/TaskFilter.php
parentf579663adcbc0b202d9a068d734e8f9284dc3a37 (diff)
Add formatters
Diffstat (limited to 'app/Model/TaskFilter.php')
-rw-r--r--app/Model/TaskFilter.php224
1 files changed, 1 insertions, 223 deletions
diff --git a/app/Model/TaskFilter.php b/app/Model/TaskFilter.php
index 89ad9aa4..95fb293e 100644
--- a/app/Model/TaskFilter.php
+++ b/app/Model/TaskFilter.php
@@ -2,11 +2,6 @@
namespace Model;
-use DateTime;
-use Eluceo\iCal\Component\Calendar;
-use Eluceo\iCal\Component\Event;
-use Eluceo\iCal\Property\Event\Attendees;
-
/**
* Task Filter
*
@@ -137,7 +132,7 @@ class TaskFilter extends Base
*/
public function copy()
{
- $filter = clone($this);
+ $filter = new static($this->container);
$filter->query = clone($this->query);
$filter->query->condition = clone($this->query->condition);
return $filter;
@@ -675,223 +670,6 @@ class TaskFilter extends Base
}
/**
- * Format tasks to be displayed in the Gantt chart
- *
- * @access public
- * @return array
- */
- public function toGanttBars()
- {
- $bars = array();
- $columns = array();
-
- foreach ($this->query->findAll() as $task) {
- if (! isset($column_count[$task['project_id']])) {
- $columns[$task['project_id']] = $this->board->getColumnsList($task['project_id']);
- }
-
- $start = $task['date_started'] ?: time();
- $end = $task['date_due'] ?: $start;
-
- $bars[] = array(
- 'type' => 'task',
- 'id' => $task['id'],
- 'title' => $task['title'],
- '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),
- ),
- 'column_title' => $task['column_name'],
- 'assignee' => $task['assignee_name'] ?: $task['assignee_username'],
- 'progress' => $this->task->getProgress($task, $columns[$task['project_id']]).'%',
- 'link' => $this->helper->url->href('task', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])),
- 'color' => $this->color->getColorProperties($task['color_id']),
- 'not_defined' => empty($task['date_due']) || empty($task['date_started']),
- );
- }
-
- return $bars;
- }
-
- /**
- * Format the results to the ajax autocompletion
- *
- * @access public
- * @return array
- */
- public function toAutoCompletion()
- {
- return $this->query->columns(Task::TABLE.'.id', Task::TABLE.'.title')->callback(function(array $results) {
-
- foreach ($results as &$result) {
- $result['value'] = $result['title'];
- $result['label'] = '#'.$result['id'].' - '.$result['title'];
- }
-
- return $results;
-
- })->findAll();
- }
-
- /**
- * Transform results to calendar events
- *
- * @access public
- * @param string $start_column Column name for the start date
- * @param string $end_column Column name for the end date
- * @return array
- */
- public function toDateTimeCalendarEvents($start_column, $end_column)
- {
- $events = array();
-
- foreach ($this->query->findAll() as $task) {
-
- $events[] = array_merge(
- $this->getTaskCalendarProperties($task),
- array(
- 'start' => date('Y-m-d\TH:i:s', $task[$start_column]),
- 'end' => date('Y-m-d\TH:i:s', $task[$end_column] ?: time()),
- 'editable' => false,
- )
- );
- }
-
- return $events;
- }
-
- /**
- * Transform results to all day calendar events
- *
- * @access public
- * @param string $column Column name for the date
- * @return array
- */
- public function toAllDayCalendarEvents($column = 'date_due')
- {
- $events = array();
-
- foreach ($this->query->findAll() as $task) {
-
- $events[] = array_merge(
- $this->getTaskCalendarProperties($task),
- array(
- 'start' => date('Y-m-d', $task[$column]),
- 'end' => date('Y-m-d', $task[$column]),
- 'allday' => true,
- )
- );
- }
-
- return $events;
- }
-
- /**
- * Transform results to ical events
- *
- * @access public
- * @param string $start_column Column name for the start date
- * @param string $end_column Column name for the end date
- * @param Calendar $vCalendar Calendar object
- * @return Calendar
- */
- public function addDateTimeIcalEvents($start_column, $end_column, Calendar $vCalendar = null)
- {
- if ($vCalendar === null) {
- $vCalendar = new Calendar('Kanboard');
- }
-
- foreach ($this->query->findAll() as $task) {
-
- $start = new DateTime;
- $start->setTimestamp($task[$start_column]);
-
- $end = new DateTime;
- $end->setTimestamp($task[$end_column] ?: time());
-
- $vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-'.$start_column.'-'.$end_column);
- $vEvent->setDtStart($start);
- $vEvent->setDtEnd($end);
-
- $vCalendar->addComponent($vEvent);
- }
-
- return $vCalendar;
- }
-
- /**
- * Transform results to all day ical events
- *
- * @access public
- * @param string $column Column name for the date
- * @param Calendar $vCalendar Calendar object
- * @return Calendar
- */
- public function addAllDayIcalEvents($column = 'date_due', Calendar $vCalendar = null)
- {
- if ($vCalendar === null) {
- $vCalendar = new Calendar('Kanboard');
- }
-
- foreach ($this->query->findAll() as $task) {
-
- $date = new DateTime;
- $date->setTimestamp($task[$column]);
-
- $vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-'.$column);
- $vEvent->setDtStart($date);
- $vEvent->setDtEnd($date);
- $vEvent->setNoTime(true);
-
- $vCalendar->addComponent($vEvent);
- }
-
- return $vCalendar;
- }
-
- /**
- * Get common events for task ical events
- *
- * @access protected
- * @param array $task
- * @param string $uid
- * @return Event
- */
- protected function getTaskIcalEvent(array &$task, $uid)
- {
- $dateCreation = new DateTime;
- $dateCreation->setTimestamp($task['date_creation']);
-
- $dateModif = new DateTime;
- $dateModif->setTimestamp($task['date_modification']);
-
- $vEvent = new Event($uid);
- $vEvent->setCreated($dateCreation);
- $vEvent->setModified($dateModif);
- $vEvent->setUseTimezone(true);
- $vEvent->setSummary(t('#%d', $task['id']).' '.$task['title']);
- $vEvent->setUrl($this->helper->url->base().$this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
-
- if (! empty($task['owner_id'])) {
- $vEvent->setOrganizer($task['assignee_name'] ?: $task['assignee_username'], $task['assignee_email']);
- }
-
- if (! empty($task['creator_id'])) {
- $attendees = new Attendees;
- $attendees->add('MAILTO:'.($task['creator_email'] ?: $task['creator_username'].'@kanboard.local'));
- $vEvent->setAttendees($attendees);
- }
-
- return $vEvent;
- }
-
- /**
* Filter with an operator
*
* @access public