/** * 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); }
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; }
/** * Set the query * * @access public * @param Table $query * @return LexerBuilder */ public function withQuery(Table $query) { $this->query = $query; $this->queryBuilder->withQuery($this->query); return $this; }