Listrak_Remarketing - Version 1.2.1

Version Notes

Efficiency improvements
Security fixes

Download this release

Release Info

Developer Magento Core Team
Extension Listrak_Remarketing
Version 1.2.1
Comparing to
See all releases


Code changes from version 1.2.0 to 1.2.1

Files changed (24) hide show
  1. app/code/community/Listrak/Remarketing/Block/Base.php +2 -14
  2. app/code/community/Listrak/Remarketing/Block/Legacy/Ecjs.php +1 -1
  3. app/code/community/Listrak/Remarketing/Block/Legacy/Modal.php +3 -5
  4. app/code/community/Listrak/Remarketing/Block/Tracking/{Sca.php → Cart.php} +4 -18
  5. app/code/community/Listrak/Remarketing/Helper/Data.php +0 -35
  6. app/code/community/Listrak/Remarketing/Helper/Product.php +183 -169
  7. app/code/community/Listrak/Remarketing/Model/Apiextension/Api.php +1 -20
  8. app/code/community/Listrak/Remarketing/Model/Cache/Sca.php +0 -97
  9. app/code/community/Listrak/Remarketing/Model/Mysql4/Abandonedcart/Collection.php +1 -1
  10. app/code/community/Listrak/Remarketing/Model/Mysql4/Product/Attribute/Set/Map/Collection.php +1 -1
  11. app/code/community/Listrak/Remarketing/Model/Mysql4/Session.php +1 -1
  12. app/code/community/Listrak/Remarketing/Model/Observer.php +0 -2
  13. app/code/community/Listrak/Remarketing/Model/Product/Api.php +23 -4
  14. app/code/community/Listrak/Remarketing/controllers/AjaxController.php +4 -4
  15. app/code/community/Listrak/Remarketing/controllers/ConfigController.php +7 -27
  16. app/code/community/Listrak/Remarketing/controllers/EmailController.php +2 -2
  17. app/code/community/Listrak/Remarketing/etc/cache.xml +0 -17
  18. app/code/community/Listrak/Remarketing/etc/config.xml +1 -1
  19. app/code/community/Listrak/Remarketing/etc/wsdl.xml +1157 -1157
  20. app/code/community/Listrak/Remarketing/etc/wsi.xml +1561 -1562
  21. app/code/community/Listrak/Remarketing/sql/listrak_remarketing_setup/mysql4-upgrade-1.1.9.5-1.2.0.php +6 -73
  22. app/code/community/Listrak/Remarketing/sql/listrak_remarketing_setup/mysql4-upgrade-1.2.0-1.2.1.php +39 -0
  23. app/design/frontend/base/default/layout/remarketing.xml +48 -48
  24. package.xml +5 -5
app/code/community/Listrak/Remarketing/Block/Base.php CHANGED
@@ -81,19 +81,6 @@ class Listrak_Remarketing_Block_Base
81
$this->_lines[] = $js;
82
}
83
84
- /**
85
- * Escapes special characters in a string
86
- *
87
- * @param string $value Value
88
- * @param string $quote Special quote character
89
- *
90
- * @return string
91
- */
92
- public function jsEscape($value, $quote = "'")
93
- {
94
- return addcslashes($value, "\\{$quote}");
95
- }
96
-
97
/**
98
* Make string JS-friendly
99
*
@@ -103,7 +90,8 @@ class Listrak_Remarketing_Block_Base
103
*/
104
public function toJsString($value)
105
{
106
- return "'{$this->jsEscape($value)}'";
107
}
108
109
/**
81
$this->_lines[] = $js;
82
}
83
84
/**
85
* Make string JS-friendly
86
*
90
*/
91
public function toJsString($value)
92
{
93
+ $escaped = str_replace(array("\\", "'"), array("\\\\", "\\'"), $value);
94
+ return "'{$escaped}'";
95
}
96
97
/**
app/code/community/Listrak/Remarketing/Block/Legacy/Ecjs.php CHANGED
@@ -95,7 +95,7 @@ class Listrak_Remarketing_Block_Legacy_Ecjs extends Mage_Core_Block_Text
95
->getCollection()
96
->addFieldToFilter('page', $this->getMatchingPages());
97
98
- if ($collections && $collections->count()) {
99
$html = array();
100
$observed = array();
101
95
->getCollection()
96
->addFieldToFilter('page', $this->getMatchingPages());
97
98
+ if ($collections->getSize() > 0) {
99
$html = array();
100
$observed = array();
101
app/code/community/Listrak/Remarketing/Block/Legacy/Modal.php CHANGED
@@ -45,17 +45,15 @@ class Listrak_Remarketing_Block_Legacy_Modal extends Mage_Core_Block_Text
45
46
$merchantID = Mage::getStoreConfig('remarketing/modal/listrakMerchantID');
47
if (!Mage::getStoreConfig('remarketing/modal/enabled')
48
- || strlen(Mage::getStoreConfig('remarketing/modal/scriptLocation')) < 1
49
|| strlen(trim($merchantID)) < 12
50
) {
51
return "";
52
}
53
54
return '<script type="text/javascript">' .
55
- 'var biJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");' .
56
- 'document.write(unescape("%3Cscript src=\'" + biJsHost + "' .
57
- Mage::getStoreConfig('remarketing/modal/scriptLocation') .
58
- '?m=' . $merchantID . '&v=1\' type=\'text/javascript\'%3E%3C/script%3E"));' .
59
'</script>' .
60
'<script type="text/javascript">' .
61
'var _mlm = setInterval(function() { ' .
45
46
$merchantID = Mage::getStoreConfig('remarketing/modal/listrakMerchantID');
47
if (!Mage::getStoreConfig('remarketing/modal/enabled')
48
|| strlen(trim($merchantID)) < 12
49
) {
50
return "";
51
}
52
53
return '<script type="text/javascript">' .
54
+ 'document.write(unescape("%3Cscript src=\'' .
55
+ $helper->onescriptSrc() .
56
+ '\' type=\'text/javascript\'%3E%3C/script%3E"));' .
57
'</script>' .
58
'<script type="text/javascript">' .
59
'var _mlm = setInterval(function() { ' .
app/code/community/Listrak/Remarketing/Block/Tracking/{Sca.php → Cart.php} RENAMED
@@ -13,9 +13,9 @@
13
*/
14
15
/**
16
- * Class Listrak_Remarketing_Block_Tracking_Sca
17
*/
18
- class Listrak_Remarketing_Block_Tracking_Sca
19
extends Listrak_Remarketing_Block_Require_Sca
20
{
21
private $_initialized = false;
@@ -35,7 +35,7 @@ class Listrak_Remarketing_Block_Tracking_Sca
35
return '';
36
}
37
38
- if ($this->_hasAjaxScript()) {
39
$method = "track";
40
if ($this->isCartPage())
41
$method = "updateCart";
@@ -89,7 +89,7 @@ class Listrak_Remarketing_Block_Tracking_Sca
89
$this->_canRender = parent::canRender()
90
&& !$this->isOrderConfirmationPage()
91
&& (
92
- $this->_hasAjaxScript()
93
|| $this->_hasCartJS()
94
|| $this->_hasCustomerJS()
95
);
@@ -98,20 +98,6 @@ class Listrak_Remarketing_Block_Tracking_Sca
98
return $this->_canRender;
99
}
100
101
- /**
102
- * Render the AJAX line
103
- *
104
- * @return bool
105
- */
106
- private function _hasAjaxScript()
107
- {
108
- /* @var Listrak_Remarketing_Helper_Data $helper */
109
- $helper = Mage::helper('remarketing');
110
-
111
- return $this->getFullPageRendering()
112
- && $helper->ajaxTracking();
113
- }
114
-
115
/**
116
* Has legacy session conversion code
117
*
13
*/
14
15
/**
16
+ * Class Listrak_Remarketing_Block_Tracking_Cart
17
*/
18
+ class Listrak_Remarketing_Block_Tracking_Cart
19
extends Listrak_Remarketing_Block_Require_Sca
20
{
21
private $_initialized = false;
35
return '';
36
}
37
38
+ if ($this->getFullPageRendering()) {
39
$method = "track";
40
if ($this->isCartPage())
41
$method = "updateCart";
89
$this->_canRender = parent::canRender()
90
&& !$this->isOrderConfirmationPage()
91
&& (
92
+ $this->getFullPageRendering()
93
|| $this->_hasCartJS()
94
|| $this->_hasCustomerJS()
95
);
98
return $this->_canRender;
99
}
100
101
/**
102
* Has legacy session conversion code
103
*
app/code/community/Listrak/Remarketing/Helper/Data.php CHANGED
@@ -205,16 +205,6 @@ class Listrak_Remarketing_Helper_Data
205
&& $this->onescriptReady();
206
}
207
208
- /**
209
- * Check whether cart changes are tracked through AJAX calls
210
- *
211
- * @return bool
212
- */
213
- public function ajaxTracking()
214
- {
215
- return Mage::getStoreConfig('remarketing/modal/ajax') == '1';
216
- }
217
-
218
/**
219
* Check whether review functionality has been enabled
220
*
@@ -510,29 +500,4 @@ class Listrak_Remarketing_Helper_Data
510
511
return intval($readConnection->fetchOne($select));
512
}
513
-
514
- /**
515
- * Initialize cart tracking cookie
516
- *
517
- * @return string
518
- */
519
- public function initCartCookie()
520
- {
521
- /* @var Mage_Core_Model_Cookie $cookie */
522
- $cookie = Mage::getModel('core/cookie');
523
-
524
- if (!$this->ajaxTracking()) {
525
- /* @var Mage_Checkout_Model_Session $session */
526
- $session = Mage::getSingleton('checkout/session');
527
-
528
- $value = md5('quote_' . $session->getQuoteId() . '_' . date("YmdHis"));
529
- $expiration = time() + 315532800; // 10 years, 2 of them leap years
530
-
531
- $cookie->set('mltkc', $value, $expiration, '/');
532
- return $value;
533
- } else {
534
- $cookie->delete('mltkc');
535
- return 'AJAX';
536
- }
537
- }
538
}
205
&& $this->onescriptReady();
206
}
207
208
/**
209
* Check whether review functionality has been enabled
210
*
500
501
return intval($readConnection->fetchOne($select));
502
}
503
}
app/code/community/Listrak/Remarketing/Helper/Product.php CHANGED
@@ -18,42 +18,42 @@
18
class Listrak_Remarketing_Helper_Product
19
extends Mage_Core_Helper_Abstract
20
{
21
- /* @var Mage_Catalog_Model_Product[] $_parentsById */
22
- private $_parentsById = array();
23
24
- /* @var string[] $_urlsById */
25
- private $_urlsById = array();
26
27
/**
28
* Attribute set options
29
* @var array
30
*/
31
- private $_attributeSets = null;
32
33
/**
34
* Flag that enables fetching of all attributes' values
35
* @var boolean
36
*/
37
- private $_retrieveAttributes = null;
38
39
/**
40
* Options to resolve attribute from selected ID to text
41
* @var array
42
*/
43
- private $_attributeOptions = null;
44
45
- /* @var Mage_Catalog_Model_Category[] $_categories */
46
- private $_categories = array();
47
48
- /* @var bool $_useConfigurableParentImages */
49
- private $_useConfigurableParentImages = null;
50
51
/**
52
* Categories to skip because they have been disabled
53
* or are set to be ignored
54
* @var int[]
55
*/
56
- private $_skipCategories = null;
57
58
/**
59
* Inflate an API object from a product object
@@ -81,49 +81,20 @@ class Listrak_Remarketing_Helper_Product
81
$result['short_description'] = $product->getShortDescription();
82
$result['weight'] = $product->getWeight();
83
if ($product->isVisibleInSiteVisibility()) {
84
- $result['url_path'] = $this->_getProductUrlWithCache($product);
85
}
86
87
- $parentProduct = $this->_getParentProduct($product);
88
if ($parentProduct != null) {
89
- $result['parent_id'] = $parentProduct->getEntityId();
90
- $result['parent_sku'] = $parentProduct->getSku();
91
-
92
- if (!$product->isVisibleInSiteVisibility()) {
93
- $result['name'] = $parentProduct->getName();
94
-
95
- if ($parentProduct->isVisibleInSiteVisibility()) {
96
- $result['url_path']
97
- = $this->_getProductUrlWithCache($parentProduct);
98
- }
99
- }
100
-
101
- if ($includeExtras && $this->_isConfigurableProduct($parentProduct)) {
102
- $result['purchasable']
103
- = $this->_isPurchasable($product, $parentProduct);
104
-
105
- /* @var Mage_Catalog_Model_Product_Type_Configurable $typeInst */
106
- $typeInst = $parentProduct->getTypeInstance(true);
107
- $attributes = $typeInst
108
- ->getUsedProductAttributes($parentProduct);
109
-
110
- /* @var Mage_Eav_Model_Entity_Attribute_Abstract $attribute */
111
- foreach ($attributes as $attribute) {
112
- if (!array_key_exists('configurable_attributes', $result)) {
113
- $result['configurable_attributes'] = array();
114
- }
115
-
116
- $result['configurable_attributes'][]
117
- = array('attribute_name' => $attribute->getAttributeCode());
118
- }
119
- }
120
}
121
122
if (!isset($result['purchasable'])) {
123
- $result['purchasable'] = $this->_isPurchasable($product);
124
}
125
126
- $images = $this->_getProductImages($product);
127
if (isset($images['image'])) {
128
$result['image'] = $images['image'];
129
}
@@ -135,53 +106,16 @@ class Listrak_Remarketing_Helper_Product
135
}
136
137
if ($includeExtras) {
138
- $metas = $this->_getMetas($storeId, $product, $parentProduct);
139
if ($metas != null) {
140
- if (isset($metas['meta3'])) {
141
- $result['meta3'] = $metas['meta3'];
142
- }
143
- if (isset($metas['meta4'])) {
144
- $result['meta4'] = $metas['meta4'];
145
- }
146
- if (isset($metas['meta5'])) {
147
- $result['meta5'] = $metas['meta5'];
148
- }
149
- }
150
-
151
- // Brand and Category
152
- $brandCatProduct = $product;
153
- if ($parentProduct && !$product->isVisibleInSiteVisibility()) {
154
- $brandCatProduct = $parentProduct;
155
- }
156
- $setSettings = $this->_getProductAttributeSetSettings($brandCatProduct);
157
-
158
- if ($setSettings['brandAttribute'] != null) {
159
- $result['brand'] = $this->_getProductAttribute(
160
- $brandCatProduct, $setSettings['brandAttribute']);
161
}
162
163
- if ($setSettings['catFromMagento']) {
164
- $cats = $this->_getCategoryInformation($storeId, $brandCatProduct);
165
- if (isset($cats['category'])) {
166
- $result['category'] = $cats['category'];
167
- }
168
- if (isset($cats['sub_category'])) {
169
- $result['sub_category'] = $cats['sub_category'];
170
- }
171
- } else if ($setSettings['catFromAttributes']) {
172
- if ($setSettings['categoryAttribute'] != null) {
173
- $result['category'] = $this->_getProductAttribute(
174
- $brandCatProduct, $setSettings['categoryAttribute']);
175
- }
176
- if ($setSettings['subcategoryAttribute'] != null) {
177
- $result['sub_category'] = $this->_getProductAttribute(
178
- $brandCatProduct, $setSettings['subcategoryAttribute']);
179
- }
180
- }
181
-
182
- $result['attributes'] = $this->_getProductAttributes($product);
183
-
184
- // Inventory
185
$result['in_stock'] = $product->isAvailable() ? "true" : "false";
186
187
/* @var Mage_Cataloginventory_Model_Stock_Item $stockItem */
@@ -191,7 +125,7 @@ class Listrak_Remarketing_Helper_Product
191
}
192
193
// Related Products
194
- $result['links'] = $this->_getProductLinks($product);
195
}
196
197
$result['type'] = $product->getTypeId();
@@ -212,7 +146,7 @@ class Listrak_Remarketing_Helper_Product
212
$additionalInfo = array()
213
) {
214
$children = $item->getChildren();
215
- return $this->_getProductInformationWork(
216
$item, $additionalInfo, count($children) > 0, $children
217
);
218
}
@@ -228,7 +162,7 @@ class Listrak_Remarketing_Helper_Product
228
public function getProductInformationFromOrderItem(
229
Mage_Sales_Model_Order_Item $item, $additionalInfo = array()
230
) {
231
- return $this->_getProductInformationWork(
232
$item, $additionalInfo,
233
$item->getHasChildren(), $item->getChildrenItems()
234
);
@@ -259,7 +193,7 @@ class Listrak_Remarketing_Helper_Product
259
*/
260
public function getProductImage(Mage_Catalog_Model_Product $product)
261
{
262
- $images = $this->_getProductImages($product);
263
264
if (isset($images['thumbnail'])) {
265
return $images['thumbnail'];
@@ -276,8 +210,85 @@ class Listrak_Remarketing_Helper_Product
276
277
public function setAttributeOptions($withAttributes, $options)
278
{
279
- $this->_retrieveAttributes = $withAttributes;
280
- $this->_attributeOptions = $options;
281
}
282
283
/**
@@ -290,7 +301,7 @@ class Listrak_Remarketing_Helper_Product
290
*
291
* @return Varien_Object
292
*/
293
- private function _getProductInformationWork(
294
$item, $getInfo, $hasChildren, $children
295
) {
296
$getProduct = in_array('product', $getInfo);
@@ -304,14 +315,14 @@ class Listrak_Remarketing_Helper_Product
304
$result->setIsBundle(false);
305
$result->setSku($item->getSku());
306
307
- if ($this->_isConfigurableType($item->getProductType()) && $hasChildren) {
308
$result->setIsConfigurable(true);
309
310
$result->setParentId($result->getProductId());
311
$result->setProductId((int)$children[0]->getProductId());
312
}
313
314
- if ($this->_isBundleType($item->getProductType()) && $hasChildren) {
315
$result->setIsBundle(true);
316
317
$product = Mage::getModel('catalog/product')
@@ -351,15 +362,15 @@ class Listrak_Remarketing_Helper_Product
351
*
352
* @return string
353
*/
354
- private function _getProductUrlWithCache(Mage_Catalog_Model_Product $product)
355
{
356
$productId = $product->getEntityId();
357
358
- if (!isset($this->_urlsById[$productId])) {
359
- $this->_urlsById[$productId] = $this->getProductUrl($product);
360
}
361
362
- return $this->_urlsById[$productId];
363
}
364
365
/**
@@ -369,11 +380,11 @@ class Listrak_Remarketing_Helper_Product
369
*
370
* @return array
371
*/
372
- private function _getProductImages(Mage_Catalog_Model_Product $product)
373
{
374
- $parent = $this->_getParentProduct($product);
375
- $parentIsConfigurable = $parent && $this->_isConfigurableProduct($parent);
376
- if ($this->_useConfigurableParentImages == null) {
377
$confSetting = Mage::getStoreConfig(
378
Mage_Checkout_Block_Cart_Item_Renderer_Configurable
379
::CONFIGURABLE_PRODUCT_IMAGE
@@ -381,7 +392,7 @@ class Listrak_Remarketing_Helper_Product
381
$wanted = Mage_Checkout_Block_Cart_Item_Renderer_Configurable
382
::USE_PARENT_IMAGE;
383
384
- $this->_useConfigurableParentImages = $confSetting == $wanted;
385
}
386
387
$none = 'no_selection';
@@ -390,7 +401,7 @@ class Listrak_Remarketing_Helper_Product
390
$smallImage = null;
391
$thumbnail = null;
392
393
- if ($parentIsConfigurable && $this->_useConfigurableParentImages) {
394
$image = $parent->getImage();
395
$smallImage = $parent->getSmallImage();
396
$thumbnail = $parent->getThumbnail();
@@ -432,10 +443,11 @@ class Listrak_Remarketing_Helper_Product
432
*
433
* @return Mage_Catalog_Model_Product
434
*/
435
- private function _getParentProduct(Mage_Catalog_Model_Product $product)
436
{
437
- if ($product->hasParentProduct())
438
return $product->getParentProduct();
439
440
/* @var Mage_Catalog_Model_Product_Type_Configurable $confProductModel */
441
$confProductModel = Mage::getModel('catalog/product_type_configurable');
@@ -446,24 +458,25 @@ class Listrak_Remarketing_Helper_Product
446
if (is_array($parentIds) && count($parentIds) > 0) {
447
$parentId = $parentIds[0];
448
if ($parentId != null) {
449
- if (!array_key_exists($parentId, $this->_parentsById)) {
450
/* @var Mage_Catalog_Model_Product $parent */
451
$parent = Mage::getModel('catalog/product')
452
->load($parentId);
453
454
- $this->_parentsById[$parentId] = $parent;
455
}
456
- return $this->_parentsById[$parentId];
457
}
458
}
459
460
return null;
461
}
462
463
- private function _getProductAttributes(Mage_Catalog_Model_Product $product)
464
{
465
- if (!$this->_retrieveAttributes)
466
return null;
467
468
$result = array();
469
@@ -477,10 +490,10 @@ class Listrak_Remarketing_Helper_Product
477
array_keys($parent->getData())));
478
}
479
480
- $productAttributes = $this->_getAttributeValues($product, $allAttributes);
481
482
if ($hasParent) {
483
- $parentAttributes = $this->_getAttributeValues($parent, $allAttributes);
484
}
485
486
foreach($allAttributes as $name) {
@@ -512,14 +525,14 @@ class Listrak_Remarketing_Helper_Product
512
return $result;
513
}
514
515
- private function _getProductAttribute(Mage_Catalog_Model_Product $product, $attributeName)
516
{
517
- if (!$this->_retrieveAttributes) {
518
return $product
519
->getAttributeText($attributeName);
520
}
521
else {
522
- $value = $this->_getAttributeValue($product, $attributeName);
523
if (is_array($value)) {
524
$value = implode(', ', $value);
525
}
@@ -527,24 +540,25 @@ class Listrak_Remarketing_Helper_Product
527
}
528
}
529
530
- private function _getAttributeValues(Mage_Catalog_Model_Product $product, $attributeNames)
531
{
532
$result = array();
533
foreach($attributeNames as $name) {
534
- $value = $this->_getAttributeValue($product, $name);
535
$result[$name] = $value;
536
}
537
return $result;
538
}
539
540
- private function _getAttributeValue(Mage_Catalog_Model_Product $product, $attributeName)
541
{
542
$value = $product->getData($attributeName);
543
- if (is_object($value))
544
return null;
545
546
- if (array_key_exists($attributeName, $this->_attributeOptions)) {
547
- $options = $this->_attributeOptions[$attributeName];
548
549
if (array_key_exists('options', $options)) {
550
if ($options['multiple']) {
@@ -590,16 +604,16 @@ class Listrak_Remarketing_Helper_Product
590
*
591
* @return string
592
*/
593
- private function _isPurchasable(
594
Mage_Catalog_Model_Product $product,
595
Mage_Catalog_Model_Product $parent = null
596
) {
597
- if (!$this->_isEnabled($product)) {
598
$result = false;
599
} else if ($parent == null) {
600
- $result = $this->_isVisible($product);
601
} else {
602
- $result = $this->_isEnabled($parent) && $this->_isVisible($parent);
603
}
604
605
return $result ? "true" : "false";
@@ -612,7 +626,7 @@ class Listrak_Remarketing_Helper_Product
612
*
613
* @return bool
614
*/
615
- private function _isEnabled(Mage_Catalog_Model_Product $product)
616
{
617
return $product->getStatus()
618
== Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
@@ -625,7 +639,7 @@ class Listrak_Remarketing_Helper_Product
625
*
626
* @return bool
627
*/
628
- private function _isVisible(Mage_Catalog_Model_Product $product)
629
{
630
/* @var Listrak_Remarketing_Model_Product_Purchasable_Visibility $visModel */
631
$visModel = Mage::getSingleton(
@@ -642,11 +656,11 @@ class Listrak_Remarketing_Helper_Product
642
*
643
* @return array
644
*/
645
- private function _getProductAttributeSetSettings(
646
Mage_Catalog_Model_Product $product
647
) {
648
- if ($this->_attributeSets == null) {
649
- $this->_attributeSets = array(0 => array(
650
//default values
651
'brandAttribute' => null,
652
'catFromMagento' => true,
@@ -661,7 +675,7 @@ class Listrak_Remarketing_Helper_Product
661
662
/* @var Listrak_Remarketing_Model_Product_Attribute_Set_Map $set */
663
foreach ($settings as $set) {
664
- $this->_attributeSets[$set->getAttributeSetId()] = array(
665
'brandAttribute' =>
666
$set->getBrandAttributeCode(),
667
'catFromMagento' =>
@@ -676,9 +690,9 @@ class Listrak_Remarketing_Helper_Product
676
}
677
}
678
679
- return array_key_exists($product->getAttributeSetId(), $this->_attributeSets)
680
- ? $this->_attributeSets[$product->getAttributeSetId()]
681
- : $this->_attributeSets[0];
682
}
683
684
/**
@@ -689,7 +703,7 @@ class Listrak_Remarketing_Helper_Product
689
*
690
* @return array
691
*/
692
- private function _getCategoryInformation(
693
$storeId, Mage_Catalog_Model_Product $product
694
) {
695
/* @var Listrak_Remarketing_Helper_Data $helper */
@@ -703,8 +717,8 @@ class Listrak_Remarketing_Helper_Product
703
704
$categoryLevel = $helper->getCategoryLevel();
705
706
- if ($this->_skipCategories == null) {
707
- $this->_skipCategories = array_unique(
708
array_merge(
709
$helper->getInactiveCategories(),
710
$helper->getCategoriesToSkip()
@@ -714,18 +728,18 @@ class Listrak_Remarketing_Helper_Product
714
715
/* @var Mage_Catalog_Model_Resource_Category_Collection $categories */
716
$categories = $product->getCategoryCollection();
717
- $path = $this->_getFirstPathByPosition(
718
$categories, $categoryLevel + 1, $rootPath
719
);
720
721
$result = array();
722
if (isset($path[$categoryLevel - 1])) {
723
$result['category']
724
- = $this->_getCategoryField($path[$categoryLevel - 1], 'name');
725
}
726
if (isset($path[$categoryLevel])) {
727
$result['sub_category']
728
- = $this->_getCategoryField($path[$categoryLevel], 'name');
729
}
730
731
return $result;
@@ -740,7 +754,7 @@ class Listrak_Remarketing_Helper_Product
740
*
741
* @return array
742
*/
743
- private function _getFirstPathByPosition(
744
$categoryCollection, $maxLevel, $underPath
745
) {
746
$underPathSize = sizeof($underPath);
@@ -755,7 +769,7 @@ class Listrak_Remarketing_Helper_Product
755
foreach ($categoryCollection as $category) {
756
$pathIds = $category->getPathIds();
757
758
- if (sizeof(array_intersect($pathIds, $this->_skipCategories)) > 0) {
759
// the category tree contains a category
760
// that we want skipped or is not active
761
continue;
@@ -788,7 +802,7 @@ class Listrak_Remarketing_Helper_Product
788
$testPath = $underPath;
789
$testPath[] = $categoryId;
790
791
- $testPathPosition = $this->_getCategoryField(
792
$categoryId, 'position'
793
);
794
@@ -800,7 +814,7 @@ class Listrak_Remarketing_Helper_Product
800
}
801
}
802
803
- return $this->_getFirstPathByPosition(
804
$categoryCollection, $maxLevel, $winnerPath
805
);
806
}
@@ -813,9 +827,9 @@ class Listrak_Remarketing_Helper_Product
813
*
814
* @return mixed|null
815
*/
816
- private function _getCategoryField($categoryId, $field)
817
{
818
- $category = $this->_getCategory($categoryId);
819
if ($category != null) {
820
return $category->getData($field);
821
}
@@ -830,16 +844,16 @@ class Listrak_Remarketing_Helper_Product
830
*
831
* @return Mage_Catalog_Model_Category
832
*/
833
- private function _getCategory($categoryId)
834
{
835
- if (array_key_exists($categoryId, $this->_categories)) {
836
- return $this->_categories[$categoryId];
837
} else {
838
$category = Mage::getModel('catalog/category');
839
840
$category->load($categoryId);
841
if ($category != null) {
842
- $this->_categories[$categoryId] = $category;
843
return $category;
844
}
845
}
@@ -854,7 +868,7 @@ class Listrak_Remarketing_Helper_Product
854
*
855
* @return array
856
*/
857
- private function _getProductLinks(Mage_Catalog_Model_Product $product)
858
{
859
if (Mage::getStoreConfig(
860
'remarketing/productcategories/product_links'
@@ -882,7 +896,7 @@ class Listrak_Remarketing_Helper_Product
882
$productAttrTable = $linkModel->getAttributeTypeTable('int');
883
}
884
885
- $linkTypes = $this->_getLinkTypes();
886
887
/* @var Mage_Catalog_Model_Resource_Product_Link_Collection $links */
888
$links = Mage::getModel('catalog/product_link')
@@ -943,11 +957,11 @@ class Listrak_Remarketing_Helper_Product
943
*
944
* @return array
945
*/
946
- private function _getLinkTypes()
947
{
948
- static $_types = null;
949
950
- if ($_types == null) {
951
$allLinks = array(
952
Mage_Catalog_Model_Product_Link::LINK_TYPE_UPSELL =>
953
array('name' => 'up_sell', 'positionAttributeId' => null),
@@ -976,10 +990,10 @@ class Listrak_Remarketing_Helper_Product
976
}
977
}
978
979
- $_types = $allLinks;
980
}
981
982
- return $_types;
983
}
984
985
/**
@@ -989,9 +1003,9 @@ class Listrak_Remarketing_Helper_Product
989
*
990
* @return bool
991
*/
992
- private function _isConfigurableProduct(Mage_Catalog_Model_Product $product)
993
{
994
- return $this->_isConfigurableType($product->getTypeId());
995
}
996
997
/**
@@ -1001,7 +1015,7 @@ class Listrak_Remarketing_Helper_Product
1001
*
1002
* @return bool
1003
*/
1004
- private function _isConfigurableType($type)
1005
{
1006
return Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE == $type;
1007
}
@@ -1013,7 +1027,7 @@ class Listrak_Remarketing_Helper_Product
1013
*
1014
* @return bool
1015
*/
1016
- private function _isBundleType($type)
1017
{
1018
return Mage_Catalog_Model_Product_Type::TYPE_BUNDLE == $type;
1019
}
@@ -1027,7 +1041,7 @@ class Listrak_Remarketing_Helper_Product
1027
*
1028
* @return array|null
1029
*/
1030
- private function _getMetas(
1031
$storeId,
1032
Mage_Catalog_Model_Product $product,
1033
Mage_Catalog_Model_Product $parentProduct = null
18
class Listrak_Remarketing_Helper_Product
19
extends Mage_Core_Helper_Abstract
20
{
21
+ /* @var Mage_Catalog_Model_Product[] $parentsById */
22
+ protected $parentsById = array();
23
24
+ /* @var string[] $urlsById */
25
+ protected $urlsById = array();
26
27
/**
28
* Attribute set options
29
* @var array
30
*/
31
+ protected $attributeSets = null;
32
33
/**
34
* Flag that enables fetching of all attributes' values
35
* @var boolean
36
*/
37
+ protected $retrieveAttributes = null;
38
39
/**
40
* Options to resolve attribute from selected ID to text
41
* @var array
42
*/
43
+ protected $attributeOptions = null;
44
45
+ /* @var Mage_Catalog_Model_Category[] $categories */
46
+ protected $categories = array();
47
48
+ /* @var bool $useConfigurableParentImages */
49
+ protected $useConfigurableParentImages = null;
50
51
/**
52
* Categories to skip because they have been disabled
53
* or are set to be ignored
54
* @var int[]
55
*/
56
+ protected $skipCategories = null;
57
58
/**
59
* Inflate an API object from a product object
81
$result['short_description'] = $product->getShortDescription();
82
$result['weight'] = $product->getWeight();
83
if ($product->isVisibleInSiteVisibility()) {
84
+ $result['url_path'] = $this->getProductUrlWithCache($product);
85
}
86
87
+ $parentProduct = $this->getParentProduct($product);
88
if ($parentProduct != null) {
89
+ $parentData = $this->getParentData($product, $parentProduct, $includeExtras);
90
+ $result = $parentData + $result;
91
}
92
93
if (!isset($result['purchasable'])) {
94
+ $result['purchasable'] = $this->isPurchasable($product);
95
}
96
97
+ $images = $this->getProductImages($product);
98
if (isset($images['image'])) {
99
$result['image'] = $images['image'];
100
}
106
}
107
108
if ($includeExtras) {
109
+ $metas = $this->getMetaData($storeId, $product, $parentProduct);
110
if ($metas != null) {
111
+ $result = $result + $metas;
112
}
113
+
114
+ $extras = $this->getProductBrandAndCategory($storeId, $product, $parentProduct);
115
+ $result = $extras + $result;
116
+
117
+ $result['attributes'] = $this->getProductAttributes($product);
118
119
$result['in_stock'] = $product->isAvailable() ? "true" : "false";
120
121
/* @var Mage_Cataloginventory_Model_Stock_Item $stockItem */
125
}
126
127
// Related Products
128
+ $result['links'] = $this->getProductLinks($product);
129
}
130
131
$result['type'] = $product->getTypeId();
146
$additionalInfo = array()
147
) {
148
$children = $item->getChildren();
149
+ return $this->getProductInformationWork(
150
$item, $additionalInfo, count($children) > 0, $children
151
);
152
}
162
public function getProductInformationFromOrderItem(
163
Mage_Sales_Model_Order_Item $item, $additionalInfo = array()
164
) {
165
+ return $this->getProductInformationWork(
166
$item, $additionalInfo,
167
$item->getHasChildren(), $item->getChildrenItems()
168
);
193
*/
194
public function getProductImage(Mage_Catalog_Model_Product $product)
195
{
196
+ $images = $this->getProductImages($product);
197
198
if (isset($images['thumbnail'])) {
199
return $images['thumbnail'];
210
211
public function setAttributeOptions($withAttributes, $options)
212
{
213
+ $this->retrieveAttributes = $withAttributes;
214
+ $this->attributeOptions = $options;
215
+ }
216
+
217
+ protected function getParentData($product, $parentProduct, $includeExtras)
218
+ {
219
+ $result = array();
220
+
221
+ $result['parent_id'] = $parentProduct->getEntityId();
222
+ $result['parent_sku'] = $parentProduct->getSku();
223
+
224
+ if (!$product->isVisibleInSiteVisibility()) {
225
+ $result['name'] = $parentProduct->getName();
226
+
227
+ if ($parentProduct->isVisibleInSiteVisibility()) {
228
+ $result['url_path']
229
+ = $this->getProductUrlWithCache($parentProduct);
230
+ }
231
+ }
232
+
233
+ if ($includeExtras && $this->isConfigurableProduct($parentProduct)) {
234
+ $result['purchasable']
235
+ = $this->isPurchasable($product, $parentProduct);
236
+
237
+ /* @var Mage_Catalog_Model_Product_Type_Configurable $typeInst */
238
+ $typeInst = $parentProduct->getTypeInstance(true);
239
+ $attributes = $typeInst
240
+ ->getUsedProductAttributes($parentProduct);
241
+
242
+ /* @var Mage_Eav_Model_Entity_Attribute_Abstract $attribute */
243
+ foreach ($attributes as $attribute) {
244
+ if (!array_key_exists('configurable_attributes', $result)) {
245
+ $result['configurable_attributes'] = array();
246
+ }
247
+
248
+ $result['configurable_attributes'][]
249
+ = array('attribute_name' => $attribute->getAttributeCode());
250
+ }
251
+ }
252
+
253
+ return $result;
254
+ }
255
+
256
+ protected function getProductBrandAndCategory($storeId, $product, $parentProduct)
257
+ {
258
+ $result = array();
259
+
260
+ // Brand and Category
261
+ $brandCatProduct = $product;
262
+ if ($parentProduct && !$product->isVisibleInSiteVisibility()) {
263
+ $brandCatProduct = $parentProduct;
264
+ }
265
+ $setSettings = $this->getProductAttributeSetSettings($brandCatProduct);
266
+
267
+ if ($setSettings['brandAttribute'] != null) {
268
+ $result['brand'] = $this->getProductAttribute(
269
+ $brandCatProduct, $setSettings['brandAttribute']);
270
+ }
271
+
272
+ if ($setSettings['catFromMagento']) {
273
+ $cats = $this->getCategoryInformation($storeId, $brandCatProduct);
274
+ if (isset($cats['category'])) {
275
+ $result['category'] = $cats['category'];
276
+ }
277
+ if (isset($cats['sub_category'])) {
278
+ $result['sub_category'] = $cats['sub_category'];
279
+ }
280
+ } else if ($setSettings['catFromAttributes']) {
281
+ if ($setSettings['categoryAttribute'] != null) {
282
+ $result['category'] = $this->getProductAttribute(
283
+ $brandCatProduct, $setSettings['categoryAttribute']);
284
+ }
285
+ if ($setSettings['subcategoryAttribute'] != null) {
286
+ $result['sub_category'] = $this->getProductAttribute(
287
+ $brandCatProduct, $setSettings['subcategoryAttribute']);
288
+ }
289
+ }
290
+
291
+ return $result;
292
}
293
294
/**
301
*
302
* @return Varien_Object
303
*/
304
+ protected function getProductInformationWork(
305
$item, $getInfo, $hasChildren, $children
306
) {
307
$getProduct = in_array('product', $getInfo);
315
$result->setIsBundle(false);
316
$result->setSku($item->getSku());
317
318
+ if ($this->isConfigurableType($item->getProductType()) && $hasChildren) {
319
$result->setIsConfigurable(true);
320
321
$result->setParentId($result->getProductId());
322
$result->setProductId((int)$children[0]->getProductId());
323
}
324
325
+ if ($this->isBundleType($item->getProductType()) && $hasChildren) {
326
$result->setIsBundle(true);
327
328
$product = Mage::getModel('catalog/product')
362
*
363
* @return string
364
*/
365
+ protected function getProductUrlWithCache(Mage_Catalog_Model_Product $product)
366
{
367
$productId = $product->getEntityId();
368
369
+ if (!isset($this->urlsById[$productId])) {
370
+ $this->urlsById[$productId] = $this->getProductUrl($product);
371
}
372
373
+ return $this->urlsById[$productId];
374
}
375
376
/**
380
*
381
* @return array
382
*/
383
+ protected function getProductImages(Mage_Catalog_Model_Product $product)
384
{
385
+ $parent = $this->getParentProduct($product);
386
+ $parentIsConfigurable = $parent && $this->isConfigurableProduct($parent);
387
+ if ($this->useConfigurableParentImages == null) {
388
$confSetting = Mage::getStoreConfig(
389
Mage_Checkout_Block_Cart_Item_Renderer_Configurable
390
::CONFIGURABLE_PRODUCT_IMAGE
392
$wanted = Mage_Checkout_Block_Cart_Item_Renderer_Configurable
393
::USE_PARENT_IMAGE;
394
395
+ $this->useConfigurableParentImages = $confSetting == $wanted;
396
}
397
398
$none = 'no_selection';
401
$smallImage = null;
402
$thumbnail = null;
403
404
+ if ($parentIsConfigurable && $this->useConfigurableParentImages) {
405
$image = $parent->getImage();
406
$smallImage = $parent->getSmallImage();
407
$thumbnail = $parent->getThumbnail();
443
*
444
* @return Mage_Catalog_Model_Product
445
*/
446
+ protected function getParentProduct(Mage_Catalog_Model_Product $product)
447
{
448
+ if ($product->hasParentProduct()) {
449
return $product->getParentProduct();
450
+ }
451
452
/* @var Mage_Catalog_Model_Product_Type_Configurable $confProductModel */
453
$confProductModel = Mage::getModel('catalog/product_type_configurable');
458
if (is_array($parentIds) && count($parentIds) > 0) {
459
$parentId = $parentIds[0];
460
if ($parentId != null) {
461
+ if (!array_key_exists($parentId, $this->parentsById)) {
462
/* @var Mage_Catalog_Model_Product $parent */
463
$parent = Mage::getModel('catalog/product')
464
->load($parentId);
465
466
+ $this->parentsById[$parentId] = $parent;
467
}
468
+ return $this->parentsById[$parentId];
469
}
470
}
471
472
return null;
473
}
474
475
+ protected function getProductAttributes(Mage_Catalog_Model_Product $product)
476
{
477
+ if (!$this->retrieveAttributes) {
478
return null;
479
+ }
480
481
$result = array();
482
490
array_keys($parent->getData())));
491
}
492
493
+ $productAttributes = $this->getAttributeValues($product, $allAttributes);
494
495
if ($hasParent) {
496
+ $parentAttributes = $this->getAttributeValues($parent, $allAttributes);
497
}
498
499
foreach($allAttributes as $name) {
525
return $result;
526
}
527
528
+ protected function getProductAttribute(Mage_Catalog_Model_Product $product, $attributeName)
529
{
530
+ if (!$this->retrieveAttributes) {
531
return $product
532
->getAttributeText($attributeName);
533
}
534
else {
535
+ $value = $this->getAttributeValue($product, $attributeName);
536
if (is_array($value)) {
537
$value = implode(', ', $value);
538
}
540
}
541
}
542
543
+ protected function getAttributeValues(Mage_Catalog_Model_Product $product, $attributeNames)
544
{
545
$result = array();
546
foreach($attributeNames as $name) {
547
+ $value = $this->getAttributeValue($product, $name);
548
$result[$name] = $value;
549
}
550
return $result;
551
}
552
553
+ protected function getAttributeValue(Mage_Catalog_Model_Product $product, $attributeName)
554
{
555
$value = $product->getData($attributeName);
556
+ if (is_object($value)) {
557
return null;
558
+ }
559
560
+ if (array_key_exists($attributeName, $this->attributeOptions)) {
561
+ $options = $this->attributeOptions[$attributeName];
562
563
if (array_key_exists('options', $options)) {
564
if ($options['multiple']) {
604
*
605
* @return string
606
*/
607
+ protected function isPurchasable(
608
Mage_Catalog_Model_Product $product,
609
Mage_Catalog_Model_Product $parent = null
610
) {
611
+ if (!$this->isEnabled($product)) {
612
$result = false;
613
} else if ($parent == null) {
614
+ $result = $this->isVisible($product);
615
} else {
616
+ $result = $this->isEnabled($parent) && $this->isVisible($parent);
617
}
618
619
return $result ? "true" : "false";
626
*
627
* @return bool
628
*/
629
+ protected function isEnabled(Mage_Catalog_Model_Product $product)
630
{
631
return $product->getStatus()
632
== Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
639
*
640
* @return bool
641
*/
642
+ protected function isVisible(Mage_Catalog_Model_Product $product)
643
{
644
/* @var Listrak_Remarketing_Model_Product_Purchasable_Visibility $visModel */
645
$visModel = Mage::getSingleton(
656
*
657
* @return array
658
*/
659
+ protected function getProductAttributeSetSettings(
660
Mage_Catalog_Model_Product $product
661
) {
662
+ if ($this->attributeSets == null) {
663
+ $this->attributeSets = array(0 => array(
664
//default values
665
'brandAttribute' => null,
666
'catFromMagento' => true,
675
676
/* @var Listrak_Remarketing_Model_Product_Attribute_Set_Map $set */
677
foreach ($settings as $set) {
678
+ $this->attributeSets[$set->getAttributeSetId()] = array(
679
'brandAttribute' =>
680
$set->getBrandAttributeCode(),
681
'catFromMagento' =>
690
}
691
}
692
693
+ return array_key_exists($product->getAttributeSetId(), $this->attributeSets)
694
+ ? $this->attributeSets[$product->getAttributeSetId()]
695
+ : $this->attributeSets[0];
696
}
697
698
/**
703
*
704
* @return array
705
*/
706
+ protected function getCategoryInformation(
707
$storeId, Mage_Catalog_Model_Product $product
708
) {
709
/* @var Listrak_Remarketing_Helper_Data $helper */
717
718
$categoryLevel = $helper->getCategoryLevel();
719
720
+ if ($this->skipCategories == null) {
721
+ $this->skipCategories = array_unique(
722
array_merge(
723
$helper->getInactiveCategories(),
724
$helper->getCategoriesToSkip()
728
729
/* @var Mage_Catalog_Model_Resource_Category_Collection $categories */
730
$categories = $product->getCategoryCollection();
731
+ $path = $this->getFirstPathByPosition(
732
$categories, $categoryLevel + 1, $rootPath
733
);
734
735
$result = array();
736
if (isset($path[$categoryLevel - 1])) {
737
$result['category']
738
+ = $this->getCategoryField($path[$categoryLevel - 1], 'name');
739
}
740
if (isset($path[$categoryLevel])) {
741
$result['sub_category']
742
+ = $this->getCategoryField($path[$categoryLevel], 'name');
743
}
744
745
return $result;
754
*
755
* @return array
756
*/
757
+ protected function getFirstPathByPosition(
758
$categoryCollection, $maxLevel, $underPath
759
) {
760
$underPathSize = sizeof($underPath);
769
foreach ($categoryCollection as $category) {
770
$pathIds = $category->getPathIds();
771
772
+ if (sizeof(array_intersect($pathIds, $this->skipCategories)) > 0) {
773
// the category tree contains a category
774
// that we want skipped or is not active
775
continue;
802
$testPath = $underPath;
803
$testPath[] = $categoryId;
804
805
+ $testPathPosition = $this->getCategoryField(
806
$categoryId, 'position'
807
);
808
814
}
815
}
816
817
+ return $this->getFirstPathByPosition(
818
$categoryCollection, $maxLevel, $winnerPath
819
);
820
}
827
*
828
* @return mixed|null
829
*/
830
+ protected function getCategoryField($categoryId, $field)
831
{
832
+ $category = $this->getCategory($categoryId);
833
if ($category != null) {
834
return $category->getData($field);
835
}
844
*
845
* @return Mage_Catalog_Model_Category
846
*/
847
+ protected function getCategory($categoryId)
848
{
849
+ if (array_key_exists($categoryId, $this->categories)) {
850
+ return $this->categories[$categoryId];
851
} else {
852
$category = Mage::getModel('catalog/category');
853
854
$category->load($categoryId);
855
if ($category != null) {
856
+ $this->categories[$categoryId] = $category;
857
return $category;
858
}
859
}
868
*
869
* @return array
870
*/
871
+ protected function getProductLinks(Mage_Catalog_Model_Product $product)
872
{
873
if (Mage::getStoreConfig(
874
'remarketing/productcategories/product_links'
896
$productAttrTable = $linkModel->getAttributeTypeTable('int');
897
}
898
899
+ $linkTypes = $this->getLinkTypes();
900
901
/* @var Mage_Catalog_Model_Resource_Product_Link_Collection $links */
902
$links = Mage::getModel('catalog/product_link')
957
*
958
* @return array
959
*/
960
+ protected function getLinkTypes()
961
{
962
+ static $types = null;
963
964
+ if ($types == null) {
965
$allLinks = array(
966
Mage_Catalog_Model_Product_Link::LINK_TYPE_UPSELL =>
967
array('name' => 'up_sell', 'positionAttributeId' => null),
990
}
991
}
992
993
+ $types = $allLinks;
994
}
995
996
+ return $types;
997
}
998
999
/**
1003
*
1004
* @return bool
1005
*/
1006
+ protected function isConfigurableProduct(Mage_Catalog_Model_Product $product)
1007
{
1008
+ return $this->isConfigurableType($product->getTypeId());
1009
}
1010
1011
/**
1015
*
1016
* @return bool
1017
*/
1018
+ protected function isConfigurableType($type)
1019
{
1020
return Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE == $type;
1021
}
1027
*
1028
* @return bool
1029
*/
1030
+ protected function isBundleType($type)
1031
{
1032
return Mage_Catalog_Model_Product_Type::TYPE_BUNDLE == $type;
1033
}
1041
*
1042
* @return array|null
1043
*/
1044
+ protected function getMetaData(
1045
$storeId,
1046
Mage_Catalog_Model_Product $product,
1047
Mage_Catalog_Model_Product $parentProduct = null
app/code/community/Listrak/Remarketing/Model/Apiextension/Api.php CHANGED
@@ -18,10 +18,6 @@
18
class Listrak_Remarketing_Model_Apiextension_Api
19
extends Mage_Api_Model_Resource_Abstract
20
{
21
- private $_attributesMap = array(
22
- 'order' => array('order_id' => 'entity_id')
23
- );
24
-
25
private $_customerAttributes = array('entity_id' => '', 'firstname' => '',
26
'lastname' => '', 'email' => '', 'website_id' => '', 'store_id' => '',
27
'group_id' => '', 'gender_name' => '', 'dob' => '', 'group_name' => '',
@@ -197,7 +193,6 @@ class Listrak_Remarketing_Model_Apiextension_Api
197
* @param datetime $endDate Upper date constraint
198
* @param int $perPage Page size
199
* @param int $page Cursor
200
- * @param array $filters Order filters
201
*
202
* @return array
203
*
@@ -205,7 +200,7 @@ class Listrak_Remarketing_Model_Apiextension_Api
205
*/
206
public function orderStatus(
207
$storeId = 1, $startDate = null, $endDate = null,
208
- $perPage = 50, $page = 1, $filters = null
209
) {
210
/* @var Listrak_Remarketing_Helper_Data $helper */
211
$helper = Mage::helper('remarketing');
@@ -232,20 +227,6 @@ class Listrak_Remarketing_Model_Apiextension_Api
232
->addAttributeToSelect('updated_at');
233
}
234
235
- if (is_array($filters)) {
236
- try {
237
- foreach ($filters as $field => $value) {
238
- if (isset($this->_attributesMap['order'][$field])) {
239
- $field = $this->_attributesMap['order'][$field];
240
- }
241
-
242
- $collection->addFieldToFilter($field, $value);
243
- }
244
- } catch (Mage_Core_Exception $e) {
245
- $this->_fault('filters_invalid', $e->getMessage());
246
- }
247
- }
248
-
249
$results = array();
250
251
$allQuantities = $this->_getProductQtyInfoForOrders($storeId, $collection);
18
class Listrak_Remarketing_Model_Apiextension_Api
19
extends Mage_Api_Model_Resource_Abstract
20
{
21
private $_customerAttributes = array('entity_id' => '', 'firstname' => '',
22
'lastname' => '', 'email' => '', 'website_id' => '', 'store_id' => '',
23
'group_id' => '', 'gender_name' => '', 'dob' => '', 'group_name' => '',
193
* @param datetime $endDate Upper date constraint
194
* @param int $perPage Page size
195
* @param int $page Cursor
196
*
197
* @return array
198
*
200
*/
201
public function orderStatus(
202
$storeId = 1, $startDate = null, $endDate = null,
203
+ $perPage = 50, $page = 1
204
) {
205
/* @var Listrak_Remarketing_Helper_Data $helper */
206
$helper = Mage::helper('remarketing');
227
->addAttributeToSelect('updated_at');
228
}
229
230
$results = array();
231
232
$allQuantities = $this->_getProductQtyInfoForOrders($storeId, $collection);
app/code/community/Listrak/Remarketing/Model/Cache/Sca.php DELETED
@@ -1,97 +0,0 @@
1
- <?php
2
- /**
3
- * Listrak Remarketing Magento Extension Ver. 1.1.9
4
- *
5
- * PHP version 5
6
- *
7
- * @category Listrak
8
- * @package Listrak_Remarketing
9
- * @author Listrak Magento Team <magento@listrak.com>
10
- * @copyright 2014 Listrak Inc
11
- * @license http://s1.listrakbi.com/licenses/magento.txt License For Customer Use of Listrak Software
12
- * @link http://www.listrak.com
13
- */
14
-
15
- /**
16
- * Class Listrak_Remarketing_Model_Cache_Sca
17
- *
18
- * Serves as the caching model for the SCA tracking block
19
- */
20
- class Listrak_Remarketing_Model_Cache_Sca
21
- extends Enterprise_PageCache_Model_Container_Abstract
22
- {
23
- private $_cartCookieValue = null;
24
- private $_saveBlock = false;
25
-
26
- /**
27
- * Retrieve the block cache ID
28
- *
29
- * @return string
30
- */
31
- protected function _getCacheId()
32
- {
33
- if (!$this->_cartCookieValue) {
34
- $this->_cartCookieValue = $this->_getCookieValue('mltkc');
35
- }
36
-
37
- if (!$this->_cartCookieValue) {
38
- $this->_cartCookieValue = 'AJAX';
39
- }
40
-
41
- return md5('REMARKETING_SCA_' . $this->_cartCookieValue);
42
- }
43
-
44
- /**
45
- * Render SCA tracking block
46
- *
47
- * @return string
48
- */
49
- protected function _renderBlock()
50
- {
51
- /* @var Listrak_Remarketing_Helper_Data $helper */
52
- $helper = Mage::helper('remarketing');
53
-
54
- $block = $this->_placeholder->getAttribute('block');
55
-
56
- /* @var Listrak_Remarketing_Block_Tracking_Sca $block */
57
- $block = new $block;
58
- $block->setFullPageRendering(true);
59
-
60
- if ($block->canRender()) {
61
- $block->setTemplate($this->_placeholder->getAttribute('template'));
62
-
63
- if ($helper->ajaxTracking()) {
64
- $this->_cartCookieValue = 'AJAX';
65
- $this->_saveBlock = true;
66
- }
67
-
68
- return $block->toHtml();
69
- } else {
70
- $this->_saveBlock = true;
71
- if (!$this->_cartCookieValue) {
72
- $this->_cartCookieValue = $helper->initCartCookie();
73
- }
74
-
75
- return "";
76
- }
77
- }
78
-
79
- /**
80
- * Manages block storage
81
- *
82
- * @param string $data Block content to store
83
- * @param string $id Cache ID
84
- * @param array $tags Tags
85
- * @param mixed $lifetime EOL
86
- *
87
- * @return bool
88
- */
89
- protected function _saveCache($data, $id, $tags = array(), $lifetime = null)
90
- {
91
- if ($this->_saveBlock) {
92
- return parent::_saveCache($data, $id, $tags, $lifetime);
93
- }
94
-
95
- return false;
96
- }
97
- }
app/code/community/Listrak/Remarketing/Model/Mysql4/Abandonedcart/Collection.php CHANGED
@@ -70,7 +70,7 @@ class Listrak_Remarketing_Model_Mysql4_Abandonedcart_Collection
70
public function addClearCartTrimFilter($fromDate)
71
{
72
$this->getSelect()
73
- ->where("q.items_qty > 0 OR main_table.created_at <= '{$fromDate}'");
74
return $this;
75
}
76
70
public function addClearCartTrimFilter($fromDate)
71
{
72
$this->getSelect()
73
+ ->where("q.items_qty > 0 OR main_table.created_at <= ?", $fromDate);
74
return $this;
75
}
76
app/code/community/Listrak/Remarketing/Model/Mysql4/Product/Attribute/Set/Map/Collection.php CHANGED
@@ -58,7 +58,7 @@ class Listrak_Remarketing_Model_Mysql4_Product_Attribute_Set_Map_Collection
58
*/
59
public function addAttributeSetFilter($setId)
60
{
61
- $this->getSelect()->where('attribute_set_id = ' . $setId);
62
63
return $this;
64
}
58
*/
59
public function addAttributeSetFilter($setId)
60
{
61
+ $this->getSelect()->where('attribute_set_id = ?', $setId);
62
63
return $this;
64
}
app/code/community/Listrak/Remarketing/Model/Mysql4/Session.php CHANGED
@@ -185,7 +185,7 @@ class Listrak_Remarketing_Model_Mysql4_Session
185
{
186
$this->_write->delete(
187
$this->getTable("listrak/session_email"),
188
- "session_id = $sid"
189
);
190
}
191
}
185
{
186
$this->_write->delete(
187
$this->getTable("listrak/session_email"),
188
+ $this->_write->quoteInto('session_id = ?', $sid)
189
);
190
}
191
}
app/code/community/Listrak/Remarketing/Model/Observer.php CHANGED
@@ -190,8 +190,6 @@ class Listrak_Remarketing_Model_Observer
190
if ($helper->scaEnabled()) {
191
Mage::getSingleton('checkout/session')
192
->setListrakCartModified(true);
193
-
194
- $helper->initCartCookie();
195
}
196
} catch(Exception $e) {
197
/* @var Listrak_Remarketing_Model_Log $logger */
190
if ($helper->scaEnabled()) {
191
Mage::getSingleton('checkout/session')
192
->setListrakCartModified(true);
193
}
194
} catch(Exception $e) {
195
/* @var Listrak_Remarketing_Model_Log $logger */
app/code/community/Listrak/Remarketing/Model/Product/Api.php CHANGED
@@ -178,19 +178,24 @@ class Listrak_Remarketing_Model_Product_Api
178
/**
179
* Retrieve purchasable products
180
*
181
- * @param int $storeId Magento store ID
182
- * @param int $perPage Page size
183
- * @param int $page Cursor
184
*
185
* @return array
186
*/
187
- public function purchasable($storeId = 1, $perPage = 50, $page = 1)
188
{
189
Mage::app()->setCurrentStore($storeId);
190
191
/* @var Listrak_Remarketing_Helper_Data $helper */
192
$helper = Mage::helper('remarketing');
193
$helper->requireCoreEnabled();
194
195
/* @var Mage_Catalog_Model_Resource_Product_Collection $collection */
196
$collection = Mage::getModel('listrak/product')->getCollection();
@@ -313,4 +318,18 @@ class Listrak_Remarketing_Model_Product_Api
313
$query->limit($perPage, $perPage * ($page - 1));
314
return $query->query()->fetchAll();
315
}
316
}
178
/**
179
* Retrieve purchasable products
180
*
181
+ * @param int $storeId Magento store ID
182
+ * @param int $perPage Page size
183
+ * @param int $page Cursor
184
+ * @param bool $checkExistsOnly Skip complicated joins for purchasable
185
*
186
* @return array
187
*/
188
+ public function purchasable($storeId = 1, $perPage = 50, $page = 1, $checkExistsOnly = false)
189
{
190
Mage::app()->setCurrentStore($storeId);
191
192
/* @var Listrak_Remarketing_Helper_Data $helper */
193
$helper = Mage::helper('remarketing');
194
$helper->requireCoreEnabled();
195
+
196
+ if ($checkExistsOnly) {
197
+ return $this->existing($storeId, $perPage, $page);
198
+ }
199
200
/* @var Mage_Catalog_Model_Resource_Product_Collection $collection */
201
$collection = Mage::getModel('listrak/product')->getCollection();
318
$query->limit($perPage, $perPage * ($page - 1));
319
return $query->query()->fetchAll();
320
}
321
+
322
+ public function existing($storeId = 1, $perPage = 50, $page = 1)
323
+ {
324
+ $collection = Mage::getModel('catalog/product')->getCollection()
325
+ ->addStoreFilter($storeId)
326
+ ->setPageSize($perPage)
327
+ ->setCurPage($page);
328
+
329
+ $collection->getSelect()
330
+ ->reset(Zend_Db_Select::COLUMNS)
331
+ ->columns(array('entity_id', 'sku'));
332
+
333
+ return $collection;
334
+ }
335
}
app/code/community/Listrak/Remarketing/controllers/AjaxController.php CHANGED
@@ -25,8 +25,8 @@ class Listrak_Remarketing_AjaxController
25
*/
26
public function cartAction()
27
{
28
- /* @var Listrak_Remarketing_Block_Tracking_Sca $tracking_cart */
29
- $tracking_cart = $this->getLayout()->createBlock('remarketing/tracking_sca');
30
$jsResponse = $tracking_cart->getCartJavascript();
31
32
$this->_setJavascriptResponse($jsResponse);
@@ -41,8 +41,8 @@ class Listrak_Remarketing_AjaxController
41
*/
42
public function trackAction()
43
{
44
- /* @var Listrak_Remarketing_Block_Tracking_Sca $tracking_cart */
45
- $tracking_cart = $this->getLayout()->createBlock('remarketing/tracking_sca');
46
$jsResponse = $tracking_cart->toHtml();
47
48
$this->_setJavascriptResponse($jsResponse);
25
*/
26
public function cartAction()
27
{
28
+ /* @var Listrak_Remarketing_Block_Tracking_Cart $tracking_cart */
29
+ $tracking_cart = $this->getLayout()->createBlock('remarketing/tracking_cart');
30
$jsResponse = $tracking_cart->getCartJavascript();
31
32
$this->_setJavascriptResponse($jsResponse);
41
*/
42
public function trackAction()
43
{
44
+ /* @var Listrak_Remarketing_Block_Tracking_Cart $tracking_cart */
45
+ $tracking_cart = $this->getLayout()->createBlock('remarketing/tracking_cart');
46
$jsResponse = $tracking_cart->toHtml();
47
48
$this->_setJavascriptResponse($jsResponse);
app/code/community/Listrak/Remarketing/controllers/ConfigController.php CHANGED
@@ -28,12 +28,15 @@ class Listrak_Remarketing_ConfigController
28
*/
29
public function indexAction()
30
{
31
if ($this->getRequest()->has('version')) {
32
- echo Mage::getConfig()->getNode('modules')->Listrak_Remarketing->version;
33
} else if ($this->getRequest()->has('enableOnescriptTracking')) {
34
- echo $this->_enableOnescriptTracking();
35
}
36
37
return $this;
38
}
39
@@ -61,7 +64,8 @@ class Listrak_Remarketing_ConfigController
61
*/
62
public function checkAction()
63
{
64
- echo Mage::getStoreConfig('remarketing/config/account_created');
65
66
return $this;
67
}
@@ -84,30 +88,6 @@ class Listrak_Remarketing_ConfigController
84
return "success: already enabled";
85
}
86
87
- if (!$this->getRequest()->has('skipValidation')) {
88
- $request = curl_init();
89
- curl_setopt($request, CURLOPT_TIMEOUT, 15);
90
- curl_setopt($request, CURLOPT_ENCODING, "");
91
- curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
92
- curl_setopt($request, CURLOPT_SSL_VERIFYPEER, 0);
93
- curl_setopt($request, CURLOPT_SSL_VERIFYHOST, 0);
94
-
95
- curl_setopt($request, CURLOPT_URL, $helper->onescriptSrc());
96
- $script = curl_exec($request);
97
- $error = $script === false ? curl_error($request) : '';
98
-
99
- // $ch shouldn't be used below this next line
100
- curl_close($request);
101
-
102
- if ($script === false) {
103
- return "failure: Onescript did not load: {$error}";
104
- }
105
-
106
- if (strpos($script, "_ltk.SCA.Load(") === false) {
107
- return "failure: Onescript does not load the SCA session ID";
108
- }
109
- }
110
-
111
Mage::getConfig()->saveConfig('remarketing/config/onescript_ready', '1');
112
Mage::getConfig()->reinit();
113
return "success";
28
*/
29
public function indexAction()
30
{
31
+ $result = "";
32
+
33
if ($this->getRequest()->has('version')) {
34
+ $result = Mage::getConfig()->getNode('modules')->Listrak_Remarketing->version;
35
} else if ($this->getRequest()->has('enableOnescriptTracking')) {
36
+ $result = $this->_enableOnescriptTracking();
37
}
38
39
+ $this->getResponse()->setBody($result);
40
return $this;
41
}
42
64
*/
65
public function checkAction()
66
{
67
+ $result = Mage::getStoreConfig('remarketing/config/account_created');
68
+ $this->getResponse()->setBody($result);
69
70
return $this;
71
}
88
return "success: already enabled";
89
}
90
91
Mage::getConfig()->saveConfig('remarketing/config/onescript_ready', '1');
92
Mage::getConfig()->reinit();
93
return "success";
app/code/community/Listrak/Remarketing/controllers/EmailController.php CHANGED
@@ -49,8 +49,8 @@ class Listrak_Remarketing_EmailController
49
$result = array('status' => false);
50
}
51
52
- header('Content-type: application/json');
53
- echo json_encode($result);
54
}
55
} catch (Exception $e) {
56
/* @var Listrak_Remarketing_Model_Log $logger */
49
$result = array('status' => false);
50
}
51
52
+ $this->getResponse()->setHeader('Content-type', 'application/json', true);
53
+ $this->getResponse()->setBody(json_encode($result));
54
}
55
} catch (Exception $e) {
56
/* @var Listrak_Remarketing_Model_Log $logger */
app/code/community/Listrak/Remarketing/etc/cache.xml DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!--
3
- /**
4
- * Listrak Remarketing Magento Extension Ver. 1.0.0 - Copyright (c) 2011 Listrak, Inc.
5
- */
6
- -->
7
- <config>
8
- <placeholders>
9
- <remarketing_sca_tracking>
10
- <block>remarketing/tracking_sca</block>
11
- <name>remarketing_sca_tracking</name>
12
- <placeholder>REMARKETING_SCA</placeholder>
13
- <container>Listrak_Remarketing_Model_Cache_Sca</container>
14
- <cache_lifetime>86400</cache_lifetime>
15
- </remarketing_sca_tracking>
16
- </placeholders>
17
- </config>
app/code/community/Listrak/Remarketing/etc/config.xml CHANGED
@@ -7,7 +7,7 @@
7
<config>
8
<modules>
9
<Listrak_Remarketing>
10
- <version>1.2.0</version>
11
</Listrak_Remarketing>
12
</modules>
13
<frontend>
7
<config>
8
<modules>
9
<Listrak_Remarketing>
10
+ <version>1.2.1</version>
11
</Listrak_Remarketing>
12
</modules>
13
<frontend>
app/code/community/Listrak/Remarketing/etc/wsdl.xml CHANGED
@@ -1,1158 +1,1158 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!--
3
- /**
4
- * Listrak Remarketing Magento Extension Ver. 1.0.0 - Copyright (c) 2011 Listrak, Inc.
5
- */
6
- -->
7
- <definitions xmlns:typens="urn:{{var wsdl.name}}"
8
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
9
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
10
- xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
11
- xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
12
- xmlns="http://schemas.xmlsoap.org/wsdl/"
13
- name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">
14
- <types>
15
- <schema xmlns="http://www.w3.org/2001/XMLSchema"
16
- targetNamespace="urn:Magento">
17
- <import namespace="http://schemas.xmlsoap.org/soap/encoding/"
18
- schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
19
- <complexType name="ArrayOfString">
20
- <complexContent>
21
- <restriction base="soapenc:Array">
22
- <attribute ref="soapenc:arrayType"
23
- wsdl:arrayType="xsd:string[]"/>
24
- </restriction>
25
- </complexContent>
26
- </complexType>
27
- <!-- session -->
28
- <complexType name="ListrakRemarketingSessionEntity">
29
- <all>
30
- <element name="session_id" type="xsd:string" minOccurs="0"/>
31
- <element name="store_id" type="xsd:string" minOccurs="0"/>
32
- <element name="created_at" type="xsd:string" minOccurs="0"/>
33
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
34
- <element name="quote_id" type="xsd:string" minOccurs="0"/>
35
- <element name="ips" type="xsd:string" minOccurs="0"/>
36
- <element name="pi_id" type="xsd:string" minOccurs="0"/>
37
- <element name="customer"
38
- type="typens:ListrakRemarketingCustomerEntity"
39
- minOccurs="0"/>
40
- <element name="emails"
41
- type="typens:ArrayOfListrakRemarketingSessionEmail"
42
- minOccurs="0"/>
43
- <element name="clicks"
44
- type="typens:ArrayOfListrakRemarketingClick"
45
- minOccurs="0"/>
46
- </all>
47
- </complexType>
48
- <complexType name="ListrakRemarketingSessionEmailEntity">
49
- <all>
50
- <element name="email" type="xsd:string" minOccurs="0"/>
51
- <element name="created_at" type="xsd:string" minOccurs="0"/>
52
- <element name="page" type="xsd:string" minOccurs="0"/>
53
- <element name="field_id" type="xsd:string" minOccurs="0"/>
54
- </all>
55
- </complexType>
56
- <complexType name="ArrayOfListrakRemarketingSessionEmail">
57
- <complexContent>
58
- <restriction base="soapenc:Array">
59
- <attribute ref="soapenc:arrayType"
60
- wsdl:arrayType="typens:ListrakRemarketingSessionEmailEntity[]"/>
61
- </restriction>
62
- </complexContent>
63
- </complexType>
64
-
65
- <!-- abandoned cart -->
66
- <complexType name="ListrakRemarketingAbandonedCartEntity">
67
- <all>
68
- <element name="store_id" type="xsd:string" minOccurs="0"/>
69
- <element name="session"
70
- type="typens:ListrakRemarketingSessionEntity"
71
- minOccurs="0"/>
72
- <element name="products"
73
- type="typens:ArrayOfListrakRemarketingAbandonedCartProduct"
74
- minOccurs="0"/>
75
- </all>
76
- </complexType>
77
- <complexType name="ArrayOfListrakRemarketingAbandonedCart">
78
- <complexContent>
79
- <restriction base="soapenc:Array">
80
- <attribute ref="soapenc:arrayType"
81
- wsdl:arrayType="typens:ListrakRemarketingAbandonedCartEntity[]"/>
82
- </restriction>
83
- </complexContent>
84
- </complexType>
85
- <complexType name="ListrakRemarketingAbandonedCartProductEntity">
86
- <all>
87
- <element name="entity_id" type="xsd:string" minOccurs="0"/>
88
- <element name="sku" type="xsd:string" minOccurs="0"/>
89
- <element name="name" type="xsd:string" minOccurs="0"/>
90
- <element name="price" type="xsd:string" minOccurs="0"/>
91
- <element name="special_price" type="xsd:string" minOccurs="0"/>
92
- <element name="special_from_date" type="xsd:string"
93
- minOccurs="0"/>
94
- <element name="special_to_date" type="xsd:string" minOccurs="0"/>
95
- <element name="cost" type="xsd:string" minOccurs="0"/>
96
- <element name="description" type="xsd:string" minOccurs="0"/>
97
- <element name="short_description" type="xsd:string"
98
- minOccurs="0"/>
99
- <element name="weight" type="xsd:string" minOccurs="0"/>
100
- <element name="url_key" type="xsd:string" minOccurs="0"/>
101
- <element name="url_path" type="xsd:string" minOccurs="0"/>
102
- <element name="image" type="xsd:string" minOccurs="0"/>
103
- <element name="small_image" type="xsd:string" minOccurs="0"/>
104
- <element name="thumbnail" type="xsd:string" minOccurs="0"/>
105
- <element name="qty" type="xsd:string" minOccurs="0"/>
106
- <element name="bundle_items"
107
- type="typens:ArrayOfListrakRemarketingAbandonedCartProduct"
108
- minOccurs="0"/>
109
- </all>
110
- </complexType>
111
- <complexType name="ArrayOfListrakRemarketingAbandonedCartProduct">
112
- <complexContent>
113
- <restriction base="soapenc:Array">
114
- <attribute ref="soapenc:arrayType"
115
- wsdl:arrayType="typens:ListrakRemarketingAbandonedCartProductEntity[]"/>
116
- </restriction>
117
- </complexContent>
118
- </complexType>
119
-
120
- <!-- product -->
121
- <complexType name="ListrakRemarketingAttributeEntity">
122
- <all>
123
- <element name="attribute_name" type="xsd:string" minOccurs="0"/>
124
- <element name="value" type="xsd:string" minOccurs="0"/>
125
- <element name="values" type="typens:ArrayOfString" minOccurs="0"/>
126
- <element name="parent_value" type="xsd:string" minOccurs="0"/>
127
- <element name="parent_values" type="typens:ArrayOfString" minOccurs="0"/>
128
- </all>
129
- </complexType>
130
- <complexType name="ArrayOfListrakRemarketingAttributeEntity">
131
- <complexContent>
132
- <restriction base="soapenc:Array">
133
- <attribute ref="soapenc:arrayType"
134
- wsdl:arrayType="typens:ListrakRemarketingAttributeEntity[]"/>
135
- </restriction>
136
- </complexContent>
137
- </complexType>
138
- <complexType name="ListrakRemarketingConfigurableAttributeEntity">
139
- <all>
140
- <element name="attribute_name" type="xsd:string" minOccurs="0"/>
141
- <element name="value" type="xsd:string" minOccurs="0"/>
142
- </all>
143
- </complexType>
144
- <complexType name="ArrayOfListrakRemarketingConfigurableAttributeEntity">
145
- <complexContent>
146
- <restriction base="soapenc:Array">
147
- <attribute ref="soapenc:arrayType"
148
- wsdl:arrayType="typens:ListrakRemarketingConfigurableAttributeEntity[]"/>
149
- </restriction>
150
- </complexContent>
151
- </complexType>
152
- <complexType name="ListrakRemarketingProductLinkEntity">
153
- <all>
154
- <element name="link_type" type="xsd:string" minOccurs="0"/>
155
- <element name="sku" type="xsd:string" minOccurs="0"/>
156
- <element name="position" type="xsd:string" minOccurs="0"/>
157
- </all>
158
- </complexType>
159
- <complexType name="ArrayOfListrakRemarketingProductLinkEntity">
160
- <complexContent>
161
- <restriction base="soapenc:Array">
162
- <attribute ref="soapenc:arrayType"
163
- wsdl:arrayType="typens:ListrakRemarketingProductLinkEntity[]"/>
164
- </restriction>
165
- </complexContent>
166
- </complexType>
167
- <complexType name="ListrakRemarketingProductIdEntity">
168
- <all>
169
- <element name="entity_id" type="xsd:string" minOccurs="0"/>
170
- <element name="sku" type="xsd:string" minOccurs="0"/>
171
- </all>
172
- </complexType>
173
- <complexType name="ArrayOfListrakRemarketingProductId">
174
- <complexContent>
175
- <restriction base="soapenc:Array">
176
- <attribute ref="soapenc:arrayType"
177
- wsdl:arrayType="typens:ListrakRemarketingProductIdEntity[]"/>
178
- </restriction>
179
- </complexContent>
180
- </complexType>
181
- <complexType name="ListrakRemarketingProductEntity">
182
- <all>
183
- <element name="entity_id" type="xsd:string" minOccurs="0"/>
184
- <element name="sku" type="xsd:string" minOccurs="0"/>
185
- <element name="name" type="xsd:string" minOccurs="0"/>
186
- <element name="price" type="xsd:string" minOccurs="0"/>
187
- <element name="special_price" type="xsd:string" minOccurs="0"/>
188
- <element name="special_from_date" type="xsd:string"
189
- minOccurs="0"/>
190
- <element name="special_to_date" type="xsd:string" minOccurs="0"/>
191
- <element name="cost" type="xsd:string" minOccurs="0"/>
192
- <element name="description" type="xsd:string" minOccurs="0"/>
193
- <element name="short_description" type="xsd:string"
194
- minOccurs="0"/>
195
- <element name="weight" type="xsd:string" minOccurs="0"/>
196
- <element name="url_key" type="xsd:string" minOccurs="0"/>
197
- <element name="url_path" type="xsd:string" minOccurs="0"/>
198
- <element name="image" type="xsd:string" minOccurs="0"/>
199
- <element name="small_image" type="xsd:string" minOccurs="0"/>
200
- <element name="thumbnail" type="xsd:string" minOccurs="0"/>
201
- <element name="qty" type="xsd:string" minOccurs="0"/>
202
- <element name="parent_id" type="xsd:string" minOccurs="0"/>
203
- <element name="parent_sku" type="xsd:string" minOccurs="0"/>
204
- <element name="brand" type="xsd:string" minOccurs="0"/>
205
- <element name="category" type="xsd:string" minOccurs="0"/>
206
- <element name="sub_category" type="xsd:string" minOccurs="0"/>
207
- <element name="in_stock" type="xsd:string" minOccurs="0"/>
208
- <element name="qty_on_hand" type="xsd:string" minOccurs="0"/>
209
- <element name="purchasable" type="xsd:string" minOccurs="0"/>
210
- <element name="type" type="xsd:string" minOccurs="0"/>
211
- <element name="configurable_attributes"
212
- type="typens:ArrayOfListrakRemarketingConfigurableAttributeEntity"
213
- minOccurs="0"/>
214
- <element name="links"
215
- type="typens:ArrayOfListrakRemarketingProductLinkEntity"
216
- minOccurs="0"/>
217
- <element name="attributes"
218
- type="typens:ArrayOfListrakRemarketingAttributeEntity"
219
- minOccurs="0"/>
220
- <element name="meta3" type="xsd:string" minOccurs="0"/>
221
- <element name="meta4" type="xsd:string" minOccurs="0"/>
222
- <element name="meta5" type="xsd:string" minOccurs="0"/>
223
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
224
- </all>
225
- </complexType>
226
- <complexType name="ArrayOfListrakRemarketingProduct">
227
- <complexContent>
228
- <restriction base="soapenc:Array">
229
- <attribute ref="soapenc:arrayType"
230
- wsdl:arrayType="typens:ListrakRemarketingProductEntity[]"/>
231
- </restriction>
232
- </complexContent>
233
- </complexType>
234
-
235
- <!-- click -->
236
- <complexType name="ListrakRemarketingClickEntity">
237
- <all>
238
- <element name="store_id" type="xsd:string" minOccurs="0"/>
239
- <element name="customer_id" type="xsd:string" minOccurs="0"/>
240
- <element name="customer_email" type="xsd:string" minOccurs="0"/>
241
- <element name="querystring" type="xsd:string" minOccurs="0"/>
242
- <element name="click_date" type="xsd:string" minOccurs="0"/>
243
- <element name="token_uid" type="xsd:string" minOccurs="0"/>
244
- <element name="session_uid" type="xsd:string" minOccurs="0"/>
245
- <element name="pi_id" type="xsd:string" minOccurs="0"/>
246
- </all>
247
- </complexType>
248
- <complexType name="ArrayOfListrakRemarketingClick">
249
- <complexContent>
250
- <restriction base="soapenc:Array">
251
- <attribute ref="soapenc:arrayType"
252
- wsdl:arrayType="typens:ListrakRemarketingClickEntity[]"/>
253
- </restriction>
254
- </complexContent>
255
- </complexType>
256
-
257
- <!-- log -->
258
- <complexType name="ListrakRemarketingLogEntity">
259
- <all>
260
- <element name="store_id" type="xsd:string" minOccurs="0"/>
261
- <element name="message" type="xsd:string" minOccurs="0"/>
262
- <element name="date_entered" type="xsd:string" minOccurs="0"/>
263
- <element name="log_type_id" type="xsd:string" minOccurs="0"/>
264
- </all>
265
- </complexType>
266
- <complexType name="ArrayOfListrakRemarketingLog">
267
- <complexContent>
268
- <restriction base="soapenc:Array">
269
- <attribute ref="soapenc:arrayType"
270
- wsdl:arrayType="typens:ListrakRemarketingLogEntity[]"/>
271
- </restriction>
272
- </complexContent>
273
- </complexType>
274
-
275
- <!-- order -->
276
- <complexType name="ListrakRemarketingOrderEntity">
277
- <all>
278
- <element name="info"
279
- type="typens:ListrakRemarketingOrderInfoEntity"
280
- minOccurs="0"/>
281
- <element name="billing_address"
282
- type="typens:ListrakRemarketingOrderAddressEntity"
283
- minOccurs="0"/>
284
- <element name="shipping_address"
285
- type="typens:ListrakRemarketingOrderAddressEntity"
286
- minOccurs="0"/>
287
- <element name="product"
288
- type="typens:ArrayOfListrakRemarketingProductShort"
289
- minOccurs="0"/>
290
- <element name="session"
291
- type="typens:ListrakRemarketingSessionEntity"
292
- minOccurs="0"/>
293
- <element name="customer"
294
- type="typens:ListrakRemarketingCustomerEntity"
295
- minOccurs="0"/>
296
- </all>
297
- </complexType>
298
- <complexType name="ArrayOfListrakRemarketingOrder">
299
- <complexContent>
300
- <restriction base="soapenc:Array">
301
- <attribute ref="soapenc:arrayType"
302
- wsdl:arrayType="typens:ListrakRemarketingOrderEntity[]"/>
303
- </restriction>
304
- </complexContent>
305
- </complexType>
306
- <complexType name="ListrakRemarketingOrderInfoEntity">
307
- <all>
308
- <element name="entity_id" type="xsd:string" minOccurs="0"/>
309
- <element name="order_id" type="xsd:string" minOccurs="0"/>
310
- <element name="status" type="xsd:string" minOccurs="0"/>
311
- <element name="customer_firstname" type="xsd:string"
312
- minOccurs="0"/>
313
- <element name="customer_lastname" type="xsd:string"
314
- minOccurs="0"/>
315
- <element name="customer_email" type="xsd:string" minOccurs="0"/>
316
- <element name="subtotal" type="xsd:string" minOccurs="0"/>
317
- <element name="tax_amount" type="xsd:string" minOccurs="0"/>
318
- <element name="discount_amount" type="xsd:string" minOccurs="0"/>
319
- <element name="shipping_amount" type="xsd:string" minOccurs="0"/>
320
- <element name="grand_total" type="xsd:string" minOccurs="0"/>
321
- <element name="coupon_code" type="xsd:string" minOccurs="0"/>
322
- <element name="billing_firstname" type="xsd:string"
323
- minOccurs="0"/>
324
- <element name="meta1" type="xsd:string" minOccurs="0"/>
325
- <element name="meta2" type="xsd:string" minOccurs="0"/>
326
- <element name="meta3" type="xsd:string" minOccurs="0"/>
327
- <element name="meta4" type="xsd:string" minOccurs="0"/>
328
- <element name="meta5" type="xsd:string" minOccurs="0"/>
329
- <element name="created_at" type="xsd:string" minOccurs="0"/>
330
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
331
- </all>
332
- </complexType>
333
- <complexType name="ListrakRemarketingOrderAddressEntity">
334
- <all>
335
- <element name="firstname" type="xsd:string" minOccurs="0"/>
336
- <element name="lastname" type="xsd:string" minOccurs="0"/>
337
- <element name="company" type="xsd:string" minOccurs="0"/>
338
- <element name="street" type="xsd:string" minOccurs="0"/>
339
- <element name="city" type="xsd:string" minOccurs="0"/>
340
- <element name="region" type="xsd:string" minOccurs="0"/>
341
- <element name="postcode" type="xsd:string" minOccurs="0"/>
342
- <element name="country" type="xsd:string" minOccurs="0"/>
343
- </all>
344
- </complexType>
345
- <complexType name="ListrakRemarketingProductShortEntity">
346
- <all>
347
- <element name="sku" type="xsd:string" minOccurs="0"/>
348
- <element name="name" type="xsd:string" minOccurs="0"/>
349
- <element name="price" type="xsd:string" minOccurs="0"/>
350
- <element name="in_stock" type="xsd:string" minOccurs="0"/>
351
- <element name="qty_on_hand" type="xsd:string" minOccurs="0"/>
352
- <element name="qty_ordered" type="xsd:string" minOccurs="0"/>
353
- <element name="product_price" type="xsd:string" minOccurs="0"/>
354
- <element name="meta1" type="xsd:string" minOccurs="0"/>
355
- <element name="meta2" type="xsd:string" minOccurs="0"/>
356
- <element name="meta3" type="xsd:string" minOccurs="0"/>
357
- <element name="meta4" type="xsd:string" minOccurs="0"/>
358
- <element name="meta5" type="xsd:string" minOccurs="0"/>
359
- <element name="bundle_items"
360
- type="typens:ArrayOfListrakRemarketingProductShort"
361
- minOccurs="0"/>
362
- </all>
363
- </complexType>
364
- <complexType name="ArrayOfListrakRemarketingProductShort">
365
- <complexContent>
366
- <restriction base="soapenc:Array">
367
- <attribute ref="soapenc:arrayType"
368
- wsdl:arrayType="typens:ListrakRemarketingProductShortEntity[]"/>
369
- </restriction>
370
- </complexContent>
371
- </complexType>
372
-
373
- <!-- order status -->
374
- <complexType name="ListrakRemarketingOrderStatusEntity">
375
- <all>
376
- <element name="increment_id" type="xsd:string" minOccurs="0"/>
377
- <element name="status" type="xsd:string" minOccurs="0"/>
378
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
379
- <element name="tracking_number" type="xsd:string" minOccurs="0"/>
380
- <element name="carrier_code" type="xsd:string" minOccurs="0"/>
381
- <element name="meta1" type="xsd:string" minOccurs="0"/>
382
- <element name="meta2" type="xsd:string" minOccurs="0"/>
383
- <element name="meta3" type="xsd:string" minOccurs="0"/>
384
- <element name="meta4" type="xsd:string" minOccurs="0"/>
385
- <element name="meta5" type="xsd:string" minOccurs="0"/>
386
- <element name="quantities" type="typens:ArrayOfListrakRemarketingProductQuantity" minOccurs="0"/>
387
- </all>
388
- </complexType>
389
- <complexType name="ArrayOfListrakRemarketingOrderStatus">
390
- <complexContent>
391
- <restriction base="soapenc:Array">
392
- <attribute ref="soapenc:arrayType"
393
- wsdl:arrayType="typens:ListrakRemarketingOrderStatusEntity[]"/>
394
- </restriction>
395
- </complexContent>
396
- </complexType>
397
- <complexType name="ListrakRemarketingProductQuantityEntity">
398
- <all>
399
- <element name="sku" type="xsd:string" minOccurs="0"/>
400
- <element name="in_stock" type="xsd:string" minOccurs="0"/>
401
- <element name="qty_on_hand" type="xsd:string" minOccurs="0"/>
402
- </all>
403
- </complexType>
404
- <complexType name="ArrayOfListrakRemarketingProductQuantity">
405
- <complexContent>
406
- <restriction base="soapenc:Array">
407
- <attribute ref="soapenc:arrayType"
408
- wsdl:arrayType="typens:ListrakRemarketingProductQuantityEntity[]"/>
409
- </restriction>
410
- </complexContent>
411
- </complexType>
412
-
413
- <!-- customer -->
414
- <complexType name="ListrakRemarketingCustomerEntity">
415
- <all>
416
- <element name="entity_id" type="xsd:string" minOccurs="0"/>
417
- <element name="firstname" type="xsd:string" minOccurs="0"/>
418
- <element name="lastname" type="xsd:string" minOccurs="0"/>
419
- <element name="email" type="xsd:string" minOccurs="0"/>
420
- <element name="website_id" type="xsd:string" minOccurs="0"/>
421
- <element name="store_id" type="xsd:string" minOccurs="0"/>
422
- <element name="gender_name" type="xsd:string" minOccurs="0"/>
423
- <element name="dob" type="xsd:string" minOccurs="0"/>
424
- <element name="group_name" type="xsd:string" minOccurs="0"/>
425
- <element name="meta2" type="xsd:string" minOccurs="0"/>
426
- <element name="meta3" type="xsd:string" minOccurs="0"/>
427
- <element name="meta4" type="xsd:string" minOccurs="0"/>
428
- <element name="meta5" type="xsd:string" minOccurs="0"/>
429
- </all>
430
- </complexType>
431
- <complexType name="ArrayOfListrakRemarketingCustomer">
432
- <complexContent>
433
- <restriction base="soapenc:Array">
434
- <attribute ref="soapenc:arrayType"
435
- wsdl:arrayType="typens:ListrakRemarketingCustomerEntity[]"/>
436
- </restriction>
437
- </complexContent>
438
- </complexType>
439
-
440
- <!-- subscriber -->
441
- <complexType name="ListrakRemarketingSubscriberEntity">
442
- <all>
443
- <element name="subscriber_id" type="xsd:string" minOccurs="0"/>
444
- <element name="store_id" type="xsd:string" minOccurs="0"/>
445
- <element name="customer_id" type="xsd:string" minOccurs="0"/>
446
- <element name="change_status_at" type="xsd:string"
447
- minOccurs="0"/>
448
- <element name="subscriber_email" type="xsd:string"
449
- minOccurs="0"/>
450
- <element name="subscriber_status" type="xsd:string"
451
- minOccurs="0"/>
452
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
453
- </all>
454
- </complexType>
455
- <complexType name="ArrayOfListrakRemarketingSubscriber">
456
- <complexContent>
457
- <restriction base="soapenc:Array">
458
- <attribute ref="soapenc:arrayType"
459
- wsdl:arrayType="typens:ListrakRemarketingSubscriberEntity[]"/>
460
- </restriction>
461
- </complexContent>
462
- </complexType>
463
-
464
- <complexType name="ListrakRemarketingInfoEntity">
465
- <all>
466
- <element name="magentoVersion" type="xsd:string" minOccurs="0"/>
467
- <element name="listrakExtension"
468
- type="typens:ListrakRemarketingInfoExtensionEntity"
469
- minOccurs="0"/>
470
- <element name="listrakSettings"
471
- type="typens:ListrakRemarketingSettingEntity"
472
- minOccurs="0"/>
473
- <element name="modules" type="typens:ArrayOfString"
474
- minOccurs="0"/>
475
- <element name="ini" type="typens:ArrayOfString" minOccurs="0"/>
476
- <element name="classes" type="xsd:string" minOccurs="0"/>
477
- <element name="counts" type="xsd:string" minOccurs="0"/>
478
- </all>
479
- </complexType>
480
- <complexType name="ListrakRemarketingInfoExtensionEntity">
481
- <all>
482
- <element name="name" type="xsd:string" minOccurs="0"/>
483
- <element name="active" type="xsd:string" minOccurs="0"/>
484
- <element name="output" type="xsd:string" minOccurs="0"/>
485
- <element name="version" type="xsd:string" minOccurs="0"/>
486
- <element name="install_version" type="xsd:string" minOccurs="0"/>
487
- <element name="data_version" type="xsd:string" minOccurs="0"/>
488
- </all>
489
- </complexType>
490
- <complexType name="ListrakRemarketingSettingEntity">
491
- <all>
492
- <element name="coreEnabled" type="xsd:string" minOccurs="0"/>
493
- <element name="onescriptEnabled" type="xsd:string" minOccurs="0"/>
494
- <element name="onescriptReady" type="xsd:string" minOccurs="0"/>
495
- <element name="trackingID" type="xsd:string" minOccurs="0"/>
496
- <element name="scaEnabled" type="xsd:string" minOccurs="0"/>
497
- <element name="activityEnabled" type="xsd:string" minOccurs="0"/>
498
- <element name="reviewsApiEnabled" type="xsd:string" minOccurs="0"/>
499
- <element name="trackingTablesExist" type="xsd:string" minOccurs="0"/>
500
- <element name="skipCategoriesText" type="xsd:string" minOccurs="0"/>
501
- <element name="skipCategories" type="xsd:string" minOccurs="0"/>
502
- </all>
503
- </complexType>
504
-
505
- <!-- review list / review update list -->
506
- <complexType name="ListrakRemarketingReviewListResult">
507
- <complexContent>
508
- <restriction base="soapenc:Array">
509
- <attribute ref="soapenc:arrayType"
510
- wsdl:arrayType="typens:ListrakRemarketingReviewListItem[]"/>
511
- </restriction>
512
- </complexContent>
513
- </complexType>
514
- <complexType name="ListrakRemarketingReviewListItem">
515
- <all>
516
- <element name="update_id" type="xsd:string" minOccurs="0"/>
517
- <element name="review_id" type="xsd:string" minOccurs="0"/>
518
- <element name="product_id" type="xsd:string" minOccurs="0"/>
519
- <element name="title" type="xsd:string" minOccurs="0"/>
520
- <element name="text" type="xsd:string" minOccurs="0"/>
521
- <element name="overall_rating" type="xsd:string" minOccurs="0"/>
522
- <element name="created_at" type="xsd:string" minOccurs="0"/>
523
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
524
- <element name="reviewer_name" type="xsd:string" minOccurs="0"/>
525
- <element name="email" type="xsd:string" minOccurs="0"/>
526
- <element name="status_id" type="xsd:string" minOccurs="0"/>
527
- <element name="status_code" type="xsd:string" minOccurs="0"/>
528
- <element name="ratings"
529
- type="typens:ArrayOfListrakRemarketingReviewRating"
530
- minOccurs="0"/>
531
- </all>
532
- </complexType>
533
- <complexType name="ArrayOfListrakRemarketingReviewRating">
534
- <complexContent>
535
- <restriction base="soapenc:Array">
536
- <attribute ref="soapenc:arrayType"
537
- wsdl:arrayType="typens:ListrakRemarketingReviewRatingItem[]"/>
538
- </restriction>
539
- </complexContent>
540
- </complexType>
541
- <complexType name="ListrakRemarketingReviewRatingItem">
542
- <all>
543
- <element name="rating_id" type="xsd:string" minOccurs="0"/>
544
- <element name="rating_code" type="xsd:string" minOccurs="0"/>
545
- <element name="rating" type="xsd:string" minOccurs="0"/>
546
- </all>
547
- </complexType>
548
-
549
- <!-- rating summary list / rating summary update list -->
550
- <complexType name="ListrakRemarketingRatingSummaryListResult">
551
- <complexContent>
552
- <restriction base="soapenc:Array">
553
- <attribute ref="soapenc:arrayType"
554
- wsdl:arrayType="typens:ListrakRemarketingRatingSummaryItem[]"/>
555
- </restriction>
556
- </complexContent>
557
- </complexType>
558
- <complexType name="ListrakRemarketingRatingSummaryItem">
559
- <all>
560
- <element name="update_id" type="xsd:string" minOccurs="0"/>
561
- <element name="rating_summary_id" type="xsd:string"
562
- minOccurs="0"/>
563
- <element name="product_id" type="xsd:string" minOccurs="0"/>
564
- <element name="updated_at" type="xsd:string" minOccurs="0"/>
565
- <element name="total_reviews" type="xsd:string" minOccurs="0"/>
566
- <element name="rating" type="xsd:string" minOccurs="0"/>
567
- <element name="ratings"
568
- type="typens:ArrayOfListrakRemarketingRatingSummaryAttribute"
569
- minOccurs="0"/>
570
- </all>
571
- </complexType>
572
- <complexType name="ArrayOfListrakRemarketingRatingSummaryAttribute">
573
- <complexContent>
574
- <restriction base="soapenc:Array">
575
- <attribute ref="soapenc:arrayType"
576
- wsdl:arrayType="typens:ListrakRemarketingRatingSummaryAttributeItem[]"/>
577
- </restriction>
578
- </complexContent>
579
- </complexType>
580
- <complexType name="ListrakRemarketingRatingSummaryAttributeItem">
581
- <all>
582
- <element name="rating_id" type="xsd:string" minOccurs="0"/>
583
- <element name="rating_code" type="xsd:string" minOccurs="0"/>
584
- <element name="rating" type="xsd:string" minOccurs="0"/>
585
- </all>
586
- </complexType>
587
-
588
- <!-- review delete list -->
589
- <complexType name="ListrakRemarketingReviewDeleteListResult">
590
- <complexContent>
591
- <restriction base="soapenc:Array">
592
- <attribute ref="soapenc:arrayType"
593
- wsdl:arrayType="typens:ListrakRemarketingDeletedReview[]"/>
594
- </restriction>
595
- </complexContent>
596
- </complexType>
597
- <complexType name="ListrakRemarketingDeletedReview">
598
- <all>
599
- <element name="delete_id" type="xsd:string" minOccurs="0"/>
600
- <element name="review_id" type="xsd:string" minOccurs="0"/>
601
- </all>
602
- </complexType>
603
-
604
- <!-- review update purge -->
605
- <complexType name="ListrakRemarketingReviewUpdatePurgeResult">
606
- <all>
607
- <element name="count" type="xsd:string" minOccurs="0"/>
608
- <element name="before" type="xsd:string" minOccurs="0"/>
609
- </all>
610
- </complexType>
611
- </schema>
612
- </types>
613
- <message name="listrakRemarketingAbandonedCartListRequest">
614
- <part name="sessionId" type="xsd:string"/>
615
- <part name="storeId" type="xsd:string"/>
616
- <part name="startDate" type="xsd:string"/>
617
- <part name="endDate" type="xsd:string"/>
618
- <part name="perPage" type="xsd:int"/>
619
- <part name="page" type="xsd:int"/>
620
- </message>
621
- <message name="listrakRemarketingAbandonedCartListResponse">
622
- <part name="result" type="typens:ArrayOfListrakRemarketingAbandonedCart"/>
623
- </message>
624
- <message name="listrakRemarketingAbandonedCartPurgeRequest">
625
- <part name="sessionId" type="xsd:string"/>
626
- <part name="storeId" type="xsd:string"/>
627
- <part name="endDate" type="xsd:string"/>
628
- </message>
629
- <message name="listrakRemarketingAbandonedCartPurgeResponse">
630
- <part name="result" type="xsd:string"/>
631
- </message>
632
- <message name="listrakRemarketingClickListRequest">
633
- <part name="sessionId" type="xsd:string"/>
634
- <part name="storeId" type="xsd:string"/>
635
- <part name="startDate" type="xsd:string"/>
636
- <part name="endDate" type="xsd:string"/>
637
- <part name="perPage" type="xsd:int"/>
638
- <part name="page" type="xsd:int"/>
639
- </message>
640
- <message name="listrakRemarketingClickListResponse">
641
- <part name="result" type="typens:ArrayOfListrakRemarketingClick"/>
642
- </message>
643
- <message name="listrakRemarketingClickPurgeRequest">
644
- <part name="sessionId" type="xsd:string"/>
645
- <part name="storeId" type="xsd:string"/>
646
- <part name="endDate" type="xsd:string"/>
647
- </message>
648
- <message name="listrakRemarketingClickPurgeResponse">
649
- <part name="result" type="xsd:string"/>
650
- </message>
651
- <message name="listrakRemarketingLogListRequest">
652
- <part name="sessionId" type="xsd:string"/>
653
- <part name="storeId" type="xsd:string"/>
654
- <part name="startDate" type="xsd:string"/>
655
- <part name="endDate" type="xsd:string"/>
656
- <part name="perPage" type="xsd:int"/>
657
- <part name="page" type="xsd:int"/>
658
- <part name="logTypeId" type="xsd:string"/>
659
- </message>
660
- <message name="listrakRemarketingLogListResponse">
661
- <part name="result" type="typens:ArrayOfListrakRemarketingLog"/>
662
- </message>
663
- <message name="listrakRemarketingLogPurgeRequest">
664
- <part name="sessionId" type="xsd:string"/>
665
- <part name="storeId" type="xsd:string"/>
666
- <part name="endDate" type="xsd:string"/>
667
- </message>
668
- <message name="listrakRemarketingLogPurgeResponse">
669
- <part name="result" type="xsd:string"/>
670
- </message>
671
- <message name="listrakRemarketingOrderListRequest">
672
- <part name="sessionId" type="xsd:string"/>
673
- <part name="storeId" type="xsd:string"/>
674
- <part name="startDate" type="xsd:string"/>
675
- <part name="endDate" type="xsd:string"/>
676
- <part name="perPage" type="xsd:int"/>
677
- <part name="page" type="xsd:int"/>
678
- </message>
679
- <message name="listrakRemarketingOrderListResponse">
680
- <part name="result" type="typens:ArrayOfListrakRemarketingOrder"/>
681
- </message>
682
- <message name="listrakRemarketingOrderStatusListRequest">
683
- <part name="sessionId" type="xsd:string"/>
684
- <part name="storeId" type="xsd:string"/>
685
- <part name="startDate" type="xsd:string"/>
686
- <part name="endDate" type="xsd:string"/>
687
- <part name="perPage" type="xsd:int"/>
688
- <part name="page" type="xsd:int"/>
689
- <part name="filters" type="typens:filters"/>
690
- </message>
691
- <message name="listrakRemarketingOrderStatusListResponse">
692
- <part name="result" type="typens:ArrayOfListrakRemarketingOrderStatus"/>
693
- </message>
694
- <message name="listrakRemarketingProductListRequest">
695
- <part name="sessionId" type="xsd:string"/>
696
- <part name="storeId" type="xsd:string"/>
697
- <part name="perPage" type="xsd:int"/>
698
- <part name="page" type="xsd:int"/>
699
- <part name="withAttributes" type="xsd:boolean"/>
700
- </message>
701
- <message name="listrakRemarketingProductListResponse">
702
- <part name="result" type="typens:ArrayOfListrakRemarketingProduct"/>
703
- </message>
704
- <message name="listrakRemarketingProductUpdateListRequest">
705
- <part name="sessionId" type="xsd:string"/>
706
- <part name="storeId" type="xsd:string"/>
707
- <part name="startDate" type="xsd:dateTime"/>
708
- <part name="endDate" type="xsd:dateTime"/>
709
- <part name="perPage" type="xsd:int"/>
710
- <part name="page" type="xsd:int"/>
711
- <part name="withAttributes" type="xsd:boolean"/>
712
- </message>
713
- <message name="listrakRemarketingProductUpdateListResponse">
714
- <part name="result" type="typens:ArrayOfListrakRemarketingProduct"/>
715
- </message>
716
- <message name="listrakRemarketingProductPurchasableListRequest">
717
- <part name="sessionID" type="xsd:string"/>
718
- <part name="storeId" type="xsd:string"/>
719
- <part name="perPage" type="xsd:int"/>
720
- <part name="page" type="xsd:string"/>
721
- </message>
722
- <message name="listrakRemarketingProductPurchasableListResponse">
723
- <part name="result" type="typens:ArrayOfListrakRemarketingProductId"/>
724
- </message>
725
- <message name="listrakRemarketingSubscriberListRequest">
726
- <part name="sessionId" type="xsd:string"/>
727
- <part name="storeId" type="xsd:string"/>
728
- <part name="startDate" type="xsd:string"/>
729
- <part name="perPage" type="xsd:int"/>
730
- <part name="page" type="xsd:int"/>
731
- </message>
732
- <message name="listrakRemarketingSubscriberListResponse">
733
- <part name="result" type="typens:ArrayOfListrakRemarketingSubscriber"/>
734
- </message>
735
- <message name="listrakRemarketingSubscriberPurgeRequest">
736
- <part name="sessionId" type="xsd:string"/>
737
- <part name="endDate" type="xsd:string"/>
738
- </message>
739
- <message name="listrakRemarketingSubscriberPurgeResponse">
740
- <part name="result" type="xsd:string"/>
741
- </message>
742
- <message name="listrakRemarketingCustomerListRequest">
743
- <part name="sessionId" type="xsd:string"/>
744
- <part name="storeId" type="xsd:string"/>
745
- <part name="websiteId" type="xsd:int"/>
746
- <part name="perPage" type="xsd:int"/>
747
- <part name="page" type="xsd:int"/>
748
- </message>
749
- <message name="listrakRemarketingCustomerListResponse">
750
- <part name="result" type="typens:ArrayOfListrakRemarketingCustomer"/>
751
- </message>
752
- <message name="listrakRemarketingInfoListRequest">
753
- <part name="sessionId" type="xsd:string"/>
754
- <part name="storeId" type="xsd:string"/>
755
- </message>
756
- <message name="listrakRemarketingInfoListResponse">
757
- <part name="result" type="typens:ListrakRemarketingInfoEntity"/>
758
- </message>
759
- <message name="listrakRemarketingReviewListRequest">
760
- <part name="sessionId" type="xsd:string"/>
761
- <part name="storeId" type="xsd:string"/>
762
- <part name="chunkSize" type="xsd:string"/>
763
- <part name="startReviewId" type="xsd:string"/>
764
- </message>
765
- <message name="listrakRemarketingReviewListResponse">
766
- <part name="result" type="typens:ListrakRemarketingReviewListResult"/>
767
- </message>
768
- <message name="listrakRemarketingRatingSummaryListRequest">
769
- <part name="sessionId" type="xsd:string"/>
770
- <part name="storeId" type="xsd:string"/>
771
- <part name="chunkSize" type="xsd:string"/>
772
- <part name="startRatingSummaryId" type="xsd:string"/>
773
- </message>
774
- <message name="listrakRemarketingRatingSummaryListResponse">
775
- <part name="result" type="typens:ListrakRemarketingRatingSummaryListResult"/>
776
- </message>
777
- <message name="listrakRemarketingReviewUpdateListRequest">
778
- <part name="sessionId" type="xsd:string"/>
779
- <part name="storeId" type="xsd:string"/>
780
- <part name="chunkSize" type="xsd:string"/>
781
- <part name="startUpdateId" type="xsd:string"/>
782
- </message>
783
- <message name="listrakRemarketingReviewUpdateListResponse">
784
- <part name="result" type="typens:ListrakRemarketingReviewListResult"/>
785
- </message>
786
- <message name="listrakRemarketingRatingSummaryUpdateListRequest">
787
- <part name="sessionId" type="xsd:string"/>
788
- <part name="storeId" type="xsd:string"/>
789
- <part name="chunkSize" type="xsd:string"/>
790
- <part name="startUpdateId" type="xsd:string"/>
791
- </message>
792
- <message name="listrakRemarketingRatingSummaryUpdateListResponse">
793
- <part name="result" type="typens:ListrakRemarketingRatingSummaryListResult"/>
794
- </message>
795
- <message name="listrakRemarketingReviewDeleteListRequest">
796
- <part name="sessionId" type="xsd:string"/>
797
- <part name="chunkSize" type="xsd:string"/>
798
- <part name="startDeleteId" type="xsd:string"/>
799
- </message>
800
- <message name="listrakRemarketingReviewDeleteListResponse">
801
- <part name="result" type="typens:ListrakRemarketingReviewDeleteListResult"/>
802
- </message>
803
- <message name="listrakRemarketingReviewUpdatePurgeRequest">
804
- <part name="sessionId" type="xsd:string"/>
805
- <part name="purgeBeforeDays" type="xsd:string"/>
806
- </message>
807
- <message name="listrakRemarketingReviewUpdatePurgeResponse">
808
- <part name="result" type="typens:ListrakRemarketingReviewUpdatePurgeResult"/>
809
- </message>
810
- <portType name="{{var wsdl.handler}}PortType">
811
- <operation name="listrakRemarketingAbandonedCartList">
812
- <documentation>Get stores abandoned carts</documentation>
813
- <input message="typens:listrakRemarketingAbandonedCartListRequest"/>
814
- <output message="typens:listrakRemarketingAbandonedCartListResponse"/>
815
- </operation>
816
- <operation name="listrakRemarketingAbandonedCartPurge">
817
- <documentation>Purge abandoned carts</documentation>
818
- <input message="typens:listrakRemarketingAbandonedCartPurgeRequest"/>
819
- <output message="typens:listrakRemarketingAbandonedCartPurgeResponse"/>
820
- </operation>
821
- <operation name="listrakRemarketingClickList">
822
- <documentation>Get clicks</documentation>
823
- <input message="typens:listrakRemarketingClickListRequest"/>
824
- <output message="typens:listrakRemarketingClickListResponse"/>
825
- </operation>
826
- <operation name="listrakRemarketingClickPurge">
827
- <documentation>Purge clicks</documentation>
828
- <input message="typens:listrakRemarketingClickPurgeRequest"/>
829
- <output message="typens:listrakRemarketingClickPurgeResponse"/>
830
- </operation>
831
- <operation name="listrakRemarketingLogList">
832
- <documentation>Get log entries</documentation>
833
- <input message="typens:listrakRemarketingLogListRequest"/>
834
- <output message="typens:listrakRemarketingLogListResponse"/>
835
- </operation>
836
- <operation name="listrakRemarketingLogPurge">
837
- <documentation>Purge log entries</documentation>
838
- <input message="typens:listrakRemarketingLogPurgeRequest"/>
839
- <output message="typens:listrakRemarketingLogPurgeResponse"/>
840
- </operation>
841
- <operation name="listrakRemarketingOrderList">
842
- <documentation>Get orders</documentation>
843
- <input message="typens:listrakRemarketingOrderListRequest"/>
844
- <output message="typens:listrakRemarketingOrderListResponse"/>
845
- </operation>
846
- <operation name="listrakRemarketingOrderStatusList">
847
- <documentation>Get order status changes</documentation>
848
- <input message="typens:listrakRemarketingOrderStatusListRequest"/>
849
- <output message="typens:listrakRemarketingOrderStatusListResponse"/>
850
- </operation>
851
- <operation name="listrakRemarketingProductList">
852
- <documentation>Get products</documentation>
853
- <input message="typens:listrakRemarketingProductListRequest"/>
854
- <output message="typens:listrakRemarketingProductListResponse"/>
855
- </operation>
856
- <operation name="listrakRemarketingProductUpdateList">
857
- <documentation>Get products</documentation>
858
- <input message="typens:listrakRemarketingProductUpdateListRequest"/>
859
- <output message="typens:listrakRemarketingProductUpdateListResponse"/>
860
- </operation>
861
- <operation name="listrakRemarketingProductPurchasableList">
862
- <documentation>Get all products available for purchase</documentation>
863
- <input message="typens:listrakRemarketingProductPurchasableListRequest"/>
864
- <output message="typens:listrakRemarketingProductPurchasableListResponse"/>
865
- </operation>
866
- <operation name="listrakRemarketingSubscriberList">
867
- <documentation>Get subscribers and unsubscribers</documentation>
868
- <input message="typens:listrakRemarketingSubscriberListRequest"/>
869
- <output message="typens:listrakRemarketingSubscriberListResponse"/>
870
- </operation>
871
- <operation name="listrakRemarketingSubscriberPurge">
872
- <documentation>Purge old subscriber updates</documentation>
873
- <input message="typens:listrakRemarketingSubscriberPurgeRequest"/>
874
- <output message="typens:listrakRemarketingSubscriberPurgeResponse"/>
875
- </operation>
876
- <operation name="listrakRemarketingCustomerList">
877
- <documentation>Get customers</documentation>
878
- <input message="typens:listrakRemarketingCustomerListRequest"/>
879
- <output message="typens:listrakRemarketingCustomerListResponse"/>
880
- </operation>
881
- <operation name="listrakRemarketingInfoList">
882
- <documentation>Get info</documentation>
883
- <input message="typens:listrakRemarketingInfoListRequest"/>
884
- <output message="typens:listrakRemarketingInfoListResponse"/>
885
- </operation>
886
- <operation name="listrakRemarketingReviewList">
887
- <documentation>Get review list</documentation>
888
- <input message="typens:listrakRemarketingReviewListRequest"/>
889
- <output message="typens:listrakRemarketingReviewListResponse"/>
890
- </operation>
891
- <operation name="listrakRemarketingRatingSummaryList">
892
- <documentation>Get rating summary list</documentation>
893
- <input message="typens:listrakRemarketingRatingSummaryListRequest"/>
894
- <output message="typens:listrakRemarketingRatingSummaryListResponse"/>
895
- </operation>
896
- <operation name="listrakRemarketingReviewUpdateList">
897
- <documentation>Get review list</documentation>
898
- <input message="typens:listrakRemarketingReviewUpdateListRequest"/>
899
- <output message="typens:listrakRemarketingReviewUpdateListResponse"/>
900
- </operation>
901
- <operation name="listrakRemarketingRatingSummaryUpdateList">
902
- <documentation>Get rating summary list</documentation>
903
- <input message="typens:listrakRemarketingRatingSummaryUpdateListRequest"/>
904
- <output message="typens:listrakRemarketingRatingSummaryUpdateListResponse"/>
905
- </operation>
906
- <operation name="listrakRemarketingReviewDeleteList">
907
- <documentation>Get deleted reviews list</documentation>
908
- <input message="typens:listrakRemarketingReviewDeleteListRequest"/>
909
- <output message="typens:listrakRemarketingReviewDeleteListResponse"/>
910
- </operation>
911
- <operation name="listrakRemarketingReviewUpdatePurge">
912
- <documentation>Get deleted reviews list</documentation>
913
- <input message="typens:listrakRemarketingReviewUpdatePurgeRequest"/>
914
- <output message="typens:listrakRemarketingReviewUpdatePurgeResponse"/>
915
- </operation>
916
- </portType>
917
- <bindin