Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class BarcodesInc_RecommendedCategories_Model_Adminhtml_Observer
- {
- /**
- * @var BarcodesInc_RecommendedCategories_Helper_Data|null
- */
- protected $helper;
- const FIELD_PREFIX = 'category_ids_';
- const SORT_FIELD_PREFIX = 'category_recommended_position_';
- /**
- * Get merchandiser helper
- *
- * @return BarcodesInc_RecommendedCategories_Helper_Data
- */
- public function getHelper()
- {
- if (!$this->helper) {
- $this->helper = Mage::helper('recommended_categories');
- }
- return $this->helper;
- }
- /**
- * Setup the tab in Manage Categories
- *
- * @param Varien_Event_Observer $observer
- * @return BarcodesInc_RecommendedCategories_Model_Adminhtml_Observer
- */
- public function adminhtmlCatalogCategoryTabs(Varien_Event_Observer $observer)
- {
- if (!$this->getHelper()->isAllowed()) {
- return $this;
- }
- try {
- /* @var $adminTabs Mage_Adminhtml_Block_Catalog_Category_Tabs */
- $adminTabs = $observer->getEvent()->getTabs();
- $adminTabBlock = $adminTabs->getLayout()
- ->createBlock(
- 'recommended_categories/adminhtml_catalog_category_tab_recommendations',
- 'category.recommendations.tab'
- );
- $adminTabs->addTab('recommendations', array(
- 'label' => Mage::helper('catalog')->__('Recommended Categories'),
- 'content' => $adminTabBlock->toHtml())
- );
- } catch (Exception $e) {
- Mage::logException($e);
- }
- return $this;
- }
- public function saveRecommendedCategories(Varien_Event_Observer $observer)
- {
- if (!$this->getHelper()->isAllowed()) {
- return $this;
- }
- $storeId = Mage::app()->getRequest()->getParam('store');
- /** @var Mage_Catalog_Model_Category $category */
- $category =
- $originCategory = $observer->getEvent()->getCategory();
- $postData = Mage::app()->getRequest()->getPost();
- if($storeId) {
- $category = Mage::getModel( 'catalog/category' )->setStoreId( $storeId )
- ->load( $observer->getEvent()->getCategory()->getId() );
- $originCategory = Mage::getModel( 'catalog/category' )->setStoreId( 0 )
- ->load( $observer->getEvent()->getCategory()->getId() );
- }
- if(isset($postData['use_default']) && in_array('catalog_category_recommendations', $postData['use_default'])){
- $category->unsetData('recommended_categories');
- $category->getResource()->saveAttribute($category, 'recommended_categories');
- $originCategory->getResource()->saveAttribute($originCategory, 'recommended_categories');
- return $this;
- }
- $result = array();
- foreach ($postData as $key => $data ) {
- if (stripos($key, self::FIELD_PREFIX)!==false) {
- $_sortedCategories =
- $sortedCategories =
- $sortedPositions = false;
- $typeId = (int)str_replace(self::FIELD_PREFIX, '', $key);
- if (stripos($data, ',') === 0) {
- $data = ltrim($data, ',');
- }
- $unsortedCategoriesArray = array_unique(explode(',', $data));
- if(isset($postData[self::SORT_FIELD_PREFIX.$typeId])) {
- $positions = $postData[ self::SORT_FIELD_PREFIX . $typeId ];
- foreach ( $positions as $_key => $_value ) {
- if ( $_value == "" ) {
- unset( $positions[ $_key ] );
- } elseif ( array_search( $_key, $unsortedCategoriesArray ) === false ) {
- unset( $positions[ $_key ] );
- }
- }
- if ( $positions ) {
- $_sortedCategories =
- $sortedPositions = array_unique( array_flip( $positions ) );
- ksort( $_sortedCategories );
- $_sortedCategories = array_values( $_sortedCategories );
- }
- }
- $categoriesArray = $unsortedCategoriesArray;
- if($_sortedCategories) {
- foreach ($_sortedCategories as $_key => $_value) {
- $arrayKey = array_search($_value, $unsortedCategoriesArray);
- unset( $unsortedCategoriesArray[ $arrayKey ] );
- $sortedCategories[ $_key ] = (string) $_value;
- }
- }
- if($sortedCategories) {
- $categoriesArray = array_merge($sortedCategories, $unsortedCategoriesArray);
- }
- $result[$typeId] = $categoriesArray;
- if($sortedPositions) {
- $result[$typeId]['positions'] = array_flip($sortedPositions);
- }
- }
- }
- try {
- $category->setData('recommended_categories', serialize($result));
- $category->getResource()->saveAttribute($category, 'recommended_categories');
- } catch (Exception $e) {
- Mage::helper('barcodes_core')->log($category->getId(), null, 'recommended_categories.log');
- Mage::logException($e);
- }
- return $this;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement