Version Notes
Added support for Magento product reviews.
Download this release
Release Info
Developer | Magento Core Team |
Extension | Listrak_Remarketing |
Version | 1.1.4 |
Comparing to | |
See all releases |
Code changes from version 1.1.3 to 1.1.4
- app/code/community/Listrak/Remarketing/Block/Ecjs.php +3 -0
- app/code/community/Listrak/Remarketing/Block/Modal.php +34 -31
- app/code/community/Listrak/Remarketing/Helper/Data.php +18 -0
- app/code/community/Listrak/Remarketing/Helper/Review/Update.php +40 -0
- app/code/community/Listrak/Remarketing/Model/Abandonedcart/Api.php +2 -1
- app/code/community/Listrak/Remarketing/Model/Apiextension/Api.php +222 -207
- app/code/community/Listrak/Remarketing/Model/Click.php +32 -32
- app/code/community/Listrak/Remarketing/Model/Click/Api.php +1 -0
- app/code/community/Listrak/Remarketing/Model/Log/Api.php +1 -2
- app/code/community/Listrak/Remarketing/Model/Mysql4/Abandonedcart.php +60 -60
- app/code/community/Listrak/Remarketing/Model/Mysql4/Review/Update.php +20 -0
- app/code/community/Listrak/Remarketing/Model/Mysql4/Review/Update/Collection.php +61 -0
- app/code/community/Listrak/Remarketing/Model/Observer.php +73 -31
- app/code/community/Listrak/Remarketing/Model/Review/Update.php +48 -0
- app/code/community/Listrak/Remarketing/Model/Review/Update/Api.php +242 -0
- app/code/community/Listrak/Remarketing/Model/Review/Update/Api/V2.php +9 -0
- app/code/community/Listrak/Remarketing/controllers/Adminhtml/AbandonedcartreportController.php +1 -1
- app/code/community/Listrak/Remarketing/controllers/Adminhtml/EmailcaptureController.php +1 -1
- app/code/community/Listrak/Remarketing/etc/api.xml +40 -0
- app/code/community/Listrak/Remarketing/etc/config.xml +44 -1
- app/code/community/Listrak/Remarketing/etc/system.xml +129 -101
- app/code/community/Listrak/Remarketing/etc/wsdl.xml +240 -0
- app/code/community/Listrak/Remarketing/sql/listrak_remarketing_setup/mysql4-upgrade-1.1.3-1.1.4.php +28 -0
- package.xml +16 -18
app/code/community/Listrak/Remarketing/Block/Ecjs.php
CHANGED
@@ -54,6 +54,9 @@ class Listrak_Remarketing_Block_Ecjs extends Mage_Core_Block_Text
|
|
54 |
|
55 |
protected function _toHtml()
|
56 |
{
|
|
|
|
|
|
|
57 |
$collections = Mage::getModel('listrak/emailcapture')->getCollection()->addFieldToFilter('page', $this->getMatchingPages());
|
58 |
|
59 |
if($collections && $collections->count()) {
|
54 |
|
55 |
protected function _toHtml()
|
56 |
{
|
57 |
+
if (!Mage::helper('remarketing')->coreEnabled())
|
58 |
+
return "";
|
59 |
+
|
60 |
$collections = Mage::getModel('listrak/emailcapture')->getCollection()->addFieldToFilter('page', $this->getMatchingPages());
|
61 |
|
62 |
if($collections && $collections->count()) {
|
app/code/community/Listrak/Remarketing/Block/Modal.php
CHANGED
@@ -1,31 +1,34 @@
|
|
1 |
-
<?php
|
2 |
-
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
-
// © 2011 Listrak, Inc.
|
4 |
-
|
5 |
-
class Listrak_Remarketing_Block_Modal extends Mage_Core_Block_Text
|
6 |
-
{
|
7 |
-
|
8 |
-
public function getPageName()
|
9 |
-
{
|
10 |
-
return $this->_getData('page_name');
|
11 |
-
}
|
12 |
-
|
13 |
-
protected function _toHtml()
|
14 |
-
{
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
'
|
24 |
-
|
25 |
-
'
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
}
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// © 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Block_Modal extends Mage_Core_Block_Text
|
6 |
+
{
|
7 |
+
|
8 |
+
public function getPageName()
|
9 |
+
{
|
10 |
+
return $this->_getData('page_name');
|
11 |
+
}
|
12 |
+
|
13 |
+
protected function _toHtml()
|
14 |
+
{
|
15 |
+
if (!Mage::helper("remarketing")->coreEnabled())
|
16 |
+
return "";
|
17 |
+
|
18 |
+
$merchantID = Mage::getStoreConfig('remarketing/modal/listrakMerchantID');
|
19 |
+
if(!Mage::getStoreConfig('remarketing/modal/enabled') || strlen(Mage::getStoreConfig('remarketing/modal/scriptLocation')) < 1 || strlen(trim($merchantID)) < 12) {
|
20 |
+
return "";
|
21 |
+
}
|
22 |
+
|
23 |
+
return '<script type="text/javascript">' .
|
24 |
+
'var biJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");' .
|
25 |
+
'document.write(unescape("%3Cscript src=\'" + biJsHost + "'. Mage::getStoreConfig('remarketing/modal/scriptLocation') .'?m='. $merchantID .'&v=1\' type=\'text/javascript\'%3E%3C/script%3E"));' .
|
26 |
+
'</script>'.
|
27 |
+
'<script type="text/javascript">'.
|
28 |
+
'var _mlm = setInterval(function() { '.
|
29 |
+
'if(!window.jQuery) { return; }'.
|
30 |
+
'clearInterval(_mlm);'.
|
31 |
+
'jQuery(document).bind("ltkmodal.show", function() { if(typeof ecjsInit === "function") { ecjsInit(); } }); }, 100);'.
|
32 |
+
'</script>';
|
33 |
+
}
|
34 |
+
}
|
app/code/community/Listrak/Remarketing/Helper/Data.php
CHANGED
@@ -29,5 +29,23 @@ class Listrak_Remarketing_Helper_Data extends Mage_Core_Helper_Abstract
|
|
29 |
public function checkSetupStatus() {
|
30 |
return Mage::getStoreConfig('remarketing/config/account_created');
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
|
29 |
public function checkSetupStatus() {
|
30 |
return Mage::getStoreConfig('remarketing/config/account_created');
|
31 |
}
|
32 |
+
|
33 |
+
public function coreEnabled() {
|
34 |
+
return Mage::getStoreConfig('remarketing/modules/core');
|
35 |
+
}
|
36 |
+
|
37 |
+
public function reviewsEnabled() {
|
38 |
+
return Mage::getStoreConfig('remarketing/modules/reviews');
|
39 |
+
}
|
40 |
+
|
41 |
+
public function requireCoreEnabled() {
|
42 |
+
if (!$this->coreEnabled())
|
43 |
+
throw new Exception('Listrak core functionality has been turned off in the System Configuration.');
|
44 |
+
}
|
45 |
+
|
46 |
+
public function requireReviewsEnabled() {
|
47 |
+
if (!$this->reviewsEnabled())
|
48 |
+
throw new Exception('Listrak reviews API has been turned off in the System Configuration.');
|
49 |
+
}
|
50 |
}
|
51 |
|
app/code/community/Listrak/Remarketing/Helper/Review/Update.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Helper_Review_Update extends Mage_Core_Helper_Abstract
|
6 |
+
{
|
7 |
+
public function getReviewListCollection($storeId) {
|
8 |
+
$collection = Mage::getModel('review/review')
|
9 |
+
->getCollection()
|
10 |
+
->addStoreFilter($storeId);
|
11 |
+
|
12 |
+
$collection
|
13 |
+
->getSelect()
|
14 |
+
->joinLeft(
|
15 |
+
array('updatetime' => Mage::getModel('listrak/review_update')->getReviewUpdateCollection()->getSelect()),
|
16 |
+
"main_table.review_id = updatetime.review_id",
|
17 |
+
array("updatetime.update_id", "updatetime.updated_at")
|
18 |
+
)
|
19 |
+
->joinLeft(array('employee' => Mage::getSingleton('core/resource')->getTableName('customer/entity')), 'detail.customer_id = employee.entity_id', array('employee.email'));
|
20 |
+
|
21 |
+
return $collection;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function getRatingSummaryListCollection($storeId) {
|
25 |
+
$collection = Mage::getModel('review/review_summary')
|
26 |
+
->getCollection();
|
27 |
+
|
28 |
+
$collection->getSelect()
|
29 |
+
->joinLeft(
|
30 |
+
array('updatetime' => Mage::getModel('listrak/review_update')->getRatingSummaryUpdateCollection()->getSelect()),
|
31 |
+
"review_entity_summary.primary_id = updatetime.rating_summary_id AND review_entity_summary.store_id = updatetime.store_id",
|
32 |
+
array("updatetime.update_id", "updatetime.updated_at")
|
33 |
+
)
|
34 |
+
->where('review_entity_summary.store_id = ?', $storeId);
|
35 |
+
|
36 |
+
return $collection;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
?>
|
app/code/community/Listrak/Remarketing/Model/Abandonedcart/Api.php
CHANGED
@@ -5,7 +5,8 @@
|
|
5 |
class Listrak_Remarketing_Model_Abandonedcart_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage, $page) {
|
8 |
-
|
|
|
9 |
if ($startDate === NULL || !strtotime($startDate)) {
|
10 |
$this->_fault('incorrect_date');
|
11 |
}
|
5 |
class Listrak_Remarketing_Model_Abandonedcart_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage, $page) {
|
8 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
9 |
+
|
10 |
if ($startDate === NULL || !strtotime($startDate)) {
|
11 |
$this->_fault('incorrect_date');
|
12 |
}
|
app/code/community/Listrak/Remarketing/Model/Apiextension/Api.php
CHANGED
@@ -1,208 +1,223 @@
|
|
1 |
-
<?php
|
2 |
-
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
-
// © 2011 Listrak, Inc.
|
4 |
-
|
5 |
-
class Listrak_Remarketing_Model_Apiextension_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
-
|
7 |
-
public function products($storeId = 1, $perPage = 50, $page = 1) {
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
->
|
12 |
-
->
|
13 |
-
->
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
->
|
19 |
-
->
|
20 |
-
->
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
'
|
31 |
-
'
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
$
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
$
|
63 |
-
->
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
$
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
$
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
$
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
$
|
129 |
-
}
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
$
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
'
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
$
|
167 |
-
$
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
$
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
$
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
$
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// © 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Apiextension_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
+
|
7 |
+
public function products($storeId = 1, $perPage = 50, $page = 1) {
|
8 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
9 |
+
|
10 |
+
$collection = Mage::getModel('catalog/product')->getCollection()
|
11 |
+
->addStoreFilter($storeId)
|
12 |
+
->addAttributeToSelect('*')
|
13 |
+
->addFieldToFilter('type_id', array('neq'=>'configurable'))
|
14 |
+
->setPageSize($perPage)
|
15 |
+
->setCurPage($page);
|
16 |
+
|
17 |
+
$subquery = Mage::getSingleton('core/resource')
|
18 |
+
->getConnection('core_read')
|
19 |
+
->select()
|
20 |
+
->from($collection->getTable('catalog/product_super_link'), array('product_id', 'parent_id'))
|
21 |
+
->group('product_id')
|
22 |
+
->having('COUNT(*) = 1');
|
23 |
+
|
24 |
+
$collection->getSelect()
|
25 |
+
->joinLeft( array('psl'=>$subquery), 'e.entity_id = psl.product_id', array())
|
26 |
+
->joinLeft( array('pp'=>$collection->getTable('catalog/product')), 'psl.parent_id = pp.entity_id', array('parent_id' => 'pp.entity_id', 'parent_sku' => 'pp.sku'));
|
27 |
+
|
28 |
+
$result = array();
|
29 |
+
$productInfo = array('entity_id' => '', 'sku' => '', 'name' => '', 'price' => '',
|
30 |
+
'special_price' => '', 'special_from_date' => '', 'special_to_date' => '',
|
31 |
+
'cost' => '', 'description' => '', 'short_description' => '', 'weight' => '',
|
32 |
+
'url_key' => '', 'url_path' => '', 'image' => '', 'small_image' => '', 'thumbnail' => '',
|
33 |
+
'parent_id' => '', 'parent_sku' => '');
|
34 |
+
|
35 |
+
foreach ($collection as $product) {
|
36 |
+
$item = array_intersect_key($product->toArray(), $productInfo);
|
37 |
+
$result[] = $item;
|
38 |
+
}
|
39 |
+
|
40 |
+
return $result;
|
41 |
+
}
|
42 |
+
|
43 |
+
public function subscribers($storeId = 1, $startDate = NULL, $perPage = 50, $page = 1) {
|
44 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
45 |
+
|
46 |
+
if ($startDate === NULL || !strtotime($startDate)) {
|
47 |
+
$this->_fault('incorrect_date');
|
48 |
+
}
|
49 |
+
|
50 |
+
$result = array();
|
51 |
+
|
52 |
+
$collection = Mage::getModel("listrak/apiextension")->getResource()->subscribers($storeId, $startDate, $perPage, $page);
|
53 |
+
|
54 |
+
foreach($collection as $item) {
|
55 |
+
$result[] = $item;
|
56 |
+
}
|
57 |
+
|
58 |
+
return $result;
|
59 |
+
}
|
60 |
+
|
61 |
+
public function subscribersPurge($endDate = NULL) {
|
62 |
+
if ($endDate === NULL || !strtotime($endDate)) {
|
63 |
+
$this->_fault('incorrect_date');
|
64 |
+
}
|
65 |
+
|
66 |
+
$collection = Mage::getModel("listrak/subscriberupdate")->getCollection()
|
67 |
+
->addFieldToFilter('updated_at', array('lt' => $endDate));
|
68 |
+
|
69 |
+
$count = $collection->count();
|
70 |
+
|
71 |
+
foreach($collection as $c) {
|
72 |
+
$c->delete();
|
73 |
+
}
|
74 |
+
|
75 |
+
return $count;
|
76 |
+
}
|
77 |
+
|
78 |
+
public function customers($storeId = 1, $websiteId = 1, $perPage = 50, $page = 1) {
|
79 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
80 |
+
|
81 |
+
$collection = Mage::getModel('customer/customer')->getCollection()
|
82 |
+
->addFieldToFilter('store_id',$storeId)
|
83 |
+
->addAttributeToSelect('*')
|
84 |
+
->setPageSize($perPage)
|
85 |
+
->setCurPage($page);
|
86 |
+
|
87 |
+
$results = array();
|
88 |
+
$fields = array('entity_id' => '', 'firstname' => '', 'lastname' => '', 'email' => '', 'website_id' => '', 'store_id' => '');
|
89 |
+
|
90 |
+
foreach($collection as $customer) {
|
91 |
+
$item = $customer->toArray();
|
92 |
+
$results[] = array_intersect_key($item, $fields);
|
93 |
+
}
|
94 |
+
|
95 |
+
return $results;
|
96 |
+
}
|
97 |
+
|
98 |
+
public function orderStatus($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1, $filters = NULL) {
|
99 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
100 |
+
|
101 |
+
$collection = Mage::getModel("sales/order")->getCollection()
|
102 |
+
->addFieldToFilter('store_id', $storeId)
|
103 |
+
->addAttributeToSelect('increment_id')
|
104 |
+
->addAttributeToSelect('updated_at')
|
105 |
+
->addAttributeToSelect('status')
|
106 |
+
->addFieldToFilter('updated_at',array('from'=>$startDate, 'to'=>$endDate))
|
107 |
+
->addFieldToFilter('status', array('neq'=>'pending'))
|
108 |
+
->setPageSize($perPage)->setCurPage($page)
|
109 |
+
->setOrder('updated_at', 'ASC');
|
110 |
+
|
111 |
+
if (is_array($filters)) {
|
112 |
+
try {
|
113 |
+
foreach ($filters as $field => $value) {
|
114 |
+
if (isset($this->_attributesMap['order'][$field])) {
|
115 |
+
$field = $this->_attributesMap['order'][$field];
|
116 |
+
}
|
117 |
+
|
118 |
+
$collection->addFieldToFilter($field, $value);
|
119 |
+
}
|
120 |
+
} catch (Mage_Core_Exception $e) {
|
121 |
+
$this->_fault('filters_invalid', $e->getMessage());
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
$results = array();
|
126 |
+
|
127 |
+
foreach($collection as $collectionItem) {
|
128 |
+
$results[] = $collectionItem;
|
129 |
+
}
|
130 |
+
|
131 |
+
return $results;
|
132 |
+
}
|
133 |
+
|
134 |
+
public function orders($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1) {
|
135 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
136 |
+
|
137 |
+
if ($startDate === NULL || !strtotime($startDate)) {
|
138 |
+
$this->_fault('incorrect_date');
|
139 |
+
}
|
140 |
+
|
141 |
+
if ($endDate === NULL || !strtotime($endDate)) {
|
142 |
+
$this->_fault('incorrect_date');
|
143 |
+
}
|
144 |
+
|
145 |
+
$collection = Mage::getModel("sales/order")->getCollection()
|
146 |
+
->addAttributeToSelect('increment_id')
|
147 |
+
->addFieldToFilter('created_at',array('from'=>$startDate, 'to'=>$endDate))
|
148 |
+
->setPageSize($perPage)->setCurPage($page)
|
149 |
+
->addFieldToFilter('store_id', $storeId)
|
150 |
+
->setOrder('created_at', 'ASC');
|
151 |
+
|
152 |
+
|
153 |
+
$apiModel = Mage::getModel("sales/order_api");
|
154 |
+
|
155 |
+
$results = array();
|
156 |
+
|
157 |
+
$info_fields = array('created_at'=>'', 'status'=>'', 'customer_firstname'=>'', 'customer_lastname'=>'',
|
158 |
+
'customer_email'=>'', 'order_id'=>'', 'subtotal'=>'', 'tax_amount'=>'', 'grand_total'=>'',
|
159 |
+
'shipping_amount'=>'', 'billing_firstname'=>'');
|
160 |
+
|
161 |
+
$address_fields = array('firstname' => '', 'lastname' => '', 'company' => '', 'address1' => '',
|
162 |
+
'address2' => '', 'city' => '', 'region' => '', 'postcode' => '', 'country' => '');
|
163 |
+
|
164 |
+
foreach($collection as $collectionItem) {
|
165 |
+
$res = array();
|
166 |
+
$item = $apiModel->info($collectionItem->getIncrementId());
|
167 |
+
$res["info"] = array_intersect_key($item, $info_fields);
|
168 |
+
$res["info"]["order_id"] = $collectionItem->getIncrementId();
|
169 |
+
$res["shipping_address"] = array_intersect_key($item["shipping_address"], $address_fields);
|
170 |
+
$res["billing_address"] = array_intersect_key($item["billing_address"], $address_fields);
|
171 |
+
$res["product"] = array();
|
172 |
+
foreach($item["items"] as $orderItem) {
|
173 |
+
if($orderItem["product_type"] != "configurable")
|
174 |
+
$res["product"][] = $orderItem;
|
175 |
+
}
|
176 |
+
$res["session"] = Mage::getModel("listrak/session")->load($item["quote_id"], 'quote_id');
|
177 |
+
$results[] = $res;
|
178 |
+
}
|
179 |
+
|
180 |
+
return $results;
|
181 |
+
}
|
182 |
+
|
183 |
+
public function info() {
|
184 |
+
$result = array();
|
185 |
+
$result["magentoVersion"] = Mage::getVersion();
|
186 |
+
$result["listrakSettings"] = array(
|
187 |
+
"coreEnabled" => Mage::helper('remarketing')->coreEnabled() ? "true" : "false",
|
188 |
+
"reviewsApiEnabled" => Mage::helper('remarketing')->reviewsEnabled() ? "true" : "false"
|
189 |
+
);
|
190 |
+
$result["ini"] = array();
|
191 |
+
|
192 |
+
$subModel = Mage::getModel("newsletter/subscriber");
|
193 |
+
$orderModel = Mage::getModel("sales/order");
|
194 |
+
$productModel = Mage::getModel('catalog/product');
|
195 |
+
|
196 |
+
$result["classes"] = get_class($subModel) .','. get_class($orderModel) .','. get_class($orderModel->getCollection()) .','.
|
197 |
+
get_class($productModel) .','. get_class($productModel->getCollection());
|
198 |
+
|
199 |
+
$ra = Mage::getSingleton('core/resource')->getConnection('core_read');
|
200 |
+
$numSessions = $ra->fetchRow("select count(*) as c from " . Mage::getModel("listrak/session")->getResource()->getTable("listrak/session"));
|
201 |
+
$numSubUpdates = $ra->fetchRow("select count(*) as c from " . Mage::getModel("listrak/subscriberupdate")->getResource()->getTable("listrak/subscriber_update"));
|
202 |
+
$numClicks = $ra->fetchRow("select count(*) as c from " . Mage::getModel("listrak/click")->getResource()->getTable("listrak/click"));
|
203 |
+
|
204 |
+
$result["counts"] = $numSessions['c'] .','. $numSubUpdates['c'] .','. $numClicks['c'];
|
205 |
+
|
206 |
+
$result["modules"] = array();
|
207 |
+
$modules = (array)Mage::getConfig()->getNode('modules')->children();
|
208 |
+
|
209 |
+
foreach($modules as $key => $value) {
|
210 |
+
$valueArray = $value->asCanonicalArray();
|
211 |
+
$result["modules"][] = "name=$key, version=" . $valueArray["version"] .", isActive=" . $valueArray["active"];
|
212 |
+
}
|
213 |
+
|
214 |
+
$ini = array("session.gc_maxlifetime", "session.cookie_lifetime", "session.gc_divisor", "session.gc_probability");
|
215 |
+
|
216 |
+
foreach($ini as $iniParam) {
|
217 |
+
$result["ini"][] = "$iniParam=" . ini_get($iniParam);
|
218 |
+
}
|
219 |
+
|
220 |
+
return $result;
|
221 |
+
}
|
222 |
+
}
|
223 |
|
app/code/community/Listrak/Remarketing/Model/Click.php
CHANGED
@@ -1,33 +1,33 @@
|
|
1 |
-
<?php
|
2 |
-
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
-
// © 2011 Listrak, Inc.
|
4 |
-
|
5 |
-
class Listrak_Remarketing_Model_Click extends Mage_Core_Model_Abstract
|
6 |
-
{
|
7 |
-
public function _construct()
|
8 |
-
{
|
9 |
-
parent::_construct();
|
10 |
-
$this->_init('listrak/click');
|
11 |
-
}
|
12 |
-
|
13 |
-
public function checkForClick() {
|
14 |
-
foreach(Mage::app()->getRequest()->getParams() as $key => $value) {
|
15 |
-
if(stripos($key, 'trk_') !== false) {
|
16 |
-
$this->recordClick();
|
17 |
-
break;
|
18 |
-
}
|
19 |
-
}
|
20 |
-
}
|
21 |
-
|
22 |
-
private function recordClick() {
|
23 |
-
$this->setTokenUid(Mage::helper('remarketing')->gen_uuid());
|
24 |
-
$this->setClickDate(gmdate('Y-m-d H:i:s'));
|
25 |
-
$session = Mage::getSingleton('listrak/session');
|
26 |
-
$session->init();
|
27 |
-
$this->setSessionId($session->getId());
|
28 |
-
$this->setQuerystring(http_build_query(Mage::app()->getRequest()->getParams()));
|
29 |
-
$this->save();
|
30 |
-
|
31 |
-
Mage::getModel('core/cookie')->set('ltktrk', $this->getTokenUid(), TRUE, NULL, NULL, NULL, TRUE);
|
32 |
-
}
|
33 |
}
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// © 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Click extends Mage_Core_Model_Abstract
|
6 |
+
{
|
7 |
+
public function _construct()
|
8 |
+
{
|
9 |
+
parent::_construct();
|
10 |
+
$this->_init('listrak/click');
|
11 |
+
}
|
12 |
+
|
13 |
+
public function checkForClick() {
|
14 |
+
foreach(Mage::app()->getRequest()->getParams() as $key => $value) {
|
15 |
+
if(stripos($key, 'trk_') !== false) {
|
16 |
+
$this->recordClick();
|
17 |
+
break;
|
18 |
+
}
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
private function recordClick() {
|
23 |
+
$this->setTokenUid(Mage::helper('remarketing')->gen_uuid());
|
24 |
+
$this->setClickDate(gmdate('Y-m-d H:i:s'));
|
25 |
+
$session = Mage::getSingleton('listrak/session');
|
26 |
+
$session->init();
|
27 |
+
$this->setSessionId($session->getId());
|
28 |
+
$this->setQuerystring(http_build_query(Mage::app()->getRequest()->getParams()));
|
29 |
+
$this->save();
|
30 |
+
|
31 |
+
Mage::getModel('core/cookie')->set('ltktrk', $this->getTokenUid(), TRUE, NULL, NULL, NULL, TRUE);
|
32 |
+
}
|
33 |
}
|
app/code/community/Listrak/Remarketing/Model/Click/Api.php
CHANGED
@@ -5,6 +5,7 @@
|
|
5 |
class Listrak_Remarketing_Model_Click_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1) {
|
|
|
8 |
|
9 |
if ($startDate === NULL || !strtotime($startDate)) {
|
10 |
$this->_fault('incorrect_date');
|
5 |
class Listrak_Remarketing_Model_Click_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1) {
|
8 |
+
Mage::helper('remarketing')->requireCoreEnabled();
|
9 |
|
10 |
if ($startDate === NULL || !strtotime($startDate)) {
|
11 |
$this->_fault('incorrect_date');
|
app/code/community/Listrak/Remarketing/Model/Log/Api.php
CHANGED
@@ -5,8 +5,7 @@
|
|
5 |
class Listrak_Remarketing_Model_Log_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1, $logTypeId = 0) {
|
8 |
-
|
9 |
-
if ($startDate === NULL || !strtotime($startDate)) {
|
10 |
$this->_fault('incorrect_date');
|
11 |
}
|
12 |
|
5 |
class Listrak_Remarketing_Model_Log_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
|
7 |
public function items($storeId = 1, $startDate = NULL, $endDate = NULL, $perPage = 50, $page = 1, $logTypeId = 0) {
|
8 |
+
if ($startDate === NULL || !strtotime($startDate)) {
|
|
|
9 |
$this->_fault('incorrect_date');
|
10 |
}
|
11 |
|
app/code/community/Listrak/Remarketing/Model/Mysql4/Abandonedcart.php
CHANGED
@@ -1,60 +1,60 @@
|
|
1 |
-
<?php
|
2 |
-
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
-
// © 2011 Listrak, Inc.
|
4 |
-
|
5 |
-
class Listrak_Remarketing_Model_Mysql4_Abandonedcart extends Mage_Core_Model_Mysql4_Abstract
|
6 |
-
{
|
7 |
-
protected $_read;
|
8 |
-
|
9 |
-
protected $_write;
|
10 |
-
|
11 |
-
public function _construct()
|
12 |
-
{
|
13 |
-
$this->_init('listrak/session','id');
|
14 |
-
$this->_read = $this->_getReadAdapter();
|
15 |
-
$this->_write = $this->_getWriteAdapter();
|
16 |
-
}
|
17 |
-
|
18 |
-
protected function _afterLoad(Mage_Core_Model_Abstract $object) {
|
19 |
-
$object->setSession(Mage::getModel("listrak/session")->load($object->getId()));
|
20 |
-
|
21 |
-
$this->loadCart($object);
|
22 |
-
|
23 |
-
return parent::_afterLoad($object);
|
24 |
-
}
|
25 |
-
|
26 |
-
protected function loadCart(Mage_Core_Model_Abstract $object) {
|
27 |
-
$product_fields = array(
|
28 |
-
'entity_id'=>'', 'sku'=>'', 'name'=>'',
|
29 |
-
'special_price' => '', 'special_from_date' => '', 'special_to_date' => '',
|
30 |
-
'cost'=>'', 'description'=>'',
|
31 |
-
'short_description'=>'', 'weight'=>'', 'url_key'=>'', 'url_path'=>'',
|
32 |
-
'image'=>'', 'small_image'=>'', 'thumbnail'=>'', 'qty'=>'');
|
33 |
-
|
34 |
-
$fields = array(
|
35 |
-
'item_id' => 'q.item_id',
|
36 |
-
'quote_id' => 'q.quote_id',
|
37 |
-
'product_id' => 'q.product_id',
|
38 |
-
'qty' => 'q.qty',
|
39 |
-
'price' => 'q.price');
|
40 |
-
|
41 |
-
$products = array();
|
42 |
-
|
43 |
-
$qiSelect = $this->_read->select()
|
44 |
-
->from(array('q' => $this->getTable('sales/quote_item')), $fields)
|
45 |
-
->where('q.quote_id = ?', $object->getQuoteId())
|
46 |
-
->where('q.product_type <> "configurable"');
|
47 |
-
|
48 |
-
$qiResult = $this->_read->fetchAll($qiSelect);
|
49 |
-
|
50 |
-
foreach($qiResult as $qi) {
|
51 |
-
$product = Mage::getModel('catalog/product')->load($qi['product_id']);
|
52 |
-
$qitem = array_intersect_key($product->toArray(),$product_fields);
|
53 |
-
$qitem["qty"] = $qi["qty"];
|
54 |
-
$qitem["price"] = $qi["price"];
|
55 |
-
$products[] = $qitem;
|
56 |
-
}
|
57 |
-
|
58 |
-
$object->setProducts($products);
|
59 |
-
}
|
60 |
-
}
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// © 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Mysql4_Abandonedcart extends Mage_Core_Model_Mysql4_Abstract
|
6 |
+
{
|
7 |
+
protected $_read;
|
8 |
+
|
9 |
+
protected $_write;
|
10 |
+
|
11 |
+
public function _construct()
|
12 |
+
{
|
13 |
+
$this->_init('listrak/session','id');
|
14 |
+
$this->_read = $this->_getReadAdapter();
|
15 |
+
$this->_write = $this->_getWriteAdapter();
|
16 |
+
}
|
17 |
+
|
18 |
+
protected function _afterLoad(Mage_Core_Model_Abstract $object) {
|
19 |
+
$object->setSession(Mage::getModel("listrak/session")->load($object->getId()));
|
20 |
+
|
21 |
+
$this->loadCart($object);
|
22 |
+
|
23 |
+
return parent::_afterLoad($object);
|
24 |
+
}
|
25 |
+
|
26 |
+
protected function loadCart(Mage_Core_Model_Abstract $object) {
|
27 |
+
$product_fields = array(
|
28 |
+
'entity_id'=>'', 'sku'=>'', 'name'=>'',
|
29 |
+
'special_price' => '', 'special_from_date' => '', 'special_to_date' => '',
|
30 |
+
'cost'=>'', 'description'=>'',
|
31 |
+
'short_description'=>'', 'weight'=>'', 'url_key'=>'', 'url_path'=>'',
|
32 |
+
'image'=>'', 'small_image'=>'', 'thumbnail'=>'', 'qty'=>'');
|
33 |
+
|
34 |
+
$fields = array(
|
35 |
+
'item_id' => 'q.item_id',
|
36 |
+
'quote_id' => 'q.quote_id',
|
37 |
+
'product_id' => 'q.product_id',
|
38 |
+
'qty' => 'q.qty',
|
39 |
+
'price' => 'q.price');
|
40 |
+
|
41 |
+
$products = array();
|
42 |
+
|
43 |
+
$qiSelect = $this->_read->select()
|
44 |
+
->from(array('q' => $this->getTable('sales/quote_item')), $fields)
|
45 |
+
->where('q.quote_id = ?', $object->getQuoteId())
|
46 |
+
->where('q.product_type <> "configurable"');
|
47 |
+
|
48 |
+
$qiResult = $this->_read->fetchAll($qiSelect);
|
49 |
+
|
50 |
+
foreach($qiResult as $qi) {
|
51 |
+
$product = Mage::getModel('catalog/product')->load($qi['product_id']);
|
52 |
+
$qitem = array_intersect_key($product->toArray(),$product_fields);
|
53 |
+
$qitem["qty"] = $qi["qty"];
|
54 |
+
$qitem["price"] = $qi["price"];
|
55 |
+
$products[] = $qitem;
|
56 |
+
}
|
57 |
+
|
58 |
+
$object->setProducts($products);
|
59 |
+
}
|
60 |
+
}
|
app/code/community/Listrak/Remarketing/Model/Mysql4/Review/Update.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Mysql4_Review_Update extends Mage_Core_Model_Mysql4_Abstract {
|
6 |
+
|
7 |
+
protected $_read;
|
8 |
+
|
9 |
+
protected $_write;
|
10 |
+
|
11 |
+
protected function _construct()
|
12 |
+
{
|
13 |
+
$this->_init('listrak/review_update', 'update_id');
|
14 |
+
$this->_read = $this->_getReadAdapter();
|
15 |
+
$this->_write = $this->_getWriteAdapter();
|
16 |
+
}
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
?>
|
app/code/community/Listrak/Remarketing/Model/Mysql4/Review/Update/Collection.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Mysql4_Review_Update_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
6 |
+
{
|
7 |
+
protected function _construct() {
|
8 |
+
$this->_init('listrak/review_update');
|
9 |
+
}
|
10 |
+
|
11 |
+
public function productReviewsOnly() {
|
12 |
+
$this->getSelect()
|
13 |
+
->where('entity_id = 1');
|
14 |
+
|
15 |
+
return $this;
|
16 |
+
}
|
17 |
+
|
18 |
+
public function updatedRowsOnly() {
|
19 |
+
$this->getSelect()
|
20 |
+
->where('activity = 1');
|
21 |
+
|
22 |
+
return $this;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function deletedRowsOnly() {
|
26 |
+
$this->getSelect()
|
27 |
+
->where('activity = 2');
|
28 |
+
|
29 |
+
return $this;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getReviewUpdateTime() {
|
33 |
+
$this->productReviewsOnly()
|
34 |
+
->getSelect()
|
35 |
+
->reset(Zend_Db_Select::COLUMNS)
|
36 |
+
->columns("review_id")
|
37 |
+
->columns(array("update_id" => "MAX(update_id)"))
|
38 |
+
->columns(array("updated_at" => "MAX(activity_time)"))
|
39 |
+
->group("main_table.review_id");
|
40 |
+
|
41 |
+
return $this;
|
42 |
+
}
|
43 |
+
|
44 |
+
public function getRatingSummaryUpdateTime() {
|
45 |
+
$this->productReviewsOnly()
|
46 |
+
->getSelect()
|
47 |
+
->reset(Zend_Db_Select::COLUMNS)
|
48 |
+
->columns(array("update_id" => "MAX(update_id)"))
|
49 |
+
->columns(array("updated_at" => "MAX(activity_time)"))
|
50 |
+
->join(
|
51 |
+
array("agg" => Mage::getSingleton('core/resource')->getTableName('review/review_aggregate')),
|
52 |
+
"main_table.entity_pk_value = agg.entity_pk_value AND main_table.entity_id = agg.entity_type",
|
53 |
+
array("rating_summary_id" => "primary_id", "store_id" => "store_id")
|
54 |
+
)
|
55 |
+
->group(array("agg.primary_id", "agg.store_id"));
|
56 |
+
|
57 |
+
return $this;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
?>
|
app/code/community/Listrak/Remarketing/Model/Observer.php
CHANGED
@@ -5,49 +5,55 @@
|
|
5 |
class Listrak_Remarketing_Model_Observer {
|
6 |
|
7 |
public function sessionInit($observer) {
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
18 |
|
19 |
return $this;
|
20 |
}
|
21 |
|
22 |
public function orderPlaced($observer) {
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
32 |
|
33 |
return $this;
|
34 |
}
|
35 |
|
36 |
public function subscriberSaved($observer) {
|
37 |
-
|
38 |
-
|
39 |
-
|
|
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
51 |
|
52 |
return $this;
|
53 |
}
|
@@ -67,7 +73,11 @@ class Listrak_Remarketing_Model_Observer {
|
|
67 |
|
68 |
$msg .= "Purged " . $ab->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " abandoned carts/sessions\n";
|
69 |
$msg .= "Purged " . $cl->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " clicks\n";
|
70 |
-
$msg .= "Purged " . $l->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " log entries";
|
|
|
|
|
|
|
|
|
71 |
Mage::getModel("listrak/log")->addMessage($msg, $storeId);
|
72 |
}
|
73 |
}
|
@@ -78,4 +88,36 @@ class Listrak_Remarketing_Model_Observer {
|
|
78 |
|
79 |
return $this;
|
80 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
5 |
class Listrak_Remarketing_Model_Observer {
|
6 |
|
7 |
public function sessionInit($observer) {
|
8 |
+
if (Mage::helper('remarketing')->coreEnabled()) {
|
9 |
+
try {
|
10 |
+
$session = Mage::getSingleton('listrak/session');
|
11 |
+
$session->init(true);
|
12 |
|
13 |
+
$click = Mage::getModel('listrak/click');
|
14 |
+
$click->checkForClick();
|
15 |
+
}
|
16 |
+
catch(Exception $ex) {
|
17 |
+
Mage::getModel("listrak/log")->addException($ex);
|
18 |
+
}
|
19 |
+
}
|
20 |
|
21 |
return $this;
|
22 |
}
|
23 |
|
24 |
public function orderPlaced($observer) {
|
25 |
+
if (Mage::helper('remarketing')->coreEnabled()) {
|
26 |
+
try {
|
27 |
+
$cs = Mage::getSingleton('core/session');
|
28 |
+
$cs->setIsListrakOrderMade(true);
|
29 |
+
$session = Mage::getSingleton('listrak/session');
|
30 |
+
$session->init();
|
31 |
+
}
|
32 |
+
catch(Exception $ex) {
|
33 |
+
Mage::getModel("listrak/log")->addException($ex);
|
34 |
+
}
|
35 |
+
}
|
36 |
|
37 |
return $this;
|
38 |
}
|
39 |
|
40 |
public function subscriberSaved($observer) {
|
41 |
+
if (Mage::helper('remarketing')->coreEnabled()) {
|
42 |
+
try {
|
43 |
+
$s = $observer->getSubscriber();
|
44 |
+
$su = Mage::getModel("listrak/subscriberupdate")->load($s->getSubscriberId(), 'subscriber_id');
|
45 |
|
46 |
+
if(!$su->getData()) {
|
47 |
+
$su->setSubscriberId($s->getSubscriberId());
|
48 |
+
}
|
49 |
|
50 |
+
$su->setUpdatedAt(gmdate('Y-m-d H:i:s'));
|
51 |
+
$su->save();
|
52 |
+
}
|
53 |
+
catch(Exception $ex) {
|
54 |
+
Mage::getModel("listrak/log")->addException($ex);
|
55 |
+
}
|
56 |
+
}
|
57 |
|
58 |
return $this;
|
59 |
}
|
73 |
|
74 |
$msg .= "Purged " . $ab->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " abandoned carts/sessions\n";
|
75 |
$msg .= "Purged " . $cl->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " clicks\n";
|
76 |
+
$msg .= "Purged " . $l->purge($storeId, gmdate("Y-m-d H:i:s", time() - 604800)) . " log entries\n";
|
77 |
+
|
78 |
+
$revPurged = Mage::getModel("listrak/review_update_api")->reviewUpdatePurge(30);
|
79 |
+
$msg .= "Purged " . $revPurged['count'] . " review update entries";
|
80 |
+
|
81 |
Mage::getModel("listrak/log")->addMessage($msg, $storeId);
|
82 |
}
|
83 |
}
|
88 |
|
89 |
return $this;
|
90 |
}
|
91 |
+
|
92 |
+
public function reviewUpdated($observer) {
|
93 |
+
if (Mage::helper('remarketing')->reviewsEnabled()) {
|
94 |
+
try {
|
95 |
+
$review = $observer->getObject();
|
96 |
+
|
97 |
+
Mage::getModel('listrak/review_update')
|
98 |
+
->markUpdated($review->getReviewId(), $review->getEntityId(), $review->getEntityPkValue());
|
99 |
+
}
|
100 |
+
catch(Exception $ex) {
|
101 |
+
Mage::getModel("listrak/log")->addException($ex);
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
return $this;
|
106 |
+
}
|
107 |
+
|
108 |
+
public function reviewDeleted($observer) {
|
109 |
+
if (Mage::helper('remarketing')->reviewsEnabled()) {
|
110 |
+
try {
|
111 |
+
$review = $observer->getObject();
|
112 |
+
|
113 |
+
Mage::getModel('listrak/review_update')
|
114 |
+
->markDeleted($review->getReviewId(), $review->getEntityId(), $review->getEntityPkValue());
|
115 |
+
}
|
116 |
+
catch(Exception $ex) {
|
117 |
+
Mage::getModel('listrak/log')->addException($ex);
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
return $this;
|
122 |
+
}
|
123 |
}
|
app/code/community/Listrak/Remarketing/Model/Review/Update.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Review_Update extends Mage_Core_Model_Abstract
|
6 |
+
{
|
7 |
+
const ACTIVITYTYPE_UPDATE = 1;
|
8 |
+
const ACTIVITYTYPE_DELETE = 2;
|
9 |
+
|
10 |
+
public function _construct()
|
11 |
+
{
|
12 |
+
parent::_construct();
|
13 |
+
$this->_init('listrak/review_update');
|
14 |
+
}
|
15 |
+
|
16 |
+
public function loadByReviewId($reviewId) {
|
17 |
+
return $this->getCollection()
|
18 |
+
->addFilter('review_id', $reviewId)
|
19 |
+
->getFirstItem();
|
20 |
+
}
|
21 |
+
|
22 |
+
public function getReviewUpdateCollection() {
|
23 |
+
return $this->getCollection()->getReviewUpdateTime();
|
24 |
+
}
|
25 |
+
|
26 |
+
public function getRatingSummaryUpdateCollection() {
|
27 |
+
return $this->getCollection()->getRatingSummaryUpdateTime();
|
28 |
+
}
|
29 |
+
|
30 |
+
public function markUpdated($reviewId, $entityId, $entityPkValue) {
|
31 |
+
$this->mark($reviewId, $entityId, $entityPkValue, self::ACTIVITYTYPE_UPDATE);
|
32 |
+
}
|
33 |
+
|
34 |
+
public function markDeleted($reviewId, $entityId, $entityPkValue) {
|
35 |
+
$this->mark($reviewId, $entityId, $entityPkValue, self::ACTIVITYTYPE_DELETE);
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function mark($reviewId, $entityId, $entityPkValue, $activityType) {
|
39 |
+
$this->setReviewId($reviewId);
|
40 |
+
$this->setEntityId($entityId);
|
41 |
+
$this->setEntityPkValue($entityPkValue);
|
42 |
+
$this->setActivityTime(gmdate('Y-m-d H:i:s'));
|
43 |
+
$this->setActivity($activityType);
|
44 |
+
$this->save();
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
?>
|
app/code/community/Listrak/Remarketing/Model/Review/Update/Api.php
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Review_Update_Api extends Mage_Api_Model_Resource_Abstract {
|
6 |
+
|
7 |
+
protected $_statuses = array();
|
8 |
+
|
9 |
+
protected $_ratings = array();
|
10 |
+
|
11 |
+
protected function getStatuses() {
|
12 |
+
if (sizeof($_statuses) == 0) {
|
13 |
+
foreach(Mage::getModel('review/review')->getStatusCollection()->getItems() as $status)
|
14 |
+
$_statuses[$status->getStatusId()] = $status->getStatusCode();
|
15 |
+
}
|
16 |
+
|
17 |
+
return $_statuses;
|
18 |
+
}
|
19 |
+
|
20 |
+
protected function getRatings() {
|
21 |
+
if (sizeof($_ratings) == 0) {
|
22 |
+
foreach(Mage::getModel('rating/rating')->getResourceCollection()->getItems() as $rating)
|
23 |
+
$_ratings[$rating->getRatingId()] = $rating->getRatingCode();
|
24 |
+
}
|
25 |
+
|
26 |
+
return $_ratings;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function reviewList($storeId, $chunkSize, $startReviewId) {
|
30 |
+
Mage::helper('remarketing')->requireReviewsEnabled();
|
31 |
+
|
32 |
+
$getStoreId = is_numeric($storeId) ? $storeId : 1;
|
33 |
+
$getChunkSize = is_numeric($chunkSize) ? $chunkSize : 50;
|
34 |
+
$fromReviewId = $startReviewId + 1;
|
35 |
+
|
36 |
+
$collection = Mage::helper('remarketing/review_update')->getReviewListCollection($getStoreId);
|
37 |
+
$collection
|
38 |
+
->getSelect()
|
39 |
+
->where("main_table.review_id >= ?", $fromReviewId)
|
40 |
+
->reset(Zend_Db_Select::ORDER)
|
41 |
+
->order('main_table.review_id ASC')
|
42 |
+
->limit($getChunkSize);
|
43 |
+
|
44 |
+
return $this->reviewsFromCollection($getStoreId, $collection);
|
45 |
+
}
|
46 |
+
|
47 |
+
public function reviewUpdateList($storeId, $chunkSize, $startUpdateId) {
|
48 |
+
Mage::helper('remarketing')->requireReviewsEnabled();
|
49 |
+
|
50 |
+
$getStoreId = is_numeric($storeId) ? $storeId : 1;
|
51 |
+
$getChunkSize = is_numeric($chunkSize) ? $chunkSize : 50;
|
52 |
+
$fromUpdateId = $startUpdateId + 1;
|
53 |
+
|
54 |
+
$collection = Mage::helper('remarketing/review_update')->getReviewListCollection($getStoreId);
|
55 |
+
$collection
|
56 |
+
->getSelect()
|
57 |
+
->where("updatetime.update_id >= ?", $fromUpdateId)
|
58 |
+
->reset(Zend_Db_Select::ORDER)
|
59 |
+
->order("updatetime.update_id ASC")
|
60 |
+
->limit($getChunkSize);
|
61 |
+
|
62 |
+
return $this->reviewsFromCollection($getStoreId, $collection);
|
63 |
+
}
|
64 |
+
|
65 |
+
private function reviewsFromCollection($storeId, $reviewCollection) {
|
66 |
+
$statuses = $this->getStatuses();
|
67 |
+
$ratings = $this->getRatings();
|
68 |
+
|
69 |
+
$reviews = array();
|
70 |
+
|
71 |
+
foreach($reviewCollection as $review) {
|
72 |
+
$reviewId = $review->getReviewId();
|
73 |
+
|
74 |
+
$reviewRatings = array();
|
75 |
+
$votesCollection = Mage::getModel('rating/rating_option_vote')
|
76 |
+
->getResourceCollection()
|
77 |
+
->setReviewFilter($reviewId);
|
78 |
+
|
79 |
+
foreach($votesCollection as $vote) {
|
80 |
+
$ratingId = $vote->getRatingId();
|
81 |
+
|
82 |
+
array_push($reviewRatings, array(
|
83 |
+
"rating_id" => $ratingId,
|
84 |
+
"rating_code" => $ratings[$ratingId],
|
85 |
+
"rating" => round($vote->getPercent() / 20, 4)
|
86 |
+
));
|
87 |
+
}
|
88 |
+
|
89 |
+
$overallRatingObj = Mage::getModel('rating/rating')
|
90 |
+
->getReviewSummary($reviewId, false);
|
91 |
+
|
92 |
+
$overallRating = 0;
|
93 |
+
foreach($overallRatingObj as $ratingObj) {
|
94 |
+
if ($ratingObj->getStoreId() == $storeId) {
|
95 |
+
if ($ratingObj->getCount())
|
96 |
+
$overallRating = $ratingObj->getSum() / $ratingObj->getCount();
|
97 |
+
|
98 |
+
break;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
array_push($reviews, array (
|
103 |
+
"update_id" => $review->getUpdateId(),
|
104 |
+
"review_id" => $reviewId,
|
105 |
+
"product_id" => $review->getEntityPkValue(),
|
106 |
+
"title" => $review->getTitle(),
|
107 |
+
"text" => $review->getDetail(),
|
108 |
+
"overall_rating" => round($overallRating / 20, 4),
|
109 |
+
"created_at" => $review->getCreatedAt(),
|
110 |
+
"updated_at" => $review->getUpdatedAt(),
|
111 |
+
"reviewer_name" => $review->getNickname(),
|
112 |
+
"email" => $review->getEmail(),
|
113 |
+
"status_id" => $review->getStatusId(),
|
114 |
+
"status_code" => $statuses[$review->getStatusId()],
|
115 |
+
"ratings" => $reviewRatings
|
116 |
+
));
|
117 |
+
}
|
118 |
+
|
119 |
+
return $reviews;
|
120 |
+
}
|
121 |
+
|
122 |
+
public function ratingSummaryList($storeId, $chunkSize, $startRatingSummaryId) {
|
123 |
+
Mage::helper('remarketing')->requireReviewsEnabled();
|
124 |
+
|
125 |
+
$getStoreId = is_numeric($storeId) ? $storeId : 1;
|
126 |
+
$getChunkSize = is_numeric($chunkSize) ? $chunkSize : 50;
|
127 |
+
$fromRatingSummaryId = $startRatingSummaryId + 1;
|
128 |
+
|
129 |
+
$collection = Mage::helper('remarketing/review_update')->getRatingSummaryListCollection($getStoreId);
|
130 |
+
$collection->getSelect()
|
131 |
+
->where('review_entity_summary.entity_type = ?', 1)
|
132 |
+
->where("review_entity_summary.primary_id >= ?", $fromRatingSummaryId)
|
133 |
+
->order('review_entity_summary.primary_id ASC')
|
134 |
+
->limit($getChunkSize);
|
135 |
+
|
136 |
+
return $this->ratingSummariesFromCollection($getStoreId, $collection);
|
137 |
+
}
|
138 |
+
|
139 |
+
public function ratingSummaryUpdateList($storeId, $chunkSize, $startUpdateId) {
|
140 |
+
Mage::helper('remarketing')->requireReviewsEnabled();
|
141 |
+
|
142 |
+
$getStoreId = is_numeric($storeId) ? $storeId : 1;
|
143 |
+
$getChunkSize = is_numeric($chunkSize) ? $chunkSize : 50;
|
144 |
+
$fromUpdateId = $startUpdateId + 1;
|
145 |
+
|
146 |
+
$collection = Mage::helper('remarketing/review_update')->getRatingSummaryListCollection($getStoreId);
|
147 |
+
$collection->getSelect()
|
148 |
+
->where('review_entity_summary.entity_type = ?', 1)
|
149 |
+
->where("updatetime.update_id >= ?", $fromUpdateId)
|
150 |
+
->order('updatetime.update_id ASC')
|
151 |
+
->limit($getChunkSize);
|
152 |
+
|
153 |
+
return $this->ratingSummariesFromCollection($getStoreId, $collection);
|
154 |
+
}
|
155 |
+
|
156 |
+
private function ratingSummariesFromCollection($storeId, $collection) {
|
157 |
+
$ratingSummaries = array();
|
158 |
+
|
159 |
+
foreach($collection as $ratingSummary) {
|
160 |
+
$productId = $ratingSummary->getEntityPkValue();
|
161 |
+
|
162 |
+
$ratingCollection = Mage::getModel('rating/rating')
|
163 |
+
->getResourceCollection()
|
164 |
+
->setStoreFilter($storeId)
|
165 |
+
->load()
|
166 |
+
->addEntitySummaryToItem($productId, $storeId);
|
167 |
+
|
168 |
+
$ratings = array();
|
169 |
+
foreach($ratingCollection as $rating) {
|
170 |
+
array_push($ratings, array(
|
171 |
+
"rating_id" => $rating->getRatingId(),
|
172 |
+
"rating_code" => $rating->getRatingCode(),
|
173 |
+
"rating" => round($rating->getSummary() / 20, 4)
|
174 |
+
));
|
175 |
+
}
|
176 |
+
|
177 |
+
array_push($ratingSummaries, array(
|
178 |
+
"update_id" => $ratingSummary->getUpdateId(),
|
179 |
+
"rating_summary_id" => $ratingSummary->getPrimaryId(),
|
180 |
+
"product_id" => $productId,
|
181 |
+
"updated_at" => $ratingSummary->getUpdatedAt(),
|
182 |
+
"total_reviews" => $ratingSummary->getReviewsCount(),
|
183 |
+
"rating" => round($ratingSummary->getRatingSummary() / 20, 4),
|
184 |
+
"ratings" => $ratings
|
185 |
+
));
|
186 |
+
}
|
187 |
+
|
188 |
+
return $ratingSummaries;
|
189 |
+
|
190 |
+
}
|
191 |
+
|
192 |
+
public function reviewDeleteList($chunkSize, $startDeleteId) {
|
193 |
+
Mage::helper('remarketing')->requireReviewsEnabled();
|
194 |
+
|
195 |
+
$mageResource = Mage::getSingleton('core/resource');
|
196 |
+
$dbRead = $mageResource->getConnection('core_read');
|
197 |
+
|
198 |
+
$getChunkSize = is_numeric($chunkSize) ? $chunkSize : 50;
|
199 |
+
$fromDeleteId = $startDeleteId + 1;
|
200 |
+
|
201 |
+
$collection = Mage::getModel('listrak/review_update')
|
202 |
+
->getCollection()
|
203 |
+
->productReviewsOnly()
|
204 |
+
->deletedRowsOnly();
|
205 |
+
|
206 |
+
$allReviewIDs = $dbRead
|
207 |
+
->select()
|
208 |
+
->from(array('review' => Mage::getSingleton('core/resource')->getTableName('review/review')), 'review.review_id');
|
209 |
+
|
210 |
+
$collection->getSelect()
|
211 |
+
->where('NOT EXISTS (' . $allReviewIDs->where('main_table.review_id = review.review_id') . ')')
|
212 |
+
->where("update_id >= ?", $fromDeleteId)
|
213 |
+
->limit($getChunkSize);
|
214 |
+
|
215 |
+
$deletedReviews = array();
|
216 |
+
foreach($collection as $deletedReview) {
|
217 |
+
array_push($deletedReviews, array(
|
218 |
+
"delete_id" => $deletedReview->getUpdateId(),
|
219 |
+
"review_id" => $deletedReview->getReviewId()
|
220 |
+
));
|
221 |
+
}
|
222 |
+
|
223 |
+
return $deletedReviews;
|
224 |
+
}
|
225 |
+
|
226 |
+
public function reviewUpdatePurge($purgeBeforeDays) {
|
227 |
+
$mageResource = Mage::getSingleton('core/resource');
|
228 |
+
$dbRead = $mageResource->getConnection('core_read');
|
229 |
+
$dbWrite = $mageResource->getConnection('core_write');
|
230 |
+
|
231 |
+
$doPurgeBeforeDays = is_numeric($purgeBeforeDays) ? $purgeBeforeDays : 30;
|
232 |
+
$purgeBefore = ($doPurgeBeforeDays > 0 ? gmdate('Y-m-d H:i:s', strtotime("-{$doPurgeBeforeDays} days")) : gmdate('Y-m-d H:i:s'));
|
233 |
+
|
234 |
+
$rowsDeleted = $dbWrite->delete($mageResource->getTableName('listrak/review_update'), array('activity_time < ?' => $purgeBefore));
|
235 |
+
|
236 |
+
return array(
|
237 |
+
"count" => $rowsDeleted,
|
238 |
+
"before" => $purgeBefore
|
239 |
+
);
|
240 |
+
}
|
241 |
+
}
|
242 |
+
?>
|
app/code/community/Listrak/Remarketing/Model/Review/Update/Api/V2.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
class Listrak_Remarketing_Model_Review_Update_Api_V2 extends Listrak_Remarketing_Model_Review_Update_Api {
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
?>
|
app/code/community/Listrak/Remarketing/controllers/Adminhtml/AbandonedcartreportController.php
CHANGED
@@ -7,7 +7,7 @@ class Listrak_Remarketing_Adminhtml_AbandonedcartreportController extends Mage_A
|
|
7 |
protected function _initAction()
|
8 |
{
|
9 |
$this->loadLayout()
|
10 |
-
->_setActiveMenu('
|
11 |
return $this;
|
12 |
}
|
13 |
|
7 |
protected function _initAction()
|
8 |
{
|
9 |
$this->loadLayout()
|
10 |
+
->_setActiveMenu('remarketing');
|
11 |
return $this;
|
12 |
}
|
13 |
|
app/code/community/Listrak/Remarketing/controllers/Adminhtml/EmailcaptureController.php
CHANGED
@@ -8,7 +8,7 @@ class Listrak_Remarketing_Adminhtml_EmailCaptureController extends Mage_Adminhtm
|
|
8 |
protected function _initAction()
|
9 |
{
|
10 |
$this->loadLayout()
|
11 |
-
->_setActiveMenu('
|
12 |
->_addBreadcrumb(Mage::helper('adminhtml')->__('Fields Manager'), Mage::helper('adminhtml')->__('Field Manager'));
|
13 |
return $this;
|
14 |
}
|
8 |
protected function _initAction()
|
9 |
{
|
10 |
$this->loadLayout()
|
11 |
+
->_setActiveMenu('remarketing')
|
12 |
->_addBreadcrumb(Mage::helper('adminhtml')->__('Fields Manager'), Mage::helper('adminhtml')->__('Field Manager'));
|
13 |
return $this;
|
14 |
}
|
app/code/community/Listrak/Remarketing/etc/api.xml
CHANGED
@@ -117,6 +117,42 @@
|
|
117 |
</list>
|
118 |
</methods>
|
119 |
</listrak_remarketing_info>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
</resources>
|
121 |
<resources_alias>
|
122 |
<abandonedcart>listrak_remarketing_abandonedcart</abandonedcart>
|
@@ -128,6 +164,8 @@
|
|
128 |
<listraksubscriber>listrak_remarketing_subscriber</listraksubscriber>
|
129 |
<listrakcustomer>listrak_remarketing_customer</listrakcustomer>
|
130 |
<listrakinfo>listrak_remarketing_info</listrakinfo>
|
|
|
|
|
131 |
</resources_alias>
|
132 |
<v2>
|
133 |
<resources_function_prefix>
|
@@ -140,6 +178,8 @@
|
|
140 |
<listraksubscriber>listrakRemarketingSubscriber</listraksubscriber>
|
141 |
<listrakcustomer>listrakRemarketingCustomer</listrakcustomer>
|
142 |
<listrakinfo>listrakRemarketingInfo</listrakinfo>
|
|
|
|
|
143 |
</resources_function_prefix>
|
144 |
</v2>
|
145 |
<faults>
|
117 |
</list>
|
118 |
</methods>
|
119 |
</listrak_remarketing_info>
|
120 |
+
<listrak_remarketing_review translate="title" module="listrak_remarketing">
|
121 |
+
<title>Listrak Remarketing API</title>
|
122 |
+
<model>listrak/review_update_api</model>
|
123 |
+
<methods>
|
124 |
+
<list translate="title" module="listrak_remarketing">
|
125 |
+
<title>Get Review List</title>
|
126 |
+
<method>reviewList</method>
|
127 |
+
</list>
|
128 |
+
<updateList>
|
129 |
+
<title>Get Incremental Update</title>
|
130 |
+
<method>reviewUpdateList</method>
|
131 |
+
</updateList>
|
132 |
+
<deleteList>
|
133 |
+
<title>Get Deleted Reviews</title>
|
134 |
+
<method>reviewDeleteList</method>
|
135 |
+
</deleteList>
|
136 |
+
<updatePurge>
|
137 |
+
<title>Purge Review Update Table</title>
|
138 |
+
<method>reviewUpdatePurge</method>
|
139 |
+
</updatePurge>
|
140 |
+
</methods>
|
141 |
+
</listrak_remarketing_review>
|
142 |
+
<listrak_remarketing_rating_summary translate="title" module="listrak_remarketing">
|
143 |
+
<title>Listrak Remarketing API</title>
|
144 |
+
<model>listrak/review_update_api</model>
|
145 |
+
<methods>
|
146 |
+
<list translate="title" module="listrak_remarketing">
|
147 |
+
<title>Get Rating Summary List</title>
|
148 |
+
<method>ratingSummaryList</method>
|
149 |
+
</list>
|
150 |
+
<updateList>
|
151 |
+
<title>Get Incremental Update</title>
|
152 |
+
<method>ratingSummaryUpdateList</method>
|
153 |
+
</updateList>
|
154 |
+
</methods>
|
155 |
+
</listrak_remarketing_rating_summary>
|
156 |
</resources>
|
157 |
<resources_alias>
|
158 |
<abandonedcart>listrak_remarketing_abandonedcart</abandonedcart>
|
164 |
<listraksubscriber>listrak_remarketing_subscriber</listraksubscriber>
|
165 |
<listrakcustomer>listrak_remarketing_customer</listrakcustomer>
|
166 |
<listrakinfo>listrak_remarketing_info</listrakinfo>
|
167 |
+
<listrakreview>listrak_remarketing_review</listrakreview>
|
168 |
+
<listrakratingsummary>listrak_remarketing_rating_summary</listrakratingsummary>
|
169 |
</resources_alias>
|
170 |
<v2>
|
171 |
<resources_function_prefix>
|
178 |
<listraksubscriber>listrakRemarketingSubscriber</listraksubscriber>
|
179 |
<listrakcustomer>listrakRemarketingCustomer</listrakcustomer>
|
180 |
<listrakinfo>listrakRemarketingInfo</listrakinfo>
|
181 |
+
<listrakreview>listrakRemarketingReview</listrakreview>
|
182 |
+
<listrakratingsummary>listrakRemarketingRatingSummary</listrakratingsummary>
|
183 |
</resources_function_prefix>
|
184 |
</v2>
|
185 |
<faults>
|
app/code/community/Listrak/Remarketing/etc/config.xml
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
<config>
|
8 |
<modules>
|
9 |
<Listrak_Remarketing>
|
10 |
-
<version>1.1.
|
11 |
</Listrak_Remarketing>
|
12 |
</modules>
|
13 |
<frontend>
|
@@ -55,6 +55,24 @@
|
|
55 |
</listrak_remarketing_observer>
|
56 |
</observers>
|
57 |
</newsletter_subscriber_save_after>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
</events>
|
59 |
</frontend>
|
60 |
<global>
|
@@ -84,6 +102,9 @@
|
|
84 |
<subscriber_update>
|
85 |
<table>listrak_remarketing_subscriber_update</table>
|
86 |
</subscriber_update>
|
|
|
|
|
|
|
87 |
</entities>
|
88 |
</listrak_mysql4>
|
89 |
<newsletter>
|
@@ -152,10 +173,32 @@
|
|
152 |
</listrak_remarketing_observer>
|
153 |
</observers>
|
154 |
</admin_user_load_before>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
</events>
|
156 |
</adminhtml>
|
157 |
<default>
|
158 |
<remarketing>
|
|
|
|
|
|
|
|
|
159 |
<subscription>
|
160 |
<signup_success_email>0</signup_success_email>
|
161 |
<unsubscribe_email>0</unsubscribe_email>
|
7 |
<config>
|
8 |
<modules>
|
9 |
<Listrak_Remarketing>
|
10 |
+
<version>1.1.4</version>
|
11 |
</Listrak_Remarketing>
|
12 |
</modules>
|
13 |
<frontend>
|
55 |
</listrak_remarketing_observer>
|
56 |
</observers>
|
57 |
</newsletter_subscriber_save_after>
|
58 |
+
<review_save_commit_after>
|
59 |
+
<observers>
|
60 |
+
<listrak_remarketing_observer>
|
61 |
+
<type>singleton</type>
|
62 |
+
<class>Listrak_Remarketing_Model_Observer</class>
|
63 |
+
<method>reviewUpdated</method>
|
64 |
+
</listrak_remarketing_observer>
|
65 |
+
</observers>
|
66 |
+
</review_save_commit_after>
|
67 |
+
<review_delete_commit_after>
|
68 |
+
<observers>
|
69 |
+
<listrak_remarketing_observer>
|
70 |
+
<type>singleton</type>
|
71 |
+
<class>Listrak_Remarketing_Model_Observer</class>
|
72 |
+
<method>reviewDeleted</method>
|
73 |
+
</listrak_remarketing_observer>
|
74 |
+
</observers>
|
75 |
+
</review_delete_commit_after>
|
76 |
</events>
|
77 |
</frontend>
|
78 |
<global>
|
102 |
<subscriber_update>
|
103 |
<table>listrak_remarketing_subscriber_update</table>
|
104 |
</subscriber_update>
|
105 |
+
<review_update>
|
106 |
+
<table>listrak_remarketing_review_update</table>
|
107 |
+
</review_update>
|
108 |
</entities>
|
109 |
</listrak_mysql4>
|
110 |
<newsletter>
|
173 |
</listrak_remarketing_observer>
|
174 |
</observers>
|
175 |
</admin_user_load_before>
|
176 |
+
<review_save_commit_after>
|
177 |
+
<observers>
|
178 |
+
<listrak_remarketing_observer>
|
179 |
+
<type>singleton</type>
|
180 |
+
<class>Listrak_Remarketing_Model_Observer</class>
|
181 |
+
<method>reviewUpdated</method>
|
182 |
+
</listrak_remarketing_observer>
|
183 |
+
</observers>
|
184 |
+
</review_save_commit_after>
|
185 |
+
<review_delete_commit_after>
|
186 |
+
<observers>
|
187 |
+
<listrak_remarketing_observer>
|
188 |
+
<type>singleton</type>
|
189 |
+
<class>Listrak_Remarketing_Model_Observer</class>
|
190 |
+
<method>reviewDeleted</method>
|
191 |
+
</listrak_remarketing_observer>
|
192 |
+
</observers>
|
193 |
+
</review_delete_commit_after>
|
194 |
</events>
|
195 |
</adminhtml>
|
196 |
<default>
|
197 |
<remarketing>
|
198 |
+
<modules>
|
199 |
+
<core>1</core>
|
200 |
+
<reviews>0</reviews>
|
201 |
+
</modules>
|
202 |
<subscription>
|
203 |
<signup_success_email>0</signup_success_email>
|
204 |
<unsubscribe_email>0</unsubscribe_email>
|
app/code/community/Listrak/Remarketing/etc/system.xml
CHANGED
@@ -1,102 +1,130 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<!--
|
3 |
-
/**
|
4 |
-
* Listrak Remarketing Magento Extension Ver. 1.0.0 - © 2011 Listrak, Inc.
|
5 |
-
*/
|
6 |
-
-->
|
7 |
-
<config>
|
8 |
-
<sections>
|
9 |
-
<remarketing translate="label" module="remarketing">
|
10 |
-
<label>Listrak</label>
|
11 |
-
<tab>customer</tab>
|
12 |
-
<frontend_type>text</frontend_type>
|
13 |
-
<sort_order>100</sort_order>
|
14 |
-
<show_in_default>1</show_in_default>
|
15 |
-
<show_in_website>1</show_in_website>
|
16 |
-
<show_in_store>1</show_in_store>
|
17 |
-
<groups>
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
<
|
47 |
-
<label>
|
48 |
-
<frontend_type>text</frontend_type>
|
49 |
-
<sort_order>2</sort_order>
|
50 |
-
<show_in_default>1</show_in_default>
|
51 |
-
<show_in_website>1</show_in_website>
|
52 |
-
<show_in_store>1</show_in_store>
|
53 |
-
<fields>
|
54 |
-
<
|
55 |
-
<label>
|
56 |
-
<frontend_type>
|
57 |
-
<
|
58 |
-
<
|
59 |
-
<
|
60 |
-
<
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
<
|
84 |
-
<
|
85 |
-
<
|
86 |
-
<
|
87 |
-
<
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
<
|
93 |
-
<
|
94 |
-
<
|
95 |
-
<
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
</config>
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Listrak Remarketing Magento Extension Ver. 1.0.0 - © 2011 Listrak, Inc.
|
5 |
+
*/
|
6 |
+
-->
|
7 |
+
<config>
|
8 |
+
<sections>
|
9 |
+
<remarketing translate="label" module="remarketing">
|
10 |
+
<label>Listrak</label>
|
11 |
+
<tab>customer</tab>
|
12 |
+
<frontend_type>text</frontend_type>
|
13 |
+
<sort_order>100</sort_order>
|
14 |
+
<show_in_default>1</show_in_default>
|
15 |
+
<show_in_website>1</show_in_website>
|
16 |
+
<show_in_store>1</show_in_store>
|
17 |
+
<groups>
|
18 |
+
<modules translate="label">
|
19 |
+
<label>Component Options</label>
|
20 |
+
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>1</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<fields>
|
26 |
+
<core translate="label">
|
27 |
+
<label>Core Functionality</label>
|
28 |
+
<frontend_type>select</frontend_type>
|
29 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
30 |
+
<sort_order>2</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>1</show_in_website>
|
33 |
+
<show_in_store>1</show_in_store>
|
34 |
+
</core>
|
35 |
+
<reviews translate="label">
|
36 |
+
<label>Review API</label>
|
37 |
+
<frontend_type>select</frontend_type>
|
38 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
39 |
+
<sort_order>3</sort_order>
|
40 |
+
<show_in_default>1</show_in_default>
|
41 |
+
<show_in_website>1</show_in_website>
|
42 |
+
<show_in_store>1</show_in_store>
|
43 |
+
</reviews>
|
44 |
+
</fields>
|
45 |
+
</modules>
|
46 |
+
<subscription translate="label">
|
47 |
+
<label>Newsletter Options</label>
|
48 |
+
<frontend_type>text</frontend_type>
|
49 |
+
<sort_order>2</sort_order>
|
50 |
+
<show_in_default>1</show_in_default>
|
51 |
+
<show_in_website>1</show_in_website>
|
52 |
+
<show_in_store>1</show_in_store>
|
53 |
+
<fields>
|
54 |
+
<signup_success_email translate="label">
|
55 |
+
<label>Signup Success Email</label>
|
56 |
+
<frontend_type>select</frontend_type>
|
57 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
58 |
+
<sort_order>2</sort_order>
|
59 |
+
<show_in_default>1</show_in_default>
|
60 |
+
<show_in_website>1</show_in_website>
|
61 |
+
<show_in_store>1</show_in_store>
|
62 |
+
</signup_success_email>
|
63 |
+
<unsubscribe_email translate="label">
|
64 |
+
<label>Unsubscribe Email</label>
|
65 |
+
<frontend_type>select</frontend_type>
|
66 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
67 |
+
<sort_order>3</sort_order>
|
68 |
+
<show_in_default>1</show_in_default>
|
69 |
+
<show_in_website>1</show_in_website>
|
70 |
+
<show_in_store>1</show_in_store>
|
71 |
+
</unsubscribe_email>
|
72 |
+
</fields>
|
73 |
+
</subscription>
|
74 |
+
<modal translate="label">
|
75 |
+
<label>Email Signup Popup</label>
|
76 |
+
<frontend_type>text</frontend_type>
|
77 |
+
<sort_order>3</sort_order>
|
78 |
+
<show_in_default>1</show_in_default>
|
79 |
+
<show_in_website>1</show_in_website>
|
80 |
+
<show_in_store>1</show_in_store>
|
81 |
+
<fields>
|
82 |
+
<enabled translate="label">
|
83 |
+
<label>Enabled</label>
|
84 |
+
<frontend_type>select</frontend_type>
|
85 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
86 |
+
<sort_order>1</sort_order>
|
87 |
+
<show_in_default>1</show_in_default>
|
88 |
+
<show_in_website>1</show_in_website>
|
89 |
+
<show_in_store>1</show_in_store>
|
90 |
+
</enabled>
|
91 |
+
<listrakMerchantID translate="label">
|
92 |
+
<label>Merchant ID</label>
|
93 |
+
<frontend_type>text</frontend_type>
|
94 |
+
<sort_order>2</sort_order>
|
95 |
+
<show_in_default>1</show_in_default>
|
96 |
+
<show_in_website>1</show_in_website>
|
97 |
+
<show_in_store>1</show_in_store>
|
98 |
+
</listrakMerchantID>
|
99 |
+
<scriptLocation translate="label">
|
100 |
+
<label>Script Location</label>
|
101 |
+
<frontend_type>text</frontend_type>
|
102 |
+
<sort_order>3</sort_order>
|
103 |
+
<show_in_default>1</show_in_default>
|
104 |
+
<show_in_website>1</show_in_website>
|
105 |
+
<show_in_store>1</show_in_store>
|
106 |
+
</scriptLocation>
|
107 |
+
</fields>
|
108 |
+
</modal>
|
109 |
+
<abandonedcarts translate="label">
|
110 |
+
<label>Abandoned Carts</label>
|
111 |
+
<frontend_type>text</frontend_type>
|
112 |
+
<sort_order>4</sort_order>
|
113 |
+
<show_in_default>1</show_in_default>
|
114 |
+
<show_in_website>1</show_in_website>
|
115 |
+
<show_in_store>1</show_in_store>
|
116 |
+
<fields>
|
117 |
+
<abandoned_cart_report_timeout translate="label">
|
118 |
+
<label>Abandoned Cart Report Timeout</label>
|
119 |
+
<frontend_type>text</frontend_type>
|
120 |
+
<sort_order>2</sort_order>
|
121 |
+
<show_in_default>1</show_in_default>
|
122 |
+
<show_in_website>1</show_in_website>
|
123 |
+
<show_in_store>1</show_in_store>
|
124 |
+
</abandoned_cart_report_timeout>
|
125 |
+
</fields>
|
126 |
+
</abandonedcarts>
|
127 |
+
</groups>
|
128 |
+
</remarketing>
|
129 |
+
</sections>
|
130 |
</config>
|
app/code/community/Listrak/Remarketing/etc/wsdl.xml
CHANGED
@@ -281,12 +281,117 @@
|
|
281 |
|
282 |
<complexType name="ListrakRemarketingInfoEntity">
|
283 |
<all>
|
|
|
|
|
284 |
<element name="modules" type="typens:ArrayOfString" minOccurs="0"/>
|
285 |
<element name="ini" type="typens:ArrayOfString" minOccurs="0"/>
|
286 |
<element name="classes" type="xsd:string" minOccurs="0"/>
|
287 |
<element name="counts" type="xsd:string" minOccurs="0"/>
|
288 |
</all>
|
289 |
</complexType>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
290 |
</schema>
|
291 |
</types>
|
292 |
<message name="listrakRemarketingAbandonedCartListRequest">
|
@@ -421,6 +526,57 @@
|
|
421 |
<message name="listrakRemarketingInfoListResponse">
|
422 |
<part name="result" type="typens:ListrakRemarketingInfoEntity" />
|
423 |
</message>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
<portType name="{{var wsdl.handler}}PortType">
|
425 |
<operation name="listrakRemarketingAbandonedCartList">
|
426 |
<documentation>Get stores abandoned carts</documentation>
|
@@ -492,6 +648,36 @@
|
|
492 |
<input message="typens:listrakRemarketingInfoListRequest" />
|
493 |
<output message="typens:listrakRemarketingInfoListResponse" />
|
494 |
</operation>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
</portType>
|
496 |
<binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
|
497 |
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
|
@@ -621,6 +807,60 @@
|
|
621 |
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
622 |
</output>
|
623 |
</operation>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
624 |
</binding>
|
625 |
<service name="{{var wsdl.name}}Service">
|
626 |
<port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
|
281 |
|
282 |
<complexType name="ListrakRemarketingInfoEntity">
|
283 |
<all>
|
284 |
+
<element name="magentoVersion" type="xsd:string" minOccurs="0"/>
|
285 |
+
<element name="listrakSettings" type="typens:ListrakRemarketingSettingEntity" minOccurs="0"/>
|
286 |
<element name="modules" type="typens:ArrayOfString" minOccurs="0"/>
|
287 |
<element name="ini" type="typens:ArrayOfString" minOccurs="0"/>
|
288 |
<element name="classes" type="xsd:string" minOccurs="0"/>
|
289 |
<element name="counts" type="xsd:string" minOccurs="0"/>
|
290 |
</all>
|
291 |
</complexType>
|
292 |
+
<complexType name="ListrakRemarketingSettingEntity">
|
293 |
+
<all>
|
294 |
+
<element name="coreEnabled" type="xsd:string" minOccurs="0"/>
|
295 |
+
<element name="reviewsApiEnabled" type="xsd:string" minOccurs="0"/>
|
296 |
+
</all>
|
297 |
+
</complexType>
|
298 |
+
|
299 |
+
<!-- review list / review update list -->
|
300 |
+
<complexType name="ListrakRemarketingReviewListResult">
|
301 |
+
<complexContent>
|
302 |
+
<restriction base="soapenc:Array">
|
303 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListrakRemarketingReviewListItem[]" />
|
304 |
+
</restriction>
|
305 |
+
</complexContent>
|
306 |
+
</complexType>
|
307 |
+
<complexType name="ListrakRemarketingReviewListItem">
|
308 |
+
<all>
|
309 |
+
<element name="update_id" type="xsd:string" minOccurs="0"/>
|
310 |
+
<element name="review_id" type="xsd:string" minOccurs="0"/>
|
311 |
+
<element name="product_id" type="xsd:string" minOccurs="0"/>
|
312 |
+
<element name="title" type="xsd:string" minOccurs="0"/>
|
313 |
+
<element name="text" type="xsd:string" minOccurs="0"/>
|
314 |
+
<element name="overall_rating" type="xsd:string" minOccurs="0"/>
|
315 |
+
<element name="created_at" type="xsd:string" minOccurs="0"/>
|
316 |
+
<element name="updated_at" type="xsd:string" minOccurs="0"/>
|
317 |
+
<element name="reviewer_name" type="xsd:string" minOccurs="0"/>
|
318 |
+
<element name="email" type="xsd:string" minOccurs="0"/>
|
319 |
+
<element name="status_id" type="xsd:string" minOccurs="0"/>
|
320 |
+
<element name="status_code" type="xsd:string" minOccurs="0"/>
|
321 |
+
<element name="ratings" type="typens:ArrayOfListrakRemarketingReviewRating" minOccurs="0"/>
|
322 |
+
</all>
|
323 |
+
</complexType>
|
324 |
+
<complexType name="ArrayOfListrakRemarketingReviewRating">
|
325 |
+
<complexContent>
|
326 |
+
<restriction base="soapenc:Array">
|
327 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListrakRemarketingReviewRatingItem[]" />
|
328 |
+
</restriction>
|
329 |
+
</complexContent>
|
330 |
+
</complexType>
|
331 |
+
<complexType name="ListrakRemarketingReviewRatingItem">
|
332 |
+
<all>
|
333 |
+
<element name="rating_id" type="xsd:string" minOccurs="0"/>
|
334 |
+
<element name="rating_code" type="xsd:string" minOccurs="0"/>
|
335 |
+
<element name="rating" type="xsd:string" minOccurs="0"/>
|
336 |
+
</all>
|
337 |
+
</complexType>
|
338 |
+
|
339 |
+
<!-- rating summary list / rating summary update list -->
|
340 |
+
<complexType name="ListrakRemarketingRatingSummaryListResult">
|
341 |
+
<complexContent>
|
342 |
+
<restriction base="soapenc:Array">
|
343 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListrakRemarketingRatingSummaryItem[]" />
|
344 |
+
</restriction>
|
345 |
+
</complexContent>
|
346 |
+
</complexType>
|
347 |
+
<complexType name="ListrakRemarketingRatingSummaryItem">
|
348 |
+
<all>
|
349 |
+
<element name="update_id" type="xsd:string" minOccurs="0"/>
|
350 |
+
<element name="rating_summary_id" type="xsd:string" minOccurs="0"/>
|
351 |
+
<element name="product_id" type="xsd:string" minOccurs="0"/>
|
352 |
+
<element name="updated_at" type="xsd:string" minOccurs="0"/>
|
353 |
+
<element name="total_reviews" type="xsd:string" minOccurs="0"/>
|
354 |
+
<element name="rating" type="xsd:string" minOccurs="0"/>
|
355 |
+
<element name="ratings" type="typens:ArrayOfListrakRemarketingRatingSummaryAttribute" minOccurs="0"/>
|
356 |
+
</all>
|
357 |
+
</complexType>
|
358 |
+
<complexType name="ArrayOfListrakRemarketingRatingSummaryAttribute">
|
359 |
+
<complexContent>
|
360 |
+
<restriction base="soapenc:Array">
|
361 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListrakRemarketingRatingSummaryAttributeItem[]" />
|
362 |
+
</restriction>
|
363 |
+
</complexContent>
|
364 |
+
</complexType>
|
365 |
+
<complexType name="ListrakRemarketingRatingSummaryAttributeItem">
|
366 |
+
<all>
|
367 |
+
<element name="rating_id" type="xsd:string" minOccurs="0"/>
|
368 |
+
<element name="rating_code" type="xsd:string" minOccurs="0"/>
|
369 |
+
<element name="rating" type="xsd:string" minOccurs="0"/>
|
370 |
+
</all>
|
371 |
+
</complexType>
|
372 |
+
|
373 |
+
<!-- review delete list -->
|
374 |
+
<complexType name="ListrakRemarketingReviewDeleteListResult">
|
375 |
+
<complexContent>
|
376 |
+
<restriction base="soapenc:Array">
|
377 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ListrakRemarketingDeletedReview[]" />
|
378 |
+
</restriction>
|
379 |
+
</complexContent>
|
380 |
+
</complexType>
|
381 |
+
<complexType name="ListrakRemarketingDeletedReview">
|
382 |
+
<all>
|
383 |
+
<element name="delete_id" type="xsd:string" minOccurs="0"/>
|
384 |
+
<element name="review_id" type="xsd:string" minOccurs="0"/>
|
385 |
+
</all>
|
386 |
+
</complexType>
|
387 |
+
|
388 |
+
<!-- review update purge -->
|
389 |
+
<complexType name="ListrakRemarketingReviewUpdatePurgeResult">
|
390 |
+
<all>
|
391 |
+
<element name="count" type="xsd:string" minOccurs="0"/>
|
392 |
+
<element name="before" type="xsd:string" minOccurs="0"/>
|
393 |
+
</all>
|
394 |
+
</complexType>
|
395 |
</schema>
|
396 |
</types>
|
397 |
<message name="listrakRemarketingAbandonedCartListRequest">
|
526 |
<message name="listrakRemarketingInfoListResponse">
|
527 |
<part name="result" type="typens:ListrakRemarketingInfoEntity" />
|
528 |
</message>
|
529 |
+
<message name="listrakRemarketingReviewListRequest">
|
530 |
+
<part name="sessionId" type="xsd:string" />
|
531 |
+
<part name="storeId" type="xsd:string" />
|
532 |
+
<part name="chunkSize" type="xsd:string" />
|
533 |
+
<part name="startReviewId" type="xsd:string" />
|
534 |
+
</message>
|
535 |
+
<message name="listrakRemarketingReviewListResponse">
|
536 |
+
<part name="result" type="typens:ListrakRemarketingReviewListResult" />
|
537 |
+
</message>
|
538 |
+
<message name="listrakRemarketingRatingSummaryListRequest">
|
539 |
+
<part name="sessionId" type="xsd:string" />
|
540 |
+
<part name="storeId" type="xsd:string" />
|
541 |
+
<part name="chunkSize" type="xsd:string" />
|
542 |
+
<part name="startRatingSummaryId" type="xsd:string" />
|
543 |
+
</message>
|
544 |
+
<message name="listrakRemarketingRatingSummaryListResponse">
|
545 |
+
<part name="result" type="typens:ListrakRemarketingRatingSummaryListResult" />
|
546 |
+
</message>
|
547 |
+
<message name="listrakRemarketingReviewUpdateListRequest">
|
548 |
+
<part name="sessionId" type="xsd:string" />
|
549 |
+
<part name="storeId" type="xsd:string" />
|
550 |
+
<part name="chunkSize" type="xsd:string" />
|
551 |
+
<part name="startUpdateId" type="xsd:string" />
|
552 |
+
</message>
|
553 |
+
<message name="listrakRemarketingReviewUpdateListResponse">
|
554 |
+
<part name="result" type="typens:ListrakRemarketingReviewListResult" />
|
555 |
+
</message>
|
556 |
+
<message name="listrakRemarketingRatingSummaryUpdateListRequest">
|
557 |
+
<part name="sessionId" type="xsd:string" />
|
558 |
+
<part name="storeId" type="xsd:string" />
|
559 |
+
<part name="chunkSize" type="xsd:string" />
|
560 |
+
<part name="startUpdateId" type="xsd:string" />
|
561 |
+
</message>
|
562 |
+
<message name="listrakRemarketingRatingSummaryUpdateListResponse">
|
563 |
+
<part name="result" type="typens:ListrakRemarketingRatingSummaryListResult" />
|
564 |
+
</message>
|
565 |
+
<message name="listrakRemarketingReviewDeleteListRequest">
|
566 |
+
<part name="sessionId" type="xsd:string" />
|
567 |
+
<part name="chunkSize" type="xsd:string" />
|
568 |
+
<part name="startDeleteId" type="xsd:string" />
|
569 |
+
</message>
|
570 |
+
<message name="listrakRemarketingReviewDeleteListResponse">
|
571 |
+
<part name="result" type="typens:ListrakRemarketingReviewDeleteListResult" />
|
572 |
+
</message>
|
573 |
+
<message name="listrakRemarketingReviewUpdatePurgeRequest">
|
574 |
+
<part name="sessionId" type="xsd:string" />
|
575 |
+
<part name="purgeBeforeDays" type="xsd:string" />
|
576 |
+
</message>
|
577 |
+
<message name="listrakRemarketingReviewUpdatePurgeResponse">
|
578 |
+
<part name="result" type="typens:ListrakRemarketingReviewUpdatePurgeResult" />
|
579 |
+
</message>
|
580 |
<portType name="{{var wsdl.handler}}PortType">
|
581 |
<operation name="listrakRemarketingAbandonedCartList">
|
582 |
<documentation>Get stores abandoned carts</documentation>
|
648 |
<input message="typens:listrakRemarketingInfoListRequest" />
|
649 |
<output message="typens:listrakRemarketingInfoListResponse" />
|
650 |
</operation>
|
651 |
+
<operation name="listrakRemarketingReviewList">
|
652 |
+
<documentation>Get review list</documentation>
|
653 |
+
<input message="typens:listrakRemarketingReviewListRequest" />
|
654 |
+
<output message="typens:listrakRemarketingReviewListResponse" />
|
655 |
+
</operation>
|
656 |
+
<operation name="listrakRemarketingRatingSummaryList">
|
657 |
+
<documentation>Get rating summary list</documentation>
|
658 |
+
<input message="typens:listrakRemarketingRatingSummaryListRequest" />
|
659 |
+
<output message="typens:listrakRemarketingRatingSummaryListResponse" />
|
660 |
+
</operation>
|
661 |
+
<operation name="listrakRemarketingReviewUpdateList">
|
662 |
+
<documentation>Get review list</documentation>
|
663 |
+
<input message="typens:listrakRemarketingReviewUpdateListRequest" />
|
664 |
+
<output message="typens:listrakRemarketingReviewUpdateListResponse" />
|
665 |
+
</operation>
|
666 |
+
<operation name="listrakRemarketingRatingSummaryUpdateList">
|
667 |
+
<documentation>Get rating summary list</documentation>
|
668 |
+
<input message="typens:listrakRemarketingRatingSummaryUpdateListRequest" />
|
669 |
+
<output message="typens:listrakRemarketingRatingSummaryUpdateListResponse" />
|
670 |
+
</operation>
|
671 |
+
<operation name="listrakRemarketingReviewDeleteList">
|
672 |
+
<documentation>Get deleted reviews list</documentation>
|
673 |
+
<input message="typens:listrakRemarketingReviewDeleteListRequest" />
|
674 |
+
<output message="typens:listrakRemarketingReviewDeleteListResponse" />
|
675 |
+
</operation>
|
676 |
+
<operation name="listrakRemarketingReviewUpdatePurge">
|
677 |
+
<documentation>Get deleted reviews list</documentation>
|
678 |
+
<input message="typens:listrakRemarketingReviewUpdatePurgeRequest" />
|
679 |
+
<output message="typens:listrakRemarketingReviewUpdatePurgeResponse" />
|
680 |
+
</operation>
|
681 |
</portType>
|
682 |
<binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
|
683 |
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
|
807 |
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
808 |
</output>
|
809 |
</operation>
|
810 |
+
<operation name="listrakRemarketingReviewList">
|
811 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
812 |
+
<input>
|
813 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
814 |
+
</input>
|
815 |
+
<output>
|
816 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
817 |
+
</output>
|
818 |
+
</operation>
|
819 |
+
<operation name="listrakRemarketingRatingSummaryList">
|
820 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
821 |
+
<input>
|
822 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
823 |
+
</input>
|
824 |
+
<output>
|
825 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
826 |
+
</output>
|
827 |
+
</operation>
|
828 |
+
<operation name="listrakRemarketingReviewUpdateList">
|
829 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
830 |
+
<input>
|
831 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
832 |
+
</input>
|
833 |
+
<output>
|
834 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
835 |
+
</output>
|
836 |
+
</operation>
|
837 |
+
<operation name="listrakRemarketingRatingSummaryUpdateList">
|
838 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
839 |
+
<input>
|
840 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
841 |
+
</input>
|
842 |
+
<output>
|
843 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
844 |
+
</output>
|
845 |
+
</operation>
|
846 |
+
<operation name="listrakRemarketingReviewDeleteList">
|
847 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
848 |
+
<input>
|
849 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
850 |
+
</input>
|
851 |
+
<output>
|
852 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
853 |
+
</output>
|
854 |
+
</operation>
|
855 |
+
<operation name="listrakRemarketingReviewUpdatePurge">
|
856 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
|
857 |
+
<input>
|
858 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
859 |
+
</input>
|
860 |
+
<output>
|
861 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
|
862 |
+
</output>
|
863 |
+
</operation>
|
864 |
</binding>
|
865 |
<service name="{{var wsdl.name}}Service">
|
866 |
<port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
|
app/code/community/Listrak/Remarketing/sql/listrak_remarketing_setup/mysql4-upgrade-1.1.3-1.1.4.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Listrak Remarketing Magento Extension Ver. 1.0.0
|
3 |
+
// � 2011 Listrak, Inc.
|
4 |
+
|
5 |
+
$installer = $this;
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
$installer->run("
|
9 |
+
DROP TABLE IF EXISTS {$this->getTable('listrak/review_update')};
|
10 |
+
CREATE TABLE {$this->getTable('listrak/review_update')} (
|
11 |
+
`update_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
12 |
+
`review_id` bigint(20) NOT NULL,
|
13 |
+
`entity_id` tinyint(4) NOT NULL,
|
14 |
+
`entity_pk_value` bigint(20) NOT NULL,
|
15 |
+
`activity_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
16 |
+
`activity` tinyint(4) NOT NULL,
|
17 |
+
PRIMARY KEY (`update_id`)
|
18 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
19 |
+
");
|
20 |
+
|
21 |
+
try {
|
22 |
+
Mage::getModel("listrak/log")->addMessage("1.1.3-1.1.4 upgrade");
|
23 |
+
}
|
24 |
+
catch(Exception $e) { }
|
25 |
+
|
26 |
+
$installer->endSetup();
|
27 |
+
|
28 |
+
?>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Listrak_Remarketing</name>
|
4 |
-
<version>1.1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://s1.listrakbi.com/licenses/magento.txt">Listrak EULA</license>
|
7 |
<channel>community</channel>
|
@@ -12,11 +12,11 @@
|
|
12 |
<p>The Listrak extension for Magento enables online merchants to expand their email marketing campaigns beyond typical "batch and blast" into targeted campaigns aimed at specific scenarios and buyer events. The extension covers:</p>
|
13 |

|
14 |
<p>
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
</p>
|
21 |

|
22 |
<p><b>Shopping Cart Abandonment</b><br />
|
@@ -36,23 +36,21 @@ To make sure your marketing list is always current, all newsletter subscribers a
|
|
36 |

|
37 |
<p>Additional Listrak features include:</p>
|
38 |
<ol>
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
</ol>
|
46 |

|
47 |
<p><b>About Listrak</b><br />
|
48 |
Listrak works with online retailers to maximize marketing ROI by helping them reach optimal engagement with their customers. Our focus is on prompting dialog and interaction through email and mobile marketing to increase customer lifetime value.</p></description>
|
49 |
-
<notes>Added support for
|
50 |
-
Added parent product id and sku to product list API method.
|
51 |
-
Fixed duplicate record issue in subscriber list API method.</notes>
|
52 |
<authors><author><name>Listrak</name><user>auto-converted</user><email>magento@listrak.com</email></author></authors>
|
53 |
-
<date>2012-
|
54 |
-
<time>
|
55 |
-
<contents><target name="magecommunity"><dir name="Listrak"><dir name="Remarketing"><dir name="Block"><dir name="Adminhtml"><dir name="Abandonedcartreport"><file name="Grid.php" hash="6c9975250ee0d3318fe1a996e19b554f"/></dir><dir name="Emailcapture"><dir name="Edit"><dir name="Tab"><file name="Form.php" hash="d1b495e77fd135af95457ee7c3f1f21c"/></dir><file name="Form.php" hash="dae25c78913b35bb3ad64da797cd82b4"/><file name="Tabs.php" hash="b7c89cd1e1fae23ed52079c6d63ef4ee"/></dir><file name="Edit.php" hash="6a06c2b0dfb5a0414a642bc0cd3b5461"/><file name="Grid.php" hash="9eca43e603861ce2f24ec21a4d3a5064"/></dir><file name="Abandonedcartreport.php" hash="5c348aeec1c636b39ac037b5abc1875a"/><file name="Emailcapture.php" hash="accf0689467c5446e7605cad41e427b0"/><file name="Notifications.php" hash="dec4ef3882d5d11d738576787d05ec61"/></dir><file name="Ecjs.php" hash="
|
56 |
<compatible/>
|
57 |
<dependencies/>
|
58 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Listrak_Remarketing</name>
|
4 |
+
<version>1.1.4</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://s1.listrakbi.com/licenses/magento.txt">Listrak EULA</license>
|
7 |
<channel>community</channel>
|
12 |
<p>The Listrak extension for Magento enables online merchants to expand their email marketing campaigns beyond typical "batch and blast" into targeted campaigns aimed at specific scenarios and buyer events. The extension covers:</p>
|
13 |

|
14 |
<p>
|
15 |
+
- Shopping Cart Abandonment<br />
|
16 |
+
- Buyertrak - refillable/replenishable order reminders<br />
|
17 |
+
- Customer purchase metrics<br />
|
18 |
+
- Post purchase follow-up campaigns<br />
|
19 |
+
- Newsletter subscriber synchronization<br />
|
20 |
</p>
|
21 |

|
22 |
<p><b>Shopping Cart Abandonment</b><br />
|
36 |

|
37 |
<p>Additional Listrak features include:</p>
|
38 |
<ol>
|
39 |
+
- Advanced segmentation<br />
|
40 |
+
- Dynamic merchandising<br />
|
41 |
+
- Message series or single message<br />
|
42 |
+
- Dynamic content<br />
|
43 |
+
- Multi-path offer testing<br />
|
44 |
+
- Offer suppression and randomization<br />
|
45 |
</ol>
|
46 |

|
47 |
<p><b>About Listrak</b><br />
|
48 |
Listrak works with online retailers to maximize marketing ROI by helping them reach optimal engagement with their customers. Our focus is on prompting dialog and interaction through email and mobile marketing to increase customer lifetime value.</p></description>
|
49 |
+
<notes>Added support for Magento product reviews.</notes>
|
|
|
|
|
50 |
<authors><author><name>Listrak</name><user>auto-converted</user><email>magento@listrak.com</email></author></authors>
|
51 |
+
<date>2012-12-17</date>
|
52 |
+
<time>15:47:20</time>
|
53 |
+
<contents><target name="magecommunity"><dir name="Listrak"><dir name="Remarketing"><dir name="Block"><dir name="Adminhtml"><dir name="Abandonedcartreport"><file name="Grid.php" hash="6c9975250ee0d3318fe1a996e19b554f"/></dir><dir name="Emailcapture"><dir name="Edit"><dir name="Tab"><file name="Form.php" hash="d1b495e77fd135af95457ee7c3f1f21c"/></dir><file name="Form.php" hash="dae25c78913b35bb3ad64da797cd82b4"/><file name="Tabs.php" hash="b7c89cd1e1fae23ed52079c6d63ef4ee"/></dir><file name="Edit.php" hash="6a06c2b0dfb5a0414a642bc0cd3b5461"/><file name="Grid.php" hash="9eca43e603861ce2f24ec21a4d3a5064"/></dir><file name="Abandonedcartreport.php" hash="5c348aeec1c636b39ac037b5abc1875a"/><file name="Emailcapture.php" hash="accf0689467c5446e7605cad41e427b0"/><file name="Notifications.php" hash="dec4ef3882d5d11d738576787d05ec61"/></dir><file name="Ecjs.php" hash="f03a34349994a31feb3ae5f2edcdb6bb"/><file name="Modal.php" hash="d66d74cc8695efd8ef8dc4c15433170e"/></dir><dir name="Helper"><dir name="Review"><file name="Update.php" hash="4418214678ef257817c07d71c7b74eef"/></dir><file name="Data.php" hash="26a1f5a63694ac715727531fe4b1bb30"/></dir><dir name="Model"><dir name="Abandonedcart"><dir name="Api"><file name="V2.php" hash="c7b46e1feab677e41f4f9a3914e415fb"/></dir><file name="Api.php" hash="5bdfa82e2bed90e602c010fa59ccd525"/></dir><dir name="Apiextension"><dir name="Api"><file name="V2.php" hash="ff5a5f68d92c8a790bb00282c30c1378"/></dir><file name="Api.php" hash="55f02bd4afb07a6b13d419647fd333e9"/></dir><dir name="Click"><dir name="Api"><file name="V2.php" hash="510ae6b8032ff54b5f43d94f447f35e2"/></dir><file name="Api.php" hash="cafb4a68915c115cd648512a196cb342"/></dir><dir name="Log"><dir name="Api"><file name="V2.php" hash="ace9ca737ebefd47205886fdef504a05"/></dir><file name="Api.php" hash="62c02694e7bec2a0975572078e81de19"/></dir><dir name="Mysql4"><dir name="Abandonedcart"><file name="Collection.php" hash="fed7e7d3b7dc74b42f21c9599f06b872"/></dir><dir name="Click"><file name="Collection.php" hash="dac93dbb083339bb047d296868cdb597"/></dir><dir name="Emailcapture"><file name="Collection.php" hash="4dbc86c599e6a390e1f8bde7752f09c2"/></dir><dir name="Log"><file name="Collection.php" hash="1765ae33eb74e9593d8266702cfe4160"/></dir><dir name="Review"><dir name="Update"><file name="Collection.php" hash="d9feaf6ff25b1b3612bf03dd57ee8d6c"/></dir><file name="Update.php" hash="ce81fcbaaf52850189feb56ef1247380"/></dir><dir name="Session"><file name="Collection.php" hash="c095fdf0c54184df63ff6dd8636d779e"/></dir><dir name="Subscriberupdate"><file name="Collection.php" hash="1fd68314a80e93f416815273f29bf9f5"/></dir><file name="Abandonedcart.php" hash="627320d084a92ffa9b5c1f3e45687eda"/><file name="Apiextension.php" hash="b243c6feafd1b2401541f96112b9f522"/><file name="Click.php" hash="baabaf95e4d4f7f3fb1a2ac1c1965984"/><file name="Emailcapture.php" hash="b68ee210c3bcec8f2fccef7979b022b7"/><file name="Log.php" hash="e244d19b857ee9d03a7955a30d3f6cf3"/><file name="Session.php" hash="454a2c56529a0db4db3a5b8473952f78"/><file name="Subscriberupdate.php" hash="4957865b4aa8bbdda3a50484d7e49880"/></dir><dir name="Review"><dir name="Update"><dir name="Api"><file name="V2.php" hash="51e0152349088b445e6e6e0ab11315a6"/></dir><file name="Api.php" hash="42a23cfa9ce897ffd40d9d2df9360916"/></dir><file name="Update.php" hash="2ff5b032f20a77ecfb828a29368aecc0"/></dir><file name="Abandonedcart.php" hash="2bd672054843917133e3ac7d941be42c"/><file name="Apiextension.php" hash="1a5964f749523d74c648d6609673fb08"/><file name="Click.php" hash="f5275919f3b677a196cca0b47572edb1"/><file name="Emailcapture.php" hash="4987ceda6dda7ca134736895e3cfed74"/><file name="Log.php" hash="577b2308bdbc531c867c67277d513371"/><file name="Observer.php" hash="92208fb7a6eeab880f4f7281764048eb"/><file name="Session.php" hash="2653ba8c029180fc455a4551fede9515"/><file name="Subscriber.php" hash="7addcff01d1c12e88baad9064a362f2c"/><file name="Subscriberupdate.php" hash="77df791c2d17772345f518ce3b4dab90"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AbandonedcartreportController.php" hash="36cef4591dfd2edee90447649cb767df"/><file name="EmailcaptureController.php" hash="48001875974ad6d83a1e1b5238443859"/></dir><file name="CartController.php" hash="bab8c133100ae8bcd4ccdeb43329370a"/><file name="ConfigController.php" hash="7250d699110107b35fa004833dc3595e"/><file name="EmailController.php" hash="d1706df1448e6bd85826357efd9a22d4"/><file name="TroubleshootingController.php" hash="8e9355a2c91ee3508620fc893aabe050"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0e01a6415641c271f4eb3067419c7f0a"/><file name="api.xml" hash="37986e45324636237565bab6aff95bd6"/><file name="config.xml" hash="d830db358a45a1dd34f0dd226343c97f"/><file name="system.xml" hash="97a11d49780c4362f66b79a1672acc2b"/><file name="wsdl.xml" hash="d6352b50ab97e560b5a46342fe8d68ff"/><file name="wsi.xml" hash="e6fc96537d37c0c688454442d05c637d"/></dir><dir name="sql"><dir name="listrak_remarketing_setup"><file name="mysql4-install-1.0.0.php" hash="9969325db69a8582cd2807343dc1c5bc"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="51d6494a61a2e32907cdc8eaf078274c"/><file name="mysql4-upgrade-1.0.8-1.0.9.php" hash="8c935ec4a7ff8816c1ab1df644c1edf3"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="df4e8464d389d3f0155755c362b5a7ac"/><file name="mysql4-upgrade-1.1.3-1.1.4.php" hash="44de533b51944af71bf2e66f3a1e134c"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="remarketing.xml" hash="3f8da579155772292019871e92d3642a"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="remarketing.xml" hash="44d7027ba447c4aaf0841d32d185ffde"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Listrak_Remarketing.xml" hash="1fc68edb656e220874e64cffaf7f2dbd"/></dir></target></contents>
|
54 |
<compatible/>
|
55 |
<dependencies/>
|
56 |
</package>
|