/**
  * @api
  *
  * @param array $productIds
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return \Orm\Zed\Product\Persistence\SpyProductQuery
  */
 public function queryExportableProductsByLocale(array $productIds, LocaleTransfer $locale)
 {
     $query = $this->getFactory()->createProductQuery();
     $query->filterByIdProduct($productIds, Criteria::IN)->useSpyProductLocalizedAttributesQuery()->filterByFkLocale($locale->getIdLocale())->endUse()->addSelectColumn(SpyProductTableMap::COL_SKU)->addSelectColumn(SpyProductLocalizedAttributesTableMap::COL_ATTRIBUTES)->addSelectColumn(SpyProductLocalizedAttributesTableMap::COL_NAME);
     $query->useSpyProductAbstractQuery()->useSpyProductAbstractLocalizedAttributesQuery()->filterByFkLocale($locale->getIdLocale())->endUse()->endUse()->addAsColumn('abstract_attributes', SpyProductAbstractLocalizedAttributesTableMap::COL_ATTRIBUTES);
     return $query;
 }
Пример #2
0
 /**
  * @param \Generated\Shared\Transfer\ProductConcreteTransfer $productConcreteTransfer
  *
  * @return bool
  */
 public function writeProduct(ProductConcreteTransfer $productConcreteTransfer)
 {
     $this->productStatement->execute([':sku' => $productConcreteTransfer->getSku(), ':isActive' => (int) $productConcreteTransfer->getIsActive(), ':attributes' => json_encode($productConcreteTransfer->getAttributes()), ':productAbstractSku' => $productConcreteTransfer->getProductAbstractSku()]);
     foreach ($productConcreteTransfer->getLocalizedAttributes() as $localizedAttributes) {
         $this->attributesStatement->execute([':productSku' => $productConcreteTransfer->getSku(), ':name' => $localizedAttributes->getName(), ':attributes' => json_encode($localizedAttributes->getAttributes()), ':fkLocale' => $this->localeTransfer->getIdLocale()]);
     }
     return true;
 }
 /**
  * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $node
  *
  * @return string
  */
 protected function buildPath(SpyCategoryNode $node)
 {
     $pathTokens = $this->categoryQueryContainer->queryPath($node->getIdCategoryNode(), $this->locale->getIdLocale(), false, true)->find();
     $formattedPath = [];
     foreach ($pathTokens as $path) {
         $formattedPath[] = $path['name'];
     }
     return '/' . implode('/', $formattedPath);
 }
Пример #4
0
 /**
  * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $node
  *
  * @return void
  */
 protected function renderChildren(SpyCategoryNode $node)
 {
     $children = $this->queryContainer->queryFirstLevelChildrenByIdLocale($node->getPrimaryKey(), $this->locale->getIdLocale())->find();
     $deleteLink = '/category-tree/index/delete-node?id=';
     $deleteString = '<br/>click to delete';
     $this->addClosureConnections($node);
     $this->graph->addNode($this->getNodeHash($node), ['URL' => $deleteLink . $node->getPrimaryKey(), 'label' => $this->getNodeName($node) . $deleteString, 'fontsize' => $this->fontSize]);
     foreach ($children as $child) {
         $this->graph->addNode($this->getNodeHash($child), ['URL' => $deleteLink . $child->getPrimaryKey(), 'label' => $this->getNodeName($child) . $deleteString, 'fontsize' => $this->fontSize]);
         $this->graph->addEdge($this->getNodeHash($node), $this->getNodeHash($child));
         /*
          * Recursive call
          */
         $this->renderChildren($child);
     }
 }
 /**
  * @param array $resultSet
  * @param array $processedResultSet
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return array
  */
 public function processDataForExport(array &$resultSet, array $processedResultSet, LocaleTransfer $locale)
 {
     foreach ($resultSet as $index => $productRawData) {
         if (isset($processedResultSet[$index], $processedResultSet[$index]['product_concrete_collection'])) {
             $this->processVariants($processedResultSet[$index]['product_concrete_collection'], $locale->getIdLocale());
         }
     }
     return $processedResultSet;
 }
Пример #6
0
 /**
  * @param string $url
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  * @param string $resourceType
  * @param int $idResource
  *
  * @return \Orm\Zed\Url\Persistence\SpyUrl
  */
 public function createUrl($url, LocaleTransfer $locale, $resourceType, $idResource)
 {
     $this->checkUrlDoesNotExist($url);
     $fkLocale = $locale->getIdLocale();
     if ($fkLocale === null) {
         $fkLocale = $this->localeFacade->getLocale($locale->getLocaleName())->getIdLocale();
     }
     $urlEntity = new SpyUrl();
     $urlEntity->setUrl($url)->setFkLocale($fkLocale)->setResource($resourceType, $idResource)->save();
     return $urlEntity;
 }
Пример #7
0
 /**
  * @param int $idProductConcrete
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return bool
  */
 protected function hasProductConcreteAttributes($idProductConcrete, LocaleTransfer $locale)
 {
     $query = $this->productQueryContainer->queryProductConcreteAttributeCollection($idProductConcrete, $locale->getIdLocale());
     return $query->count() > 0;
 }
Пример #8
0
 /**
  * @api
  *
  * @param int $idCategoryNode
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return \Generated\Shared\Transfer\UrlTransfer|null
  */
 public function getResourceUrlByCategoryNodeIdAndLocale($idCategoryNode, LocaleTransfer $locale)
 {
     $urlManager = $this->getFactory()->createUrlManager();
     return $urlManager->getResourceUrlByCategoryNodeAndLocaleId($idCategoryNode, $locale->getIdLocale());
 }
Пример #9
0
 /**
  * @param array $item
  *
  * @return \Generated\Shared\Transfer\UrlTransfer
  */
 protected function getYvesProductUrl(array $item)
 {
     $yvesProductUrl = $this->urlFacade->getUrlByIdProductAbstractAndIdLocale($item[SpyProductAbstractTableMap::COL_ID_PRODUCT_ABSTRACT], $this->localeTransfer->getIdLocale());
     return $yvesProductUrl;
 }
Пример #10
0
 /**
  * @api
  *
  * @param \Propel\Runtime\ActiveQuery\ModelCriteria $expandableQuery
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return $this
  */
 public function joinProductQueryWithLocalizedAttributes(ModelCriteria $expandableQuery, LocaleTransfer $locale)
 {
     $expandableQuery->addJoin(SpyProductAbstractTableMap::COL_ID_PRODUCT_ABSTRACT, SpyProductAbstractLocalizedAttributesTableMap::COL_FK_PRODUCT_ABSTRACT, Criteria::INNER_JOIN);
     $expandableQuery->addJoin(SpyProductAbstractLocalizedAttributesTableMap::COL_FK_LOCALE, SpyLocaleTableMap::COL_ID_LOCALE, Criteria::INNER_JOIN);
     $expandableQuery->addAnd(SpyLocaleTableMap::COL_ID_LOCALE, $locale->getIdLocale(), Criteria::EQUAL);
     $expandableQuery->addAnd(SpyLocaleTableMap::COL_IS_ACTIVE, true, Criteria::EQUAL);
     $expandableQuery->addJoinObject((new Join(SpyProductAbstractTableMap::COL_ID_PRODUCT_ABSTRACT, SpyUrlTableMap::COL_FK_RESOURCE_PRODUCT_ABSTRACT, Criteria::LEFT_JOIN))->setRightTableAlias('product_urls'), 'productUrlsJoin');
     $expandableQuery->addJoinCondition('productUrlsJoin', 'product_urls.fk_locale = ' . SpyLocaleTableMap::COL_ID_LOCALE);
     $expandableQuery->addJoinObject(new Join(SpyProductTableMap::COL_ID_PRODUCT, SpyProductLocalizedAttributesTableMap::COL_FK_PRODUCT, Criteria::INNER_JOIN), 'productAttributesJoin');
     $expandableQuery->addJoinCondition('productAttributesJoin', SpyProductLocalizedAttributesTableMap::COL_FK_LOCALE . ' = ' . SpyLocaleTableMap::COL_ID_LOCALE);
     $expandableQuery->withColumn(SpyProductAbstractTableMap::COL_ID_PRODUCT_ABSTRACT, 'id_product_abstract');
     $expandableQuery->withColumn(SpyProductAbstractTableMap::COL_ATTRIBUTES, 'abstract_attributes');
     $expandableQuery->withColumn(SpyProductAbstractLocalizedAttributesTableMap::COL_ATTRIBUTES, 'abstract_localized_attributes');
     $expandableQuery->withColumn("GROUP_CONCAT(spy_product.attributes SEPARATOR '\$%')", 'concrete_attributes');
     $expandableQuery->withColumn("GROUP_CONCAT(spy_product_localized_attributes.attributes SEPARATOR '\$%')", 'concrete_localized_attributes');
     $expandableQuery->withColumn('GROUP_CONCAT(product_urls.url)', 'product_urls');
     $expandableQuery->withColumn(SpyProductAbstractLocalizedAttributesTableMap::COL_NAME, 'abstract_name');
     $expandableQuery->withColumn('GROUP_CONCAT(spy_product_localized_attributes.name)', 'concrete_names');
     return $this;
 }
Пример #11
0
 /**
  * @param int $idCategoryNode
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return \Orm\Zed\Category\Persistence\SpyCategoryNode[]
  */
 protected function getCategoryChildren($idCategoryNode, LocaleTransfer $locale)
 {
     return $this->getFactory()->getCategoryQueryContainer()->queryChildren($idCategoryNode, $locale->getIdLocale(), false, false)->find();
 }
 /**
  * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer
  *
  * @return \Propel\Runtime\ActiveQuery\Criteria
  */
 protected function getLocaleCriteria(LocaleTransfer $localeTransfer)
 {
     $localeCriteria = new Criteria();
     $localeCriteria->addAnd(PavCmsLocalizedBlockTableMap::COL_FK_LOCALE, $localeTransfer->getIdLocale(), Criteria::EQUAL);
     $localeCriteria->_or();
     $localeCriteria->addAnd(PavCmsLocalizedBlockTableMap::COL_ID_CMS_LOCALIZED_BLOCK, null, Criteria::ISNULL);
     return $localeCriteria;
 }
Пример #13
0
 /**
  * Finds all glossary keys and creates missing translations as empty to be able to touch the page.
  *
  * @param int $idPage
  * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer
  *
  * @return void
  */
 protected function createTranslationsForLocale($idPage, LocaleTransfer $localeTransfer)
 {
     $glossaryKeyCollection = $this->getQueryContainer()->queryGlossaryKeyMappingsByPageId($idPage)->innerJoinGlossaryKey()->withColumn(SpyGlossaryKeyTableMap::COL_KEY, 'glossaryKey')->find();
     foreach ($glossaryKeyCollection as $glossaryKeyEntity) {
         $key = $glossaryKeyEntity->getGlossaryKey()->getKey();
         $translation = $this->getQueryContainer()->queryKeyWithTranslationByKeyAndLocale($key, $localeTransfer->getIdLocale())->findOne();
         if ($translation !== null) {
             continue;
         }
         $this->getFactory()->getGlossaryFacade()->createAndTouchTranslation($key, $localeTransfer, '');
     }
 }
Пример #14
0
 /**
  * @param \Generated\Shared\Transfer\CategoryTransfer $category
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  * @param \Orm\Zed\Category\Persistence\SpyCategoryAttribute $categoryAttributeEntity
  *
  * @return void
  */
 protected function saveCategoryAttribute(CategoryTransfer $category, LocaleTransfer $locale, SpyCategoryAttribute $categoryAttributeEntity)
 {
     $categoryAttributeEntity->fromArray($category->toArray());
     $categoryAttributeEntity->setFkCategory($category->getIdCategory());
     $categoryAttributeEntity->setFkLocale($locale->getIdLocale());
     $categoryAttributeEntity->save();
 }
Пример #15
0
 /**
  * @param int $idChild
  * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer
  *
  * @return string
  */
 protected function generateChildUrl($idChild, LocaleTransfer $localeTransfer)
 {
     $parentList = $this->categoryTreeReader->getPathParents($idChild, $localeTransfer->getIdLocale());
     $pathTokens = [];
     foreach ($parentList as $parent) {
         /** @var \Orm\Zed\Category\Persistence\SpyCategoryClosureTable $parent */
         $pathTokens[] = $parent->toArray();
     }
     return $this->generateUrlFromPathTokens($pathTokens);
 }
 /**
  * @api
  *
  * @param string $term
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @return \Orm\Zed\Product\Persistence\SpyProductAbstractQuery
  */
 public function queryProductsAbstractBySearchTerm($term, LocaleTransfer $locale)
 {
     $query = $this->getFactory()->createProductAbstractQuery();
     $query->addJoin(SpyProductAbstractTableMap::COL_ID_PRODUCT_ABSTRACT, SpyProductAbstractLocalizedAttributesTableMap::COL_FK_PRODUCT_ABSTRACT, Criteria::INNER_JOIN)->addJoin(SpyProductAbstractLocalizedAttributesTableMap::COL_FK_LOCALE, SpyLocaleTableMap::COL_ID_LOCALE, Criteria::INNER_JOIN)->addAnd(SpyLocaleTableMap::COL_ID_LOCALE, $locale->getIdLocale(), Criteria::EQUAL)->addAnd(SpyLocaleTableMap::COL_IS_ACTIVE, true, Criteria::EQUAL)->withColumn(SpyProductAbstractLocalizedAttributesTableMap::COL_NAME, 'name')->withColumn(SpyProductAbstractTableMap::COL_ATTRIBUTES, 'abstract_attributes')->withColumn(SpyProductAbstractLocalizedAttributesTableMap::COL_ATTRIBUTES, 'abstract_localized_attributes');
     $query->groupByAttributes();
     $query->groupByIdProductAbstract();
     if (trim($term) !== '') {
         $term = '%' . mb_strtoupper($term) . '%';
         $query->where('UPPER(' . SpyProductAbstractTableMap::COL_SKU . ') LIKE ?', $term, \PDO::PARAM_STR)->_or()->where('UPPER(' . SpyProductAbstractLocalizedAttributesTableMap::COL_NAME . ') LIKE ?', $term, \PDO::PARAM_STR);
     }
     return $query;
 }
Пример #17
0
 /**
  * @param string $categoryName
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  *
  * @throws \Spryker\Zed\Category\Business\Exception\MissingCategoryException
  *
  * @return int
  */
 public function getCategoryIdentifier($categoryName, LocaleTransfer $locale)
 {
     $categoryQuery = $this->queryContainer->queryCategoryAttributesByName($categoryName, $locale->getIdLocale());
     $category = $categoryQuery->findOne();
     if (!$category) {
         throw new MissingCategoryException(sprintf('Tried to retrieve missing attributes of category %s, locale %s', $categoryName, $locale->getLocaleName()));
     }
     return $category->getFkCategory();
 }
Пример #18
0
 /**
  * @param int $idPage
  * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer
  *
  * @return array
  */
 protected function extractGlossaryMapping($idPage, LocaleTransfer $localeTransfer)
 {
     $glossaryQuery = $this->getQueryContainer()->queryGlossaryKeyMappingsWithKeyByPageId($idPage, $localeTransfer->getIdLocale());
     $glossaryMappingArray = [];
     /** @var \Orm\Zed\Cms\Persistence\SpyCmsGlossaryKeyMapping[] $keyMappings */
     $keyMappings = $glossaryQuery->find()->getData();
     foreach ($keyMappings as $keyMapping) {
         $glossaryMappingArray[$keyMapping->getPlaceholder()] = $keyMapping->getIdCmsGlossaryKeyMapping();
     }
     return $glossaryMappingArray;
 }
Пример #19
0
 /**
  * @param string $keyName
  * @param \Generated\Shared\Transfer\LocaleTransfer $locale
  * @param string $value
  * @param bool $isActive
  *
  * @return \Generated\Shared\Transfer\TranslationTransfer
  */
 public function createTranslation($keyName, LocaleTransfer $locale, $value, $isActive)
 {
     $idKey = $this->keyManager->getKey($keyName)->getPrimaryKey();
     $idLocale = $locale->getIdLocale();
     if ($idLocale === null) {
         $idLocale = $this->localeFacade->getLocale($locale->getLocaleName())->getIdLocale();
     }
     return $this->createTranslationByIds($idKey, $idLocale, $value, $isActive);
 }