getProductBanRegex()   A
last analyzed

Complexity

Conditions 5
Paths 12

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.4222
c 0
b 0
f 0
cc 5
nc 12
nop 1
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