/** * Get formatted calendar task events * * @access public * @param QueryBuilder $queryBuilder * @param string $start * @param string $end * @return array */ public function getTaskEvents(QueryBuilder $queryBuilder, $start, $end) { $startColumn = $this->configModel->get('calendar_project_tasks', 'date_started'); $queryBuilder->getQuery()->addCondition($this->getCalendarCondition($this->dateParser->getTimestampFromIsoFormat($start), $this->dateParser->getTimestampFromIsoFormat($end), $startColumn, 'date_due')); $formatter = new TaskCalendarFormatter($this->container); $formatter->setColumns($startColumn, 'date_due'); return $queryBuilder->format($formatter); }
/** * Get formatted calendar task due events * * @access public * @param QueryBuilder $queryBuilder * @param iCalendar $calendar * @param string $start * @param string $end */ public function addTaskDateDueEvents(QueryBuilder $queryBuilder, iCalendar $calendar, $start, $end) { $queryBuilder->withFilter(new TaskDueDateRangeFilter(array($start, $end))); $formatter = new TaskICalFormatter($this->container); $formatter->setColumns('date_due'); $formatter->setCalendar($calendar); $formatter->withQuery($queryBuilder->getQuery()); $formatter->addFullDayEvents(); }
/** * Get project iCalendar * * @access public */ public function project() { $token = $this->request->getStringParam('token'); $project = $this->project->getByToken($token); // Token verification if (empty($project)) { throw AccessForbiddenException::getInstance()->withoutLayout(); } // Common filter $queryBuilder = new QueryBuilder(); $queryBuilder->withQuery($this->taskFinder->getICalQuery())->withFilter(new TaskStatusFilter(TaskModel::STATUS_OPEN))->withFilter(new TaskProjectFilter($project['id'])); // Calendar properties $calendar = new iCalendar('Kanboard'); $calendar->setName($project['name']); $calendar->setDescription($project['name']); $calendar->setPublishedTTL('PT1H'); $this->renderCalendar($queryBuilder, $calendar); }
/** * Apply filters to the query * * @access protected * @param FilterInterface $filter * @param array $values */ protected function applyFilters(FilterInterface $filter, array $values) { $len = count($values); if ($len > 1) { $criteria = new OrCriteria(); $criteria->withQuery($this->query); foreach ($values as $value) { $currentFilter = clone $filter; $criteria->withFilter($currentFilter->withValue($value)); } $this->queryBuilder->withCriteria($criteria); } elseif ($len === 1) { $this->queryBuilder->withFilter($filter->withValue($values[0])); } }
public function createTaskFilter(Container $container) { $container['taskQuery'] = $container->factory(function ($c) { $builder = new QueryBuilder(); $builder->withQuery($c['taskFinderModel']->getExtendedQuery()); return $builder; }); $container['taskLexer'] = $container->factory(function ($c) { $builder = new LexerBuilder(); $builder->withQuery($c['taskFinderModel']->getExtendedQuery())->withFilter(TaskAssigneeFilter::getInstance()->setCurrentUserId($c['userSession']->getId()))->withFilter(new TaskCategoryFilter())->withFilter(TaskColorFilter::getInstance()->setColorModel($c['colorModel']))->withFilter(new TaskColumnFilter())->withFilter(new TaskCommentFilter())->withFilter(TaskCreationDateFilter::getInstance()->setDateParser($c['dateParser']))->withFilter(TaskCreatorFilter::getInstance()->setCurrentUserId($c['userSession']->getId()))->withFilter(new TaskDescriptionFilter())->withFilter(TaskDueDateFilter::getInstance()->setDateParser($c['dateParser']))->withFilter(new TaskIdFilter())->withFilter(TaskLinkFilter::getInstance()->setDatabase($c['db']))->withFilter(TaskModificationDateFilter::getInstance()->setDateParser($c['dateParser']))->withFilter(new TaskProjectFilter())->withFilter(new TaskReferenceFilter())->withFilter(new TaskStatusFilter())->withFilter(TaskSubtaskAssigneeFilter::getInstance()->setCurrentUserId($c['userSession']->getId())->setDatabase($c['db']))->withFilter(new TaskSwimlaneFilter())->withFilter(new TaskTitleFilter(), true); return $builder; }); return $container; }