Version Notes
1.2.0
-------
- New API
1.1.5
-------
- Minor phpcs code style rule fixes
- Remove embedded sign-up form, registration now begins at app.vantageanalytics.com
1.1.4
------
- Bug fix for webhook URL that could be wrong in some circumstances.
1.1.3
------
- Lower batch size for queue processing to shorten time transaction is kept open
1.1.2
------
- Fix notice error about method overridden from base class with missing default argument
1.1.1
------
- Update debug information
1.1.0
------
- Track checkouts from front-end
1.0.12
-------
- Bug fix: set store domain in product URL and images
1.0.11
-------
- Send Dynamic Product Ad events
1.0.10
--------
- Minor bug fix in export, look for PHP_BINARY correctly
1.0.9
-------
- Try to use PHP_BINARY to find the PHP binary
1.0.8
-------
- Look for PHP binaries in more places
1.0.7
-------
- Fork exec export into 2 children processes to avoid long running process with unbounded memory consumption
1.0.6
-------
Set page size on product collection.
Prefetch some related attributes during product and sales order exports.
Send data to vantage during the data gathering phase of the export process instead of after the data gathering phase is done.
1.0.5
-------
Fixed memory leak in export script which could impact large data exports.
1.0.4
-------
New feature: facebook pixel based visitor and conversion tracking.
1.0.3
-------
Minor bug fix, do not send empty array() objects to Vantage Analytics
1.0.2
-------
Stop sending empty sales quotes to Vantage Analytics.
1.0.1
-------
Improved robustness of historical data export process and report historical data export issues to Vantage Analytics.
1.0.0
-------
First stable release.
Release Info
Developer | Brandon Kane |
Extension | VantageAnalytics_Analytics |
Version | 1.2.1 |
Comparing to | |
See all releases |
Code changes from version 1.1.5 to 1.2.1
- app/code/community/VantageAnalytics/Analytics/Helper/Account.php +31 -44
- app/code/community/VantageAnalytics/Analytics/Helper/Queue.php +19 -2
- app/code/community/VantageAnalytics/Analytics/Model/Api/Inline.php +29 -0
- app/code/community/VantageAnalytics/Analytics/Model/Api/RequestQueue.php +12 -0
- app/code/community/VantageAnalytics/Analytics/Model/Cron.php +9 -0
- app/code/community/VantageAnalytics/Analytics/Model/Export/Base.php +46 -7
- app/code/community/VantageAnalytics/Analytics/Model/Export/Store.php +3 -1
- app/code/community/VantageAnalytics/Analytics/Model/Heartbeat.php +4 -0
- app/code/community/VantageAnalytics/Analytics/controllers/Adminhtml/Analytics/VerifyController.php +0 -49
- app/code/community/VantageAnalytics/Analytics/controllers/ExportController.php +232 -0
- app/code/community/VantageAnalytics/Analytics/etc/config.xml +12 -1
- app/code/community/VantageAnalytics/Analytics/etc/system.xml +0 -31
- app/design/frontend/base/default/layout/vantageanalytics_analytics.xml +24 -0
- package.xml +9 -5
@@ -29,11 +29,6 @@ class VantageAnalytics_Analytics_Helper_Account extends Mage_Core_Helper_Abstrac
|
|
29 |
return dirname(Mage::getStoreConfig('vantageanalytics/accountoptions/vantageurl', Mage::app()->getStore())) . '/webhook';
|
30 |
}
|
31 |
|
32 |
-
public function registerAccountUrl()
|
33 |
-
{
|
34 |
-
return dirname($this->vantageUrl()) . '/register';
|
35 |
-
}
|
36 |
-
|
37 |
public function verifyAccountUrl()
|
38 |
{
|
39 |
return dirname($this->vantageUrl()) . '/verify';
|
@@ -93,12 +88,23 @@ class VantageAnalytics_Analytics_Helper_Account extends Mage_Core_Helper_Abstrac
|
|
93 |
Mage::getConfig()->reinit();
|
94 |
}
|
95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
public function getExtensionVersion()
|
97 |
{
|
98 |
return (string) Mage::getConfig()->getNode()->modules->VantageAnalytics_Analytics->version;
|
99 |
}
|
100 |
|
101 |
-
|
102 |
{
|
103 |
$stores = array();
|
104 |
|
@@ -113,50 +119,31 @@ class VantageAnalytics_Analytics_Helper_Account extends Mage_Core_Helper_Abstrac
|
|
113 |
return $stores;
|
114 |
}
|
115 |
|
116 |
-
public function
|
117 |
-
|
118 |
-
$
|
119 |
-
Mage::helper("analytics/log")->logInfo("The account verify URL is ${verifyUrl}");
|
120 |
|
121 |
-
$
|
122 |
-
|
123 |
-
|
124 |
-
curl_setopt($channel, CURLOPT_CUSTOMREQUEST, 'POST');
|
125 |
-
curl_setopt($channel, CURLOPT_RETURNTRANSFER, true);
|
126 |
-
curl_setopt($channel, CURLOPT_CONNECTTIMEOUT_MS, 12200);
|
127 |
-
curl_setopt($channel, CURLOPT_TIMEOUT_MS, 15000);
|
128 |
-
|
129 |
-
$account = array(
|
130 |
-
'username' => $params['username'],
|
131 |
-
'secret' => $params['secret'],
|
132 |
-
'stores' => $this->collectStoreInfo()
|
133 |
-
);
|
134 |
-
|
135 |
-
$body = json_encode($account);
|
136 |
-
curl_setopt($channel, CURLOPT_POSTFIELDS, $body);
|
137 |
-
$headers = array(
|
138 |
-
'Content-type: application/json',
|
139 |
-
'Content-length: ' . strlen($body)
|
140 |
-
);
|
141 |
-
|
142 |
-
|
143 |
-
curl_setopt($channel, CURLOPT_HTTPHEADER, $headers);
|
144 |
-
$result = curl_exec($channel);
|
145 |
|
146 |
-
$
|
147 |
-
|
148 |
-
Mage::throwException("An error occurred. Please try again later.");
|
149 |
}
|
150 |
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
}
|
156 |
|
157 |
-
|
158 |
-
|
|
|
159 |
|
160 |
-
|
|
|
|
|
|
|
161 |
}
|
162 |
}
|
29 |
return dirname(Mage::getStoreConfig('vantageanalytics/accountoptions/vantageurl', Mage::app()->getStore())) . '/webhook';
|
30 |
}
|
31 |
|
|
|
|
|
|
|
|
|
|
|
32 |
public function verifyAccountUrl()
|
33 |
{
|
34 |
return dirname($this->vantageUrl()) . '/verify';
|
88 |
Mage::getConfig()->reinit();
|
89 |
}
|
90 |
|
91 |
+
public function isCronEnabled()
|
92 |
+
{
|
93 |
+
return Mage::getStoreConfig('vantageanalytics/export/cron', Mage::app()->getStore());
|
94 |
+
}
|
95 |
+
|
96 |
+
public function setCronEnabled($enabled)
|
97 |
+
{
|
98 |
+
Mage::getConfig()->saveConfig('vantageanalytics/export/cron', $enabled);
|
99 |
+
Mage::getConfig()->reinit();
|
100 |
+
}
|
101 |
+
|
102 |
public function getExtensionVersion()
|
103 |
{
|
104 |
return (string) Mage::getConfig()->getNode()->modules->VantageAnalytics_Analytics->version;
|
105 |
}
|
106 |
|
107 |
+
public function collectStoreInfo()
|
108 |
{
|
109 |
$stores = array();
|
110 |
|
119 |
return $stores;
|
120 |
}
|
121 |
|
122 |
+
public function hashEquals($safe, $user) {
|
123 |
+
$safeLen = strlen($safe);
|
124 |
+
$userLen = strlen($user);
|
|
|
125 |
|
126 |
+
if ($safeLen == 0) {
|
127 |
+
return false;
|
128 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
|
130 |
+
if ($userLen != $safeLen) {
|
131 |
+
return false;
|
|
|
132 |
}
|
133 |
|
134 |
+
$result = 0;
|
135 |
+
|
136 |
+
for ($i = 0; $i < $userLen; $i++) {
|
137 |
+
$result |= (ord($safe[$i]) ^ ord($user[$i]));
|
138 |
}
|
139 |
|
140 |
+
// They are only identical strings if $result is exactly 0...
|
141 |
+
return $result === 0;
|
142 |
+
}
|
143 |
|
144 |
+
public function verifySecret($providedSecret)
|
145 |
+
{
|
146 |
+
$mySecret = $this->secret();
|
147 |
+
return $this->hashEquals($mySecret, $providedSecret);
|
148 |
}
|
149 |
}
|
@@ -68,9 +68,26 @@ class VantageAnalytics_Analytics_Helper_Queue extends Mage_Core_Helper_Abstract
|
|
68 |
}
|
69 |
}
|
70 |
|
71 |
-
public function
|
72 |
{
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
76 |
public function enqueue($task)
|
68 |
}
|
69 |
}
|
70 |
|
71 |
+
public function receiveMessages($batchSize)
|
72 |
{
|
73 |
+
$queue = $this->getQueue();
|
74 |
+
return $queue->receive($batchSize);
|
75 |
+
}
|
76 |
+
|
77 |
+
public function deleteMessage($message)
|
78 |
+
{
|
79 |
+
$queue = $this->getQueue();
|
80 |
+
$queue->deleteMessage($message);
|
81 |
+
}
|
82 |
+
|
83 |
+
public function getMessageCount()
|
84 |
+
{
|
85 |
+
return $this->getQueue()->count();
|
86 |
+
}
|
87 |
+
|
88 |
+
public function isEmpty()
|
89 |
+
{
|
90 |
+
return $this->getMessageCount() == 0;
|
91 |
}
|
92 |
|
93 |
public function enqueue($task)
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class VantageAnalytics_Analytics_Model_Api_Inline
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
$this->queue = array();
|
8 |
+
$this->metaData = array();
|
9 |
+
}
|
10 |
+
|
11 |
+
public function enqueue($entityMethod, $entity, $isExport=false)
|
12 |
+
{
|
13 |
+
if ($entityMethod == 'progress') {
|
14 |
+
$this->metaData = $entity;
|
15 |
+
} else {
|
16 |
+
$this->queue[] = $entity;
|
17 |
+
}
|
18 |
+
}
|
19 |
+
|
20 |
+
public function isEmpty()
|
21 |
+
{
|
22 |
+
return true;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function processQueue()
|
26 |
+
{
|
27 |
+
return; // no-op
|
28 |
+
}
|
29 |
+
}
|
@@ -21,4 +21,16 @@ class VantageAnalytics_Analytics_Model_Api_RequestQueue
|
|
21 |
'args' => array($entityMethod, $entity)
|
22 |
));
|
23 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
}
|
21 |
'args' => array($entityMethod, $entity)
|
22 |
));
|
23 |
}
|
24 |
+
|
25 |
+
public function processQueue()
|
26 |
+
{
|
27 |
+
$queue = Mage::helper('analytics/queue');
|
28 |
+
return $queue->processQueue();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function isEmpty()
|
32 |
+
{
|
33 |
+
$queue = Mage::helper('analytics/queue');
|
34 |
+
return $queue->isEmpty();
|
35 |
+
}
|
36 |
}
|
@@ -69,8 +69,17 @@ class VantageAnalytics_Analytics_Model_Cron
|
|
69 |
return Mage::helper('analytics/account')->isVerified();
|
70 |
}
|
71 |
|
|
|
|
|
|
|
|
|
|
|
72 |
public function run()
|
73 |
{
|
|
|
|
|
|
|
|
|
74 |
if (!$this->accountIsVerified()) {
|
75 |
$this->log('account verification required or failed. Not running.');
|
76 |
return;
|
69 |
return Mage::helper('analytics/account')->isVerified();
|
70 |
}
|
71 |
|
72 |
+
protected function cronIsEnabled()
|
73 |
+
{
|
74 |
+
return Mage::helper('analytics/account')->isCronEnabled();
|
75 |
+
}
|
76 |
+
|
77 |
public function run()
|
78 |
{
|
79 |
+
if (!$this->cronIsEnabled()) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
if (!$this->accountIsVerified()) {
|
84 |
$this->log('account verification required or failed. Not running.');
|
85 |
return;
|
@@ -103,14 +103,14 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
103 |
}
|
104 |
}
|
105 |
|
106 |
-
|
107 |
{
|
108 |
$transformer = $this->makeTransformer($entity, $store);
|
109 |
$data = $transformer->toVantage();
|
110 |
$this->enqueue($data);
|
111 |
}
|
112 |
|
113 |
-
protected function
|
114 |
{
|
115 |
$this->api->enqueue(
|
116 |
'progress',
|
@@ -119,7 +119,8 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
119 |
'entity_type' => $entity,
|
120 |
'current_page' => $currentPage,
|
121 |
'total_pages' => $totalPages,
|
122 |
-
'page_size' => $pageSize
|
|
|
123 |
),
|
124 |
true
|
125 |
);
|
@@ -134,6 +135,7 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
134 |
return;
|
135 |
}
|
136 |
$totalPages = $collection->getLastPageNumber();
|
|
|
137 |
$entityName = $this->getEntityName();
|
138 |
$currentPage = 0;
|
139 |
$endPage = $currentPage + $numberOfPages;
|
@@ -144,12 +146,13 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
144 |
$maxChildren = 1;
|
145 |
|
146 |
while ($currentPage <= $totalPages) {
|
147 |
-
$this->
|
148 |
$website->getWebsiteId(),
|
149 |
strtolower($entityName),
|
150 |
$currentPage,
|
151 |
$totalPages,
|
152 |
-
$this->pageSize
|
|
|
153 |
);
|
154 |
|
155 |
if ($endPage >= $totalPages) {
|
@@ -177,6 +180,31 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
177 |
}
|
178 |
}
|
179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
public function exportPage($websiteId, $startPage, $endPage)
|
181 |
{
|
182 |
$websites = Mage::app()->getWebsites();
|
@@ -188,6 +216,18 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
188 |
$currentPage = $startPage;
|
189 |
while ($currentPage < $endPage) {
|
190 |
$collection = $this->createCollection($website, $currentPage);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
|
192 |
foreach ($collection as $entity) {
|
193 |
$this->exportEntity($entity, $store);
|
@@ -212,7 +252,6 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
|
|
212 |
|
213 |
protected function processQueue()
|
214 |
{
|
215 |
-
$
|
216 |
-
$queue->processQueue();
|
217 |
}
|
218 |
}
|
103 |
}
|
104 |
}
|
105 |
|
106 |
+
public function exportEntity($entity, $store)
|
107 |
{
|
108 |
$transformer = $this->makeTransformer($entity, $store);
|
109 |
$data = $transformer->toVantage();
|
110 |
$this->enqueue($data);
|
111 |
}
|
112 |
|
113 |
+
protected function _exportMetaData($websiteId, $entity, $currentPage, $totalPages, $pageSize, $totalItems)
|
114 |
{
|
115 |
$this->api->enqueue(
|
116 |
'progress',
|
119 |
'entity_type' => $entity,
|
120 |
'current_page' => $currentPage,
|
121 |
'total_pages' => $totalPages,
|
122 |
+
'page_size' => $pageSize,
|
123 |
+
'total_items' => $totalItems
|
124 |
),
|
125 |
true
|
126 |
);
|
135 |
return;
|
136 |
}
|
137 |
$totalPages = $collection->getLastPageNumber();
|
138 |
+
$totalItems = $collection->getSize();
|
139 |
$entityName = $this->getEntityName();
|
140 |
$currentPage = 0;
|
141 |
$endPage = $currentPage + $numberOfPages;
|
146 |
$maxChildren = 1;
|
147 |
|
148 |
while ($currentPage <= $totalPages) {
|
149 |
+
$this->_exportMetaData(
|
150 |
$website->getWebsiteId(),
|
151 |
strtolower($entityName),
|
152 |
$currentPage,
|
153 |
$totalPages,
|
154 |
+
$this->pageSize,
|
155 |
+
$totalItems
|
156 |
);
|
157 |
|
158 |
if ($endPage >= $totalPages) {
|
180 |
}
|
181 |
}
|
182 |
|
183 |
+
public function exportMetaData($websiteId)
|
184 |
+
{
|
185 |
+
$websites = Mage::app()->getWebsites();
|
186 |
+
foreach ($websites as $website) {
|
187 |
+
if ($websiteId == $website->getWebsiteId()) {
|
188 |
+
$store = $website->getDefaultGroup()->getDefaultStore();
|
189 |
+
Mage::app()->setCurrentStore($store->getStoreId());
|
190 |
+
|
191 |
+
$collection = $this->createCollection($website, 1);
|
192 |
+
$totalPages = $collection->getLastPageNumber();
|
193 |
+
$totalItems = $collection->getSize();
|
194 |
+
$entityName = $this->getEntityName();
|
195 |
+
|
196 |
+
$this->_exportMetaData(
|
197 |
+
$website->getWebsiteId(),
|
198 |
+
strtolower($entityName),
|
199 |
+
$currentPage,
|
200 |
+
$totalPages,
|
201 |
+
$this->pageSize,
|
202 |
+
$totalItems
|
203 |
+
);
|
204 |
+
}
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
public function exportPage($websiteId, $startPage, $endPage)
|
209 |
{
|
210 |
$websites = Mage::app()->getWebsites();
|
216 |
$currentPage = $startPage;
|
217 |
while ($currentPage < $endPage) {
|
218 |
$collection = $this->createCollection($website, $currentPage);
|
219 |
+
$totalPages = $collection->getLastPageNumber();
|
220 |
+
$totalItems = $collection->getSize();
|
221 |
+
$entityName = $this->getEntityName();
|
222 |
+
|
223 |
+
$this->_exportMetaData(
|
224 |
+
$website->getWebsiteId(),
|
225 |
+
strtolower($entityName),
|
226 |
+
$currentPage,
|
227 |
+
$totalPages,
|
228 |
+
$this->pageSize,
|
229 |
+
$totalItems
|
230 |
+
);
|
231 |
|
232 |
foreach ($collection as $entity) {
|
233 |
$this->exportEntity($entity, $store);
|
252 |
|
253 |
protected function processQueue()
|
254 |
{
|
255 |
+
$this->api->processQueue();
|
|
|
256 |
}
|
257 |
}
|
@@ -14,7 +14,9 @@ class VantageAnalytics_Analytics_Model_Export_Store extends VantageAnalytics_Ana
|
|
14 |
|
15 |
public function exportWebsite($website)
|
16 |
{
|
17 |
-
$
|
|
|
|
|
18 |
}
|
19 |
}
|
20 |
|
14 |
|
15 |
public function exportWebsite($website)
|
16 |
{
|
17 |
+
$store = $website->getDefaultGroup()->getDefaultStore();
|
18 |
+
Mage::app()->setCurrentStore($store->getStoreId());
|
19 |
+
$this->exportEntity($website, $store);
|
20 |
}
|
21 |
}
|
22 |
|
@@ -9,6 +9,10 @@ class VantageAnalytics_Analytics_Model_Heartbeat
|
|
9 |
|
10 |
public function send()
|
11 |
{
|
|
|
|
|
|
|
|
|
12 |
if (Mage::helper('analytics/account')->isVerified()) {
|
13 |
$data = VantageAnalytics_Analytics_Model_Debug::factory()->toVantage();
|
14 |
|
9 |
|
10 |
public function send()
|
11 |
{
|
12 |
+
if (!Mage::helper('analytics/account')->isCronEnabled()) {
|
13 |
+
return;
|
14 |
+
}
|
15 |
+
|
16 |
if (Mage::helper('analytics/account')->isVerified()) {
|
17 |
$data = VantageAnalytics_Analytics_Model_Debug::factory()->toVantage();
|
18 |
|
@@ -1,49 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class VantageAnalytics_Analytics_Adminhtml_Analytics_VerifyController extends Mage_Adminhtml_Controller_Action
|
4 |
-
{
|
5 |
-
public function _isAllowed()
|
6 |
-
{
|
7 |
-
return true;
|
8 |
-
}
|
9 |
-
|
10 |
-
public function verifyAction()
|
11 |
-
{
|
12 |
-
$this->_redirectUrl(($this->_getRefererUrl()));
|
13 |
-
|
14 |
-
$username = Mage::helper('analytics/account')->username();
|
15 |
-
$secret = Mage::helper('analytics/account')->secret();
|
16 |
-
if (empty($username) || empty($secret)) {
|
17 |
-
Mage::getSingleton('adminhtml/session')
|
18 |
-
->init('core', 'adminhtml')
|
19 |
-
->addSuccess(
|
20 |
-
'Your Vantage Username or Secret is missing. ' .
|
21 |
-
'Enter them and click Save Config and Verify again.'
|
22 |
-
);
|
23 |
-
}
|
24 |
-
|
25 |
-
try {
|
26 |
-
$response = Mage::helper('analytics/account')->registerAccount(array("username" => $username, "secret" => $secret));
|
27 |
-
} catch (Exception $e) {
|
28 |
-
Mage::getSingleton('adminhtml/session')
|
29 |
-
->init('core', 'adminhtml')
|
30 |
-
->addError($e->getMessage());
|
31 |
-
return;
|
32 |
-
}
|
33 |
-
|
34 |
-
if (!empty($response) && array_key_exists("success", $response)) {
|
35 |
-
Mage::helper('analytics/account')->setIsVerified(1);
|
36 |
-
Mage::getSingleton('adminhtml/session')
|
37 |
-
->init('core', 'adminhtml')
|
38 |
-
->addSuccess('Your Vantage Account is verified.');
|
39 |
-
} else {
|
40 |
-
Mage::getSingleton('adminhtml/session')
|
41 |
-
->init('core', 'adminhtml')
|
42 |
-
->addError(
|
43 |
-
"Account Verfication with Vantage failed. " .
|
44 |
-
"Re-enter the VantageAnalytics username and secret, " .
|
45 |
-
"click Save Config and Verify again."
|
46 |
-
);
|
47 |
-
}
|
48 |
-
}
|
49 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class VantageAnalytics_Analytics_ExportController extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
protected function _verifySignature()
|
6 |
+
{
|
7 |
+
$requestSignature = $this->getRequest()->getParam('signature');
|
8 |
+
|
9 |
+
if (empty($requestSignature)) {
|
10 |
+
$this->_setResponse(
|
11 |
+
array("failure" => "Invalid request."), '401'
|
12 |
+
);
|
13 |
+
return false;
|
14 |
+
}
|
15 |
+
|
16 |
+
$params = $this->getRequest()->getParams();
|
17 |
+
ksort($params);
|
18 |
+
unset($params['signature']);
|
19 |
+
$query = http_build_query($params);
|
20 |
+
|
21 |
+
$secret = Mage::helper('analytics/account')->secret();
|
22 |
+
$mySignature = base64_encode(hash_hmac("sha256", $query, $secret, true));
|
23 |
+
|
24 |
+
if (!Mage::helper('analytics/account')->hashEquals($mySignature, $requestSignature)) {
|
25 |
+
$this->_setResponse(
|
26 |
+
array("failure" => "Invalid request."), '403'
|
27 |
+
);
|
28 |
+
return false;
|
29 |
+
}
|
30 |
+
|
31 |
+
return true;
|
32 |
+
}
|
33 |
+
|
34 |
+
public function storesAction()
|
35 |
+
{
|
36 |
+
if (!$this->_verifySignature()) {
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
|
40 |
+
$websites = Mage::app()->getWebsites();
|
41 |
+
|
42 |
+
$inlineApi = new VantageAnalytics_Analytics_Model_Api_Inline();
|
43 |
+
|
44 |
+
// The first argument is pageSize and is unused here
|
45 |
+
$exporter = new VantageAnalytics_Analytics_Model_Export_Store(5000, $inlineApi);
|
46 |
+
|
47 |
+
foreach ($websites as $website) {
|
48 |
+
$exporter->exportWebsite($website);
|
49 |
+
}
|
50 |
+
|
51 |
+
$results = $inlineApi->queue;
|
52 |
+
|
53 |
+
$this->_setResponse(
|
54 |
+
array(
|
55 |
+
"model" => 'Store',
|
56 |
+
"currentPage" => 1,
|
57 |
+
"totalPages" => 1,
|
58 |
+
"pageSize" => count($websites),
|
59 |
+
"totalItems" => count($websites),
|
60 |
+
"results" => $results,
|
61 |
+
)
|
62 |
+
);
|
63 |
+
}
|
64 |
+
|
65 |
+
public function ordersAction()
|
66 |
+
{
|
67 |
+
return $this->_pageAction('Order');
|
68 |
+
}
|
69 |
+
|
70 |
+
public function productsAction()
|
71 |
+
{
|
72 |
+
return $this->_pageAction('Product');
|
73 |
+
}
|
74 |
+
|
75 |
+
public function customersAction()
|
76 |
+
{
|
77 |
+
return $this->_pageAction('Customer');
|
78 |
+
}
|
79 |
+
|
80 |
+
protected function _setResponse($data, $status='200')
|
81 |
+
{
|
82 |
+
$this->getResponse()
|
83 |
+
->setHeader('HTTP/1.0', $status, true)
|
84 |
+
->setHeader('Content-Type', 'application/json', true)
|
85 |
+
->appendBody(json_encode($data));
|
86 |
+
}
|
87 |
+
|
88 |
+
protected function _pageAction($entityName)
|
89 |
+
{
|
90 |
+
if (!$this->_verifySignature()) {
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
|
94 |
+
if (!in_array($entityName, array('Product', 'Customer', 'Order'))) {
|
95 |
+
$this->_setResponse(
|
96 |
+
array("failure" => "Invalid model provided"), '400'
|
97 |
+
);
|
98 |
+
return;
|
99 |
+
}
|
100 |
+
|
101 |
+
$currentPage = max((int) $this->getRequest()->getParam('page', 1), 0);
|
102 |
+
$pageSize = min((int) $this->getRequest()->getParam('page_size', 50), 250);
|
103 |
+
$websiteId = $this->getRequest()->getParam('store_id', 1);
|
104 |
+
$noResults = $this->getRequest()->getParam('no_results', 0);
|
105 |
+
|
106 |
+
$exportClass = "VantageAnalytics_Analytics_Model_Export_" . $entityName;
|
107 |
+
$inlineApi = new VantageAnalytics_Analytics_Model_Api_Inline();
|
108 |
+
|
109 |
+
$exporter = new $exportClass($pageSize, $inlineApi);
|
110 |
+
|
111 |
+
if ($noResults) {
|
112 |
+
// Only export the metadata (page size, page count, item count)
|
113 |
+
$exporter->exportMetaData($websiteId);
|
114 |
+
} else {
|
115 |
+
// Export metadata and results
|
116 |
+
$exporter->exportPage($websiteId, $currentPage, $currentPage + 1);
|
117 |
+
}
|
118 |
+
|
119 |
+
$results = $inlineApi->queue;
|
120 |
+
$metaData = $inlineApi->metaData;
|
121 |
+
|
122 |
+
$this->_setResponse(
|
123 |
+
array(
|
124 |
+
"model" => $entityName,
|
125 |
+
"currentPage" => $currentPage,
|
126 |
+
"totalPages" => $metaData['total_pages'],
|
127 |
+
"pageSize" => $pageSize,
|
128 |
+
"totalItems" => $metaData['total_items'],
|
129 |
+
"results" => $results,
|
130 |
+
),
|
131 |
+
'200'
|
132 |
+
);
|
133 |
+
}
|
134 |
+
|
135 |
+
public function finalizeAction()
|
136 |
+
{
|
137 |
+
if (!$this->_verifySignature()) {
|
138 |
+
return;
|
139 |
+
}
|
140 |
+
|
141 |
+
Mage::helper('analytics/account')->setExportDone(1);
|
142 |
+
Mage::helper('analytics/account')->setIsVerified(1);
|
143 |
+
|
144 |
+
$this->_setResponse(
|
145 |
+
array(
|
146 |
+
'isExportDone' => Mage::helper('analytics/account')->isExportDone(),
|
147 |
+
'isVerified' => Mage::helper('analytics/account')->isVerified()
|
148 |
+
),
|
149 |
+
200
|
150 |
+
);
|
151 |
+
}
|
152 |
+
|
153 |
+
public function queueAction()
|
154 |
+
{
|
155 |
+
if (!$this->_verifySignature()) {
|
156 |
+
return;
|
157 |
+
}
|
158 |
+
|
159 |
+
$batchSize = (int) $this->getRequest()->getParam('batch_size', 20);
|
160 |
+
|
161 |
+
$messages = array();
|
162 |
+
$queue = Mage::helper('analytics/queue');
|
163 |
+
foreach ($queue->receiveMessages($batchSize) as $message) {
|
164 |
+
$msg = json_decode($message->body, true);
|
165 |
+
$messages[] = $msg;
|
166 |
+
$queue->deleteMessage($message);
|
167 |
+
}
|
168 |
+
|
169 |
+
$this->_setResponse(
|
170 |
+
array(
|
171 |
+
'results' => $messages,
|
172 |
+
'queueSize' => $queue->getMessageCount(),
|
173 |
+
),
|
174 |
+
'200'
|
175 |
+
);
|
176 |
+
}
|
177 |
+
|
178 |
+
public function pixelAction()
|
179 |
+
{
|
180 |
+
if (!$this->_verifySignature()) {
|
181 |
+
return;
|
182 |
+
}
|
183 |
+
|
184 |
+
$storeId = (int) $this->getRequest()->getParam('store_id');
|
185 |
+
$url = $this->getRequest()->getParam('url');
|
186 |
+
|
187 |
+
$store = Mage::app()->getStore($storeId);
|
188 |
+
if ($store) {
|
189 |
+
$config = Mage::app()->getConfig();
|
190 |
+
$config->saveConfig('vantageanalytics/trackingpixel/url', $url, 'stores', $storeId);
|
191 |
+
$this->_setResponse(array('success' => 'store pixel url updated'), '200');
|
192 |
+
} else {
|
193 |
+
$this->_setResponse(array('failure' => 'store not found'), '400');
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
public function infoAction()
|
198 |
+
{
|
199 |
+
if (!$this->_verifySignature()) {
|
200 |
+
return;
|
201 |
+
}
|
202 |
+
|
203 |
+
$data = VantageAnalytics_Analytics_Model_Debug::factory()->toVantage();
|
204 |
+
|
205 |
+
$this->_setResponse($data, '200');
|
206 |
+
}
|
207 |
+
|
208 |
+
public function cronAction()
|
209 |
+
{
|
210 |
+
if (!$this->_verifySignature()) {
|
211 |
+
return;
|
212 |
+
}
|
213 |
+
|
214 |
+
$enable = $this->getRequest()->getParam('enable', 0);
|
215 |
+
$disable = $this->getRequest()->getParam('disable', 0);
|
216 |
+
|
217 |
+
if ($enable) {
|
218 |
+
Mage::helper('analytics/account')->setCronEnabled(1);
|
219 |
+
}
|
220 |
+
|
221 |
+
if ($disable) {
|
222 |
+
Mage::helper('analytics/account')->setCronEnabled(0);
|
223 |
+
}
|
224 |
+
|
225 |
+
$this->_setResponse(
|
226 |
+
array(
|
227 |
+
'cronEnabled' => Mage::helper('analytics/account')->isCronEnabled()
|
228 |
+
),
|
229 |
+
'200'
|
230 |
+
);
|
231 |
+
}
|
232 |
+
}
|
@@ -2,9 +2,10 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<VantageAnalytics_Analytics>
|
5 |
-
<version>1.1.
|
6 |
</VantageAnalytics_Analytics>
|
7 |
</modules>
|
|
|
8 |
<phpunit>
|
9 |
<suite>
|
10 |
<modules>
|
@@ -126,6 +127,15 @@
|
|
126 |
</global>
|
127 |
|
128 |
<frontend>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
<events>
|
130 |
<sales_order_place_after>
|
131 |
<observers>
|
@@ -186,6 +196,7 @@
|
|
186 |
</accountoptions>
|
187 |
<export>
|
188 |
<done>0</done>
|
|
|
189 |
</export>
|
190 |
</vantageanalytics>
|
191 |
</default>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<VantageAnalytics_Analytics>
|
5 |
+
<version>1.1.5</version>
|
6 |
</VantageAnalytics_Analytics>
|
7 |
</modules>
|
8 |
+
|
9 |
<phpunit>
|
10 |
<suite>
|
11 |
<modules>
|
127 |
</global>
|
128 |
|
129 |
<frontend>
|
130 |
+
<routers>
|
131 |
+
<analytics>
|
132 |
+
<use>standard</use>
|
133 |
+
<args>
|
134 |
+
<module>VantageAnalytics_Analytics</module>
|
135 |
+
<frontName>analytics</frontName>
|
136 |
+
</args>
|
137 |
+
</analytics>
|
138 |
+
</routers>
|
139 |
<events>
|
140 |
<sales_order_place_after>
|
141 |
<observers>
|
196 |
</accountoptions>
|
197 |
<export>
|
198 |
<done>0</done>
|
199 |
+
<cron>0</cron>
|
200 |
</export>
|
201 |
</vantageanalytics>
|
202 |
</default>
|
@@ -45,39 +45,8 @@
|
|
45 |
The API Secret for your Vantage account.
|
46 |
]]></comment>
|
47 |
</accountpwd>
|
48 |
-
<verify translate="label">
|
49 |
-
<label>Verify Account</label>
|
50 |
-
<frontend_type>button</frontend_type>
|
51 |
-
<frontend_model>VantageAnalytics_Analytics_Block_Adminhtml_Verify</frontend_model>
|
52 |
-
<sort_order>20</sort_order>
|
53 |
-
<show_in_default>1</show_in_default>
|
54 |
-
<show_in_website>1</show_in_website>
|
55 |
-
<show_in_store>1</show_in_store>
|
56 |
-
<comment>Verify your username and secret.</comment>
|
57 |
-
</verify>
|
58 |
</fields>
|
59 |
</accountoptions>
|
60 |
-
<export translate="label">
|
61 |
-
<label>Advanced</label>
|
62 |
-
<sort_order>1</sort_order>
|
63 |
-
<show_in_default>1</show_in_default>
|
64 |
-
<show_in_website>1</show_in_website>
|
65 |
-
<show_in_store>1</show_in_store>
|
66 |
-
<fields>
|
67 |
-
<done translate="label">
|
68 |
-
<label>Export Completed?</label>
|
69 |
-
<frontend_type>select</frontend_type>
|
70 |
-
<source_model>adminhtml/system_config_source_yesno</source_model>
|
71 |
-
<sort_order>1</sort_order>
|
72 |
-
<show_in_default>1</show_in_default>
|
73 |
-
<show_in_website>1</show_in_website>
|
74 |
-
<show_in_store>1</show_in_store>
|
75 |
-
<comment>
|
76 |
-
Set to "No" to force a full historical data export.
|
77 |
-
</comment>
|
78 |
-
</done>
|
79 |
-
</fields>
|
80 |
-
</export>
|
81 |
</groups>
|
82 |
</vantageanalytics>
|
83 |
</sections>
|
45 |
The API Secret for your Vantage account.
|
46 |
]]></comment>
|
47 |
</accountpwd>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
</fields>
|
49 |
</accountoptions>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
</groups>
|
51 |
</vantageanalytics>
|
52 |
</sections>
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<default>
|
4 |
+
<reference name="before_body_end">
|
5 |
+
<block type="core/template" template="vantageanalytics/analytics/visitor.phtml" />
|
6 |
+
</reference>
|
7 |
+
</default>
|
8 |
+
<checkout_onepage_success translate="label">
|
9 |
+
<reference name="after_body_start">
|
10 |
+
<block type="core/template" template="vantageanalytics/analytics/conversion.phtml" />
|
11 |
+
</reference>
|
12 |
+
</checkout_onepage_success>
|
13 |
+
<checkout_multishipping_success translate="label">
|
14 |
+
<reference name="after_body_start">
|
15 |
+
<block type="core/template" template="vantageanalytics/analytics/conversion.phtml" />
|
16 |
+
</reference>
|
17 |
+
</checkout_multishipping_success>
|
18 |
+
|
19 |
+
<catalog_product_view>
|
20 |
+
<reference name="after_body_start">
|
21 |
+
<block type="core/template" template="vantageanalytics/analytics/productview.phtml" />
|
22 |
+
</reference>
|
23 |
+
</catalog_product_view>
|
24 |
+
</layout>
|
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>VantageAnalytics_Analytics</name>
|
4 |
-
<version>1.1
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://vantageanalytics.com/legal/terms-of-use/">Commercial - Vantage</license>
|
7 |
<channel>community</channel>
|
@@ -25,7 +25,11 @@ Vantage also offers financial insights, such as month to date revenue, that show
|
|
25 |
With the customer segmentation tools Vantage offers, you can export a list of your highest value customers to offer discounts or exclusive offers in as little as 3 clicks!
|
26 |

|
27 |
For store owners with multiple locations or multiple ecommerce stores, we offer a multi-store management panel to monitor each store’s performance.</description>
|
28 |
-
<notes>1.
|
|
|
|
|
|
|
|
|
29 |
-------
|
30 |
- Minor phpcs code style rule fixes
|
31 |
- Remove embedded sign-up form, registration now begins at app.vantageanalytics.com 
|
@@ -116,9 +120,9 @@ Improved robustness of historical data export process and report historical data
|
|
116 |

|
117 |
First stable release.</notes>
|
118 |
<authors><author><name>Brandon Kane</name><user>brandon</user><email>brandon@vantageanalytics.com</email></author></authors>
|
119 |
-
<date>2017-06-
|
120 |
-
<time>
|
121 |
-
<contents><target name="magecommunity"><dir name="VantageAnalytics"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><file name="Analyticsbackend.php" hash="e305f2e7b0bfad28d84da570b27e7ab7"/><file name="Verify.php" hash="c3496c9d8cb37936705132a3aca6120d"/></dir></dir><dir name="Helper"><file name="Account.php" hash="
|
122 |
<compatible/>
|
123 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
124 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>VantageAnalytics_Analytics</name>
|
4 |
+
<version>1.2.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://vantageanalytics.com/legal/terms-of-use/">Commercial - Vantage</license>
|
7 |
<channel>community</channel>
|
25 |
With the customer segmentation tools Vantage offers, you can export a list of your highest value customers to offer discounts or exclusive offers in as little as 3 clicks!
|
26 |

|
27 |
For store owners with multiple locations or multiple ecommerce stores, we offer a multi-store management panel to monitor each store’s performance.</description>
|
28 |
+
<notes>1.2.0
|
29 |
+
-------
|
30 |
+
- New API
|
31 |
+

|
32 |
+
1.1.5
|
33 |
-------
|
34 |
- Minor phpcs code style rule fixes
|
35 |
- Remove embedded sign-up form, registration now begins at app.vantageanalytics.com 
|
120 |

|
121 |
First stable release.</notes>
|
122 |
<authors><author><name>Brandon Kane</name><user>brandon</user><email>brandon@vantageanalytics.com</email></author></authors>
|
123 |
+
<date>2017-06-26</date>
|
124 |
+
<time>18:10:49</time>
|
125 |
+
<contents><target name="magecommunity"><dir name="VantageAnalytics"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><file name="Analyticsbackend.php" hash="e305f2e7b0bfad28d84da570b27e7ab7"/><file name="Verify.php" hash="c3496c9d8cb37936705132a3aca6120d"/></dir></dir><dir name="Helper"><file name="Account.php" hash="55df5016610083c1da7df8a8b2d9172f"/><file name="Checkout.php" hash="a4ec19d149f0a47936a9e607f0177056"/><file name="Data.php" hash="e2368bb846dc4e8090a31c2cd9b4dd64"/><file name="DateFormatter.php" hash="6e98a6efb5263f01a9d463faa1043d6e"/><dir name="Extension"><file name="Lister.php" hash="332928b892e1d47e5fbda24ea61017a3"/><file name="Pool.php" hash="36da98e3dd9e67c6308ff0901a800e63"/></dir><file name="Log.php" hash="eeb557a144f1254d2f01970530eded32"/><file name="Pixel.php" hash="85e46cf2763f8cb73a4589f3fdb9f7f3"/><file name="Queue.php" hash="3e548ae77ab6a67d1bc279df0c17b165"/><file name="Statuses.php" hash="9527eb737121cd34530c813aea52e962"/><file name="Tracking.php" hash="27ac8e7d194cb4b18712da1a6a8cf5be"/></dir><dir name="Model"><file name="AddressRetriever.php" hash="6d6761b08aa8d50f5473ee79b5211254"/><dir name="Api"><dir name="Exceptions"><file name="BadRequest.php" hash="90e31638b100c1f160b04a06a96c75f7"/><file name="CurlError.php" hash="cf82c3b693522cf86c02f9d1f1e83217"/><file name="MaxRetries.php" hash="2f2be83f975277cca1a5c0442d1e0cb3"/><file name="ServerError.php" hash="d68761c5e4e5e9666a4aa992db74a611"/></dir><file name="Inline.php" hash="5a099b4dadab426f2e50770ff6f86a0d"/><file name="Request.php" hash="e5cac61e391a2b132d7f4b0db0578ada"/><file name="RequestQueue.php" hash="4081a0fca85e229749a6d7403b7b1939"/><file name="Secret.php" hash="4668d55a9ade673da752965486225272"/><file name="Signature.php" hash="9769075f75e55e60442f6e7afe0964d6"/><file name="Username.php" hash="8e8b3b0ae689b615aa19db8608741db9"/><file name="Webhook.php" hash="e4bac72b798acfda514d96b02dc0046c"/></dir><file name="Cron.php" hash="a07ef21d4ba8dd75a683d7a2786d482e"/><file name="Debug.php" hash="2cfcecd19bd97b87bc4fd434d3278fb5"/><dir name="Export"><file name="Base.php" hash="181726d31c30223d38df1c920a36aab6"/><file name="Customer.php" hash="2bac395f9573e99740737348e7cdc0ac"/><file name="ExportPage.php" hash="25fa6d4fa48be30c57abd751185e30a0"/><file name="Order.php" hash="6a779faee4881f5babf032b218642131"/><file name="Product.php" hash="765dfbe5e4e3bf92d22fdfb49035bd98"/><file name="Runner.php" hash="05f1362952b62272e019522e64d1072b"/><file name="Store.php" hash="a1bd7ad27d7d18b9567dbde26b4e94f7"/></dir><file name="Heartbeat.php" hash="d29f235942bc20ea16c9d687af45003e"/><dir name="Observer"><file name="Base.php" hash="613ef7dcf1723cbf26ede5a7f50a8811"/><file name="CatalogProduct.php" hash="4c964ab1dd6850b124442e1a9f7506e7"/><file name="Customer.php" hash="0686ca80283a14d98358b8e7179c1269"/><file name="SalesOrder.php" hash="ec2c0f43df1443387e8c7f740f02cd33"/><file name="SalesQuote.php" hash="c0cc6aea5e71ec06e394883b6bf684da"/><file name="Tracking.php" hash="a8a95092168e0c917109bb4ce9c6d9a9"/></dir><file name="ParentProduct.php" hash="e773561b45bcabbfbd739c49122ccab3"/><file name="Pixel.php" hash="3ed3efdfa25231e1b57ce68cebde4c76"/><file name="ProductCategories.php" hash="d3265e984587bf8a5d5cc202bd464c12"/><file name="ProductImages.php" hash="0c3ee899e4aa884af8d3af0c52259657"/><file name="ProductOptions.php" hash="42fedb046f2ec7deb730239f8b9427d6"/><dir name="Queue"><dir name="Adapter"><file name="Db.php" hash="a1733dc68647c1f812afaf98ce3a26d9"/></dir></dir><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="a115284cf544ad06b799c552b1f8c5c1"/></dir></dir><file name="SubscriberInformation.php" hash="67816c4724238f275a73058553010e83"/><dir name="Transformer"><file name="Address.php" hash="f9f0f27abf5597d89763b55ea9946cd3"/><file name="Base.php" hash="31313c87cefc65e9299f4996ae73a97d"/><file name="BaseSales.php" hash="d5ea80caa43574a81f72e7fb54a73a88"/><file name="BaseSalesItem.php" hash="aa281fe585defda3844baffeb6dfa9f9"/><file name="Customer.php" hash="0ffa13cdea0308170ce4c0a6f7f03950"/><file name="Product.php" hash="9c29061ac16210563b8f331b962e5afc"/><file name="SalesOrder.php" hash="1b9d74e0ff1b59b0e7cc203b58f1a45e"/><file name="SalesOrderLineItem.php" hash="664fe35f03d901c75fa1796480e40135"/><file name="SalesQuote.php" hash="ffeb73588f89141367a40eb80fd07249"/><file name="SalesQuoteLineItem.php" hash="800ef2a4a2ecd00e9ed82bfb33623ceb"/><file name="Store.php" hash="80dd794795bcdef4442206a40c1d6a3e"/></dir></dir><dir name="Test"><dir name="Model"><dir name="Api"><file name="Signature.php" hash="5db3d5f9456c7948ecb636c9fe2d4850"/></dir><file name="Base.php" hash="fa7cb987301c0d1f092146447bac1d35"/><file name="Config.php" hash="84a1043ecfe94e1ff52de06b1c63254e"/><dir name="Customer"><dir name="fixtures"><file name="simpleCustomer.yaml" hash="e6b22424ddc0940226344bcccf13c745"/></dir></dir><file name="Customer.php" hash="77480c5696b5c5f9006b330b8b0d2010"/><file name="DateFormatterTest.php" hash="b7f0ff0cddfb0cce1b73c6a8de8d74dc"/><dir name="LineItem"><dir name="fixtures"><file name="simpleOrder.yaml" hash="8d6ff7b4cf8c434631305b51fca7884c"/></dir></dir><file name="LineItem.php" hash="2f2599d5d80a6726958ab9a3b2b24b96"/><dir name="Observer"><file name="SalesQuote.php" hash="1a6380469b28386dfe42ed7bd3ee39f5"/></dir><dir name="Order"><dir name="fixtures"><file name="orderStatus.yaml" hash="a2786f2eda68ce0035f9edc8beaf9fee"/><file name="orderStatusCanceled.yaml" hash="800fcb6ee04f912e3e3f27efdbdafde3"/><file name="orderStatusComplete.yaml" hash="1c912c447d255f0afd096e6f32eace1c"/><file name="paymentStatusUnpaid.yaml" hash="c0d0a55eec973ad3ee3730ebc143a3b7"/></dir><dir name="providers"><file name="orderStatus.yaml" hash="e88ed6c1b39272f3f4767810a427613c"/></dir></dir><file name="Order.php" hash="82204a6eca60382a189a1482b1f85197"/><dir name="Product"><dir name="fixtures"><file name="parentProduct.yaml" hash="931604baf487baa33cf78dc26548431c"/><file name="simpleProduct.yaml" hash="56b88f052816173a79780f43779df4ff"/></dir></dir><file name="Product.php" hash="2226535622cf67a72efbf747fc0cb87a"/><file name="Webhook.php" hash="d34e01e88599529cf79b8cc27efad550"/></dir></dir><dir name="controllers"><file name="ExportController.php" hash="1935e4bab16b1b7d2be72e692850814c"/></dir><dir name="etc"><file name="adminhtml.xml" hash="cdfb6a37810355796f416784ce7f5584"/><file name="config.xml" hash="e575a51b049f68c5b80228d23fc4e870"/><file name="system.xml" hash="5085eec015c4e002ba4390af3f60fd53"/></dir><dir name="sql"><dir name="vantageanalytics_analytics_setup"><file name="install-0.1.0.php" hash="0e7150e283f1ece9251af3e3d2ce76aa"/><file name="mysql4-upgrade-0.1.0-0.2.0.php" hash="e61c872d2e3527d8fa9e8daf21d8fc2e"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="VantageAnalytics_Analytics.xml" hash="69ca3371e05fff3d8b1e89849e3fab32"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="vantageanalytics"><dir name="analytics"><file name="conversion.phtml" hash="a637baea0a96508e91144d749c37d4af"/><file name="visitor.phtml" hash="35ea63a52433775d4e32dc96b5cdee3f"/><file name="productview.phtml" hash="f2148d125dae6e762c09418291d40328"/></dir></dir></dir><dir name="layout"><file name="vantageanalytics_analytics.xml" hash="c852aff83b27479807f002adb350778f"/></dir></dir></dir></dir></target></contents>
|
126 |
<compatible/>
|
127 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
128 |
</package>
|