/** * getDateRange * * :FIXME: simplify * * @return \XLite\Core\CommonCell */ protected function getDateRange() { $result = null; $paramDatePeriod = self::SEARCH_DATE_PERIOD; if (isset($this->currentSearchCnd->{$paramDatePeriod})) { $endDate = \XLite\Core\Converter::time(); if ('M' == $this->currentSearchCnd->{$paramDatePeriod}) { $startDate = mktime(0, 0, 0, date('n', $endDate), 1, date('Y', $endDate)); } elseif ('W' == $this->currentSearchCnd->{$paramDatePeriod}) { $startDay = $endDate - date('w', $endDate) * 86400; $startDate = mktime(0, 0, 0, date('n', $startDay), date('j', $startDay), date('Y', $startDay)); } elseif ('D' == $this->currentSearchCnd->{$paramDatePeriod}) { $startDate = mktime(0, 0, 0, date('n', $endDate), date('j', $endDate), date('Y', $endDate)); } elseif ('C' == $this->currentSearchCnd->{$paramDatePeriod}) { $paramStartDate = static::SEARCH_START_DATE; $paramEndDate = static::SEARCH_END_DATE; $paramDateRange = static::SEARCH_DATE_RANGE; if (!empty($this->currentSearchCnd->{$paramStartDate}) && !empty($this->currentSearchCnd->{$paramEndDate})) { $tmpDate = strtotime($this->currentSearchCnd->{$paramStartDate}); if (false !== $tmpDate) { $startDate = mktime(0, 0, 0, date('n', $tmpDate), date('j', $tmpDate), date('Y', $tmpDate)); } $tmpDate = strtotime($this->currentSearchCnd->{$paramEndDate}); if (false !== $tmpDate) { $endDate = mktime(23, 59, 59, date('n', $tmpDate), date('j', $tmpDate), date('Y', $tmpDate)); } } elseif (!empty($this->currentSearchCnd->{$paramDateRange})) { list($startDate, $endDate) = \XLite\View\FormField\Input\Text\DateRange::convertToArray($this->currentSearchCnd->{$paramDateRange}); } } if (isset($startDate) && false !== $startDate && false !== $endDate) { $result = new \XLite\Core\CommonCell(); $result->startDate = $startDate; $result->endDate = $endDate; } } return $result; }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param integer $value Condition data * * @return void */ protected function prepareCndDateRange(\Doctrine\ORM\QueryBuilder $queryBuilder, $value) { if (!empty($value)) { list($start, $end) = \XLite\View\FormField\Input\Text\DateRange::convertToArray($value); if ($start) { $queryBuilder->andWhere('o.date >= :start')->setParameter('start', $start); } if ($end) { $queryBuilder->andWhere('o.date <= :end')->setParameter('end', $end); } } }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param array $value Condition data * @param boolean $countOnly "Count only" flag. Do not need to add "order by" clauses if only count is needed. * * @return void */ protected function prepareCndDate(\Doctrine\ORM\QueryBuilder $queryBuilder, $value, $countOnly) { if ($value) { $value = \XLite\View\FormField\Input\Text\DateRange::convertToArray($value); if (!empty($value[0])) { $queryBuilder->andWhere('t.date > :date0')->setParameter('date0', $value[0]); } if (!empty($value[1])) { $queryBuilder->andWhere('t.date < :date1')->setParameter('date1', $value[1]); } } }