Version Notes
No comments
Download this release
Release Info
Developer | Remarkety |
Extension | Remarkety_Mgconnector |
Version | 1.4.8.1 |
Comparing to | |
See all releases |
Code changes from version 1.4.7.3 to 1.4.8.1
- CHANGELOG.txt +8 -0
- app/code/community/Remarkety/Mgconnector/Model/Core.php +42 -4
- app/code/community/Remarkety/Mgconnector/Model/Observer.php +252 -20
- app/code/community/Remarkety/Mgconnector/etc/config.xml +15 -2
- app/code/community/Remarkety/Mgconnector/sql/mgconnector_setup/mysql4-upgrade-1.4.7.2-1.4.8.0.php +22 -0
- package.xml +4 -4
CHANGELOG.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1.4.7.3
|
2 |
-------
|
3 |
Bugfix - get configuration settings from the request parameter instead of the headers
|
1 |
+
1.4.8.1
|
2 |
+
-------
|
3 |
+
- Bugfix - Salable products incorrect value
|
4 |
+
|
5 |
+
1.4.8.0
|
6 |
+
-------
|
7 |
+
- Add webhooks and cron job for pushing product price updates
|
8 |
+
|
9 |
1.4.7.3
|
10 |
-------
|
11 |
Bugfix - get configuration settings from the request parameter instead of the headers
|
app/code/community/Remarkety/Mgconnector/Model/Core.php
CHANGED
@@ -22,6 +22,8 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
22 |
const XPATH_CATEGORIES_TO_IGNORE = 'remarkety/mgconnector/categories-to-ignore';
|
23 |
private $_categoriesToIgnore = array();
|
24 |
|
|
|
|
|
25 |
private $_productCache = array();
|
26 |
private $_categoryCache = array();
|
27 |
|
@@ -241,7 +243,7 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
241 |
return $data;
|
242 |
}
|
243 |
|
244 |
-
|
245 |
{
|
246 |
$categoryCollection = $product->getCategoryCollection()
|
247 |
->addAttributeToSelect('name');
|
@@ -538,6 +540,11 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
538 |
$this->_debug(__FUNCTION__, REMARKETY_MGCONNECTOR_CALLED_STATUS, null, $myArgs);
|
539 |
$ordersCollection = Mage::getModel("sales/order")
|
540 |
->getCollection()
|
|
|
|
|
|
|
|
|
|
|
541 |
->addOrder('updated_at', 'ASC')
|
542 |
->addAttributeToSelect('*');
|
543 |
|
@@ -597,6 +604,7 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
597 |
*/
|
598 |
|
599 |
$productIdsToLoad = array();
|
|
|
600 |
$orderIds = array();
|
601 |
|
602 |
foreach ($ordersCollection as $order) {
|
@@ -624,6 +632,19 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
624 |
$orderData['address'] = $address;
|
625 |
}
|
626 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
627 |
$storeUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
628 |
|
629 |
$itemsCollection = $order->getItemsCollection();
|
@@ -658,6 +679,7 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
658 |
$paymentMethods = $this->loadPaymentMethods($orderIds);
|
659 |
|
660 |
// Load the products all at once and populate the items
|
|
|
661 |
$this->loadProducts($mage_store_view_id, $productIdsToLoad);
|
662 |
|
663 |
$ret = array();
|
@@ -831,7 +853,15 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
831 |
$ret = array();
|
832 |
$myArgs = func_get_args();
|
833 |
$this->simpleProductsStandalone = Mage::helper('mgconnector/configuration')->getValue('configurable_standalone', false);
|
834 |
-
try
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
835 |
$this->_debug(__FUNCTION__, REMARKETY_MGCONNECTOR_CALLED_STATUS, null, $myArgs);
|
836 |
$productCollectionWithPrices = Mage::getModel("catalog/product")
|
837 |
->getCollection()
|
@@ -1312,8 +1342,8 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
1312 |
$url = (string)Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . 'remarkety/recovery/cart/quote_id/' . $id;
|
1313 |
return $url;
|
1314 |
}
|
1315 |
-
|
1316 |
-
|
1317 |
$name = '';
|
1318 |
if(!$this->simpleProductsStandalone && !in_array($product->type_id, $this->_groupedTypes)) {
|
1319 |
$this->_debug(__FUNCTION__, null, "not config prod id ".$product->getId(), '');
|
@@ -1378,6 +1408,14 @@ class Remarkety_Mgconnector_Model_Core extends Mage_Core_Model_Abstract {
|
|
1378 |
}
|
1379 |
}
|
1380 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1381 |
private function loadProduct($productId) {
|
1382 |
if (!isset($this->_productCache[$productId])) {
|
1383 |
$this->_productCache[$productId] = Mage::getModel("catalog/product")->load($productId);
|
22 |
const XPATH_CATEGORIES_TO_IGNORE = 'remarkety/mgconnector/categories-to-ignore';
|
23 |
private $_categoriesToIgnore = array();
|
24 |
|
25 |
+
private $configurable_product_model = null;
|
26 |
+
|
27 |
private $_productCache = array();
|
28 |
private $_categoryCache = array();
|
29 |
|
243 |
return $data;
|
244 |
}
|
245 |
|
246 |
+
public function _productCategories(Mage_Catalog_Model_Product $product, $getFromParent = true)
|
247 |
{
|
248 |
$categoryCollection = $product->getCategoryCollection()
|
249 |
->addAttributeToSelect('name');
|
540 |
$this->_debug(__FUNCTION__, REMARKETY_MGCONNECTOR_CALLED_STATUS, null, $myArgs);
|
541 |
$ordersCollection = Mage::getModel("sales/order")
|
542 |
->getCollection()
|
543 |
+
->join(
|
544 |
+
array('payment' => 'sales/order_payment'),
|
545 |
+
'main_table.entity_id=payment.parent_id',
|
546 |
+
array('payment_method' => 'payment.method')
|
547 |
+
)
|
548 |
->addOrder('updated_at', 'ASC')
|
549 |
->addAttributeToSelect('*');
|
550 |
|
604 |
*/
|
605 |
|
606 |
$productIdsToLoad = array();
|
607 |
+
$paymentMethods = array(); //hash table for payment code->name
|
608 |
$orderIds = array();
|
609 |
|
610 |
foreach ($ordersCollection as $order) {
|
632 |
$orderData['address'] = $address;
|
633 |
}
|
634 |
|
635 |
+
//convert payment method code to name
|
636 |
+
if(!empty($orderData['payment_method'])){
|
637 |
+
if(isset($paymentMethods[$orderData['payment_method']])){ //use hash table if found
|
638 |
+
$orderData['payment_method'] = $paymentMethods[$orderData['payment_method']];
|
639 |
+
} else { //get name from config
|
640 |
+
$method = Mage::getStoreConfig('payment/'.$orderData['payment_method'].'/title');
|
641 |
+
if(!empty($method)){
|
642 |
+
$paymentMethods[$orderData['payment_method']] = $method;
|
643 |
+
$orderData['payment_method'] = $method;
|
644 |
+
}
|
645 |
+
}
|
646 |
+
}
|
647 |
+
|
648 |
$storeUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
649 |
|
650 |
$itemsCollection = $order->getItemsCollection();
|
679 |
$paymentMethods = $this->loadPaymentMethods($orderIds);
|
680 |
|
681 |
// Load the products all at once and populate the items
|
682 |
+
|
683 |
$this->loadProducts($mage_store_view_id, $productIdsToLoad);
|
684 |
|
685 |
$ret = array();
|
853 |
$ret = array();
|
854 |
$myArgs = func_get_args();
|
855 |
$this->simpleProductsStandalone = Mage::helper('mgconnector/configuration')->getValue('configurable_standalone', false);
|
856 |
+
try
|
857 |
+
{
|
858 |
+
try {
|
859 |
+
$store = Mage::app()->getStore($mage_store_id);
|
860 |
+
Mage::app()->setCurrentStore($store);
|
861 |
+
} catch (Exception $ex){
|
862 |
+
$this->_debug(__FUNCTION__, REMARKETY_MGCONNECTOR_ERROR, "Cannot set active store", $myArgs);
|
863 |
+
}
|
864 |
+
|
865 |
$this->_debug(__FUNCTION__, REMARKETY_MGCONNECTOR_CALLED_STATUS, null, $myArgs);
|
866 |
$productCollectionWithPrices = Mage::getModel("catalog/product")
|
867 |
->getCollection()
|
1342 |
$url = (string)Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . 'remarkety/recovery/cart/quote_id/' . $id;
|
1343 |
return $url;
|
1344 |
}
|
1345 |
+
|
1346 |
+
public function getProductName($product, $mage_store_view_id){
|
1347 |
$name = '';
|
1348 |
if(!$this->simpleProductsStandalone && !in_array($product->type_id, $this->_groupedTypes)) {
|
1349 |
$this->_debug(__FUNCTION__, null, "not config prod id ".$product->getId(), '');
|
1408 |
}
|
1409 |
}
|
1410 |
|
1411 |
+
private function getConfigProdModel()
|
1412 |
+
{
|
1413 |
+
if ($this->configurable_product_model == null) {
|
1414 |
+
$this->configurable_product_model = Mage::getModel('catalog/product_type_configurable');
|
1415 |
+
}
|
1416 |
+
return $this->configurable_product_model;
|
1417 |
+
}
|
1418 |
+
|
1419 |
private function loadProduct($productId) {
|
1420 |
if (!isset($this->_productCache[$productId])) {
|
1421 |
$this->_productCache[$productId] = Mage::getModel("catalog/product")->load($productId);
|
app/code/community/Remarkety/Mgconnector/Model/Observer.php
CHANGED
@@ -3,14 +3,13 @@
|
|
3 |
/**
|
4 |
* Observer model, which handle few events and send post request
|
5 |
*
|
6 |
-
* @category
|
7 |
-
* @package
|
8 |
-
* @author
|
9 |
*/
|
10 |
|
11 |
-
if (!defined("REMARKETY_LOG"))
|
12 |
define('REMARKETY_LOG', 'remarkety_mgconnector.log');
|
13 |
-
}
|
14 |
|
15 |
class Remarkety_Mgconnector_Model_Observer
|
16 |
{
|
@@ -31,6 +30,29 @@ class Remarkety_Mgconnector_Model_Observer
|
|
31 |
protected $_address = null;
|
32 |
protected $_origAddressData = null;
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
public function __construct()
|
35 |
{
|
36 |
$this->_token = Mage::getStoreConfig('remarkety/mgconnector/api_key');
|
@@ -42,6 +64,7 @@ class Remarkety_Mgconnector_Model_Observer
|
|
42 |
}
|
43 |
|
44 |
|
|
|
45 |
public function triggerCustomerAddressBeforeUpdate($observer)
|
46 |
{
|
47 |
$address = Mage::getSingleton('customer/session')
|
@@ -68,10 +91,10 @@ class Remarkety_Mgconnector_Model_Observer
|
|
68 |
array(
|
69 |
'header' => Mage::helper('salesrule')->__('Expiration date'),
|
70 |
'index' => 'expiration_date',
|
71 |
-
'type'
|
72 |
-
'default'
|
73 |
-
'align'
|
74 |
-
'width'
|
75 |
),
|
76 |
'created_at'
|
77 |
);
|
@@ -121,6 +144,60 @@ class Remarkety_Mgconnector_Model_Observer
|
|
121 |
return $this;
|
122 |
}
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
public function triggerCustomerUpdate($observer)
|
125 |
{
|
126 |
$this->_customer = $observer->getEvent()->getCustomer();
|
@@ -309,7 +386,8 @@ class Remarkety_Mgconnector_Model_Observer
|
|
309 |
'curloptions' => array(
|
310 |
// CURLOPT_FOLLOWLOCATION => true,
|
311 |
CURLOPT_HEADER => true,
|
312 |
-
CURLOPT_CONNECTTIMEOUT => self::REMARKETY_TIMEOUT
|
|
|
313 |
// CURLOPT_SSL_CIPHER_LIST => "RC4-SHA"
|
314 |
),
|
315 |
);
|
@@ -391,7 +469,7 @@ class Remarkety_Mgconnector_Model_Observer
|
|
391 |
{
|
392 |
$queueModel = Mage::getModel('mgconnector/queue');
|
393 |
|
394 |
-
if
|
395 |
$now = time();
|
396 |
$nextAttempt = $now + (int)$this->_intervals[$attempt - 1] * 60;
|
397 |
if ($queueId) {
|
@@ -410,15 +488,12 @@ class Remarkety_Mgconnector_Model_Observer
|
|
410 |
)
|
411 |
);
|
412 |
}
|
413 |
-
|
414 |
return $queueModel->save();
|
415 |
} elseif ($queueId) {
|
416 |
$queueModel->load($queueId);
|
417 |
$queueModel->setStatus(0);
|
418 |
-
|
419 |
return $queueModel->save();
|
420 |
}
|
421 |
-
|
422 |
return false;
|
423 |
}
|
424 |
|
@@ -429,7 +504,6 @@ class Remarkety_Mgconnector_Model_Observer
|
|
429 |
'timestamp' => (string)time(),
|
430 |
'event_id' => $eventType,
|
431 |
);
|
432 |
-
|
433 |
return $arr;
|
434 |
}
|
435 |
|
@@ -562,7 +636,7 @@ class Remarkety_Mgconnector_Model_Observer
|
|
562 |
$arr = array(
|
563 |
'email' => $this->_subscriber->getSubscriberEmail(),
|
564 |
'accepts_marketing' => false,
|
565 |
-
'storeId' => $store->getStoreId()
|
566 |
);
|
567 |
|
568 |
return $arr;
|
@@ -572,10 +646,21 @@ class Remarkety_Mgconnector_Model_Observer
|
|
572 |
{
|
573 |
$sent = 0;
|
574 |
foreach ($queueItems as $_queue) {
|
575 |
-
$result =
|
576 |
-
|
577 |
-
|
578 |
-
$_queue->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
579 |
if ($result) {
|
580 |
Mage::getModel('mgconnector/queue')
|
581 |
->load($_queue->getId())
|
@@ -600,4 +685,151 @@ class Remarkety_Mgconnector_Model_Observer
|
|
600 |
|
601 |
return $this;
|
602 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
603 |
}
|
3 |
/**
|
4 |
* Observer model, which handle few events and send post request
|
5 |
*
|
6 |
+
* @category Remarkety
|
7 |
+
* @package Remarkety_Mgconnector
|
8 |
+
* @author Piotr Pierzak <piotrek.pierzak@gmail.com>
|
9 |
*/
|
10 |
|
11 |
+
if (!defined("REMARKETY_LOG"))
|
12 |
define('REMARKETY_LOG', 'remarkety_mgconnector.log');
|
|
|
13 |
|
14 |
class Remarkety_Mgconnector_Model_Observer
|
15 |
{
|
30 |
protected $_address = null;
|
31 |
protected $_origAddressData = null;
|
32 |
|
33 |
+
private $response_mask = array(
|
34 |
+
'product' => array(
|
35 |
+
'id',
|
36 |
+
'sku',
|
37 |
+
'title',
|
38 |
+
'created_at',
|
39 |
+
'updated_at',
|
40 |
+
'type_id',
|
41 |
+
'base_image',
|
42 |
+
'thumbnail_image',
|
43 |
+
'enabled',
|
44 |
+
'visibility',
|
45 |
+
'categories',
|
46 |
+
'small_image',
|
47 |
+
'price',
|
48 |
+
'special_price',
|
49 |
+
'cost',
|
50 |
+
'url',
|
51 |
+
'is_in_stock',
|
52 |
+
'parent_id'
|
53 |
+
)
|
54 |
+
);
|
55 |
+
|
56 |
public function __construct()
|
57 |
{
|
58 |
$this->_token = Mage::getStoreConfig('remarkety/mgconnector/api_key');
|
64 |
}
|
65 |
|
66 |
|
67 |
+
|
68 |
public function triggerCustomerAddressBeforeUpdate($observer)
|
69 |
{
|
70 |
$address = Mage::getSingleton('customer/session')
|
91 |
array(
|
92 |
'header' => Mage::helper('salesrule')->__('Expiration date'),
|
93 |
'index' => 'expiration_date',
|
94 |
+
'type' => 'datetime',
|
95 |
+
'default' => '-',
|
96 |
+
'align' => 'center',
|
97 |
+
'width' => '160'
|
98 |
),
|
99 |
'created_at'
|
100 |
);
|
144 |
return $this;
|
145 |
}
|
146 |
|
147 |
+
private function shouldUpdateRule($rule){
|
148 |
+
$now = new DateTime();
|
149 |
+
$currentFromDate = new DateTime($rule->getFromDate());
|
150 |
+
$currentToDate = new DateTime($rule->getToDate());
|
151 |
+
$now->setTime(0, 0, 0);
|
152 |
+
$currentFromDate->setTime(0, 0, 0);
|
153 |
+
$currentToDate->setTime(0, 0, 0);
|
154 |
+
if($currentFromDate <= $now && $currentToDate >= $now && $rule->getIsActive()){
|
155 |
+
$oldData = $rule->getOrigData();
|
156 |
+
if(!is_null($oldData) && isset($oldData['is_active']) && $oldData['is_active'] == 1){
|
157 |
+
//check if was already active so no need to update
|
158 |
+
$oldFromDate = new DateTime($oldData['from_date']);
|
159 |
+
$oldToDate = new DateTime($oldData['to_date']);
|
160 |
+
$oldFromDate->setTime(0, 0, 0);
|
161 |
+
$oldToDate->setTime(0, 0, 0);
|
162 |
+
if($rule->hasDataChanges()) {
|
163 |
+
return true;
|
164 |
+
}
|
165 |
+
if($currentFromDate <= $now && $currentToDate >= $now){
|
166 |
+
return false;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
return true;
|
170 |
+
}
|
171 |
+
//check if was already active but not active now so need to update
|
172 |
+
$oldData = $rule->getOrigData();
|
173 |
+
if(!is_null($oldData) && isset($oldData['is_active']) && $oldData['is_active'] == 1){
|
174 |
+
$currentFromDate = new DateTime($oldData['from_date']);
|
175 |
+
$currentToDate = new DateTime($oldData['to_date']);
|
176 |
+
$currentFromDate->setTime(0, 0, 0);
|
177 |
+
$currentToDate->setTime(0, 0, 0);
|
178 |
+
if($currentFromDate <= $now && $currentToDate >= $now){
|
179 |
+
return true;
|
180 |
+
}
|
181 |
+
}
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
public function triggerCatalogRuleBeforeUpdate($observer)
|
185 |
+
{
|
186 |
+
|
187 |
+
$this->rule = $observer->getEvent()->getRule();
|
188 |
+
$this->rule->setUpdatedAt(date("Y-m-d H:i:s"));
|
189 |
+
if($this->shouldUpdateRule($this->rule)) {
|
190 |
+
$this->_queueRequest('catalogruleupdated', ['ruleId' => $this->rule->getId()], 1, null);
|
191 |
+
//$this->sendProductPrices($this->rule->getId());
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
public function triggerCatalogRuleBeforeDelete($observer){
|
196 |
+
}
|
197 |
+
|
198 |
+
public function triggerCatalogRuleAfterDelete($observer){
|
199 |
+
}
|
200 |
+
|
201 |
public function triggerCustomerUpdate($observer)
|
202 |
{
|
203 |
$this->_customer = $observer->getEvent()->getCustomer();
|
386 |
'curloptions' => array(
|
387 |
// CURLOPT_FOLLOWLOCATION => true,
|
388 |
CURLOPT_HEADER => true,
|
389 |
+
CURLOPT_CONNECTTIMEOUT => self::REMARKETY_TIMEOUT,
|
390 |
+
CURLOPT_SSL_VERIFYPEER => false
|
391 |
// CURLOPT_SSL_CIPHER_LIST => "RC4-SHA"
|
392 |
),
|
393 |
);
|
469 |
{
|
470 |
$queueModel = Mage::getModel('mgconnector/queue');
|
471 |
|
472 |
+
if(!empty($this->_intervals[$attempt-1])) {
|
473 |
$now = time();
|
474 |
$nextAttempt = $now + (int)$this->_intervals[$attempt - 1] * 60;
|
475 |
if ($queueId) {
|
488 |
)
|
489 |
);
|
490 |
}
|
|
|
491 |
return $queueModel->save();
|
492 |
} elseif ($queueId) {
|
493 |
$queueModel->load($queueId);
|
494 |
$queueModel->setStatus(0);
|
|
|
495 |
return $queueModel->save();
|
496 |
}
|
|
|
497 |
return false;
|
498 |
}
|
499 |
|
504 |
'timestamp' => (string)time(),
|
505 |
'event_id' => $eventType,
|
506 |
);
|
|
|
507 |
return $arr;
|
508 |
}
|
509 |
|
636 |
$arr = array(
|
637 |
'email' => $this->_subscriber->getSubscriberEmail(),
|
638 |
'accepts_marketing' => false,
|
639 |
+
'storeId' => $store->getStoreId()
|
640 |
);
|
641 |
|
642 |
return $arr;
|
646 |
{
|
647 |
$sent = 0;
|
648 |
foreach ($queueItems as $_queue) {
|
649 |
+
$result = false;
|
650 |
+
if($_queue->getEventType() == "catalogruleupdated"){
|
651 |
+
//create queue for price rule update
|
652 |
+
$ruleData = unserialize($_queue->getPayload());
|
653 |
+
$ruleId = isset($ruleData['ruleId']) ? $ruleData['ruleId'] : false;
|
654 |
+
if($ruleId){
|
655 |
+
$result = $this->sendProductPrices($ruleId);
|
656 |
+
}
|
657 |
+
} else {
|
658 |
+
//send event to remarkety
|
659 |
+
$result = $this->makeRequest($_queue->getEventType(),
|
660 |
+
unserialize($_queue->getPayload()),
|
661 |
+
$resetAttempts ? 1 : ($_queue->getAttempts() + 1),
|
662 |
+
$_queue->getId());
|
663 |
+
}
|
664 |
if ($result) {
|
665 |
Mage::getModel('mgconnector/queue')
|
666 |
->load($_queue->getId())
|
685 |
|
686 |
return $this;
|
687 |
}
|
688 |
+
|
689 |
+
private function _filter_output_data($data, $field_set = array())
|
690 |
+
{
|
691 |
+
if (empty($field_set)) return $data;
|
692 |
+
|
693 |
+
foreach (array_keys($data) as $key) {
|
694 |
+
if (isset($field_set[$key]) && is_array($field_set[$key])) {
|
695 |
+
$data[$key] = $this->_filter_output_data($data[$key], $field_set[$key]);
|
696 |
+
} else if (isset($field_set['*']) && is_array($field_set['*'])) {
|
697 |
+
$data[$key] = $this->_filter_output_data($data[$key], $field_set['*']);
|
698 |
+
} else {
|
699 |
+
if (!in_array($key, $field_set)) unset ($data[$key]);
|
700 |
+
}
|
701 |
+
}
|
702 |
+
return $data;
|
703 |
+
}
|
704 |
+
|
705 |
+
protected function _productsUpdate($storeId, $data, $toQueue = false)
|
706 |
+
{
|
707 |
+
if($toQueue){
|
708 |
+
$this->_queueRequest('products/update', array('storeId' => $storeId, 'products' => $data), 1, null);
|
709 |
+
} else {
|
710 |
+
$this->makeRequest('products/update', array('storeId' => $storeId, 'products' => $data));
|
711 |
+
}
|
712 |
+
|
713 |
+
return $this;
|
714 |
+
}
|
715 |
+
|
716 |
+
|
717 |
+
public function sendProductPrices($ruleId = null)
|
718 |
+
{
|
719 |
+
$yesterday_start = date('Y-m-d 00:00:00',strtotime("-1 days"));
|
720 |
+
$yesterday_end = date('Y-m-d 23:59:59',strtotime("-1 days"));
|
721 |
+
$today_start = date('Y-m-d 00:00:00');
|
722 |
+
$today_end = date('Y-m-d 23:59:59');
|
723 |
+
$data = [];
|
724 |
+
|
725 |
+
Mage::log('sendProductPrices started', null, 'remarkety-ext.log');
|
726 |
+
|
727 |
+
$collection = Mage::getModel('catalogrule/rule')->getCollection();
|
728 |
+
$collection->getSelect()
|
729 |
+
->joinLeft(
|
730 |
+
array('catalogrule_product' => Mage::getSingleton('core/resource')->getTableName('catalogrule/rule_product')),
|
731 |
+
'main_table.rule_id = catalogrule_product.rule_id',
|
732 |
+
array('product_id')
|
733 |
+
)
|
734 |
+
->group(['main_table.rule_id', 'catalogrule_product.product_id']);
|
735 |
+
|
736 |
+
if(is_null($ruleId)){
|
737 |
+
$collection->getSelect()
|
738 |
+
->where('(main_table.from_date >= ?', $today_start)->where('main_table.from_date <= ?)', $today_end)
|
739 |
+
->orWhere('(main_table.to_date >= ? ',$yesterday_start)->where('main_table.to_date <= ?)', $yesterday_end)
|
740 |
+
->orWhere('(main_table.updated_at >= ? ',$yesterday_start)->where('main_table.updated_at <= ?)', $yesterday_end);
|
741 |
+
} else {
|
742 |
+
$collection->getSelect()
|
743 |
+
->where('main_table.rule_id = ?', $ruleId);
|
744 |
+
}
|
745 |
+
$useQueue = !is_null($ruleId);
|
746 |
+
|
747 |
+
// $i = 0;
|
748 |
+
$ruleProducts = [];
|
749 |
+
foreach($collection->getData() as $c) {
|
750 |
+
if (!isset($ruleProducts[$c['rule_id']]))
|
751 |
+
$ruleProducts[$c['rule_id']] = [];
|
752 |
+
$ruleProducts[$c['rule_id']][] = $c['product_id'];
|
753 |
+
}
|
754 |
+
|
755 |
+
$storeUrls = [];
|
756 |
+
foreach($ruleProducts as $ruleId => $products) {
|
757 |
+
/**
|
758 |
+
* @var Mage_CatalogRule_Model_Rule
|
759 |
+
*/
|
760 |
+
$catalog_rule = Mage::getModel('catalogrule/rule')->load($ruleId);
|
761 |
+
$websiteIds = $catalog_rule->getWebsiteIds();
|
762 |
+
foreach ($websiteIds as $websiteId) {
|
763 |
+
$website = Mage::getModel('core/website')->load($websiteId);
|
764 |
+
foreach ($website->getGroups() as $group) {
|
765 |
+
$stores = $group->getStores();
|
766 |
+
foreach ($stores as $store) {
|
767 |
+
if(!isset($storeUrls[$store->getStoreId()]))
|
768 |
+
$storeUrls[$store->getStoreId()] = Mage::app()->getStore($store->getStoreId())->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB, true);
|
769 |
+
$isRemarketyInstalled = !empty($store->getConfig(Remarkety_Mgconnector_Model_Install::XPATH_INSTALLED));
|
770 |
+
if ($isRemarketyInstalled) {
|
771 |
+
$rows = [];
|
772 |
+
$i = 0;
|
773 |
+
foreach($products as $productId){
|
774 |
+
if($i >= 10){
|
775 |
+
$this->_productsUpdate($store->getStoreId(), $rows, $useQueue);
|
776 |
+
$i = 0;
|
777 |
+
$rows = [];
|
778 |
+
}
|
779 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
780 |
+
$pWebsites = $product->getWebsiteIds();
|
781 |
+
if(in_array($websiteId, $pWebsites)) {
|
782 |
+
$rows[] = $this->_prepareProductData($product, $store->getStoreId(), $storeUrls[$store->getStoreId()]);
|
783 |
+
$i++;
|
784 |
+
}
|
785 |
+
}
|
786 |
+
if($i > 0){
|
787 |
+
$this->_productsUpdate($store->getStoreId(), $rows, $useQueue);
|
788 |
+
}
|
789 |
+
}
|
790 |
+
}
|
791 |
+
}
|
792 |
+
}
|
793 |
+
}
|
794 |
+
return true;
|
795 |
+
}
|
796 |
+
|
797 |
+
private function _prepareProductData($product,$mage_store_id,$storeUrl)
|
798 |
+
{
|
799 |
+
$product->setStoreId($mage_store_id)->setCustomerGroupId(0);
|
800 |
+
|
801 |
+
$productData = $product->toArray();
|
802 |
+
$productData['base_image'] = array('src' => Mage::getModel('mgconnector/core')->getImageUrl($product, 'image', $mage_store_id));
|
803 |
+
$productData['small_image'] = array('src' => Mage::getModel('mgconnector/core')->getImageUrl($product, 'small', $mage_store_id));
|
804 |
+
$productData['thumbnail_image'] = array('src' => Mage::getModel('mgconnector/core')->getImageUrl($product, 'thumbnail', $mage_store_id));
|
805 |
+
|
806 |
+
$cats = Mage::getModel('mgconnector/core')->_productCategories($product);
|
807 |
+
$categoriesNames = array();
|
808 |
+
foreach($cats as $catName){
|
809 |
+
$categoriesNames[] = array('name' => $catName);
|
810 |
+
}
|
811 |
+
$productData['categories'] = $categoriesNames;
|
812 |
+
|
813 |
+
$price = Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice());
|
814 |
+
$productData['price'] = empty($price) ? $product->getFinalPrice() : $price;
|
815 |
+
$productData['special_price'] = $product->getSpecialPrice();
|
816 |
+
|
817 |
+
$prodUrl = Mage::getModel('mgconnector/core')->getProdUrl($product, $storeUrl, $mage_store_id);
|
818 |
+
$productData['id'] = $productData['entity_id'];
|
819 |
+
$productData['url'] = $prodUrl;
|
820 |
+
$productData['title'] = Mage::getModel('mgconnector/core')->getProductName($product, $mage_store_id);
|
821 |
+
$productData['enabled'] = $product->isSalable() && $product->isVisibleInSiteVisibility();
|
822 |
+
$productData['visibility'] = $product->getVisibility();
|
823 |
+
|
824 |
+
|
825 |
+
$parent_id = Mage::getModel('mgconnector/core')->getProductParentId($product);
|
826 |
+
if($parent_id !== false){
|
827 |
+
$productData['parent_id'] = $parent_id;
|
828 |
+
}
|
829 |
+
|
830 |
+
$productData = $this->_filter_output_data($productData, $this->response_mask['product']);
|
831 |
+
|
832 |
+
return $productData;
|
833 |
+
}
|
834 |
+
|
835 |
}
|
app/code/community/Remarkety/Mgconnector/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Remarkety_Mgconnector>
|
5 |
-
<version>1.4.
|
6 |
</Remarkety_Mgconnector>
|
7 |
</modules>
|
8 |
<global>
|
@@ -45,6 +45,15 @@
|
|
45 |
</mgconnector>
|
46 |
</blocks>
|
47 |
<events>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
<catalog_product_save_after>
|
49 |
<observers>
|
50 |
<remarkety_catalog_product_save_after>
|
@@ -172,6 +181,10 @@
|
|
172 |
<schedule><cron_expr>*/1 * * * *</cron_expr></schedule>
|
173 |
<run><model>mgconnector/observer::run</model></run>
|
174 |
</mgconnector_cron>
|
|
|
|
|
|
|
|
|
175 |
</jobs>
|
176 |
</crontab>
|
177 |
<default>
|
@@ -186,4 +199,4 @@
|
|
186 |
</rewardpoints>
|
187 |
</mgconnector_supported_extensions>
|
188 |
</default>
|
189 |
-
</config>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Remarkety_Mgconnector>
|
5 |
+
<version>1.4.8.1</version>
|
6 |
</Remarkety_Mgconnector>
|
7 |
</modules>
|
8 |
<global>
|
45 |
</mgconnector>
|
46 |
</blocks>
|
47 |
<events>
|
48 |
+
<catalogrule_rule_save_before>
|
49 |
+
<observers>
|
50 |
+
<remarkety_catalogrule_rule_save_before>
|
51 |
+
<type>singleton</type>
|
52 |
+
<class>mgconnector/observer</class>
|
53 |
+
<method>triggerCatalogRuleBeforeUpdate</method>
|
54 |
+
</remarkety_catalogrule_rule_save_before>
|
55 |
+
</observers>
|
56 |
+
</catalogrule_rule_save_before>
|
57 |
<catalog_product_save_after>
|
58 |
<observers>
|
59 |
<remarkety_catalog_product_save_after>
|
181 |
<schedule><cron_expr>*/1 * * * *</cron_expr></schedule>
|
182 |
<run><model>mgconnector/observer::run</model></run>
|
183 |
</mgconnector_cron>
|
184 |
+
<mgconnector_prices>
|
185 |
+
<schedule><cron_expr>0 0 * * *</cron_expr></schedule>
|
186 |
+
<run><model>mgconnector/observer::sendProductPrices</model></run>
|
187 |
+
</mgconnector_prices>
|
188 |
</jobs>
|
189 |
</crontab>
|
190 |
<default>
|
199 |
</rewardpoints>
|
200 |
</mgconnector_supported_extensions>
|
201 |
</default>
|
202 |
+
</config>
|
app/code/community/Remarkety/Mgconnector/sql/mgconnector_setup/mysql4-upgrade-1.4.7.2-1.4.8.0.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Upgrade script from version 1.4.7.2 to 1.4.8.0
|
5 |
+
*
|
6 |
+
* @category Remarkety
|
7 |
+
* @package Remarkety_Mgconnector
|
8 |
+
* @author Rafał Andryanczyk <rafal.andryanczyk@gmail.com>
|
9 |
+
*/
|
10 |
+
$installer = $this;
|
11 |
+
$installer->startSetup();
|
12 |
+
|
13 |
+
|
14 |
+
$installer->getConnection()
|
15 |
+
->addColumn($installer->getTable('catalogrule/rule'),'updated_at', array(
|
16 |
+
'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
17 |
+
'nullable' => true,
|
18 |
+
'default' => null,
|
19 |
+
'comment' => 'updated_at',
|
20 |
+
));
|
21 |
+
|
22 |
+
$installer->endSetup();
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Remarkety_Mgconnector</name>
|
4 |
-
<version>1.4.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.gnu.org/licenses/gpl-3.0.html">GPL v3</license>
|
7 |
<channel>community</channel>
|
@@ -9,11 +9,11 @@
|
|
9 |
<summary>Remarkety Magento Connector</summary>
|
10 |
<description>Remarkety Magento Connector</description>
|
11 |
<notes>No comments</notes>
|
12 |
-
<date>2016-07-
|
13 |
-
<time>
|
14 |
<contents>
|
15 |
<target name="magecommunity">
|
16 |
-
<dir name="Remarkety"><dir name="Mgconnector"><dir name="Block"><dir name="Adminhtml"><dir name="Configuration"><dir name="Complete"><file name="Form.php" hash="dc799532128513364fc3afd17eabb78b"/></dir><file name="Complete.php" hash="b9f7b4ecbd2be587c0efbd16523b167e"/><dir name="Configuration"><file name="Form.php" hash="ffe6b6ce5b2906c916694007ca5a1b28"/></dir><file name="Configuration.php" hash="67b3b564c2c3123301f5f97b2b258a7a"/><dir name="Install"><file name="Form.php" hash="59541fe2ad9a49b9fb56a41f00e6a591"/></dir><file name="Install.php" hash="f631fcdfd86d2bc416eb1ad4422fc20c"/><dir name="Upgrade"><file name="Form.php" hash="598f83eca99d0153537e22f9ee6b1934"/></dir><file name="Upgrade.php" hash="c672741b0407f108d2266dd939590846"/></dir><file name="Configuration.php" hash="bf0c9aabe92f669694e0699c009b2a9c"/><dir name="Extension"><file name="RewardPoints.php" hash="82e320930f59dfd45e5aa73005118833"/></dir><dir name="Install"><dir name="Complete"><file name="Form.php" hash="5992149b9ff2d2a7c2b008d98098362d"/></dir><file name="Complete.php" hash="452944c613b88ede358ee4dacd562d05"/><dir name="Install"><dir name="Create"><file name="Form.php" hash="65d98f1449ce6af413a3185692e07533"/></dir><file name="Create.php" hash="0d3182923fd5542e3d0a757625a85ae4"/><dir name="Login"><file name="Form.php" hash="a58c19056e47c7851eb6a5f40517f757"/></dir><file name="Login.php" hash="3ee61a883f843c55b1b32a328af84322"/></dir><dir name="Upgrade"><file name="Form.php" hash="6f4e2ac19d30115de4e275fdb8dca5b6"/></dir><file name="Upgrade.php" hash="f16ba61a8c86007bbc0a980e8faeade1"/><dir name="Welcome"><file name="Form.php" hash="58cb26cc7555498bd0367c77a99c8d60"/><file name="Store.php" hash="9f3b5c7bbd9f4d7201189598e5a64cc4"/></dir><file name="Welcome.php" hash="86589c79b5c38ea5f25d58ac932f33cb"/></dir><dir name="Queue"><dir name="Configure"><file name="Form.php" hash="8eb691898c79cd5aed15c7857cb84b4c"/></dir><file name="Configure.php" hash="03d5ebf7644462904c439d172cde3afc"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="EventType.php" hash="4ac5971c368b70efa96b4c8297c85c3c"/><file name="Status.php" hash="ec57ddafc2515b952958e6ace6de22ec"/></dir></dir></dir><file name="Grid.php" hash="74d5f3b18d76cdf8219e2d39a83a2f7c"/></dir><file name="Queue.php" hash="2c905cc54a6c08d4d73a392d5b95a25c"/></dir><dir name="Tracking"><file name="Base.php" hash="5e0f245ac5ee59d2f6c6f35087059b56"/><file name="General.php" hash="9ca2796c6f2bf9233553e6b782f3722b"/><file name="Product.php" hash="3a0c1b1a5fcbd23d1dcd04714742ebe9"/></dir></dir><dir name="Helper"><file name="Configuration.php" hash="5c20237a83db488fa1fae9345bacdb15"/><file name="Data.php" hash="b27f970b943e6e989e9061275cc25c7b"/><file name="Extension.php" hash="5788a232ffaa32674b4bfc1e12e4ea98"/><file name="Links.php" hash="8bb36c918e956663113646183bd33c4c"/><file name="Urls.php" hash="ce396940c96bf8139da8ec59bb498acf"/></dir><dir name="Model"><dir name="Core"><file name="Api.php" hash="948c7965f7fe9d044b532314aaa8e0f9"/></dir><file name="Core.php" hash="
|
17 |
<target name="mageetc">
|
18 |
<dir name="modules"><file name="Remarkety_Mgconnector.xml" hash="d584b234f653fbf34376e7dcb8caf117"/></dir></target>
|
19 |
<target name="magedesign">
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Remarkety_Mgconnector</name>
|
4 |
+
<version>1.4.8.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.gnu.org/licenses/gpl-3.0.html">GPL v3</license>
|
7 |
<channel>community</channel>
|
9 |
<summary>Remarkety Magento Connector</summary>
|
10 |
<description>Remarkety Magento Connector</description>
|
11 |
<notes>No comments</notes>
|
12 |
+
<date>2016-07-27</date>
|
13 |
+
<time>7-28-50</time>
|
14 |
<contents>
|
15 |
<target name="magecommunity">
|
16 |
+
<dir name="Remarkety"><dir name="Mgconnector"><dir name="Block"><dir name="Adminhtml"><dir name="Configuration"><dir name="Complete"><file name="Form.php" hash="dc799532128513364fc3afd17eabb78b"/></dir><file name="Complete.php" hash="b9f7b4ecbd2be587c0efbd16523b167e"/><dir name="Configuration"><file name="Form.php" hash="ffe6b6ce5b2906c916694007ca5a1b28"/></dir><file name="Configuration.php" hash="67b3b564c2c3123301f5f97b2b258a7a"/><dir name="Install"><file name="Form.php" hash="59541fe2ad9a49b9fb56a41f00e6a591"/></dir><file name="Install.php" hash="f631fcdfd86d2bc416eb1ad4422fc20c"/><dir name="Upgrade"><file name="Form.php" hash="598f83eca99d0153537e22f9ee6b1934"/></dir><file name="Upgrade.php" hash="c672741b0407f108d2266dd939590846"/></dir><file name="Configuration.php" hash="bf0c9aabe92f669694e0699c009b2a9c"/><dir name="Extension"><file name="RewardPoints.php" hash="82e320930f59dfd45e5aa73005118833"/></dir><dir name="Install"><dir name="Complete"><file name="Form.php" hash="5992149b9ff2d2a7c2b008d98098362d"/></dir><file name="Complete.php" hash="452944c613b88ede358ee4dacd562d05"/><dir name="Install"><dir name="Create"><file name="Form.php" hash="65d98f1449ce6af413a3185692e07533"/></dir><file name="Create.php" hash="0d3182923fd5542e3d0a757625a85ae4"/><dir name="Login"><file name="Form.php" hash="a58c19056e47c7851eb6a5f40517f757"/></dir><file name="Login.php" hash="3ee61a883f843c55b1b32a328af84322"/></dir><dir name="Upgrade"><file name="Form.php" hash="6f4e2ac19d30115de4e275fdb8dca5b6"/></dir><file name="Upgrade.php" hash="f16ba61a8c86007bbc0a980e8faeade1"/><dir name="Welcome"><file name="Form.php" hash="58cb26cc7555498bd0367c77a99c8d60"/><file name="Store.php" hash="9f3b5c7bbd9f4d7201189598e5a64cc4"/></dir><file name="Welcome.php" hash="86589c79b5c38ea5f25d58ac932f33cb"/></dir><dir name="Queue"><dir name="Configure"><file name="Form.php" hash="8eb691898c79cd5aed15c7857cb84b4c"/></dir><file name="Configure.php" hash="03d5ebf7644462904c439d172cde3afc"/><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="EventType.php" hash="4ac5971c368b70efa96b4c8297c85c3c"/><file name="Status.php" hash="ec57ddafc2515b952958e6ace6de22ec"/></dir></dir></dir><file name="Grid.php" hash="74d5f3b18d76cdf8219e2d39a83a2f7c"/></dir><file name="Queue.php" hash="2c905cc54a6c08d4d73a392d5b95a25c"/></dir><dir name="Tracking"><file name="Base.php" hash="5e0f245ac5ee59d2f6c6f35087059b56"/><file name="General.php" hash="9ca2796c6f2bf9233553e6b782f3722b"/><file name="Product.php" hash="3a0c1b1a5fcbd23d1dcd04714742ebe9"/></dir></dir><dir name="Helper"><file name="Configuration.php" hash="5c20237a83db488fa1fae9345bacdb15"/><file name="Data.php" hash="b27f970b943e6e989e9061275cc25c7b"/><file name="Extension.php" hash="5788a232ffaa32674b4bfc1e12e4ea98"/><file name="Links.php" hash="8bb36c918e956663113646183bd33c4c"/><file name="Urls.php" hash="ce396940c96bf8139da8ec59bb498acf"/></dir><dir name="Model"><dir name="Core"><file name="Api.php" hash="948c7965f7fe9d044b532314aaa8e0f9"/></dir><file name="Core.php" hash="659c8fa2de196488ff568c83e66bdc26"/><dir name="Extension"><dir name="RewardPoints"><file name="AbstractIntegration.php" hash="4ac34942072ce49d2971065a82d1068c"/><file name="IntegrationInterface.php" hash="f95f9f1e243c9fd920d27b9299b90f72"/><file name="MagestoreRewardPoints.php" hash="28671b6f35cb829f2d11166f081ad816"/><dir name="Observer"><file name="AbstractObserver.php" hash="eb710b7582050de644de2a8402d759ec"/><file name="MagestoreRewardPoints.php" hash="bac2ae11f94aa923accb0437027b4bec"/></dir></dir></dir><file name="Install.php" hash="fc260ea02ba27273cd51e7051c953cce"/><file name="Observer.php" hash="09f3c036336f6ec5fbf2503fce5533a6"/><file name="Queue.php" hash="3a0fda4b18ec947c20e6e81cc1e995de"/><file name="Recovery.php" hash="bd856fdd5788e00bcf29a67446ad8ef1"/><file name="Request.php" hash="47e81216d7bca3f0aba93bf816298221"/><dir name="Resource"><file name="Coupon.php" hash="6079c05e422e9c1ad5327fc881cee7e3"/><dir name="Queue"><file name="Collection.php" hash="ce59b04c8a8146f5094d6622134885d3"/></dir><file name="Queue.php" hash="971a539849d0cde2e413b0642403a6ca"/><dir name="Rule"><file name="Collection.php" hash="b7cd7bbc0c4100a1a320e0f551be067a"/></dir><file name="Setup.php" hash="13253a5b7a2749f4a3bc84e32e31e27c"/></dir><file name="Webtracking.php" hash="4b2d9d73dcc8d68b40f375f6c55c4999"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="ConfigureController.php" hash="b4e51acf22ea798e2d2144a4672bc30f"/><dir name="Extension"><file name="AbstractController.php" hash="f5402dbc0e13412a52b70b5d36a14110"/><file name="RewardPointsController.php" hash="3e94e5ae4d467abf03f41e260b0421f9"/></dir><file name="InstallController.php" hash="cebbe5f80c59d6fbc18eecff20e7d432"/><file name="MgconnectorController.php" hash="a8e55464624c5fa9e9641cf97f963b3b"/><file name="QueueController.php" hash="1f2f85bd1ecf2242dd40fc64ec1aa3b0"/></dir><file name="RecoveryController.php" hash="0a53efaef9019c6b661fe494067473e3"/><file name="WebtrackingController.php" hash="fd2c5034d94161c0e6f7f4e6b5816a55"/></dir><dir name="etc"><file name="adminhtml.xml" hash="a417737a2225ef9f70b47eef77d75b7c"/><file name="api.xml" hash="9f6d5fd3330bb0640f97efc3f819e684"/><file name="config.xml" hash="1af56a8f01ec6de053c6ec13fecbf025"/></dir><dir name="sql"><dir name="mgconnector_setup"><file name="mysql4-install-1.0.0.13.php" hash="d1033ffd3d6b13af28ad4082d5744c25"/><file name="mysql4-upgrade-1.0.0.13-1.0.0.14.php" hash="db871ba73f3dcc7abfb806991edc12f1"/><file name="mysql4-upgrade-1.0.0.14-1.0.0.15.php" hash="c9ced7a4a2e85c9d594e9f97320cab58"/><file name="mysql4-upgrade-1.0.0.14-1.1.0.0.php" hash="fd445e8c179cdb2718a85adec05c5343"/><file name="mysql4-upgrade-1.1.0.5-1.1.0.6.php" hash="e24831cfd077827ba545f7ea71669729"/><file name="mysql4-upgrade-1.1.2.8-1.3.0.0.php" hash="97bbb9e411bcd45f875f29fcc8c8b420"/><file name="mysql4-upgrade-1.4.7.2-1.4.8.0.php" hash="bb01ef486d9457fc7ef661a654fd1ec6"/></dir></dir></dir></dir></target>
|
17 |
<target name="mageetc">
|
18 |
<dir name="modules"><file name="Remarkety_Mgconnector.xml" hash="d584b234f653fbf34376e7dcb8caf117"/></dir></target>
|
19 |
<target name="magedesign">
|