00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 class Mage_Catalog_Model_Observer
00036 {
00037
00038
00039
00040
00041
00042
00043 public function storeEdit(Varien_Event_Observer $observer)
00044 {
00045 $store = $observer->getEvent()->getStore();
00046
00047 if ($store->dataHasChangedFor('group_id')) {
00048 Mage::app()->reinitStores();
00049 Mage::getModel('catalog/url')->refreshRewrites($store->getId());
00050 Mage::getResourceModel('catalog/category')->refreshProductIndex(
00051 array(),
00052 array(),
00053 array($store->getId())
00054 );
00055 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00056 Mage::getResourceModel('catalog/category_flat')->synchronize(null, array($store->getId()));
00057 }
00058 Mage::getResourceSingleton('catalog/product')->refreshEnabledIndex($store);
00059 }
00060 return $this;
00061 }
00062
00063
00064
00065
00066
00067
00068
00069 public function storeAdd(Varien_Event_Observer $observer)
00070 {
00071 $store = $observer->getEvent()->getStore();
00072
00073 Mage::app()->reinitStores();
00074 Mage::getConfig()->reinit();
00075 Mage::getModel('catalog/url')->refreshRewrites($store->getId());
00076 Mage::getResourceSingleton('catalog/category')->refreshProductIndex(
00077 array(),
00078 array(),
00079 array($store->getId())
00080 );
00081 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00082 Mage::getResourceModel('catalog/category_flat')
00083 ->synchronize(null, array($store->getId()));
00084 }
00085 Mage::getResourceModel('catalog/product')->refreshEnabledIndex($store);
00086 return $this;
00087 }
00088
00089
00090
00091
00092
00093
00094
00095 public function storeGroupSave(Varien_Event_Observer $observer)
00096 {
00097 $group = $observer->getEvent()->getGroup();
00098
00099 if ($group->dataHasChangedFor('root_category_id') || $group->dataHasChangedFor('website_id')) {
00100 Mage::app()->reinitStores();
00101 foreach ($group->getStores() as $store) {
00102 Mage::getModel('catalog/url')->refreshRewrites($store->getId());
00103 Mage::getResourceSingleton('catalog/category')->refreshProductIndex(
00104 array(),
00105 array(),
00106 array($store->getId())
00107 );
00108 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00109 Mage::getResourceModel('catalog/category_flat')
00110 ->synchronize(null, array($store->getId()));
00111 }
00112 }
00113 }
00114 return $this;
00115 }
00116
00117
00118
00119
00120
00121
00122
00123 public function storeDelete(Varien_Event_Observer $observer)
00124 {
00125 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00126 $store = $observer->getEvent()->getStore();
00127 Mage::getResourceModel('catalog/category_flat')->deleteStores($store->getId());
00128 }
00129 return $this;
00130 }
00131
00132
00133
00134
00135
00136
00137
00138 public function categoryMove(Varien_Event_Observer $observer)
00139 {
00140 $categoryId = $observer->getEvent()->getCategoryId();
00141 $prevParentId = $observer->getEvent()->getPrevParentId();
00142 $parentId = $observer->getEvent()->getParentId();
00143 Mage::getModel('catalog/url')->refreshCategoryRewrite($categoryId);
00144 Mage::getResourceSingleton('catalog/category')->refreshProductIndex(array(
00145 $categoryId, $prevParentId, $parentId
00146 ));
00147 Mage::getModel('catalog/category')->load($prevParentId)->save();
00148 Mage::getModel('catalog/category')->load($parentId)->save();
00149 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00150 Mage::getResourceModel('catalog/category_flat')
00151 ->move($categoryId, $prevParentId, $parentId);
00152 }
00153 return $this;
00154 }
00155
00156
00157
00158
00159
00160
00161
00162 public function catalogProductImportAfter(Varien_Event_Observer $observer)
00163 {
00164 Mage::getModel('catalog/url')->refreshRewrites();
00165 Mage::getResourceSingleton('catalog/category')->refreshProductIndex();
00166 return $this;
00167 }
00168
00169
00170
00171
00172
00173
00174
00175 public function catalogProductCompareClean(Varien_Event_Observer $observer)
00176 {
00177 Mage::getModel('catalog/product_compare_item')->clean();
00178 return $this;
00179 }
00180
00181
00182
00183
00184
00185
00186
00187 public function categorySaveAfter(Varien_Event_Observer $observer)
00188 {
00189 if (Mage::helper('catalog/category_flat')->isEnabled(true)) {
00190 $category = $observer->getEvent()->getCategory();
00191 Mage::getResourceModel('catalog/category_flat')->synchronize($category);
00192 }
00193 return $this;
00194 }
00195 }