/** * @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); } } } } }
/** * 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')); } }
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; }