Magmodules_Channable - Version 1.5.1

Version Notes

Channable Connect

Download this release

Release Info

Developer Magmodules
Extension Magmodules_Channable
Version 1.5.1
Comparing to
See all releases


Code changes from version 1.5.0 to 1.5.1

app/code/community/Magmodules/Channable/Helper/Data.php CHANGED
@@ -40,9 +40,10 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
40
  * @param $product
41
  * @param $config
42
  * @param $parent
 
43
  * @return array|bool
44
  */
45
- public function getProductDataRow($product, $config, $parent)
46
  {
47
  $fields = $config['field'];
48
  $data = array();
@@ -56,7 +57,7 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
56
  }
57
 
58
  foreach ($fields as $key => $field) {
59
- $rows = $this->getAttributeValue($key, $product, $config, $field['action'], $parent);
60
  if (is_array($rows)) {
61
  $data = array_merge($data, $rows);
62
  }
@@ -117,7 +118,7 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
117
  }
118
 
119
  if ($manageStock) {
120
- if (!$product['stock_status']) {
121
  return false;
122
  }
123
  }
@@ -141,7 +142,7 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
141
  * @param $parent
142
  * @return bool
143
  */
144
- public function getAttributeValue($field, $product, $config, $actions = '', $parent)
145
  {
146
  $data = $config['field'][$field];
147
  $productData = $product;
@@ -154,7 +155,7 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
154
 
155
  switch ($field) {
156
  case 'product_url':
157
- $value = $this->getProductUrl($product, $config, $parent);
158
  break;
159
  case 'image_link':
160
  $value = $this->getProductImage($productData, $config);
@@ -174,6 +175,9 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
174
  case 'bundle':
175
  $value = $this->getProductBundle($productData);
176
  break;
 
 
 
177
  case 'parent_id':
178
  $value = $this->getProductData($parent, $data);
179
  break;
@@ -227,13 +231,33 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
227
  return false;
228
  }
229
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
230
  /**
231
  * @param $product
232
  * @param $config
233
  * @param $parent
234
  * @return string
235
  */
236
- public function getProductUrl($product, $config, $parent)
237
  {
238
  $url = '';
239
  if (!empty($parent)) {
@@ -264,16 +288,12 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
264
  }
265
  }
266
 
267
- if (!empty($parent) && !empty($config['conf_switch_urls']) && !empty($url)) {
268
- if ($parent->getTypeId() == 'configurable') {
269
- $productAttributeOptions = $parent->getTypeInstance(true)->getConfigurableAttributesAsArray($parent);
270
  $urlExtra = '';
271
  foreach ($productAttributeOptions as $productAttribute) {
272
- if ($id = Mage::getResourceModel('catalog/product')->getAttributeRawValue(
273
- $product->getId(),
274
- $productAttribute['attribute_code'], $config['store_id']
275
- )
276
- ) {
277
  $urlExtra .= $productAttribute['attribute_id'] . '=' . $id . '&';
278
  }
279
  }
@@ -287,6 +307,21 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
287
  return $url;
288
  }
289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  /**
291
  * @param $product
292
  * @param $config
@@ -297,7 +332,10 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
297
  $imageData = array();
298
  if (!empty($config['image_resize']) && !empty($config['image_size'])) {
299
  $imageFile = $product->getData($config['image_source']);
300
- $imageModel = Mage::getModel('catalog/product_image')->setSize($config['image_size'])->setDestinationSubdir($config['image_source'])->setBaseFile($imageFile);
 
 
 
301
  if (!$imageModel->isCached()) {
302
  $imageModel->resize()->saveFile();
303
  }
@@ -346,7 +384,10 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
346
 
347
  if (!empty($config['images'])) {
348
  $imageData['image_link'] = $image;
349
- $container = new Varien_Object(array('attribute' => new Varien_Object(array('id' => $config['media_gallery_id']))));
 
 
 
350
  $imgProduct = new Varien_Object(array('id' => $product->getId(), 'store_id' => $config['store_id']));
351
  $gallery = Mage::getResourceModel('catalog/product_attribute_backend_media')->loadGallery(
352
  $imgProduct,
@@ -873,7 +914,11 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
873
 
874
  // CHECK IF NEW ATTRIBUTES ARE AVAILABLE
875
  try {
876
- Mage::getModel('catalog/category')->setStoreId($storeId)->getCollection()->addAttributeToSelect($attributes)->getFirstItem();
 
 
 
 
877
  } catch (Exception $e) {
878
  }
879
 
@@ -978,7 +1023,8 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
978
  {
979
  if (!empty($config['conf_enabled'])) {
980
  if (($product['type_id'] == 'simple')) {
981
- $configIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
 
982
  $groupIds = Mage::getResourceSingleton('catalog/product_link')->getParentIdsByChild(
983
  $product->getId(),
984
  Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED
@@ -1179,4 +1225,4 @@ class Magmodules_Channable_Helper_Data extends Mage_Core_Helper_Abstract
1179
 
1180
  return $suffix;
1181
  }
1182
- }
40
  * @param $product
41
  * @param $config
42
  * @param $parent
43
+ * @param $parentAttributes
44
  * @return array|bool
45
  */
46
+ public function getProductDataRow($product, $config, $parent, $parentAttributes)
47
  {
48
  $fields = $config['field'];
49
  $data = array();
57
  }
58
 
59
  foreach ($fields as $key => $field) {
60
+ $rows = $this->getAttributeValue($key, $product, $config, $field['action'], $parent, $parentAttributes);
61
  if (is_array($rows)) {
62
  $data = array_merge($data, $rows);
63
  }
118
  }
119
 
120
  if ($manageStock) {
121
+ if (!$product['is_in_stock']) {
122
  return false;
123
  }
124
  }
142
  * @param $parent
143
  * @return bool
144
  */
145
+ public function getAttributeValue($field, $product, $config, $actions = '', $parent, $parentAttributes)
146
  {
147
  $data = $config['field'][$field];
148
  $productData = $product;
155
 
156
  switch ($field) {
157
  case 'product_url':
158
+ $value = $this->getProductUrl($product, $config, $parent, $parentAttributes);
159
  break;
160
  case 'image_link':
161
  $value = $this->getProductImage($productData, $config);
175
  case 'bundle':
176
  $value = $this->getProductBundle($productData);
177
  break;
178
+ case 'is_in_stock':
179
+ $value = $this->getIsInStock($productData, $config);
180
+ break;
181
  case 'parent_id':
182
  $value = $this->getProductData($parent, $data);
183
  break;
231
  return false;
232
  }
233
 
234
+ /**
235
+ * @param $product
236
+ * @param $config
237
+ * @return string
238
+ */
239
+ public function getIsInStock($product, $config)
240
+ {
241
+ if ($product->getUseConfigManageStock()) {
242
+ $manageStock = $config['stock_manage'];
243
+ } else {
244
+ $manageStock = $product->getManageStock();
245
+ }
246
+
247
+ if ($manageStock) {
248
+ return $product->getIsInStock();
249
+ } else {
250
+ return "1";
251
+ }
252
+ }
253
+
254
  /**
255
  * @param $product
256
  * @param $config
257
  * @param $parent
258
  * @return string
259
  */
260
+ public function getProductUrl($product, $config, $parent, $parentAttributes)
261
  {
262
  $url = '';
263
  if (!empty($parent)) {
288
  }
289
  }
290
 
291
+ if (!empty($parent) && !empty($url)) {
292
+ if (!empty($parentAttributes[$parent->getEntityId()])) {
293
+ $productAttributeOptions = $parentAttributes[$parent->getEntityId()];
294
  $urlExtra = '';
295
  foreach ($productAttributeOptions as $productAttribute) {
296
+ if ($id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($product->getId(), $productAttribute['attribute_code'], $config['store_id'])) {
 
 
 
 
297
  $urlExtra .= $productAttribute['attribute_id'] . '=' . $id . '&';
298
  }
299
  }
307
  return $url;
308
  }
309
 
310
+ public function getConfigurableAttributesAsArray($parents, $config)
311
+ {
312
+ $configurableAttributes = array();
313
+ if (!empty($config['conf_switch_urls'])) {
314
+ foreach ($parents as $parent) {
315
+ if ($parent->getTypeId() == 'configurable') {
316
+ $configurableAttributes[$parent->getEntityId()] = $parent->getTypeInstance(true)
317
+ ->getConfigurableAttributesAsArray($parent);
318
+ }
319
+ }
320
+ }
321
+
322
+ return $configurableAttributes;
323
+ }
324
+
325
  /**
326
  * @param $product
327
  * @param $config
332
  $imageData = array();
333
  if (!empty($config['image_resize']) && !empty($config['image_size'])) {
334
  $imageFile = $product->getData($config['image_source']);
335
+ $imageModel = Mage::getModel('catalog/product_image')
336
+ ->setSize($config['image_size'])
337
+ ->setDestinationSubdir($config['image_source'])
338
+ ->setBaseFile($imageFile);
339
  if (!$imageModel->isCached()) {
340
  $imageModel->resize()->saveFile();
341
  }
384
 
385
  if (!empty($config['images'])) {
386
  $imageData['image_link'] = $image;
387
+ $container = new Varien_Object(
388
+ array(
389
+ 'attribute' => new Varien_Object(array('id' => $config['media_gallery_id'])))
390
+ );
391
  $imgProduct = new Varien_Object(array('id' => $product->getId(), 'store_id' => $config['store_id']));
392
  $gallery = Mage::getResourceModel('catalog/product_attribute_backend_media')->loadGallery(
393
  $imgProduct,
914
 
915
  // CHECK IF NEW ATTRIBUTES ARE AVAILABLE
916
  try {
917
+ Mage::getModel('catalog/category')
918
+ ->setStoreId($storeId)
919
+ ->getCollection()
920
+ ->addAttributeToSelect($attributes)
921
+ ->getFirstItem();
922
  } catch (Exception $e) {
923
  }
924
 
1023
  {
1024
  if (!empty($config['conf_enabled'])) {
1025
  if (($product['type_id'] == 'simple')) {
1026
+ $configIds = Mage::getModel('catalog/product_type_configurable')
1027
+ ->getParentIdsByChild($product->getId());
1028
  $groupIds = Mage::getResourceSingleton('catalog/product_link')->getParentIdsByChild(
1029
  $product->getId(),
1030
  Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED
1225
 
1226
  return $suffix;
1227
  }
1228
+ }
app/code/community/Magmodules/Channable/Model/Channable.php CHANGED
@@ -25,252 +25,20 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
25
  * @param $timeStart
26
  * @return array
27
  */
28
- public function generateFeed($storeId, $limit = '', $page = 1, $timeStart)
29
  {
30
  $this->setMemoryLimit($storeId);
31
  $config = $this->getFeedConfig($storeId);
32
  $this->cleanItemUpdates($storeId, $page);
33
  $products = $this->getProducts($config, $limit, $page);
34
- $prices = Mage::helper('channable')->getTypePrices($config, $products);
35
- if ($feed = $this->getFeedData($products, $config, $timeStart, $prices, $page)) {
 
 
36
  return $feed;
37
  }
38
  }
39
 
40
- /**
41
- * @param $storeId
42
- */
43
- protected function setMemoryLimit($storeId)
44
- {
45
- if (Mage::getStoreConfig('channable/server/overwrite', $storeId)) {
46
- if ($memory_limit = Mage::getStoreConfig('channable/server/memory_limit', $storeId)) {
47
- ini_set('memory_limit', $memory_limit);
48
- }
49
-
50
- if ($max_execution_time = Mage::getStoreConfig('channable/server/max_execution_time', $storeId)) {
51
- ini_set('max_execution_time', $max_execution_time);
52
- }
53
- }
54
- }
55
-
56
- /**
57
- * @param $storeId
58
- * @return array
59
- */
60
- public function getFeedConfig($storeId)
61
- {
62
-
63
- $config = array();
64
- $feed = Mage::helper('channable');
65
- $websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
66
-
67
- // DEFAULTS
68
- $config['store_id'] = $storeId;
69
- $config['website_name'] = $feed->cleanData(
70
- Mage::getModel('core/website')->load($websiteId)->getName(),
71
- 'striptags'
72
- );
73
- $config['website_url'] = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
74
- $config['media_url'] = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
75
- $config['media_image_url'] = $config['media_url'] . 'catalog' . DS . 'product';
76
- $config['media_attributes'] = $feed->getMediaAttributes();
77
- $config['limit'] = Mage::getStoreConfig('channable/connect/max_products', $storeId);
78
- $config['version'] = (string)Mage::getConfig()->getNode()->modules->Magmodules_Channable->version;
79
- $config['media_gallery_id'] = Mage::getResourceModel('eav/entity_attribute')->getIdByCode(
80
- 'catalog_product',
81
- 'media_gallery'
82
- );
83
- $config['filters'] = @unserialize(Mage::getStoreConfig('channable/filter/advanced', $storeId));
84
- $config['product_url_suffix'] = $feed->getProductUrlSuffix($storeId);
85
- $config['filter_enabled'] = Mage::getStoreConfig('channable/filter/category_enabled', $storeId);
86
- $config['filter_cat'] = Mage::getStoreConfig('channable/filter/categories', $storeId);
87
- $config['filter_type'] = Mage::getStoreConfig('channable/filter/category_type', $storeId);
88
- $config['filter_status'] = Mage::getStoreConfig('channable/filter/visibility_inc', $storeId);
89
- $config['hide_no_stock'] = Mage::getStoreConfig('channable/filter/stock', $storeId);
90
- $config['conf_enabled'] = Mage::getStoreConfig('channable/data/conf_enabled', $storeId);
91
- $config['conf_fields'] = Mage::getStoreConfig('channable/data/conf_fields', $storeId);
92
- $config['parent_att'] = $this->getParentAttributeSelection($config['conf_fields']);
93
- $config['conf_switch_urls'] = Mage::getStoreConfig('channable/data/conf_switch_urls', $storeId);
94
- $config['stock_manage'] = Mage::getStoreConfig('cataloginventory/item_options/manage_stock');
95
- $config['use_qty_increments'] = Mage::getStoreConfig('cataloginventory/item_options/enable_qty_increments');
96
- $config['qty_increments'] = Mage::getStoreConfig('cataloginventory/item_options/qty_increments');
97
- $config['delivery'] = Mage::getStoreConfig('channable/data/delivery', $storeId);
98
- $config['delivery_be'] = Mage::getStoreConfig('channable/data/delivery_be', $storeId);
99
- $config['delivery_att'] = Mage::getStoreConfig('channable/data/delivery_att', $storeId);
100
- $config['delivery_att_be'] = Mage::getStoreConfig('channable/data/delivery_att_be', $storeId);
101
- $config['delivery_in'] = Mage::getStoreConfig('channable/data/delivery_in', $storeId);
102
- $config['delivery_in_be'] = Mage::getStoreConfig('channable/data/delivery_in_be', $storeId);
103
- $config['delivery_out'] = Mage::getStoreConfig('channable/data/delivery_out', $storeId);
104
- $config['delivery_out_be'] = Mage::getStoreConfig('channable/data/delivery_out_be', $storeId);
105
- $config['images'] = Mage::getStoreConfig('channable/data/images', $storeId);
106
- $config['default_image'] = Mage::getStoreConfig('channable/data/default_image', $storeId);
107
- $config['skip_validation'] = false;
108
- $config['weight'] = Mage::getStoreConfig('channable/data/weight', $storeId);
109
- $config['weight_units'] = Mage::getStoreConfig('channable/data/weight_units', $storeId);
110
- $config['price_scope'] = Mage::getStoreConfig('catalog/price/scope');
111
- $config['price_add_tax'] = Mage::getStoreConfig('channable/data/add_tax', $storeId);
112
- $config['price_add_tax_perc'] = Mage::getStoreConfig('channable/data/tax_percentage', $storeId);
113
- $config['force_tax'] = Mage::getStoreConfig('channable/data/force_tax', $storeId);
114
- $config['currency'] = Mage::app()->getStore($storeId)->getCurrentCurrencyCode();
115
- $config['base_currency_code'] = Mage::app()->getStore($storeId)->getBaseCurrencyCode();
116
- $config['markup'] = Mage::helper('channable')->getPriceMarkup($config);
117
- $config['use_tax'] = Mage::helper('channable')->getTaxUsage($config);
118
-
119
- if (Mage::helper('core')->isModuleEnabled('Magmodules_Channableapi')) {
120
- $config['item_updates'] = Mage::getStoreConfig('channable_api/item/enabled', $storeId);
121
- } else {
122
- $config['item_updates'] = '';
123
- }
124
-
125
- $config['shipping_prices'] = @unserialize(Mage::getStoreConfig('channable/advanced/shipping_price', $storeId));
126
- $config['shipping_method'] = Mage::getStoreConfig('channable/advanced/shipping_method', $storeId);
127
- $config['field'] = $this->getFeedAttributes($config, $storeId);
128
- $config['category_exclude'] = 'channable_exclude';
129
- $config['category_data'] = $feed->getCategoryData($config, $storeId);
130
-
131
- return $config;
132
- }
133
-
134
- /**
135
- * @param string $config
136
- * @param int $storeId
137
- * @return mixed
138
- */
139
- public function getFeedAttributes($config = '', $storeId = 0)
140
- {
141
- $attributes = array();
142
- $attributes['id'] = array(
143
- 'label' => 'id',
144
- 'source' => 'entity_id'
145
- );
146
- $attributes['name'] = array(
147
- 'label' => 'name',
148
- 'source' => Mage::getStoreConfig('channable/data/name', $storeId)
149
- );
150
- $attributes['description'] = array(
151
- 'label' => 'description',
152
- 'source' => Mage::getStoreConfig('channable/data/description', $storeId)
153
- );
154
- $attributes['product_url'] = array(
155
- 'label' => 'url',
156
- 'source' => ''
157
- );
158
- $attributes['image_link'] = array(
159
- 'label' => 'image',
160
- 'source' => Mage::getStoreConfig('channable/data/default_image', $storeId)
161
- );
162
- $attributes['price'] = array(
163
- 'label' => 'price',
164
- 'source' => ''
165
- );
166
- $attributes['sku'] = array(
167
- 'label' => 'sku',
168
- 'source' => Mage::getStoreConfig('channable/data/sku', $storeId)
169
- );
170
- $attributes['brand'] = array(
171
- 'label' => 'brand',
172
- 'source' => Mage::getStoreConfig('channable/data/brand', $storeId)
173
- );
174
- $attributes['size'] = array(
175
- 'label' => 'size',
176
- 'source' => Mage::getStoreConfig('channable/data/size', $storeId)
177
- );
178
- $attributes['color'] = array(
179
- 'label' => 'color',
180
- 'source' => Mage::getStoreConfig('channable/data/color', $storeId)
181
- );
182
- $attributes['material'] = array(
183
- 'label' => 'material',
184
- 'source' => Mage::getStoreConfig('channable/data/material', $storeId)
185
- );
186
- $attributes['gender'] = array(
187
- 'label' => 'gender',
188
- 'source' => Mage::getStoreConfig('channable/data/gender', $storeId)
189
- );
190
- $attributes['ean'] = array(
191
- 'label' => 'ean',
192
- 'source' => Mage::getStoreConfig('channable/data/ean', $storeId)
193
- );
194
- $attributes['categories'] = array(
195
- 'label' => 'categories',
196
- 'source' => '',
197
- 'parent' => 1
198
- );
199
- $attributes['type'] = array(
200
- 'label' => 'type',
201
- 'source' => 'type_id'
202
- );
203
- $attributes['status'] = array(
204
- 'label' => 'status',
205
- 'source' => 'status',
206
- 'parent' => 1
207
- );
208
- $attributes['visibility'] = array(
209
- 'label' => 'visibility',
210
- 'source' => 'visibility'
211
- );
212
- $attributes['parent_id'] = array(
213
- 'label' => 'item_group_id',
214
- 'source' => 'entity_id',
215
- 'parent' => 1
216
- );
217
- $attributes['weight'] = array(
218
- 'label' => 'weight',
219
- 'source' => ''
220
- );
221
- $attributes['is_in_stock'] = array(
222
- 'label' => 'is_in_stock',
223
- 'source' => 'is_in_stock'
224
- );
225
-
226
- if (Mage::getStoreConfig('channable/data/stock', $storeId)) {
227
- $attributes['stock'] = array(
228
- 'label' => 'qty',
229
- 'source' => 'qty',
230
- 'action' => 'round'
231
- );
232
- }
233
-
234
- if (Mage::getStoreConfig('channable/data/delivery', $storeId) == 'attribute') {
235
- $attributes['delivery'] = array(
236
- 'label' => 'delivery',
237
- 'source' => Mage::getStoreConfig('channable/data/delivery_att', $storeId)
238
- );
239
- }
240
-
241
- if (Mage::getStoreConfig('channable/data/delivery_be', $storeId) == 'attribute') {
242
- $attributes['delivery_be'] = array(
243
- 'label' => 'delivery_be',
244
- 'source' => Mage::getStoreConfig('channable/data/delivery_att_be', $storeId)
245
- );
246
- }
247
-
248
- if ($extraFields = @unserialize(Mage::getStoreConfig('channable/advanced/extra', $storeId))) {
249
- foreach ($extraFields as $extraField) {
250
- $attributes[$extraField['attribute']] = array(
251
- 'label' => $extraField['label'],
252
- 'source' => $extraField['attribute'],
253
- 'action' => ''
254
- );
255
- }
256
- }
257
-
258
- return Mage::helper('channable')->addAttributeData($attributes, $config);
259
- }
260
-
261
- /**
262
- * @param $storeId
263
- * @param $page
264
- */
265
- protected function cleanItemUpdates($storeId, $page)
266
- {
267
- if (empty($page)) {
268
- if (Mage::helper('core')->isModuleEnabled('Magmodules_Channableapi')) {
269
- Mage::getModel('channableapi/items')->cleanItemStore($storeId);
270
- }
271
- }
272
- }
273
-
274
  /**
275
  * @param $products
276
  * @param $config
@@ -279,17 +47,19 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
279
  * @param $page
280
  * @return array
281
  */
282
- public function getFeedData($products, $config, $timeStart, $prices, $page)
283
  {
284
  $count = $this->getProducts($config, '', '', 'count');
285
  foreach ($products as $product) {
286
  if ($parentId = Mage::helper('channable')->getParentData($product, $config)) {
287
- $parent = $this->loadParentProduct($parentId, $config['store_id'], $config['parent_att']);
288
  } else {
289
  $parent = '';
290
  }
291
 
292
- if ($productData = Mage::helper('channable')->getProductDataRow($product, $config, $parent)) {
 
 
293
  foreach ($productData as $key => $value) {
294
  if (!is_array($value)) {
295
  $productRow[$key] = $value;
@@ -313,12 +83,10 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
313
  $returnFeed = array();
314
  $returnFeed['config'] = $this->getFeedHeader($config, $count, $timeStart, count($feed['products']), $page);
315
  $returnFeed['products'] = $feed['products'];
316
-
317
  return $returnFeed;
318
  } else {
319
  $returnFeed = array();
320
- $returnFeed['config'] = $this->getFeedHeader($config, $count, $timeStart);
321
-
322
  return $returnFeed;
323
  }
324
  }
@@ -413,11 +181,10 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
413
  * @param $data
414
  * @param $config
415
  * @param $weight
416
- * @param $product
417
  * @param $stock
418
  * @return array
419
  */
420
- public function getShipping($data, $config, $weight, $product, $stock)
421
  {
422
  $shippingArray = array();
423
 
@@ -462,6 +229,8 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
462
  } else {
463
  if (isset($data['price']['final_price_clean'])) {
464
  $calValue = $data['price']['final_price_clean'];
 
 
465
  }
466
  }
467
 
@@ -469,7 +238,6 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
469
  foreach ($config['shipping_prices'] as $shippingPrice) {
470
  if (($calValue >= $shippingPrice['price_from']) && ($calValue <= $shippingPrice['price_to'])) {
471
  $shippingCost = $shippingPrice['cost'];
472
-
473
  $shippingCost = number_format($shippingCost, 2, '.', '') . ' ' . $config['currency'];
474
  if (empty($shippingPrice['country'])) {
475
  $shippingArray['shipping'] = $shippingCost;
@@ -643,4 +411,233 @@ class Magmodules_Channable_Model_Channable extends Magmodules_Channable_Model_Co
643
 
644
  return $header;
645
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  }
25
  * @param $timeStart
26
  * @return array
27
  */
28
+ public function generateFeed($storeId, $limit = '', $timeStart, $page = 1)
29
  {
30
  $this->setMemoryLimit($storeId);
31
  $config = $this->getFeedConfig($storeId);
32
  $this->cleanItemUpdates($storeId, $page);
33
  $products = $this->getProducts($config, $limit, $page);
34
+ $parents = $this->getParents($products, $config);
35
+ $prices = Mage::helper('channable')->getTypePrices($config, $parents);
36
+ $parentAttributes = Mage::helper('channable')->getConfigurableAttributesAsArray($parents, $config);
37
+ if ($feed = $this->getFeedData($products, $parents, $config, $parentAttributes, $timeStart, $prices, $page)) {
38
  return $feed;
39
  }
40
  }
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  /**
43
  * @param $products
44
  * @param $config
47
  * @param $page
48
  * @return array
49
  */
50
+ public function getFeedData($products, $parents, $config, $parentAttributes, $timeStart, $prices, $page)
51
  {
52
  $count = $this->getProducts($config, '', '', 'count');
53
  foreach ($products as $product) {
54
  if ($parentId = Mage::helper('channable')->getParentData($product, $config)) {
55
+ $parent = $parents->getItemById($parentId);
56
  } else {
57
  $parent = '';
58
  }
59
 
60
+ $productData = Mage::helper('channable')->getProductDataRow($product, $config, $parent, $parentAttributes);
61
+
62
+ if ($productData) {
63
  foreach ($productData as $key => $value) {
64
  if (!is_array($value)) {
65
  $productRow[$key] = $value;
83
  $returnFeed = array();
84
  $returnFeed['config'] = $this->getFeedHeader($config, $count, $timeStart, count($feed['products']), $page);
85
  $returnFeed['products'] = $feed['products'];
 
86
  return $returnFeed;
87
  } else {
88
  $returnFeed = array();
89
+ $returnFeed['config'] = $this->getFeedHeader($config, $count, $timeStart, '', $page);
 
90
  return $returnFeed;
91
  }
92
  }
181
  * @param $data
182
  * @param $config
183
  * @param $weight
 
184
  * @param $stock
185
  * @return array
186
  */
187
+ public function getShipping($data, $config, $weight, $stock)
188
  {
189
  $shippingArray = array();
190
 
229
  } else {
230
  if (isset($data['price']['final_price_clean'])) {
231
  $calValue = $data['price']['final_price_clean'];
232
+ } else {
233
+ $calValue = '0.00';
234
  }
235
  }
236
 
238
  foreach ($config['shipping_prices'] as $shippingPrice) {
239
  if (($calValue >= $shippingPrice['price_from']) && ($calValue <= $shippingPrice['price_to'])) {
240
  $shippingCost = $shippingPrice['cost'];
 
241
  $shippingCost = number_format($shippingCost, 2, '.', '') . ' ' . $config['currency'];
242
  if (empty($shippingPrice['country'])) {
243
  $shippingArray['shipping'] = $shippingCost;
411
 
412
  return $header;
413
  }
414
+
415
+ /**
416
+ * @param $storeId
417
+ */
418
+ protected function setMemoryLimit($storeId)
419
+ {
420
+ if (Mage::getStoreConfig('channable/server/overwrite', $storeId)) {
421
+ if ($memory_limit = Mage::getStoreConfig('channable/server/memory_limit', $storeId)) {
422
+ ini_set('memory_limit', $memory_limit);
423
+ }
424
+
425
+ if ($max_execution_time = Mage::getStoreConfig('channable/server/max_execution_time', $storeId)) {
426
+ ini_set('max_execution_time', $max_execution_time);
427
+ }
428
+ }
429
+ }
430
+
431
+ /**
432
+ * @param $storeId
433
+ * @param $page
434
+ */
435
+ protected function cleanItemUpdates($storeId, $page)
436
+ {
437
+ if (empty($page)) {
438
+ if (Mage::helper('core')->isModuleEnabled('Magmodules_Channableapi')) {
439
+ Mage::getModel('channableapi/items')->cleanItemStore($storeId);
440
+ }
441
+ }
442
+ }
443
+
444
+
445
+ /**
446
+ * @param $storeId
447
+ * @return array
448
+ */
449
+ public function getFeedConfig($storeId)
450
+ {
451
+
452
+ $config = array();
453
+ $feed = Mage::helper('channable');
454
+ $websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
455
+
456
+ // DEFAULTS
457
+ $config['store_id'] = $storeId;
458
+ $config['website_name'] = $feed->cleanData(Mage::getModel('core/website')->load($websiteId)->getName(), 'striptags');
459
+ $config['website_url'] = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
460
+ $config['media_url'] = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
461
+ $config['media_image_url'] = $config['media_url'] . 'catalog' . DS . 'product';
462
+ $config['media_attributes'] = $feed->getMediaAttributes();
463
+ $config['limit'] = Mage::getStoreConfig('channable/connect/max_products', $storeId);
464
+ $config['version'] = (string)Mage::getConfig()->getNode()->modules->Magmodules_Channable->version;
465
+ $config['media_gallery_id'] = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'media_gallery');
466
+ $config['filters'] = @unserialize(Mage::getStoreConfig('channable/filter/advanced', $storeId));
467
+ $config['product_url_suffix'] = $feed->getProductUrlSuffix($storeId);
468
+ $config['filter_enabled'] = Mage::getStoreConfig('channable/filter/category_enabled', $storeId);
469
+ $config['filter_cat'] = Mage::getStoreConfig('channable/filter/categories', $storeId);
470
+ $config['filter_type'] = Mage::getStoreConfig('channable/filter/category_type', $storeId);
471
+ $config['filter_status'] = Mage::getStoreConfig('channable/filter/visibility_inc', $storeId);
472
+ $config['hide_no_stock'] = Mage::getStoreConfig('channable/filter/stock', $storeId);
473
+ $config['conf_enabled'] = Mage::getStoreConfig('channable/data/conf_enabled', $storeId);
474
+ $config['conf_fields'] = Mage::getStoreConfig('channable/data/conf_fields', $storeId);
475
+ $config['parent_att'] = $this->getParentAttributeSelection($config['conf_fields']);
476
+ $config['conf_switch_urls'] = Mage::getStoreConfig('channable/data/conf_switch_urls', $storeId);
477
+ $config['stock_manage'] = Mage::getStoreConfig('cataloginventory/item_options/manage_stock');
478
+ $config['use_qty_increments'] = Mage::getStoreConfig('cataloginventory/item_options/enable_qty_increments');
479
+ $config['qty_increments'] = Mage::getStoreConfig('cataloginventory/item_options/qty_increments');
480
+ $config['delivery'] = Mage::getStoreConfig('channable/data/delivery', $storeId);
481
+ $config['delivery_be'] = Mage::getStoreConfig('channable/data/delivery_be', $storeId);
482
+ $config['delivery_att'] = Mage::getStoreConfig('channable/data/delivery_att', $storeId);
483
+ $config['delivery_att_be'] = Mage::getStoreConfig('channable/data/delivery_att_be', $storeId);
484
+ $config['delivery_in'] = Mage::getStoreConfig('channable/data/delivery_in', $storeId);
485
+ $config['delivery_in_be'] = Mage::getStoreConfig('channable/data/delivery_in_be', $storeId);
486
+ $config['delivery_out'] = Mage::getStoreConfig('channable/data/delivery_out', $storeId);
487
+ $config['delivery_out_be'] = Mage::getStoreConfig('channable/data/delivery_out_be', $storeId);
488
+ $config['images'] = Mage::getStoreConfig('channable/data/images', $storeId);
489
+ $config['default_image'] = Mage::getStoreConfig('channable/data/default_image', $storeId);
490
+ $config['skip_validation'] = false;
491
+ $config['weight'] = Mage::getStoreConfig('channable/data/weight', $storeId);
492
+ $config['weight_units'] = Mage::getStoreConfig('channable/data/weight_units', $storeId);
493
+ $config['price_scope'] = Mage::getStoreConfig('catalog/price/scope');
494
+ $config['price_add_tax'] = Mage::getStoreConfig('channable/data/add_tax', $storeId);
495
+ $config['price_add_tax_perc'] = Mage::getStoreConfig('channable/data/tax_percentage', $storeId);
496
+ $config['force_tax'] = Mage::getStoreConfig('channable/data/force_tax', $storeId);
497
+ $config['currency'] = Mage::app()->getStore($storeId)->getCurrentCurrencyCode();
498
+ $config['base_currency_code'] = Mage::app()->getStore($storeId)->getBaseCurrencyCode();
499
+ $config['markup'] = Mage::helper('channable')->getPriceMarkup($config);
500
+ $config['use_tax'] = Mage::helper('channable')->getTaxUsage($config);
501
+
502
+ if (Mage::helper('core')->isModuleEnabled('Magmodules_Channableapi')) {
503
+ $config['item_updates'] = Mage::getStoreConfig('channable_api/item/enabled', $storeId);
504
+ } else {
505
+ $config['item_updates'] = '';
506
+ }
507
+
508
+ $config['shipping_prices'] = @unserialize(Mage::getStoreConfig('channable/advanced/shipping_price', $storeId));
509
+ $config['shipping_method'] = Mage::getStoreConfig('channable/advanced/shipping_method', $storeId);
510
+ $config['field'] = $this->getFeedAttributes($config, $storeId);
511
+ $config['category_exclude'] = 'channable_exclude';
512
+ $config['category_data'] = $feed->getCategoryData($config, $storeId);
513
+
514
+ return $config;
515
+ }
516
+
517
+ /**
518
+ * @param string $config
519
+ * @param int $storeId
520
+ * @return mixed
521
+ */
522
+ public function getFeedAttributes($config = '', $storeId = 0)
523
+ {
524
+ $attributes = array();
525
+ $attributes['id'] = array(
526
+ 'label' => 'id',
527
+ 'source' => 'entity_id'
528
+ );
529
+ $attributes['name'] = array(
530
+ 'label' => 'name',
531
+ 'source' => Mage::getStoreConfig('channable/data/name', $storeId)
532
+ );
533
+ $attributes['description'] = array(
534
+ 'label' => 'description',
535
+ 'source' => Mage::getStoreConfig('channable/data/description', $storeId)
536
+ );
537
+ $attributes['product_url'] = array(
538
+ 'label' => 'url',
539
+ 'source' => ''
540
+ );
541
+ $attributes['image_link'] = array(
542
+ 'label' => 'image',
543
+ 'source' => Mage::getStoreConfig('channable/data/default_image', $storeId)
544
+ );
545
+ $attributes['price'] = array(
546
+ 'label' => 'price',
547
+ 'source' => ''
548
+ );
549
+ $attributes['sku'] = array(
550
+ 'label' => 'sku',
551
+ 'source' => Mage::getStoreConfig('channable/data/sku', $storeId)
552
+ );
553
+ $attributes['brand'] = array(
554
+ 'label' => 'brand',
555
+ 'source' => Mage::getStoreConfig('channable/data/brand', $storeId)
556
+ );
557
+ $attributes['size'] = array(
558
+ 'label' => 'size',
559
+ 'source' => Mage::getStoreConfig('channable/data/size', $storeId)
560
+ );
561
+ $attributes['color'] = array(
562
+ 'label' => 'color',
563
+ 'source' => Mage::getStoreConfig('channable/data/color', $storeId)
564
+ );
565
+ $attributes['material'] = array(
566
+ 'label' => 'material',
567
+ 'source' => Mage::getStoreConfig('channable/data/material', $storeId)
568
+ );
569
+ $attributes['gender'] = array(
570
+ 'label' => 'gender',
571
+ 'source' => Mage::getStoreConfig('channable/data/gender', $storeId)
572
+ );
573
+ $attributes['ean'] = array(
574
+ 'label' => 'ean',
575
+ 'source' => Mage::getStoreConfig('channable/data/ean', $storeId)
576
+ );
577
+ $attributes['categories'] = array(
578
+ 'label' => 'categories',
579
+ 'source' => '',
580
+ 'parent' => 1
581
+ );
582
+ $attributes['type'] = array(
583
+ 'label' => 'type',
584
+ 'source' => 'type_id'
585
+ );
586
+ $attributes['status'] = array(
587
+ 'label' => 'status',
588
+ 'source' => 'status',
589
+ 'parent' => 1
590
+ );
591
+ $attributes['visibility'] = array(
592
+ 'label' => 'visibility',
593
+ 'source' => 'visibility'
594
+ );
595
+ $attributes['parent_id'] = array(
596
+ 'label' => 'item_group_id',
597
+ 'source' => 'entity_id',
598
+ 'parent' => 1
599
+ );
600
+ $attributes['weight'] = array(
601
+ 'label' => 'weight',
602
+ 'source' => ''
603
+ );
604
+ $attributes['is_in_stock'] = array(
605
+ 'label' => 'is_in_stock',
606
+ 'source' => 'is_in_stock'
607
+ );
608
+
609
+ if (Mage::getStoreConfig('channable/data/stock', $storeId)) {
610
+ $attributes['stock'] = array(
611
+ 'label' => 'qty',
612
+ 'source' => 'qty',
613
+ 'action' => 'round'
614
+ );
615
+ }
616
+
617
+ if (Mage::getStoreConfig('channable/data/delivery', $storeId) == 'attribute') {
618
+ $attributes['delivery'] = array(
619
+ 'label' => 'delivery',
620
+ 'source' => Mage::getStoreConfig('channable/data/delivery_att', $storeId)
621
+ );
622
+ }
623
+
624
+ if (Mage::getStoreConfig('channable/data/delivery_be', $storeId) == 'attribute') {
625
+ $attributes['delivery_be'] = array(
626
+ 'label' => 'delivery_be',
627
+ 'source' => Mage::getStoreConfig('channable/data/delivery_att_be', $storeId)
628
+ );
629
+ }
630
+
631
+ if ($extraFields = @unserialize(Mage::getStoreConfig('channable/advanced/extra', $storeId))) {
632
+ foreach ($extraFields as $extraField) {
633
+ $attributes[$extraField['attribute']] = array(
634
+ 'label' => $extraField['label'],
635
+ 'source' => $extraField['attribute'],
636
+ 'action' => ''
637
+ );
638
+ }
639
+ }
640
+
641
+ return Mage::helper('channable')->addAttributeData($attributes, $config);
642
+ }
643
  }
app/code/community/Magmodules/Channable/Model/Common.php CHANGED
@@ -14,6 +14,7 @@
14
  * @license http://www.magmodules.eu/license-agreement/
15
  * =============================================================
16
  */
 
17
  class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
18
  {
19
 
@@ -52,6 +53,9 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
52
 
53
  if (($limit) && ($type != 'count')) {
54
  $collection->setPage($page, $limit)->getCurPage();
 
 
 
55
  }
56
 
57
  if (empty($config['conf_enabled'])) {
@@ -142,11 +146,9 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
142
  'use_config_qty_increments'
143
  )
144
  );
 
145
  $collection->getSelect()->group('e.entity_id');
146
- if (!empty($config['hide_no_stock'])) {
147
- Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);
148
- }
149
-
150
  $products = $collection->load();
151
  } else {
152
  $products = $collection->getSize();
@@ -156,6 +158,7 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
156
  }
157
 
158
  /**
 
159
  * @return array
160
  */
161
  public function getDefaultAttributes()
@@ -185,18 +188,40 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
185
  return $attributes;
186
  }
187
 
188
- public function loadParentProduct($parentId, $storeId, $attributes)
 
 
 
 
 
 
189
  {
190
- $parent = Mage::getResourceModel('catalog/product_collection')
191
- ->setStore($storeId)
192
- ->addStoreFilter($storeId)
193
- ->addFinalPrice()
194
- ->addUrlRewrite()
195
- ->addAttributeToFilter('entity_id', $parentId)
196
- ->addAttributeToSelect(array_unique($attributes))
197
- ->getFirstItem();
198
-
199
- return $parent;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  }
201
 
202
  /**
@@ -227,9 +252,9 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
227
  $value = $filter['value'];
228
 
229
  if ($attribute == 'final_price') {
230
- $condionType = array('eq'=> '=', 'neq' => '!=', 'gt' => '>', 'gteq' => '>=', 'lt' => '<', 'lteg' => '<=');
231
- if (isset($condionType[$condition])) {
232
- $collection->getSelect()->where('price_index.final_price ' . $condionType[$condition] . ' ' . $value);
233
  }
234
 
235
  continue;
@@ -278,5 +303,4 @@ class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
278
  }
279
  }
280
  }
281
-
282
- }
14
  * @license http://www.magmodules.eu/license-agreement/
15
  * =============================================================
16
  */
17
+
18
  class Magmodules_Channable_Model_Common extends Mage_Core_Helper_Abstract
19
  {
20
 
53
 
54
  if (($limit) && ($type != 'count')) {
55
  $collection->setPage($page, $limit)->getCurPage();
56
+ if ($collection->getLastPageNumber() < $page) {
57
+ return array();
58
+ }
59
  }
60
 
61
  if (empty($config['conf_enabled'])) {
146
  'use_config_qty_increments'
147
  )
148
  );
149
+
150
  $collection->getSelect()->group('e.entity_id');
151
+
 
 
 
152
  $products = $collection->load();
153
  } else {
154
  $products = $collection->getSize();
158
  }
159
 
160
  /**
161
+ * Araay of default Attributes
162
  * @return array
163
  */
164
  public function getDefaultAttributes()
188
  return $attributes;
189
  }
190
 
191
+
192
+ /**
193
+ * @param $products
194
+ * @param $config
195
+ * @return array
196
+ */
197
+ public function getParents($products, $config)
198
  {
199
+ if (!empty($config['conf_enabled'])) {
200
+ $ids = array();
201
+ foreach ($products as $product) {
202
+ if ($parentId = Mage::helper('channable')->getParentData($product, $config)) {
203
+ $ids[] = $parentId;
204
+ }
205
+ }
206
+
207
+ if (empty($ids)) {
208
+ return array();
209
+ }
210
+
211
+ $collection = Mage::getResourceModel('catalog/product_collection')
212
+ ->setStore($config['store_id'])
213
+ ->addStoreFilter($config['store_id'])
214
+ ->addFinalPrice()
215
+ ->addUrlRewrite()
216
+ ->addAttributeToFilter('entity_id', array('in', $ids))
217
+ ->addAttributeToSelect(array_unique($config['parent_att']));
218
+
219
+ if (!empty($config['hide_no_stock'])) {
220
+ Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);
221
+ }
222
+
223
+ return $collection->load();
224
+ }
225
  }
226
 
227
  /**
252
  $value = $filter['value'];
253
 
254
  if ($attribute == 'final_price') {
255
+ $cType = array('eq'=> '=', 'neq' => '!=', 'gt' => '>', 'gteq' => '>=', 'lt' => '<', 'lteg' => '<=');
256
+ if (isset($cType[$condition])) {
257
+ $collection->getSelect()->where('price_index.final_price ' . $cType[$condition] . ' ' . $value);
258
  }
259
 
260
  continue;
303
  }
304
  }
305
  }
306
+ }
 
app/code/community/Magmodules/Channable/controllers/FeedController.php CHANGED
@@ -33,15 +33,8 @@ class Magmodules_Channable_FeedController extends Mage_Core_Controller_Front_Act
33
  $limit = Mage::getStoreConfig('channable/connect/max_products', $storeId);
34
  $appEmulation = Mage::getSingleton('core/app_emulation');
35
  $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
36
- Mage::app()->loadAreaPart(
37
- Mage_Core_Model_App_Area::AREA_GLOBAL,
38
- Mage_Core_Model_App_Area::PART_EVENTS
39
- )->loadArea(Mage_Core_Model_App_Area::AREA_FRONTEND);
40
- if ($feed = Mage::getModel('channable/channable')->generateFeed(
41
- $storeId, $limit, $page,
42
- $timeStart
43
- )
44
- ) {
45
  if ($this->getRequest()->getParam('array')) {
46
  $this->getResponse()->setBody(Zend_Debug::dump($feed, null, false));
47
  } else {
33
  $limit = Mage::getStoreConfig('channable/connect/max_products', $storeId);
34
  $appEmulation = Mage::getSingleton('core/app_emulation');
35
  $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
36
+ Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS)->loadArea(Mage_Core_Model_App_Area::AREA_FRONTEND);
37
+ if ($feed = Mage::getModel('channable/channable')->generateFeed($storeId, $limit, $timeStart, $page)) {
 
 
 
 
 
 
 
38
  if ($this->getRequest()->getParam('array')) {
39
  $this->getResponse()->setBody(Zend_Debug::dump($feed, null, false));
40
  } else {
app/code/community/Magmodules/Channable/etc/config.xml CHANGED
@@ -19,7 +19,7 @@
19
  <config>
20
  <modules>
21
  <Magmodules_Channable>
22
- <version>1.5.0</version>
23
  </Magmodules_Channable>
24
  </modules>
25
  <global>
19
  <config>
20
  <modules>
21
  <Magmodules_Channable>
22
+ <version>1.5.1</version>
23
  </Magmodules_Channable>
24
  </modules>
25
  <global>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Magmodules_Channable</name>
4
- <version>1.5.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.magmodules.eu/license-agreement/">Single Server License</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Magmodules_Channable</description>
11
  <notes>Channable Connect</notes>
12
  <authors><author><name>Magmodules</name><user>magmodules</user><email>info@magmodules.nl</email></author></authors>
13
- <date>2016-12-05</date>
14
- <time>14:13:52</time>
15
- <contents><target name="magecommunity"><dir name="Magmodules"><dir name="Channable"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Extra.php" hash="c3de2d254516fb969aa32e77e420cec0"/><file name="Filter.php" hash="c18a5c2b289ef4c8cb1950990aad824a"/><file name="Shipping.php" hash="6ff0ceaf1170cc1c8d6e322377d51c55"/></dir><dir name="Renderer"><file name="Select.php" hash="de38e69b1251f094e1818615a02278fb"/></dir></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Feeds.php" hash="14f14219d1c08ad938a6db512f71eacf"/><file name="Heading.php" hash="4b406e44f5b9d36cdf15f3c52984df88"/><file name="Note.php" hash="f0898ebfb7883e3d1e4ef2aba7c4b1f6"/><file name="Token.php" hash="7c0a7173abe2dc5e0763f62236c57875"/><file name="Version.php" hash="afcf324b22f7b496eb24ee0e5c4827ed"/></dir></dir></dir></dir><dir name="Widget"><dir name="Info"><file name="Info.php" hash="086595fa1457f59c4b536703376ff34f"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="94a0e39086abfe29c38a98163a088323"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Design"><file name="Extra.php" hash="8ed25fdc80ab735ad7d20f565bff4d65"/><file name="Filter.php" hash="c396481ef9e8ec62629a7ed0c9a6aef4"/><file name="Shipping.php" hash="126481e0e3599cb62b9613ac5d462dbe"/></dir></dir><dir name="Source"><file name="Action.php" hash="f9eef61712b067c43db7a32c6e5933f1"/><file name="Attribute.php" hash="c278ab2184e9129dece4a22121e22e33"/><file name="Category.php" hash="c877eb5be8f84a8ec352b933e7ac2cd1"/><file name="Categorytype.php" hash="b330bd5d575592b933c810384f95acbc"/><file name="Conditions.php" hash="aa7c3018a74f60fb41388c307e4d928d"/><file name="Configurable.php" hash="24a00a6d577ab18f3a4b20200f92cad0"/><file name="Countries.php" hash="c678e1f8625630313f78654901ed7275"/><file name="Images.php" hash="847f4d99908923bf835cefc826fbbd4a"/><file name="Mainimage.php" hash="96a2d8df1920956113f5b4509506df47"/><file name="Name.php" hash="0bdf3102e7e52e74bcbbdbb6640f0c01"/><file name="Pricemodel.php" hash="d93cbeed02dd5d38e4dc835ed06cc46f"/><file name="Selectattribute.php" hash="eea82ac436e2b999d37954c4706c690d"/><file name="Shipping.php" hash="8a8b0753092eac24484508f541a317c0"/><file name="Tax.php" hash="fbdc14e6c556d3281f8fdf652c8c637f"/><file name="Textattribute.php" hash="b601321ea8f84413c201f6f1bd5da15d"/><file name="Type.php" hash="f0bd14bb3c19b0fe59e64e2f9d96ae7f"/><file name="Visibility.php" hash="ca3d49287963398b35a905f068cfd647"/><file name="Weight.php" hash="1b05f0f69a7ebd6e0ea445ae11544fc9"/></dir></dir></dir></dir><file name="Channable.php" hash="22fa09e1d9c0de472390e29027e1e457"/><file name="Common.php" hash="04c04f73e7e259f3668c921db1d7b46d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ChannableController.php" hash="957b06156e54c3e78c3ee2fa1549f358"/></dir><file name="FeedController.php" hash="6f1e1a0077e68a221f311412cab4a6e3"/></dir><dir name="data"><dir name="magmodules_channable_setup"><file name="data-upgrade-1.4.8-1.4.9.php" hash="66a5f5720815c9e738b54a039877c9c9"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="0bc11d7499e07c074d3b7ecab3a2400b"/><file name="config.xml" hash="cab3cdcccd3d4c857766a7760035bf23"/><file name="system.xml" hash="1868aa41d072cb856e044e8bc6eb92a8"/></dir><dir name="sql"><dir name="magmodules_channable_setup"><file name="upgrade-1.4.8-1.4.9.php" hash="572c087cac6aa281aa23af1ad4b7ef6e"/></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Magmodules_Channable.csv" hash="b7f6f15de57f502ccf1c98e71006a823"/></dir><dir name="nl_NL"><file name="Magmodules_Channable.csv" hash="2eaec8847182a0005c575e0acf6e1c1d"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Magmodules_Channable.xml" hash="061032d718f1ddd64de211fc7133685c"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>7.9.9</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Magmodules_Channable</name>
4
+ <version>1.5.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.magmodules.eu/license-agreement/">Single Server License</license>
7
  <channel>community</channel>
10
  <description>Magmodules_Channable</description>
11
  <notes>Channable Connect</notes>
12
  <authors><author><name>Magmodules</name><user>magmodules</user><email>info@magmodules.nl</email></author></authors>
13
+ <date>2016-12-09</date>
14
+ <time>08:37:59</time>
15
+ <contents><target name="magecommunity"><dir name="Magmodules"><dir name="Channable"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Extra.php" hash="c3de2d254516fb969aa32e77e420cec0"/><file name="Filter.php" hash="c18a5c2b289ef4c8cb1950990aad824a"/><file name="Shipping.php" hash="6ff0ceaf1170cc1c8d6e322377d51c55"/></dir><dir name="Renderer"><file name="Select.php" hash="de38e69b1251f094e1818615a02278fb"/></dir></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Feeds.php" hash="14f14219d1c08ad938a6db512f71eacf"/><file name="Heading.php" hash="4b406e44f5b9d36cdf15f3c52984df88"/><file name="Note.php" hash="f0898ebfb7883e3d1e4ef2aba7c4b1f6"/><file name="Token.php" hash="7c0a7173abe2dc5e0763f62236c57875"/><file name="Version.php" hash="afcf324b22f7b496eb24ee0e5c4827ed"/></dir></dir></dir></dir><dir name="Widget"><dir name="Info"><file name="Info.php" hash="086595fa1457f59c4b536703376ff34f"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="b1758b644b6aca18fc9891d175128259"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Design"><file name="Extra.php" hash="8ed25fdc80ab735ad7d20f565bff4d65"/><file name="Filter.php" hash="c396481ef9e8ec62629a7ed0c9a6aef4"/><file name="Shipping.php" hash="126481e0e3599cb62b9613ac5d462dbe"/></dir></dir><dir name="Source"><file name="Action.php" hash="f9eef61712b067c43db7a32c6e5933f1"/><file name="Attribute.php" hash="c278ab2184e9129dece4a22121e22e33"/><file name="Category.php" hash="c877eb5be8f84a8ec352b933e7ac2cd1"/><file name="Categorytype.php" hash="b330bd5d575592b933c810384f95acbc"/><file name="Conditions.php" hash="aa7c3018a74f60fb41388c307e4d928d"/><file name="Configurable.php" hash="24a00a6d577ab18f3a4b20200f92cad0"/><file name="Countries.php" hash="c678e1f8625630313f78654901ed7275"/><file name="Images.php" hash="847f4d99908923bf835cefc826fbbd4a"/><file name="Mainimage.php" hash="96a2d8df1920956113f5b4509506df47"/><file name="Name.php" hash="0bdf3102e7e52e74bcbbdbb6640f0c01"/><file name="Pricemodel.php" hash="d93cbeed02dd5d38e4dc835ed06cc46f"/><file name="Selectattribute.php" hash="eea82ac436e2b999d37954c4706c690d"/><file name="Shipping.php" hash="8a8b0753092eac24484508f541a317c0"/><file name="Tax.php" hash="fbdc14e6c556d3281f8fdf652c8c637f"/><file name="Textattribute.php" hash="b601321ea8f84413c201f6f1bd5da15d"/><file name="Type.php" hash="f0bd14bb3c19b0fe59e64e2f9d96ae7f"/><file name="Visibility.php" hash="ca3d49287963398b35a905f068cfd647"/><file name="Weight.php" hash="1b05f0f69a7ebd6e0ea445ae11544fc9"/></dir></dir></dir></dir><file name="Channable.php" hash="753c50313cc773d65615817a2f0cd7eb"/><file name="Common.php" hash="b6aae848464576dcb4c8bada2ad8e6f3"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ChannableController.php" hash="957b06156e54c3e78c3ee2fa1549f358"/></dir><file name="FeedController.php" hash="8ad6ae001206426a4476aeafcc8fda08"/></dir><dir name="data"><dir name="magmodules_channable_setup"><file name="data-upgrade-1.4.8-1.4.9.php" hash="66a5f5720815c9e738b54a039877c9c9"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="0bc11d7499e07c074d3b7ecab3a2400b"/><file name="config.xml" hash="96a46885d540b04243dda14f5bdff76e"/><file name="system.xml" hash="1868aa41d072cb856e044e8bc6eb92a8"/></dir><dir name="sql"><dir name="magmodules_channable_setup"><file name="upgrade-1.4.8-1.4.9.php" hash="572c087cac6aa281aa23af1ad4b7ef6e"/></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Magmodules_Channable.csv" hash="b7f6f15de57f502ccf1c98e71006a823"/></dir><dir name="nl_NL"><file name="Magmodules_Channable.csv" hash="2eaec8847182a0005c575e0acf6e1c1d"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Magmodules_Channable.xml" hash="061032d718f1ddd64de211fc7133685c"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>7.9.9</max></php></required></dependencies>
18
  </package>