Array('self' => true), ); $this->permMapping = array_merge($this->permMapping, $permissions); } /** * Apply any custom changes to list's sql query * * @param kEvent $event * @return void * @access protected * @see kDBEventHandler::OnListBuild() */ protected function SetCustomQuery(kEvent $event) { parent::SetCustomQuery($event); if ( $this->Application->isAdminUser ) { return; } $category_id = $this->Application->GetVar('m_cat_id'); $parent_category_id = $event->getEventParam('parent_cat_id'); if ( (string)$parent_category_id !== '' ) { if ( $parent_category_id != 'any' && $parent_category_id > 0 ) { $category_id = $parent_category_id; } } $sql = 'SELECT m.ManufacturerId, COUNT(p.ProductId) FROM ' . TABLE_PREFIX . 'Manufacturers m LEFT JOIN ' . TABLE_PREFIX . 'Products p ON p.ManufacturerId = m.ManufacturerId LEFT JOIN ' . TABLE_PREFIX . 'CategoryItems ci ON ci.ItemResourceId = p.ResourceId LEFT JOIN ' . TABLE_PREFIX . 'Categories c ON c.CategoryId = ci.CategoryId WHERE (ci.PrimaryCat = 1) AND (p.Status = ' . STATUS_ACTIVE . ') AND (c.Status = ' . STATUS_ACTIVE . ') GROUP BY m.ManufacturerId'; // add category filter $tree_indexes = $this->Application->getTreeIndex($category_id); // if category_id is 0 returs false if ( $tree_indexes ) { $sql .= ' AND c.TreeLeft BETWEEN ' . $tree_indexes['TreeLeft'] . ' AND ' . $tree_indexes['TreeRight']; } $manufacturers = $this->Conn->GetCol($sql); /** @var kDBList $object */ $object = $event->getObject(); $object->addFilter('category_manufacturer_filter', $manufacturers ? '%1$s.ManufacturerId IN (' . implode(',', $manufacturers) . ')' : 'FALSE'); } /** * Pre-fills states dropdown with correct values * * @param kEvent $event * @return void * @access protected */ protected function OnAfterItemLoad(kEvent $event) { parent::OnAfterItemLoad($event); /** @var kCountryStatesHelper $cs_helper */ $cs_helper = $this->Application->recallObject('CountryStatesHelper'); $cs_helper->PopulateStates($event, 'State', 'Country'); } /** * Processes states * * @param kEvent $event * @return void * @access protected */ protected function OnBeforeItemUpdate(kEvent $event) { parent::OnBeforeItemUpdate($event); /** @var kCountryStatesHelper $cs_helper */ $cs_helper = $this->Application->recallObject('CountryStatesHelper'); $cs_helper->CheckStateField($event, 'State', 'Country'); $cs_helper->PopulateStates($event, 'State', 'Country'); } /** * Processes states * * @param kEvent $event * @return void * @access protected */ protected function OnBeforeItemCreate(kEvent $event) { parent::OnBeforeItemCreate($event); /** @var kCountryStatesHelper $cs_helper */ $cs_helper = $this->Application->recallObject('CountryStatesHelper'); $cs_helper->CheckStateField($event, 'State', 'Country'); $cs_helper->PopulateStates($event, 'State', 'Country'); } }