/** * @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; }
/** * @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); }
/** * @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; }
/** * @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; }
/** * @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; }
/** * @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()); }
/** * @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; }
/** * @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; }
/** * @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; }
/** * 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, ''); } }
/** * @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(); }
/** * @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; }
/** * @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(); }
/** * @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; }
/** * @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); }