Version Notes
Enjoy it ;)
Download this release
Release Info
Developer | Magento Core Team |
Extension | IG_CategoryParents |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- app/code/community/IG/CategoryParents/COMPATIBILITY.txt +9 -0
- app/code/community/IG/CategoryParents/Helper/Data.php +88 -0
- app/code/community/IG/CategoryParents/LICENSE.txt +72 -0
- app/code/community/IG/CategoryParents/Model/Observer.php +44 -0
- app/code/community/IG/CategoryParents/etc/config.xml +70 -0
- app/code/community/IG/CategoryParents/etc/system.xml +41 -0
- app/etc/modules/IG_CategoryParents.xml +9 -0
- package.xml +18 -0
app/code/community/IG/CategoryParents/COMPATIBILITY.txt
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
This file reports the compatibility table for this extension.
|
2 |
+
If your Magento version is not included in this list you may try
|
3 |
+
using the extension but AT YOUR OWN RISK.
|
4 |
+
|
5 |
+
CE 1.4.2
|
6 |
+
CE 1.5.0
|
7 |
+
CE 1.5.1
|
8 |
+
CE 1.6.0
|
9 |
+
CE 1.6.1
|
app/code/community/IG/CategoryParents/Helper/Data.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* IDEALIAGroup srl
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://www.idealiagroup.com/magento-ext-license.html
|
11 |
+
*
|
12 |
+
* @category IG
|
13 |
+
* @package IG_CategoryParents
|
14 |
+
* @copyright Copyright (c) 2010-2011 IDEALIAGroup srl (http://www.idealiagroup.com)
|
15 |
+
* @license http://www.idealiagroup.com/magento-ext-license.html
|
16 |
+
*/
|
17 |
+
|
18 |
+
class IG_CategoryParents_Helper_Data extends Mage_Core_Helper_Abstract
|
19 |
+
{
|
20 |
+
protected $_categorModel;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Recursively load category's parents
|
24 |
+
*
|
25 |
+
* @param Mage_Catalog_Model_Category $category
|
26 |
+
* @return array
|
27 |
+
*/
|
28 |
+
public function getRecursiveCategoryParents(Mage_Catalog_Model_Category $category)
|
29 |
+
{
|
30 |
+
$return = array();
|
31 |
+
|
32 |
+
$parentId = $category->getParentId();
|
33 |
+
|
34 |
+
if ($parentId == 1)
|
35 |
+
return null;
|
36 |
+
|
37 |
+
if (!$parentId)
|
38 |
+
return null;
|
39 |
+
|
40 |
+
$parent = Mage::getModel('catalog/category');
|
41 |
+
$parent->load($parentId);
|
42 |
+
|
43 |
+
$return = $this->getRecursiveCategoryParents($parent);
|
44 |
+
$return[] = $parentId;
|
45 |
+
|
46 |
+
return $return;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Recursively load product's parents
|
51 |
+
*
|
52 |
+
* @param Mage_Catalog_Model_Product $product
|
53 |
+
* @return array
|
54 |
+
*/
|
55 |
+
public function getRecursiveProductParents(Mage_Catalog_Model_Product $product)
|
56 |
+
{
|
57 |
+
$return = array();
|
58 |
+
|
59 |
+
$categoryIds = $product->getCategoryIds();
|
60 |
+
if (!count($categoryIds))
|
61 |
+
return null;
|
62 |
+
|
63 |
+
rsort($categoryIds);
|
64 |
+
|
65 |
+
$category = Mage::getModel('catalog/category');
|
66 |
+
foreach ($categoryIds as $categoryId)
|
67 |
+
{
|
68 |
+
if (in_array($categoryId, $return))
|
69 |
+
continue;
|
70 |
+
|
71 |
+
if ($parentId == 1)
|
72 |
+
continue;
|
73 |
+
|
74 |
+
$category
|
75 |
+
->setData(array())
|
76 |
+
->load($categoryId);
|
77 |
+
|
78 |
+
$res = $this->getRecursiveCategoryParents($category);
|
79 |
+
$res[] = $categoryId;
|
80 |
+
|
81 |
+
$return = array_merge($return, $res);
|
82 |
+
}
|
83 |
+
|
84 |
+
$return = array_values(array_unique($return));
|
85 |
+
|
86 |
+
return $return;
|
87 |
+
}
|
88 |
+
}
|
app/code/community/IG/CategoryParents/LICENSE.txt
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
IDEALIAGroup srl EULA
|
2 |
+
www.idealiagroup.com
|
3 |
+
www.magentospecialist.it
|
4 |
+
|
5 |
+
THIS LICENSE AGREEMENT (HEREINAFTER AGREEMENT) IS AN AGREEMENT BETWEEN YOU (THE
|
6 |
+
PERSON OR COMPANY WHO IS BEING LICENSED TO USE THE SOFTWARE OR DOCUMENTATION)
|
7 |
+
AND IDEALIAGROUP SRL. (HEREINAFTER WE/US/OUR). THE AGREEMENT APPLIES TO ALL
|
8 |
+
PRODUCTS/SOFTWARE/SCRIPTS/SERVICES YOU PURCHASE FROM US.
|
9 |
+
|
10 |
+
1. By purchasing the Software you acknowledge that you have read this Agreement,
|
11 |
+
and that you agree to the content of the Agreement and its terms, and agree
|
12 |
+
to use the Software in compliance with this Agreement.
|
13 |
+
|
14 |
+
2. The Agreement comes into legal force at the moment when you order our
|
15 |
+
Software from our site or receive it through email or on data medium at the
|
16 |
+
our discretion.
|
17 |
+
|
18 |
+
3. We are the copyright holder of the Product. The Product or a portion of
|
19 |
+
it is a copyrightable matter and is liable to protection by the law.
|
20 |
+
Any activity that infringes terms of this Agreement violates copyright
|
21 |
+
law and will be prosecuted according to the current law. We reserve the
|
22 |
+
right to revoke the license of any user who is holding an invalid
|
23 |
+
license.
|
24 |
+
|
25 |
+
4. You may not use any part of the code in whole or part in any other
|
26 |
+
software or product or website without our explicit written permission.
|
27 |
+
|
28 |
+
5. You have the right, within the duration of the license, to modify and
|
29 |
+
adapt the product for your specific needs.
|
30 |
+
|
31 |
+
6. You may not give, sell, distribute, sub-license, rent, lease or lend
|
32 |
+
any portion of the Product or Documentation to anyone without our
|
33 |
+
explicit written permission. You may not place the Product on a server
|
34 |
+
so that it is accessible via a public network such as the Internet
|
35 |
+
for distribution purposes without our explicit written permission.
|
36 |
+
|
37 |
+
7. You are bound to preserve the copyright information intact, this
|
38 |
+
includes the text/link at bottom of templates.
|
39 |
+
|
40 |
+
8. We reserve the right to publish a selected list of buyers of our
|
41 |
+
Product.
|
42 |
+
|
43 |
+
9. We will not be liable to you for any damages (including any loss of
|
44 |
+
profits/saving, or incidental or consequential) caused to you, your
|
45 |
+
information and your business arising out of the use or inability to use
|
46 |
+
this Product.
|
47 |
+
|
48 |
+
10. We are not liable for prosecution arising from use of the Product
|
49 |
+
against law or for any illegal use.
|
50 |
+
|
51 |
+
11. If you fail to use the Product in accordance with the terms and
|
52 |
+
conditions of this License Agreement, it constitutes a breach of the
|
53 |
+
agreement, and your license to use the program is revoked.
|
54 |
+
|
55 |
+
12. IDEALIAGroup srl reserves the right to change this license agreement at
|
56 |
+
any time and impose its clauses at any given time.
|
57 |
+
|
58 |
+
13. License agreement remains effective until terminated. We retain the right
|
59 |
+
to terminate your license to use the Product at any time, if in its sole
|
60 |
+
discretion, you are not abiding by the terms of the Agreement, including,
|
61 |
+
but not limited to, obscuring or removing any link or copyright notice as
|
62 |
+
specified in this agreement. You may terminate it at any time by
|
63 |
+
destroying all copies of the Product. Termination of this Agreement does
|
64 |
+
not bind us to return you the amount spent for purchase of the Product.
|
65 |
+
|
66 |
+
14. If you continue to use the Software after IDEALIAGroup srl gives you
|
67 |
+
notice of termination of your license, you hereby agree to accept an
|
68 |
+
injunction to enjoin you from its further use and to pay all costs
|
69 |
+
(including but not limited to reasonable attorney fees) to enforce our
|
70 |
+
revocation of your license and any damages suffered by us because of
|
71 |
+
your misuse of the Product.
|
72 |
+
|
app/code/community/IG/CategoryParents/Model/Observer.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* IDEALIAGroup srl
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the EULA
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://www.idealiagroup.com/magento-ext-license.html
|
11 |
+
*
|
12 |
+
* @category IG
|
13 |
+
* @package IG_CategoryParents
|
14 |
+
* @copyright Copyright (c) 2010-2011 IDEALIAGroup srl (http://www.idealiagroup.com)
|
15 |
+
* @license http://www.idealiagroup.com/magento-ext-license.html
|
16 |
+
*/
|
17 |
+
|
18 |
+
class IG_CategoryParents_Model_Observer
|
19 |
+
{
|
20 |
+
/**
|
21 |
+
* Set parent categories
|
22 |
+
*
|
23 |
+
* @param Varien_Event_Observer $observer
|
24 |
+
* @return IG_CategoryParents_Model_Observer
|
25 |
+
*/
|
26 |
+
public function onCatalogProductSaveBefore($observer)
|
27 |
+
{
|
28 |
+
$product = $observer->getEvent()->getProduct();
|
29 |
+
|
30 |
+
if (!count($product->getCategoryIds()))
|
31 |
+
return $this;
|
32 |
+
|
33 |
+
$helper = Mage::helper('ig_categoryparents');
|
34 |
+
$recursiveParents = $helper->getRecursiveProductParents($product);
|
35 |
+
|
36 |
+
if (!count($recursiveParents))
|
37 |
+
return $this;
|
38 |
+
|
39 |
+
$product
|
40 |
+
->setCategoryIds($recursiveParents);
|
41 |
+
|
42 |
+
return $this;
|
43 |
+
}
|
44 |
+
}
|
app/code/community/IG/CategoryParents/etc/config.xml
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<config>
|
2 |
+
<modules>
|
3 |
+
<IG_CategoryParents>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
</IG_CategoryParents>
|
6 |
+
</modules>
|
7 |
+
|
8 |
+
<global>
|
9 |
+
<helpers>
|
10 |
+
<ig_categoryparents>
|
11 |
+
<class>IG_CategoryParents_Helper</class>
|
12 |
+
</ig_categoryparents>
|
13 |
+
</helpers>
|
14 |
+
<models>
|
15 |
+
<ig_categoryparents>
|
16 |
+
<class>IG_CategoryParents_Model</class>
|
17 |
+
</ig_categoryparents>
|
18 |
+
</models>
|
19 |
+
</global>
|
20 |
+
|
21 |
+
<adminhtml>
|
22 |
+
<translate>
|
23 |
+
<modules>
|
24 |
+
<ig_categoryparents>
|
25 |
+
<files>
|
26 |
+
<default>IG_CategoryParents.csv</default>
|
27 |
+
</files>
|
28 |
+
</ig_categoryparents>
|
29 |
+
</modules>
|
30 |
+
</translate>
|
31 |
+
<events>
|
32 |
+
<catalog_product_save_before>
|
33 |
+
<observers>
|
34 |
+
<ig_categoryparents>
|
35 |
+
<class>ig_categoryparents/observer</class>
|
36 |
+
<method>onCatalogProductSaveBefore</method>
|
37 |
+
</ig_categoryparents>
|
38 |
+
</observers>
|
39 |
+
</catalog_product_save_before>
|
40 |
+
</events>
|
41 |
+
<acl>
|
42 |
+
<resources>
|
43 |
+
<admin>
|
44 |
+
<children>
|
45 |
+
<system>
|
46 |
+
<children>
|
47 |
+
<config>
|
48 |
+
<children>
|
49 |
+
<ig_categoryparents translate="title" module="ig_categoryparents">
|
50 |
+
<title>IG CategoryParents</title>
|
51 |
+
<sort_order>50</sort_order>
|
52 |
+
</ig_categoryparents>
|
53 |
+
</children>
|
54 |
+
</config>
|
55 |
+
</children>
|
56 |
+
</system>
|
57 |
+
</children>
|
58 |
+
</admin>
|
59 |
+
</resources>
|
60 |
+
</acl>
|
61 |
+
</adminhtml>
|
62 |
+
|
63 |
+
<default>
|
64 |
+
<ig_categoryparents>
|
65 |
+
<general>
|
66 |
+
<enabled>1</enabled>
|
67 |
+
</general>
|
68 |
+
</ig_categoryparents>
|
69 |
+
</default>
|
70 |
+
</config>
|
app/code/community/IG/CategoryParents/etc/system.xml
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<tabs>
|
4 |
+
<ig translate="label" module="ig_categoryparents">
|
5 |
+
<label>IdealiaGroup</label>
|
6 |
+
<sort_order>200</sort_order>
|
7 |
+
</ig>
|
8 |
+
</tabs>
|
9 |
+
<sections>
|
10 |
+
<ig_categoryparents translate="label" module="ig_categoryparents">
|
11 |
+
<label>IG CategoryParents</label>
|
12 |
+
<tab>ig</tab>
|
13 |
+
<frontend_type>text</frontend_type>
|
14 |
+
<sort_order>10</sort_order>
|
15 |
+
<show_in_default>1</show_in_default>
|
16 |
+
<show_in_website>1</show_in_website>
|
17 |
+
<show_in_store>1</show_in_store>
|
18 |
+
<groups>
|
19 |
+
<general translate="label">
|
20 |
+
<label>General</label>
|
21 |
+
<frontend_type>text</frontend_type>
|
22 |
+
<sort_order>10</sort_order>
|
23 |
+
<show_in_default>1</show_in_default>
|
24 |
+
<show_in_website>1</show_in_website>
|
25 |
+
<show_in_store>1</show_in_store>
|
26 |
+
<fields>
|
27 |
+
<enabled translate="label">
|
28 |
+
<label>Enable</label>
|
29 |
+
<frontend_type>select</frontend_type>
|
30 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
31 |
+
<sort_order>10</sort_order>
|
32 |
+
<show_in_default>1</show_in_default>
|
33 |
+
<show_in_website>1</show_in_website>
|
34 |
+
<show_in_store>1</show_in_store>
|
35 |
+
</enabled>
|
36 |
+
</fields>
|
37 |
+
</general>
|
38 |
+
</groups>
|
39 |
+
</ig_categoryparents>
|
40 |
+
</sections>
|
41 |
+
</config>
|
app/etc/modules/IG_CategoryParents.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<IG_CategoryParents>
|
5 |
+
<active>false</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</IG_CategoryParents>
|
8 |
+
</modules>
|
9 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>IG_CategoryParents</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.idealiagroup.com/magento-ext-license.html">Commercial</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>IDEALIAGroup Category Parents</summary>
|
10 |
+
<description>IDEALIAGroup Category Parents</description>
|
11 |
+
<notes>Enjoy it ;)</notes>
|
12 |
+
<authors><author><name>Riccardo Tempesta</name><user>auto-converted</user><email>tempesta@idealiagroup.com</email></author><author><name>Marco Giorgetti</name><user>auto-converted</user><email>giorgetti@idealiagroup.com</email></author></authors>
|
13 |
+
<date>2011-12-28</date>
|
14 |
+
<time>10:14:22</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="IG"><dir name="CategoryParents"><dir name="Helper"><file name="Data.php" hash="deeac4c99b519bc2bea1f82f092890b3"/></dir><dir name="Model"><file name="Observer.php" hash="b29f1284b9a21e14e101452e0f81350e"/></dir><dir name="etc"><file name="config.xml" hash="f1d215815ddf7c9ea2ffb64118925749"/><file name="system.xml" hash="dfc7f81b75f54020957b6a37bb97beed"/></dir><file name="COMPATIBILITY.txt" hash="d3b64c7bb51137148e6b0feed3224af5"/><file name="LICENSE.txt" hash="b3688e16b11d101dd15b47c62cd2567d"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="IG_CategoryParents.xml" hash="70412844e73006347cacf0a340824bc2"/></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies/>
|
18 |
+
</package>
|