Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.31 KB | None | 0 0
  1. <?php
  2.  
  3. class BarcodesInc_RecommendedCategories_Model_Adminhtml_Observer
  4. {
  5.     /**
  6.      * @var BarcodesInc_RecommendedCategories_Helper_Data|null
  7.      */
  8.     protected $helper;
  9.  
  10.     const FIELD_PREFIX = 'category_ids_';
  11.     const SORT_FIELD_PREFIX = 'category_recommended_position_';
  12.  
  13.     /**
  14.      * Get merchandiser helper
  15.      *
  16.      * @return BarcodesInc_RecommendedCategories_Helper_Data
  17.      */
  18.     public function getHelper()
  19.     {
  20.         if (!$this->helper) {
  21.             $this->helper = Mage::helper('recommended_categories');
  22.         }
  23.  
  24.         return $this->helper;
  25.     }
  26.  
  27.     /**
  28.      * Setup the tab in Manage Categories
  29.      *
  30.      * @param Varien_Event_Observer $observer
  31.      * @return BarcodesInc_RecommendedCategories_Model_Adminhtml_Observer
  32.      */
  33.     public function adminhtmlCatalogCategoryTabs(Varien_Event_Observer $observer)
  34.     {
  35.         if (!$this->getHelper()->isAllowed()) {
  36.             return $this;
  37.         }
  38.  
  39.         try {
  40.             /* @var $adminTabs Mage_Adminhtml_Block_Catalog_Category_Tabs */
  41.             $adminTabs = $observer->getEvent()->getTabs();
  42.  
  43.             $adminTabBlock = $adminTabs->getLayout()
  44.                 ->createBlock(
  45.                     'recommended_categories/adminhtml_catalog_category_tab_recommendations',
  46.                     'category.recommendations.tab'
  47.                 );
  48.  
  49.             $adminTabs->addTab('recommendations', array(
  50.                     'label' => Mage::helper('catalog')->__('Recommended Categories'),
  51.                     'content' => $adminTabBlock->toHtml())
  52.             );
  53.         } catch (Exception $e) {
  54.             Mage::logException($e);
  55.         }
  56.         return $this;
  57.     }
  58.  
  59.     public function saveRecommendedCategories(Varien_Event_Observer $observer)
  60.     {
  61.         if (!$this->getHelper()->isAllowed()) {
  62.             return $this;
  63.         }
  64.         $storeId = Mage::app()->getRequest()->getParam('store');
  65.         /** @var Mage_Catalog_Model_Category $category */
  66.         $category =
  67.          $originCategory =    $observer->getEvent()->getCategory();
  68.  
  69.         $postData = Mage::app()->getRequest()->getPost();
  70.  
  71.         if($storeId) {
  72.             $category = Mage::getModel( 'catalog/category' )->setStoreId( $storeId )
  73.                             ->load( $observer->getEvent()->getCategory()->getId() );
  74.             $originCategory = Mage::getModel( 'catalog/category' )->setStoreId( 0 )
  75.                             ->load( $observer->getEvent()->getCategory()->getId() );
  76.         }
  77.  
  78.         if(isset($postData['use_default']) && in_array('catalog_category_recommendations', $postData['use_default'])){
  79.  
  80.             $category->unsetData('recommended_categories');
  81.             $category->getResource()->saveAttribute($category, 'recommended_categories');
  82.  
  83.  
  84.             $originCategory->getResource()->saveAttribute($originCategory, 'recommended_categories');
  85.  
  86.             return $this;
  87.         }
  88.  
  89.         $result = array();
  90.         foreach ($postData as $key => $data ) {
  91.             if (stripos($key, self::FIELD_PREFIX)!==false) {
  92.                 $_sortedCategories =
  93.                     $sortedCategories =
  94.                     $sortedPositions   = false;
  95.  
  96.                 $typeId = (int)str_replace(self::FIELD_PREFIX, '', $key);
  97.                 if (stripos($data, ',') === 0) {
  98.                     $data = ltrim($data, ',');
  99.                 }
  100.  
  101.                 $unsortedCategoriesArray = array_unique(explode(',', $data));
  102.                 if(isset($postData[self::SORT_FIELD_PREFIX.$typeId])) {
  103.                     $positions = $postData[ self::SORT_FIELD_PREFIX . $typeId ];
  104.  
  105.                     foreach ( $positions as $_key => $_value ) {
  106.  
  107.                         if ( $_value == "" ) {
  108.                             unset( $positions[ $_key ] );
  109.                         } elseif ( array_search( $_key, $unsortedCategoriesArray ) === false ) {
  110.                             unset( $positions[ $_key ] );
  111.                         }
  112.                     }
  113.  
  114.                     if ( $positions ) {
  115.                         $_sortedCategories =
  116.                         $sortedPositions = array_unique( array_flip( $positions ) );
  117.  
  118.                         ksort( $_sortedCategories );
  119.                         $_sortedCategories = array_values( $_sortedCategories );
  120.                     }
  121.                 }
  122.  
  123.                 $categoriesArray = $unsortedCategoriesArray;
  124.  
  125.                 if($_sortedCategories) {
  126.                     foreach ($_sortedCategories as $_key => $_value) {
  127.  
  128.                         $arrayKey = array_search($_value, $unsortedCategoriesArray);
  129.                         unset( $unsortedCategoriesArray[ $arrayKey ] );
  130.                         $sortedCategories[ $_key ] = (string) $_value;
  131.                     }
  132.                 }
  133.                 if($sortedCategories) {
  134.                     $categoriesArray = array_merge($sortedCategories, $unsortedCategoriesArray);
  135.                 }
  136.  
  137.                 $result[$typeId] = $categoriesArray;
  138.                 if($sortedPositions) {
  139.                     $result[$typeId]['positions'] = array_flip($sortedPositions);
  140.                 }
  141.             }
  142.         }
  143.  
  144.         try {
  145.             $category->setData('recommended_categories', serialize($result));
  146.             $category->getResource()->saveAttribute($category, 'recommended_categories');
  147.         } catch (Exception $e) {
  148.             Mage::helper('barcodes_core')->log($category->getId(), null, 'recommended_categories.log');
  149.             Mage::logException($e);
  150.         }
  151.  
  152.         return $this;
  153.  
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement