Example #1
0
 /**
  * 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 prepareCndOrderBy(\Doctrine\ORM\QueryBuilder $queryBuilder, array $value, $countOnly)
 {
     if (!$countOnly) {
         list($sort, $order) = $this->getSortOrderValue($value);
         // FIXME - add aliases for sort modes
         if ('i.amount' === $sort) {
             $queryBuilder->innerJoinInventory();
         } elseif ('p.price' == $sort && !\XLite::isAdminZone()) {
             $this->assignCalculatedField($queryBuilder, 'price');
             $sort = 'calculatedPrice';
         } elseif ('translations.name' == $sort && !$countOnly) {
             $this->addSortByTranslation($queryBuilder, $sort, $order);
             $sort = 'calculatedName';
         }
         $queryBuilder->addOrderBy($sort, $order);
     }
 }
Example #2
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param string                     $value        Condition data
  *
  * @return void
  */
 protected function prepareCndInStock(\Doctrine\ORM\QueryBuilder $queryBuilder, $value)
 {
     if ($value) {
         $queryBuilder->innerJoinInventory()->andWhere('i.amount > :zero OR i.enabled = 0')->setParameter('zero', 0)->andWhere('p.arrivalDate < :now')->setParameter('now', \XLite\Core\Converter::getDayEnd(\XLite\Base\SuperClass::getUserTime()));
     }
 }