/** * @constructor * @param FixtureFactory $fixtureFactory * @param array $params * @param array|int $data */ public function __construct(FixtureFactory $fixtureFactory, array $params, $data = []) { $this->params = $params; if (isset($data['dataSet'])) { $this->parentCategory = $fixtureFactory->createByCode('catalogCategory', ['dataSet' => $data['dataSet']]); if (!$this->parentCategory->hasData('id')) { $this->parentCategory->persist(); } $this->data = $this->parentCategory->getId(); } elseif (isset($data['data']) && isset($data['parent_category'])) { $this->data = $data['data']; $this->parentCategory = $data['parent_category']; } else { $this->data = $data; } }
/** * Prepare category path. * * @param CatalogCategory $category * @return array */ protected function prepareFullCategoryPath(CatalogCategory $category) { $path = []; if ($category->hasData('parent_id')) { $parentCategory = $category->getDataFieldConfig('parent_id')['source']->getParentCategory(); if ($parentCategory != null) { $path = $this->prepareFullCategoryPath($parentCategory); } } return array_filter(array_merge($path, [$category->getPath(), $category->getName()])); }
/** * Get category products. * * @param CatalogCategory $category * @return array */ protected function getCategoryProducts(CatalogCategory $category) { return $category->hasData('category_products') ? $category->getDataFieldConfig('category_products')['source']->getProducts() : []; }
/** * Get data of Category information. * * @param CatalogCategory $category * @return array */ public function getDataCategory(CatalogCategory $category) { return $category->hasData() ? parent::getData($category) : parent::getData(); }