/** * Get products list * * @param integer $productId Current product ID * @param array $productIds Product ID which must be excluded from the search result * @param integer $maxCount Maximum number of products * * @return array */ public function getSourceRelatedProducts($productId, $productIds, $maxCount) { $result = array(); $cnd = new \XLite\Core\CommonCell(); if ($productIds) { $cnd->{\XLite\Module\XC\Upselling\Model\Repo\UpsellingProduct::SEARCH_EXCL_PRODUCT_ID} = $productIds; } $cnd->{\XLite\Module\XC\Upselling\Model\Repo\UpsellingProduct::SEARCH_PARENT_PRODUCT_ID} = $productId; $cnd->{\XLite\Module\XC\Upselling\Model\Repo\UpsellingProduct::SEARCH_DATE} = \XLite\Core\Converter::getDayEnd(\XLite\Base\SuperClass::getUserTime()); $cnd->{\XLite\Module\XC\Upselling\Model\Repo\UpsellingProduct::SEARCH_LIMIT} = array(0, $maxCount + 1); $products = \XLite\Core\Database::getRepo('XLite\\Module\\XC\\Upselling\\Model\\UpsellingProduct')->search($cnd, false); foreach ($products as $product) { $result[] = $product->getProduct(); } return $result; }
/** * Adds additional condition to the query for checking if product is up-to-date * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder object * @param string $alias Entity alias OPTIONAL * * @return void */ protected function addDateCondition(\Doctrine\ORM\QueryBuilder $queryBuilder, $alias = null) { if (!\XLite::isAdminZone()) { $alias = $alias ?: $queryBuilder->getRootAlias(); $queryBuilder->andWhere($alias . '.arrivalDate < :now')->setParameter('now', \XLite\Core\Converter::getDayEnd(\XLite\Base\SuperClass::getUserTime())); } }
/** * 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())); } }
/** * Return params list to use for search * * @param \XLite\Core\CommonCell $cnd Initial search conditions * * @return \XLite\Core\CommonCell */ protected function getSearchConditions(\XLite\Core\CommonCell $cnd) { $currentDate = \XLite\Core\Converter::getDayEnd(\XLite\Base\SuperClass::getUserTime()); $cnd->{\XLite\Module\CDev\ProductAdvisor\Model\Repo\Product::P_ARRIVAL_DATE} = array($currentDate, null); $cnd->{\XLite\Model\Repo\Product::P_ORDER_BY} = array('p.arrivalDate', 'ASC'); return $cnd; }