/** * Load page IDs from product categories table * * @param mixed $varValue * @param \DataContainer $dc * * @return mixed */ public function load($varValue, \DataContainer $dc) { $objCategories = ProductCategory::findBy('pid', $dc->id); SubtableVersion::initialize($dc->table, $dc->id, ProductCategory::getTable(), null === $objCategories ? array() : $objCategories->fetchAll()); return null === $objCategories ? array() : $objCategories->fetchEach('page_id'); }
/** * Get categories (pages) assigned to this product * * @param bool $blnPublished Only return published categories (pages) * * @return \PageModel[] */ public function getCategories($blnPublished = false) { $key = $blnPublished ? 'published' : 'all'; if (null === $this->arrCategories || !isset($this->arrCategories[$key])) { if ($blnPublished) { $objCategories = ProductCategory::findByPidForPublishedPages($this->getProductId()); } else { $objCategories = ProductCategory::findBy('pid', $this->getProductId()); } $this->arrCategories[$key] = null === $objCategories ? array() : $objCategories->fetchEach('page_id'); // Sort categories by the backend drag&drop $arrOrder = deserialize($this->orderPages); if (!empty($arrOrder) && is_array($arrOrder)) { $this->arrCategories[$key] = array_unique(array_merge(array_intersect($arrOrder, $this->arrCategories[$key]), $this->arrCategories[$key])); } } return $this->arrCategories[$key]; }