Пример #1
0
 /**
  * @param array $data
  * @return Shop
  */
 public function hydrate($data)
 {
     $shop = new Shop();
     $shop->setId((int) $data['__shop_id']);
     $shop->setIsDefault((bool) $data['__shop_default']);
     $shop->setName($data['__shop_name']);
     $shop->setTitle($data['__shop_title']);
     $shop->setFallbackId((int) $data['__shop_fallback_id']);
     $shop->setCurrency($this->currencyHydrator->hydrate($data));
     $shop->setCustomerGroup($this->customerGroupHydrator->hydrate($data));
     $shop->setCategory($this->categoryHydrator->hydrate($data));
     $shop->setLocale($this->localeHydrator->hydrate($data));
     $parent = $data;
     if ($data['parent']) {
         $parent = $data['parent'];
     }
     $shop->setTemplate($this->templateHydrator->hydrate($parent));
     $shop->setParentId((int) $parent['__shop_id']);
     $shop->setHost($parent['__shop_host']);
     $shop->setPath($parent['__shop_base_path']);
     $shop->setUrl($data['__shop_base_url'] ?: $parent['__shop_base_url']);
     $shop->setSecure((bool) $parent['__shop_secure']);
     $shop->setSecureHost($parent['__shop_secure_host']);
     $shop->setSecurePath($parent['__shop_secure_base_path']);
     $hosts = [];
     if ($parent['__shop_hosts']) {
         $hosts = explode('\\n', $parent['__shop_hosts']);
         $hosts = array_unique(array_values(array_filter($hosts)));
     }
     $shop->setHosts($hosts);
     return $shop;
 }
Пример #2
0
 /**
  * @inheritdoc
  */
 public function getList(array $ids, Struct\ShopContextInterface $context)
 {
     $query = $this->connection->createQueryBuilder();
     $query->select($this->fieldHelper->getCategoryFields())->addSelect($this->fieldHelper->getMediaFields())->addSelect("GROUP_CONCAT(customerGroups.customergroupID) as __category_customer_groups");
     $query->from('s_categories', 'category');
     $query->leftJoin('category', 's_categories_attributes', 'categoryAttribute', 'categoryAttribute.categoryID = category.id')->leftJoin('category', 's_categories_avoid_customergroups', 'customerGroups', 'customerGroups.categoryID = category.id')->leftJoin('category', 's_media', 'media', 'media.id = category.mediaID')->leftJoin('media', 's_media_album_settings', 'mediaSettings', 'mediaSettings.albumID = media.albumID')->leftJoin('media', 's_media_attributes', 'mediaAttribute', 'mediaAttribute.mediaID = media.id');
     $query->addOrderBy('category.position')->addOrderBy('category.id')->addGroupBy('category.id');
     $query->where('category.id IN (:categories)')->andWhere('category.active = 1');
     $query->setParameter(':categories', $ids, Connection::PARAM_INT_ARRAY);
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_ASSOC);
     $categories = [];
     foreach ($data as $row) {
         $id = $row['__category_id'];
         $categories[$id] = $this->categoryHydrator->hydrate($row);
     }
     return $categories;
 }