1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* Nexcess.net Turpentine Extension for Magento |
5
|
|
|
* Copyright (C) 2012 Nexcess.net L.L.C. |
6
|
|
|
* |
7
|
|
|
* This program is free software; you can redistribute it and/or modify |
8
|
|
|
* it under the terms of the GNU General Public License as published by |
9
|
|
|
* the Free Software Foundation; either version 2 of the License, or |
10
|
|
|
* (at your option) any later version. |
11
|
|
|
* |
12
|
|
|
* This program is distributed in the hope that it will be useful, |
13
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
14
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15
|
|
|
* GNU General Public License for more details. |
16
|
|
|
* |
17
|
|
|
* You should have received a copy of the GNU General Public License along |
18
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc., |
19
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
20
|
|
|
*/ |
21
|
|
|
|
22
|
|
|
class Nexcessnet_Turpentine_Helper_Ban extends Mage_Core_Helper_Abstract { |
23
|
|
|
/** |
24
|
|
|
* Get the regex for banning a product page from the cache, including |
25
|
|
|
* any parent products for configurable/group products |
26
|
|
|
* |
27
|
|
|
* @param Mage_Catalog_Model_Product $product |
28
|
|
|
* @return string |
29
|
|
|
*/ |
30
|
|
|
public function getProductBanRegex($product) { |
31
|
|
|
$urlPatterns = array(); |
32
|
|
|
foreach ($this->getParentProducts($product) as $parentProduct) { |
33
|
|
|
if ($parentProduct->getUrlKey()) { |
34
|
|
|
$urlPatterns[] = $parentProduct->getUrlKey(); |
35
|
|
|
} |
36
|
|
|
} |
37
|
|
|
if ($product->getUrlKey()) { |
38
|
|
|
$urlPatterns[] = $product->getUrlKey(); |
39
|
|
|
} |
40
|
|
|
if (empty($urlPatterns)) { |
41
|
|
|
$urlPatterns[] = "##_NEVER_MATCH_##"; |
42
|
|
|
} |
43
|
|
|
$pattern = sprintf('(?:%s)', implode('|', $urlPatterns)); |
44
|
|
|
return $pattern; |
45
|
|
|
} |
46
|
|
|
|
47
|
|
|
/** |
48
|
|
|
* Get parent products of a configurable or group product |
49
|
|
|
* |
50
|
|
|
* @param Mage_Catalog_Model_Product $childProduct |
51
|
|
|
* @return array |
52
|
|
|
*/ |
53
|
|
|
public function getParentProducts($childProduct) { |
54
|
|
|
$parentProducts = array(); |
55
|
|
|
foreach (array('configurable', 'grouped') as $pType) { |
56
|
|
|
foreach (Mage::getModel('catalog/product_type_'.$pType) |
57
|
|
|
->getParentIdsByChild($childProduct->getId()) as $parentId) { |
58
|
|
|
$parentProducts[] = Mage::getModel('catalog/product') |
59
|
|
|
->load($parentId); |
60
|
|
|
} |
61
|
|
|
} |
62
|
|
|
return $parentProducts; |
63
|
|
|
} |
64
|
|
|
} |
65
|
|
|
|