diff options
Diffstat (limited to 'app/Formatter/TaskCalendarFormatter.php')
-rw-r--r-- | app/Formatter/TaskCalendarFormatter.php | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/app/Formatter/TaskCalendarFormatter.php b/app/Formatter/TaskCalendarFormatter.php new file mode 100644 index 00000000..60b9a062 --- /dev/null +++ b/app/Formatter/TaskCalendarFormatter.php @@ -0,0 +1,74 @@ +<?php + +namespace Kanboard\Formatter; + +use Kanboard\Core\Filter\FormatterInterface; + +/** + * Calendar event formatter for task filter + * + * @package formatter + * @author Frederic Guillot + */ +class TaskCalendarFormatter extends BaseTaskCalendarFormatter implements FormatterInterface +{ + /** + * Full day event flag + * + * @access private + * @var boolean + */ + private $fullDay = false; + + /** + * When called calendar events will be full day + * + * @access public + * @return FormatterInterface + */ + public function setFullDay() + { + $this->fullDay = true; + return $this; + } + + /** + * Transform tasks to calendar events + * + * @access public + * @return array + */ + public function format() + { + $events = array(); + + foreach ($this->query->findAll() as $task) { + $events[] = array( + 'timezoneParam' => $this->config->getCurrentTimezone(), + 'id' => $task['id'], + 'title' => t('#%d', $task['id']).' '.$task['title'], + 'backgroundColor' => $this->color->getBackgroundColor($task['color_id']), + 'borderColor' => $this->color->getBorderColor($task['color_id']), + 'textColor' => 'black', + 'url' => $this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), + 'start' => date($this->getDateTimeFormat(), $task[$this->startColumn]), + 'end' => date($this->getDateTimeFormat(), $task[$this->endColumn] ?: time()), + 'editable' => $this->fullDay, + 'allday' => $this->fullDay, + ); + } + + return $events; + } + + /** + * Get DateTime format for event + * + * @access private + * @return string + */ + private function getDateTimeFormat() + { + return $this->fullDay ? 'Y-m-d' : 'Y-m-d\TH:i:s'; + } +} |