Example #1
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param string|null                $value        Condition data
  *
  * @return void
  */
 protected function prepareCndModuleIds(\Doctrine\ORM\QueryBuilder $queryBuilder, $value)
 {
     if (is_array($value) && count($value) > 0) {
         $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $value);
         $queryBuilder->andWhere(sprintf('%s.%s IN (%s)', $this->getMainAlias($queryBuilder), $this->_class->identifier[0], implode(', ', $keys)));
     }
 }
Example #2
0
 /**
  * Find entities by id's list
  *
  * @param array  $ids    Id's list
  * @param string $prefix Prefix OPTIONAL
  *
  * @return array
  */
 public function findByIds(array $ids, $prefix = 'arr')
 {
     if (1 < count($this->_class->identifier)) {
         // TODO - add throw exception
     }
     $result = array();
     if ($ids) {
         $qb = $this->createQueryBuilder();
         $keys = \XLite\Core\Database::buildInCondition($qb, $ids, $prefix);
         $alias = $this->getMainAlias($qb);
         $qb->andWhere($alias . '.' . $this->_class->identifier[0] . ' IN (' . implode(', ', $keys) . ')');
         $result = $qb->getResult();
     }
     return $result;
 }
Example #3
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param mixed                      $value        Condition OPTIONAL
  *
  * @return void
  */
 protected function prepareCndProduct(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null)
 {
     if ($value && !is_object($value)) {
         $ids = array();
         foreach ($value as $product) {
             if ($product && is_object($product) && $product->getProductClass()) {
                 $ids[$product->getProductClass()->getId()] = $product->getProductClass()->getId();
             }
         }
         if ($ids) {
             $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pcid');
             $queryBuilder->andWhere('p.id IN (' . implode(', ', $keys) . ')');
         } else {
             $queryBuilder->andWhere('p.id is null');
         }
     }
 }
Example #4
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param mixed                      $value        Condition OPTIONAL
  *
  * @return void
  */
 protected function prepareCndProductClass(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null)
 {
     if (is_null($value)) {
         $queryBuilder->andWhere('a.productClass is null');
     } elseif (is_object($value) && 'Doctrine\\ORM\\PersistentCollection' != get_class($value)) {
         $queryBuilder->andWhere('a.productClass = :productClass')->setParameter('productClass', $value);
     } elseif ($value) {
         $ids = array();
         foreach ($value as $id) {
             if ($id) {
                 $ids[] = is_object($id) ? $id->getId() : $id;
             }
         }
         if ($ids) {
             $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pcid');
             $queryBuilder->linkInner('a.productClass')->andWhere('productClass.id IN (' . implode(', ', $keys) . ')');
         }
     }
 }
Example #5
0
 /**
  * Get IN () condition
  *
  * @param mixed  $data   Data
  * @param string $prefix Parameter prefix OPTIONAL
  *
  * @return string
  */
 public function getInCondition($data, $prefix = 'id')
 {
     if (is_scalar($data)) {
         $data = array($data);
     } elseif (is_object($data)) {
         if ($data instanceof \Iterator) {
             $tmp = array();
             foreach ($data as $value) {
                 $tmp[] = $value;
             }
             $data = $tmp;
         }
     }
     $keys = \XLite\Core\Database::buildInCondition($this, $data, $prefix);
     return implode(', ', $keys);
 }
Example #6
0
 /**
  * Get IN () condition
  * 
  * @param array  $data   Data
  * @param string $prefix Parameter prefix OPTIONAL
  *  
  * @return string
  */
 public function getInCondition(array $data, $prefix = 'id')
 {
     $keys = \XLite\Core\Database::buildInCondition($this, $data, $prefix);
     return implode(', ', $keys);
 }
Example #7
0
 /**
  * Define query builder for findByExceptionIds() method
  *
  * @param array $exceptionIds Exception ids list
  *
  * @return \Doctrine\ORM\QueryBuilder
  */
 protected function defineByExceptionIdsQuery(array $exceptionIds)
 {
     $qb = $this->createQueryBuilder();
     $keys = \XLite\Core\Database::buildInCondition($qb, $exceptionIds);
     return $qb->andWhere('o.exception_id IN (' . implode(', ', $keys) . ')');
 }
Example #8
0
 /**
  * Prepare certain search condition
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare
  * @param mixed                      $value        Condition OPTIONAL
  *
  * @return void
  */
 protected function prepareCndProduct(\Doctrine\ORM\QueryBuilder $queryBuilder, $value = null)
 {
     if ($value && !is_object($value)) {
         $ids = array();
         foreach ($value as $id) {
             if ($id) {
                 $ids[] = is_object($id) ? $id->getId() : $id;
             }
         }
         if ($ids) {
             $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $ids, 'pid');
             $queryBuilder->linkInner('p.products')->andWhere('products.product_id IN (' . implode(', ', $keys) . ')');
         }
     }
 }
Example #9
0
 /**
  * Search condition by permission(s)
  *
  * @param \Doctrine\ORM\QueryBuilder $queryBuilder QueryBuilder instance
  * @param mixed                      $value        Searchable value
  *
  * @return void
  */
 protected function prepareCndPermissions(\Doctrine\ORM\QueryBuilder $queryBuilder, $value)
 {
     if (!empty($value)) {
         if (!is_array($value)) {
             $value = array($value);
         }
         $keys = \XLite\Core\Database::buildInCondition($queryBuilder, $value, 'perm');
         $queryBuilder->linkInner('p.roles')->linkInner('roles.permissions')->andWhere('permissions.code IN (' . implode(', ', $keys) . ')');
     }
 }