/** * {@inheritdoc} */ public function match($categoryId) { if (!$categoryId) { throw new \InvalidArgumentException('Missing required parameter $categoryId'); } $this->isAccessible = false; if (!$this->configAdapter->hasEnabledCategories()) { $this->isAccessible = true; return; } if (in_array($categoryId, $this->configAdapter->getEnabledCategoryIds())) { $this->isAccessible = true; } }
/** * Query total number of currently selected articles * * @param $request * @return string */ private function getTotalCount(\Enlight_Controller_Request_Request $request) { $groupIds = array(); /** @var FilterGroupAbstract $group */ foreach ($this->filterGroups as $group) { $groupIds[] = $group->getId(); } $subCategories = $this->databaseAdapter->getSubcategories($request->sCategory); /** @var PDOStatement $stmt */ $query = Shopware()->Models()->getDBALQueryBuilder()->select('COUNT(DISTINCT details.articleID) as cnt')->from('s_articles_details', 'details')->rightJoin('details', 's_articles', 'article', 'article.id = details.articleID AND article.active = 1')->innerJoin('details', 's_articles_categories', 'articleCategories', 'details.articleID = articleCategories.articleID AND articleCategories.categoryID IN (:subCategories)')->setParameter(':subCategories', $subCategories, Connection::PARAM_INT_ARRAY)->where('details.active = 1')->andWhere('details.instock >= :minStock')->setParameter(':minStock', (int) $this->configAdapter->getMinStock()); foreach ($this->requireFilterGroups() as $group) { if (!$group->hasActiveOptions()) { continue; } $groupId = $group->getId(); $optionIds = array(); /** @var FilterOptionAbstract $option */ foreach ($group->getOptions() as $option) { if (!$option->isActive()) { continue; } $optionIds[] = $option->getId(); } $tableAlias = 'optionRelations' . $groupId; $paramName = ':optionIds' . $groupId; $query->rightJoin('details', 's_article_configurator_option_relations', $tableAlias, $tableAlias . '.article_id = details.id AND ' . $tableAlias . '.option_id IN (' . $paramName . ')')->setParameter($paramName, $optionIds, Connection::PARAM_INT_ARRAY); } return $query->execute()->fetch(\PDO::FETCH_COLUMN); }