Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 /**
  * 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();
 }
Ejemplo n.º 3
0
 /**
  * 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);
 }
Ejemplo n.º 4
0
 /**
  * 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]));
     }
 }
Ejemplo n.º 5
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;
 }