Example #1
0
 /**
  * @param $productsCollection Mage_Catalog_Model_Resource_Product_Collection
  * @param $message            string
  * @param $blockType          string
  *
  * @return bool
  */
 private function _processProducts($productsCollection, $message, $blockType)
 {
     $processor = $this->_htmlProcessor;
     $helper = $this->_getHelper();
     $products = array();
     foreach ($productsCollection as $product) {
         if ($product instanceof Mage_Wishlist_Model_Item) {
             $wishlistProduct = $product->getProduct();
             $products[$wishlistProduct->getProductUrl()] = $wishlistProduct;
         } elseif (is_array($productsCollection)) {
             $products[$product->getProductUrl()] = $product;
         } else {
             $product->setData('url', $product->getProductUrl());
         }
     }
     $linkSelectors = array_map('trim', explode(Mageplace_Hideprice_Model_Observer::DELIMITER, $helper->getCssSelector('product_link')));
     foreach ($linkSelectors as $linkSelector) {
         $items = $processor->query($linkSelector);
         if (count($items) === 0) {
             continue;
         }
         $positions = array();
         foreach ($items as $i => $item) {
             /** @var $item DOMElement */
             $url = $item->getAttribute('href');
             if ($blockType == 'wishlist/customer_sidebar' || $blockType == 'wishlist/customer_wishlist_items' || $blockType == 'tag/customer_view') {
                 $product = empty($products[$url]) ? false : $products[$url];
             } else {
                 $product = $productsCollection->getItemByColumnValue('url', $url);
             }
             /** @var $product Mage_Catalog_Model_Product */
             if (!$product) {
                 continue;
             }
             if (Mageplace_Hideprice_Model_Observer::$productEnable) {
                 /** @var $hideModel Mageplace_Hideprice_Model_Hideprice */
                 $hideModel = Mage::getModel('mageplace_hideprice/hideprice');
                 $hideModel->loadByProductId($product->getId(), array(0, Mageplace_Hideprice_Model_Observer::$storeId));
             }
             $skip = false;
             if (Mageplace_Hideprice_Model_Observer::$productEnable && $hideModel->getId() && $hideModel->isShowprice(Mageplace_Hideprice_Model_Observer::$groupId)) {
                 $skip = true;
             } elseif (Mageplace_Hideprice_Model_Observer::$productEnable && $hideModel->getId() && $hideModel->isHideprice(Mageplace_Hideprice_Model_Observer::$groupId)) {
                 $positions[] = $i;
                 $skip = true;
             } elseif (Mageplace_Hideprice_Model_Observer::$categoryEnable) {
                 if (($categoriesIds = $product->getCategoryIds()) && is_array($categoriesIds)) {
                     $categories = Mageplace_Hideprice_Model_Observer::categoriesPriorities();
                     $intersectCategoriesIds = array_intersect($categories, $categoriesIds);
                     if (!empty($intersectCategoriesIds)) {
                         foreach ($intersectCategoriesIds as $categoryId) {
                             $category = Mage::getModel('catalog/category')->load($categoryId);
                             $check = $helper->checkCategory($category);
                             $skip = $check->getSkip();
                             if ($check->getHide()) {
                                 $positions[] = $i;
                             }
                         }
                     } else {
                         if (($category = $product->getCategory()) && is_object($category) && ($categoryId = $category->getId()) && in_array($categoryId, $categoriesIds)) {
                             $check = $helper->checkCategory($category);
                             $skip = $check->getSkip();
                             if ($check->getHide()) {
                                 $positions[] = $i;
                             }
                         } else {
                             foreach ($categoriesIds as $categoryId) {
                                 $category = Mage::getModel('catalog/category')->load($categoryId);
                                 $check = $helper->checkCategory($category);
                                 $skip = $check->getSkip();
                                 if ($check->getHide()) {
                                     $positions[] = $i;
                                 }
                             }
                         }
                     }
                 }
             }
             if (!$skip && Mageplace_Hideprice_Model_Observer::isNeedToBeHidden()) {
                 $positions[] = $i;
             }
         }
         $positions = array_unique($positions);
         if (count($positions) > 0) {
             $messageReplaced = false;
             if ($helper->isFilterEnable('price')) {
                 if ($selector = $helper->getCssSelector('price')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
             }
             // add to cart button
             if ($helper->isFilterEnable('add_to_cart')) {
                 if ($selector = $helper->getCssSelector('add_to_cart')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
                 if ($selector = $helper->getCssSelector('add_to_cart_link')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
             }
             // product qty
             if ($helper->isFilterEnable('qty')) {
                 if ($selector = $helper->getCssSelector('qty_label')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
                 if ($selector = $helper->getCssSelector('qty')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
                 if ($selector = $helper->getCssSelector('qty_bundle')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
             }
             // add to compare link
             if ($helper->isFilterEnable('add_to_compare')) {
                 if ($selector = $helper->getCssSelector('add_to_compare')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
             }
             // add to wishlist link
             if ($helper->isFilterEnable('add_to_wishlist')) {
                 if ($selector = $helper->getCssSelector('add_to_wishlist')) {
                     $this->_replaceSelector($processor, $blockType, $selector, $message, $positions, $messageReplaced);
                 }
             }
         }
     }
 }
Example #2
0
 /**
  * Hide price in block
  *
  * @param $html
  * @param $observer
  * @param $blockType
  */
 protected function _hidePriceLogic(&$html, $observer, $blockType)
 {
     if (null === self::$_isCustomerGroup) {
         self::$_isCustomerGroup = (int) self::$_helper->getStoreConfig('options/customer_group_enable');
         self::$categoryEnable = (bool) self::$_helper->getStoreConfig('options/category_enable');
         self::$productEnable = (bool) self::$_helper->getStoreConfig('options/product_enable');
     }
     if (1 == self::$_isCustomerGroup || self::$categoryEnable || self::$productEnable) {
         if (null === self::$_flagGroup) {
             $groupsString = self::$_helper->getStoreConfig('options/choose_customer_groups');
             if ($groupsString != '') {
                 $groupsArray = explode(",", $groupsString);
             } else {
                 $groupsArray = array();
             }
             self::$_flagGroup = false;
             foreach ($groupsArray as $gr) {
                 $gr = trim($gr);
                 if (self::$groupId == $gr) {
                     self::$_flagGroup = true;
                     break;
                 }
             }
         }
         if (self::$_flagGroup || self::$categoryEnable || self::$productEnable) {
             $this->checkProducts($html, $observer, $blockType);
         } else {
             $this->deleteButtonsAndPrice($html, $observer, self::$_helper->getStoreConfig('options/text_message_group'));
         }
     } else {
         $this->deleteButtonsAndPrice($html, $observer, self::$_helper->getStoreConfig('options/text_message'));
     }
 }
Example #3
0
 public function isHide($product)
 {
     if (!$product instanceof Mage_Catalog_Model_Product) {
         if (!is_object($product) || !($productId = $product->getId())) {
             return false;
         }
         $product = Mage::getModel('catalog/product')->load($productId);
         if (!($productId = $product->getId())) {
             return false;
         }
     }
     if (null === self::$_isEnabled) {
         if (Mage::app()->getStore()->isAdmin()) {
             self::$_isEnabled = false;
         } else {
             $storeId = Mage::app()->getStore()->getGroup()->getId();
             $stores = $this->getStoreConfig('options/choose_stores');
             $stores = explode(',', $stores);
             if (in_array($storeId, $stores)) {
                 self::$_isEnabled = false;
             } else {
                 self::$_isEnabled = true;
             }
         }
     }
     if (false === self::$_isEnabled) {
         return false;
     }
     if (null === self::$_isCustomerGroup) {
         self::$_isCustomerGroup = (int) $this->getStoreConfig('options/customer_group_enable');
         self::$categoryEnable = (bool) $this->getStoreConfig('options/category_enable');
         self::$productEnable = (bool) $this->getStoreConfig('options/product_enable');
     }
     if (1 == self::$_isCustomerGroup || self::$categoryEnable || self::$productEnable) {
         if (null === self::$_flagGroup) {
             $groupsString = $this->getStoreConfig('options/choose_customer_groups');
             if ($groupsString != '') {
                 $groupsArray = explode(",", $groupsString);
             } else {
                 $groupsArray = array();
             }
             self::$_flagGroup = false;
             foreach ($groupsArray as $gr) {
                 $gr = trim($gr);
                 if (self::$groupId == $gr) {
                     self::$_flagGroup = true;
                     break;
                 }
             }
         }
         if (self::$_flagGroup || self::$categoryEnable || self::$productEnable) {
             if (self::$productEnable) {
                 /** @var $hideModel Mageplace_Hideprice_Model_Hideprice */
                 $hideModel = Mage::getModel('mageplace_hideprice/hideprice')->loadByProductId($product->getId(), array(0, self::$storeId));
             }
             if (self::$productEnable && $hideModel->getId() && $hideModel->isShowprice(self::$groupId)) {
                 $skip = true;
             } elseif (self::$productEnable && $hideModel->getId() && $hideModel->isHideprice(self::$groupId)) {
                 return $this->getStoreConfig('options/text_message_product');
             } elseif (self::$categoryEnable) {
                 if (($categoriesIds = $product->getCategoryIds()) && is_array($categoriesIds)) {
                     $categories = Mageplace_Hideprice_Model_Observer::categoriesPriorities();
                     $intersectCategoriesIds = array_intersect($categories, $categoriesIds);
                     if (!empty($intersectCategoriesIds)) {
                         foreach ($intersectCategoriesIds as $categoryId) {
                             $category = Mage::getModel('catalog/category')->load($categoryId);
                             $check = $this->checkCategory($category);
                             if ($check->getHide()) {
                                 return $this->getStoreConfig('options/text_message_category');
                             }
                             $skip = $check->getSkip();
                         }
                     } else {
                         if (($category = $product->getCategory()) && is_object($category) && ($categoryId = $category->getId()) && in_array($categoryId, $categoriesIds)) {
                             $check = $this->checkCategory($category);
                             if ($check->getHide()) {
                                 return $this->getStoreConfig('options/text_message_category');
                             }
                             $skip = $check->getSkip();
                         } else {
                             foreach ($categoriesIds as $categoryId) {
                                 $category = Mage::getModel('catalog/category')->load($categoryId);
                                 $check = $this->checkCategory($category);
                                 if ($check->getHide()) {
                                     return $this->getStoreConfig('options/text_message_category');
                                 }
                                 $skip = $check->getSkip();
                             }
                         }
                     }
                 }
             }
             if (empty($skip) && self::isNeedToBeHidden()) {
                 return $this->getStoreConfig('options/text_message_product');
             }
         } else {
             return $this->getStoreConfig('options/text_message');
         }
     } else {
         return $this->getStoreConfig('options/text_message');
     }
     return false;
 }