VantageAnalytics_Analytics - Version 1.0.12

Version Notes

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.

Download this release

Release Info

Developer Brandon Kane
Extension VantageAnalytics_Analytics
Version 1.0.12
Comparing to
See all releases


Code changes from version 1.0.11 to 1.0.12

Files changed (25) hide show
  1. app/code/community/VantageAnalytics/Analytics/Helper/Account.php +4 -0
  2. app/code/community/VantageAnalytics/Analytics/Helper/Extension/Lister.php +2 -2
  3. app/code/community/VantageAnalytics/Analytics/Helper/Extension/Pool.php +1 -1
  4. app/code/community/VantageAnalytics/Analytics/Model/Debug.php +6 -1
  5. app/code/community/VantageAnalytics/Analytics/Model/Export/Base.php +26 -35
  6. app/code/community/VantageAnalytics/Analytics/Model/Observer/Base.php +16 -6
  7. app/code/community/VantageAnalytics/Analytics/Model/Observer/CatalogProduct.php +29 -2
  8. app/code/community/VantageAnalytics/Analytics/Model/ParentProduct.php +2 -2
  9. app/code/community/VantageAnalytics/Analytics/Model/ProductImages.php +4 -3
  10. app/code/community/VantageAnalytics/Analytics/Model/Transformer/Base.php +2 -1
  11. app/code/community/VantageAnalytics/Analytics/Model/Transformer/BaseSales.php +2 -2
  12. app/code/community/VantageAnalytics/Analytics/Model/Transformer/Customer.php +2 -2
  13. app/code/community/VantageAnalytics/Analytics/Model/Transformer/Product.php +8 -18
  14. app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesOrder.php +6 -6
  15. app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesOrderLineItem.php +2 -2
  16. app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesQuote.php +2 -2
  17. app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesQuoteLineItem.php +2 -2
  18. app/code/community/VantageAnalytics/Analytics/Model/Transformer/Store.php +1 -1
  19. app/code/community/VantageAnalytics/Analytics/Test/Model/Customer.php +4 -2
  20. app/code/community/VantageAnalytics/Analytics/Test/Model/LineItem.php +2 -1
  21. app/code/community/VantageAnalytics/Analytics/Test/Model/Order.php +2 -1
  22. app/code/community/VantageAnalytics/Analytics/Test/Model/Product.php +6 -3
  23. app/code/community/VantageAnalytics/Analytics/controllers/ExportController.php +62 -0
  24. app/code/community/VantageAnalytics/Analytics/sql/vantageanalytics_analytics_setup/mysql4-upgrade-0.2.0-1.0.7.php +0 -7
  25. package.xml +9 -5
app/code/community/VantageAnalytics/Analytics/Helper/Account.php CHANGED
@@ -88,4 +88,8 @@ class VantageAnalytics_Analytics_Helper_Account extends Mage_Core_Helper_Abstrac
88
  Mage::getConfig()->reinit();
89
  }
90
 
 
 
 
 
91
  }
88
  Mage::getConfig()->reinit();
89
  }
90
 
91
+ public function getExtensionVersion()
92
+ {
93
+ return (string) Mage::getConfig()->getNode()->modules->VanageAnalytics_Analytics->version;
94
+ }
95
  }
app/code/community/VantageAnalytics/Analytics/Helper/Extension/Lister.php CHANGED
@@ -25,7 +25,7 @@ class VantageAnalytics_Analytics_Helper_Extension_Lister
25
  {
26
  $extensions = array();
27
 
28
- foreach($this->pools() as $pool)
29
  {
30
  $extensions[] =
31
  VantageAnalytics_Analytics_Helper_Extension_Pool::factory($pool)
@@ -35,4 +35,4 @@ class VantageAnalytics_Analytics_Helper_Extension_Lister
35
  return call_user_func_array('array_merge', $extensions);
36
  }
37
 
38
- }
25
  {
26
  $extensions = array();
27
 
28
+ foreach ($this->pools() as $pool)
29
  {
30
  $extensions[] =
31
  VantageAnalytics_Analytics_Helper_Extension_Pool::factory($pool)
35
  return call_user_func_array('array_merge', $extensions);
36
  }
37
 
38
+ }
app/code/community/VantageAnalytics/Analytics/Helper/Extension/Pool.php CHANGED
@@ -16,7 +16,7 @@ class VantageAnalytics_Analytics_Helper_Extension_Pool
16
  {
17
  $final = array();
18
 
19
- foreach($this->_files() as $file)
20
  {
21
  if(is_dir($file))
22
  {
16
  {
17
  $final = array();
18
 
19
+ foreach ($this->_files() as $file)
20
  {
21
  if(is_dir($file))
22
  {
app/code/community/VantageAnalytics/Analytics/Model/Debug.php CHANGED
@@ -64,7 +64,7 @@ class VantageAnalytics_Analytics_Model_Debug
64
 
65
  $sites = Mage::app()->getWebsites(true);
66
 
67
- foreach($sites as $website) {
68
  $websites[$website->getId()] = $website->getCode();
69
  }
70
 
@@ -82,6 +82,11 @@ class VantageAnalytics_Analytics_Model_Debug
82
  return Mage::helper('analytics/account')->isVerified();
83
  }
84
 
 
 
 
 
 
85
  public function toVantage()
86
  {
87
  $methods = array_diff(
64
 
65
  $sites = Mage::app()->getWebsites(true);
66
 
67
+ foreach ($sites as $website) {
68
  $websites[$website->getId()] = $website->getCode();
69
  }
70
 
82
  return Mage::helper('analytics/account')->isVerified();
83
  }
84
 
85
+ public function extensionVersion()
86
+ {
87
+ return Mage::helper('analytics/account')->getExtensionVersion();
88
+ }
89
+
90
  public function toVantage()
91
  {
92
  $methods = array_diff(
app/code/community/VantageAnalytics/Analytics/Model/Export/Base.php CHANGED
@@ -34,8 +34,14 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
34
 
35
  protected function getPathToPHP()
36
  {
37
- if (defined("PHP_BINARY") && file_exists(PHP_BINARY)) {
38
- return PHP_BINARY;
 
 
 
 
 
 
39
  }
40
 
41
  // mage> echo " " . getmypid() . " " . posix_getpid() . " " . exec('echo $PPID');
@@ -77,9 +83,10 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
77
  new VantageAnalytics_Analytics_Model_Api_RequestQueue());
78
  }
79
 
80
- protected function makeTransformer($entity)
81
  {
82
- return Mage::getModel("analytics/Transformer_{$this->transformer}", $entity);
 
83
  }
84
 
85
  protected function enqueue($data)
@@ -96,9 +103,9 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
96
  }
97
  }
98
 
99
- protected function exportEntity($entity)
100
  {
101
- $transformer = $this->makeTransformer($entity);
102
  $data = $transformer->toVantage();
103
  $this->enqueue($data);
104
  }
@@ -137,7 +144,6 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
137
  $maxChildren = 1;
138
 
139
  while ($currentPage <= $totalPages) {
140
-
141
  $this->exportMetaData(
142
  $website->getWebsiteId(),
143
  strtolower($entityName),
@@ -149,35 +155,17 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
149
  if ($endPage >= $totalPages) {
150
  $endPage = $totalPages + 1; // The page ranges are inclusive-exclusive so pick up the last page
151
  }
152
- $args = array("{$where}/ExportPage.php", $entityName, "{$websiteId}", "{$currentPage}", "{$endPage}");
153
- if (function_exists('pcntl_fork')) {
154
- $pid = pcntl_fork();
155
- if ($pid == -1) {
156
- Mage::helper('analytics/log')->logError('Could not fork');
157
- die('could not fork');
158
- } else if ($pid) {
159
- // in the parent
160
- $pids[$pid] = $pid;
161
-
162
- $endPage = $endPage + $numberOfPages;
163
- $currentPage = $currentPage + $numberOfPages;
164
-
165
- } else {
166
- // in the child
167
- pcntl_exec($phpbin, $args);
168
- }
169
 
170
- if (count($pids) >= $maxChildren) {
171
- $pid = pcntl_waitpid(-1, $status);
172
- unset($pids[$pid]);
173
- }
174
-
175
- } else {
176
- $this->exportPage($websiteId, $currentPage, $endPage);
177
-
178
- $endPage = $endPage + $numberOfPages;
179
- $currentPage = $currentPage + $numberOfPages;
180
  }
 
 
 
181
  }
182
  }
183
 
@@ -194,12 +182,15 @@ abstract class VantageAnalytics_Analytics_Model_Export_Base
194
  $websites = Mage::app()->getWebsites();
195
  foreach ($websites as $website) {
196
  if ($websiteId == $website->getWebsiteId()) {
 
 
 
197
  $currentPage = $startPage;
198
  while ($currentPage < $endPage) {
199
  $collection = $this->createCollection($website, $currentPage);
200
 
201
  foreach ($collection as $entity) {
202
- $this->exportEntity($entity);
203
  try {
204
  $entity->clearInstance();
205
  } catch (Exception $e) {
34
 
35
  protected function getPathToPHP()
36
  {
37
+ if (defined("PHP_BINARY") && file_exists(constant("PHP_BINARY"))) {
38
+ return constant("PHP_BINARY");
39
+ }
40
+ if (defined("PHP_PREFIX") && file_exists(constant("PHP_PREFIX") . "/bin/php")) {
41
+ return constant("PHP_PREFIX") . "/bin/php";
42
+ }
43
+ if (defined("PHP_BIN_DIR") && file_exists(constant("PHP_BIN_DIR") . "/php")) {
44
+ return constant("PHP_BIN_DIR") . "/php";
45
  }
46
 
47
  // mage> echo " " . getmypid() . " " . posix_getpid() . " " . exec('echo $PPID');
83
  new VantageAnalytics_Analytics_Model_Api_RequestQueue());
84
  }
85
 
86
+ protected function makeTransformer($entity, $store)
87
  {
88
+ $transformClass = "VantageAnalytics_Analytics_Model_Transformer_" . $this->transformer;
89
+ return new $transformClass($entity, $store);
90
  }
91
 
92
  protected function enqueue($data)
103
  }
104
  }
105
 
106
+ protected function exportEntity($entity, $store)
107
  {
108
+ $transformer = $this->makeTransformer($entity, $store);
109
  $data = $transformer->toVantage();
110
  $this->enqueue($data);
111
  }
144
  $maxChildren = 1;
145
 
146
  while ($currentPage <= $totalPages) {
 
147
  $this->exportMetaData(
148
  $website->getWebsiteId(),
149
  strtolower($entityName),
155
  if ($endPage >= $totalPages) {
156
  $endPage = $totalPages + 1; // The page ranges are inclusive-exclusive so pick up the last page
157
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
+ $retVal = null;
160
+ $output = array();
161
+ $cmd ="${phpbin} {$where}/ExportPage.php {$entityName} {$websiteId} {$currentPage} {$endPage}";
162
+ exec($cmd, $output, $retVal);
163
+ if ($retVal !== 0) {
164
+ Mage::helper('analytics/log')->logError("Failure running (exit ${retVal}): {$cmd}");
 
 
 
 
165
  }
166
+
167
+ $endPage = $endPage + $numberOfPages;
168
+ $currentPage = $currentPage + $numberOfPages;
169
  }
170
  }
171
 
182
  $websites = Mage::app()->getWebsites();
183
  foreach ($websites as $website) {
184
  if ($websiteId == $website->getWebsiteId()) {
185
+ $store = $website->getDefaultGroup()->getDefaultStore();
186
+ Mage::app()->setCurrentStore($store->getStoreId());
187
+
188
  $currentPage = $startPage;
189
  while ($currentPage < $endPage) {
190
  $collection = $this->createCollection($website, $currentPage);
191
 
192
  foreach ($collection as $entity) {
193
+ $this->exportEntity($entity, $store);
194
  try {
195
  $entity->clearInstance();
196
  } catch (Exception $e) {
app/code/community/VantageAnalytics/Analytics/Model/Observer/Base.php CHANGED
@@ -10,12 +10,16 @@ abstract class VantageAnalytics_Analytics_Model_Observer_Base
10
  // abstract protected function
11
  abstract protected function getEntity($event);
12
 
13
- protected function collectData($entity)
14
  {
15
  if(!Mage::helper('analytics/account')->isVerified()){
16
  return array();
17
  }
18
- $transform = Mage::getModel("analytics/Transformer_{$this->transformer}", $entity);
 
 
 
 
19
  return $transform->toVantage();
20
  }
21
 
@@ -25,14 +29,17 @@ abstract class VantageAnalytics_Analytics_Model_Observer_Base
25
  Mage::getDesign()->getArea() == 'adminhtml');
26
  }
27
 
28
- public function performSave($observer)
29
  {
30
  if(!Mage::helper('analytics/account')->isVerified()){
31
  return;
32
  }
 
 
 
33
  try {
34
  $entity = $this->getEntity($observer->getEvent());
35
- $data = $this->collectData($entity);
36
  if (!empty($data)) {
37
  $this->api->enqueue('create', $data);
38
  }
@@ -41,14 +48,17 @@ abstract class VantageAnalytics_Analytics_Model_Observer_Base
41
  }
42
  }
43
 
44
- public function performDelete($observer)
45
  {
46
  if(!Mage::helper('analytics/account')->isVerified()){
47
  return;
48
  }
 
 
 
49
  try {
50
  $entity = $this->getEntity($observer->getEvent());
51
- $data = $this->collectData($entity);
52
  if (!empty($data)) {
53
  $this->api->enqueue('delete', $data);
54
  }
10
  // abstract protected function
11
  abstract protected function getEntity($event);
12
 
13
+ protected function collectData($entity, $store)
14
  {
15
  if(!Mage::helper('analytics/account')->isVerified()){
16
  return array();
17
  }
18
+ if (is_null($store)) {
19
+ $store = Mage::app()->getStore();
20
+ }
21
+ $transformClass = "VantageAnalytics_Analytics_Model_Transformer_" . $this->transformer;
22
+ $transform = new $transformClass($entity, $store);
23
  return $transform->toVantage();
24
  }
25
 
29
  Mage::getDesign()->getArea() == 'adminhtml');
30
  }
31
 
32
+ public function performSave($observer, $store=null)
33
  {
34
  if(!Mage::helper('analytics/account')->isVerified()){
35
  return;
36
  }
37
+ if (is_null($store)) {
38
+ $store = Mage::app()->getStore();
39
+ }
40
  try {
41
  $entity = $this->getEntity($observer->getEvent());
42
+ $data = $this->collectData($entity, $store);
43
  if (!empty($data)) {
44
  $this->api->enqueue('create', $data);
45
  }
48
  }
49
  }
50
 
51
+ public function performDelete($observer, $store=null)
52
  {
53
  if(!Mage::helper('analytics/account')->isVerified()){
54
  return;
55
  }
56
+ if (is_null($store)) {
57
+ $store = Mage::app()->getStore();
58
+ }
59
  try {
60
  $entity = $this->getEntity($observer->getEvent());
61
+ $data = $this->collectData($entity, $store);
62
  if (!empty($data)) {
63
  $this->api->enqueue('delete', $data);
64
  }
app/code/community/VantageAnalytics/Analytics/Model/Observer/CatalogProduct.php CHANGED
@@ -11,13 +11,40 @@ class VantageAnalytics_Analytics_Model_Observer_CatalogProduct extends VantageAn
11
  return $event->getProduct();
12
  }
13
 
 
 
 
 
 
 
 
 
 
14
  public function catalogProductSaveAfter($observer)
15
  {
16
- $this->performSave($observer);
 
 
 
 
 
 
 
 
 
17
  }
18
 
19
  public function catalogProductDeleteAfter($observer)
20
  {
21
- $this->performDelete($observer);
 
 
 
 
 
 
 
 
 
22
  }
23
  }
11
  return $event->getProduct();
12
  }
13
 
14
+ protected function findStoreByWebsiteId($websiteId)
15
+ {
16
+ foreach (Mage::app()->getWebsites() as $website) {
17
+ if ($website->getId() == $websiteId) {
18
+ return $website->getDefaultGroup()->getDefaultStore();
19
+ }
20
+ }
21
+ }
22
+
23
  public function catalogProductSaveAfter($observer)
24
  {
25
+ $product = $this->getEntity($observer->getEvent());
26
+ $storeId = Mage::app()->getStore()->getId();
27
+
28
+ foreach ($product->getWebsiteIds() as $websiteId) {
29
+ $store = $this->findStoreByWebsiteId($websiteId);
30
+ Mage::app()->setCurrentStore($store->getStoreId());
31
+ $this->performSave($observer, $store);
32
+ }
33
+
34
+ Mage::app()->setCurrentStore($storeId);
35
  }
36
 
37
  public function catalogProductDeleteAfter($observer)
38
  {
39
+ $product = $this->getEntity($observer->getEvent());
40
+ $storeId = Mage::app()->getStore()->getId();
41
+
42
+ foreach ($product->getWebsiteIds() as $websiteId) {
43
+ $store = $this->findStoreByWebsiteId($websiteId);
44
+ Mage::app()->setCurrentStore($store->getStoreId());
45
+ $this->performDelete($observer, $store);
46
+ }
47
+
48
+ Mage::app()->setCurrentStore($storeId);
49
  }
50
  }
app/code/community/VantageAnalytics/Analytics/Model/ParentProduct.php CHANGED
@@ -33,7 +33,7 @@ class VantageAnalytics_Analytics_Model_ParentProduct
33
  // An example of a grouped product "Buy a phone and a car charger"
34
  $parents = $this->_parents();
35
 
36
- foreach($parents as $parent)
37
  {
38
  if ($this->_configurableProduct($parent))
39
  {
@@ -50,7 +50,7 @@ class VantageAnalytics_Analytics_Model_ParentProduct
50
 
51
  $parentIds = $this->_parentIds();
52
 
53
- foreach($parentIds as $parentId) {
54
  $parents[] = Mage::getModel('catalog/product')->load($parentId);
55
  }
56
 
33
  // An example of a grouped product "Buy a phone and a car charger"
34
  $parents = $this->_parents();
35
 
36
+ foreach ($parents as $parent)
37
  {
38
  if ($this->_configurableProduct($parent))
39
  {
50
 
51
  $parentIds = $this->_parentIds();
52
 
53
+ foreach ($parentIds as $parentId) {
54
  $parents[] = Mage::getModel('catalog/product')->load($parentId);
55
  }
56
 
app/code/community/VantageAnalytics/Analytics/Model/ProductImages.php CHANGED
@@ -1,15 +1,16 @@
1
  <?php
2
  class VantageAnalytics_Analytics_Model_ProductImages
3
  {
4
- public static function factory($product)
5
  {
6
- return new self($product);
7
  }
8
 
9
- public function __construct($product)
10
  {
11
  $this->product = $product;
12
  $this->config = $product->getMediaConfig();
 
13
  }
14
 
15
  public function urls()
1
  <?php
2
  class VantageAnalytics_Analytics_Model_ProductImages
3
  {
4
+ public static function factory($product, $store)
5
  {
6
+ return new self($product, $store);
7
  }
8
 
9
+ public function __construct($product, $store)
10
  {
11
  $this->product = $product;
12
  $this->config = $product->getMediaConfig();
13
+ $this->store = $store;
14
  }
15
 
16
  public function urls()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/Base.php CHANGED
@@ -7,10 +7,11 @@ abstract class VantageAnalytics_Analytics_Model_Transformer_Base
7
  * 'updated_at' is already in UTC, and does not
8
  * require conversion. Neither are formatted correctly.
9
  */
10
- public function __construct($magentoEntity)
11
  {
12
  $this->entity = $magentoEntity;
13
  $this->data = $this->entity->getData();
 
14
  }
15
 
16
  public function sourceCreatedAt()
7
  * 'updated_at' is already in UTC, and does not
8
  * require conversion. Neither are formatted correctly.
9
  */
10
+ public function __construct($magentoEntity, $magentoStore)
11
  {
12
  $this->entity = $magentoEntity;
13
  $this->data = $this->entity->getData();
14
+ $this->magentoStore = $magentoStore;
15
  }
16
 
17
  public function sourceCreatedAt()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/BaseSales.php CHANGED
@@ -2,9 +2,9 @@
2
 
3
  abstract class VantageAnalytics_Analytics_Model_Transformer_BaseSales extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
- public function __construct($magentoSalesEntity)
6
  {
7
- parent::__construct($magentoSalesEntity);
8
 
9
  $this->billingAddress = VantageAnalytics_Analytics_Model_Transformer_Address::factory(
10
  $this->entity->getBillingAddress(), 'billing');
2
 
3
  abstract class VantageAnalytics_Analytics_Model_Transformer_BaseSales extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
+ public function __construct($magentoSalesEntity, $magentoStore)
6
  {
7
+ parent::__construct($magentoSalesEntity, $magentoStore);
8
 
9
  $this->billingAddress = VantageAnalytics_Analytics_Model_Transformer_Address::factory(
10
  $this->entity->getBillingAddress(), 'billing');
app/code/community/VantageAnalytics/Analytics/Model/Transformer/Customer.php CHANGED
@@ -3,9 +3,9 @@
3
  class VantageAnalytics_Analytics_Model_Transformer_Customer extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
 
6
- public static function factory($magentoCustomer)
7
  {
8
- return new self($magentoCustomer);
9
  }
10
 
11
  public function storeIds()
3
  class VantageAnalytics_Analytics_Model_Transformer_Customer extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
 
6
+ public static function factory($magentoCustomer, $magentoStore)
7
  {
8
+ return new self($magentoCustomer, $magentoStore);
9
  }
10
 
11
  public function storeIds()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/Product.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  class VantageAnalytics_Analytics_Model_Transformer_Product extends VantageAnalytics_Analytics_Model_Transformer_Base
3
  {
4
- public static function factory($magentoProduct)
5
  {
6
- return new VantageAnalytics_Analytics_Model_Transformer_Product($magentoProduct);
7
  }
8
 
9
  public function entityType()
@@ -13,7 +13,7 @@ class VantageAnalytics_Analytics_Model_Transformer_Product extends VantageAnalyt
13
 
14
  public function storeIds()
15
  {
16
- return $this->entity->getWebsiteIds();
17
  }
18
 
19
  public function externalIdentifier()
@@ -76,25 +76,15 @@ class VantageAnalytics_Analytics_Model_Transformer_Product extends VantageAnalyt
76
 
77
  public function productUrl()
78
  {
79
- if (Mage::app()->getStore()->isAdmin()) {
80
- // Reload the product in the context of the store
81
- // to get the correct url for the product
82
- $websites = Mage::app()->getWebsites();
83
- $storeId = $websites[1]->getDefaultStore()->getId();
84
- $product = Mage::helper('catalog/product')->getProduct(
85
- $this->externalIdentifier(),
86
- $storeId
87
- );
88
-
89
- return empty($product) ? NULL: $product->getProductUrl();
90
- }
91
-
92
- return $this->entity->getProductUrl();
93
  }
94
 
95
  public function imageUrls()
96
  {
97
- $images = VantageAnalytics_Analytics_Model_ProductImages::factory($this->entity);
98
  return $images->urls();
99
  }
100
 
1
  <?php
2
  class VantageAnalytics_Analytics_Model_Transformer_Product extends VantageAnalytics_Analytics_Model_Transformer_Base
3
  {
4
+ public static function factory($magentoProduct, $magentoStore)
5
  {
6
+ return new VantageAnalytics_Analytics_Model_Transformer_Product($magentoProduct, $magentoStore);
7
  }
8
 
9
  public function entityType()
13
 
14
  public function storeIds()
15
  {
16
+ return array($this->magentoStore->getWebsiteId());
17
  }
18
 
19
  public function externalIdentifier()
76
 
77
  public function productUrl()
78
  {
79
+ $url = Mage::helper('catalog/product')->getProductUrl($this->entity->getId());
80
+ $pos = strpos($url, '?');
81
+ $url = ($pos > 0) ? substr($url, 0, $pos) : $url;
82
+ return $url;
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
  public function imageUrls()
86
  {
87
+ $images = VantageAnalytics_Analytics_Model_ProductImages::factory($this->entity, $this->magentoStore);
88
  return $images->urls();
89
  }
90
 
app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesOrder.php CHANGED
@@ -2,14 +2,14 @@
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesOrder extends VantageAnalytics_Analytics_Model_Transformer_BaseSales
4
  {
5
- public static function factory($magentoSalesEntity)
6
  {
7
- return new self($magentoSalesEntity);
8
  }
9
 
10
- public function __construct($magentoSalesEntity)
11
  {
12
- parent::__construct($magentoSalesEntity);
13
 
14
  $this->statuses = VantageAnalytics_Analytics_Helper_Statuses::factory($magentoSalesEntity);
15
  }
@@ -80,7 +80,7 @@ class VantageAnalytics_Analytics_Model_Transformer_SalesOrder extends VantageAna
80
  // Total item is only avaialable on order
81
  $total = 0;
82
 
83
- foreach($this->_lines() as $item) {
84
  $total += $item->getQtyOrdered();
85
  }
86
 
@@ -100,7 +100,7 @@ class VantageAnalytics_Analytics_Model_Transformer_SalesOrder extends VantageAna
100
 
101
  protected function buildLine($item)
102
  {
103
- return VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem::factory($item)
104
  ->toVantage();
105
  }
106
  }
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesOrder extends VantageAnalytics_Analytics_Model_Transformer_BaseSales
4
  {
5
+ public static function factory($magentoSalesEntity, $magentoStore)
6
  {
7
+ return new self($magentoSalesEntity, $magentoStore);
8
  }
9
 
10
+ public function __construct($magentoSalesEntity, $magentoStore)
11
  {
12
+ parent::__construct($magentoSalesEntity, $magentoStore);
13
 
14
  $this->statuses = VantageAnalytics_Analytics_Helper_Statuses::factory($magentoSalesEntity);
15
  }
80
  // Total item is only avaialable on order
81
  $total = 0;
82
 
83
+ foreach ($this->_lines() as $item) {
84
  $total += $item->getQtyOrdered();
85
  }
86
 
100
 
101
  protected function buildLine($item)
102
  {
103
+ return VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem::factory($item, $this->magentoStore)
104
  ->toVantage();
105
  }
106
  }
app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesOrderLineItem.php CHANGED
@@ -2,9 +2,9 @@
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem extends VantageAnalytics_Analytics_Model_Transformer_BaseSalesItem
4
  {
5
- public static function factory($magentoSalesOrderLineItem)
6
  {
7
- return new self($magentoSalesOrderLineItem);
8
  }
9
 
10
  public function storeIds()
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem extends VantageAnalytics_Analytics_Model_Transformer_BaseSalesItem
4
  {
5
+ public static function factory($magentoSalesOrderLineItem, $magentoStore)
6
  {
7
+ return new self($magentoSalesOrderLineItem, $magentoStore);
8
  }
9
 
10
  public function storeIds()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesQuote.php CHANGED
@@ -2,9 +2,9 @@
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesQuote extends VantageAnalytics_Analytics_Model_Transformer_BaseSales
4
  {
5
- public static function factory($magentoSalesEntity)
6
  {
7
- return new self($magentoSalesEntity);
8
  }
9
 
10
  public function entityType()
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesQuote extends VantageAnalytics_Analytics_Model_Transformer_BaseSales
4
  {
5
+ public static function factory($magentoSalesEntity, $magentoStore)
6
  {
7
+ return new self($magentoSalesEntity, $magentoStore);
8
  }
9
 
10
  public function entityType()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/SalesQuoteLineItem.php CHANGED
@@ -2,9 +2,9 @@
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesQuoteLineItem extends VantageAnalytics_Analytics_Model_Transformer_BaseSalesItem
4
  {
5
- public static function factory($magentoSalesQuoteLineItem)
6
  {
7
- return new self($magentoSalesQuoteLineItem);
8
  }
9
 
10
  public function externalParentIdentifier()
2
 
3
  class VantageAnalytics_Analytics_Model_Transformer_SalesQuoteLineItem extends VantageAnalytics_Analytics_Model_Transformer_BaseSalesItem
4
  {
5
+ public static function factory($magentoSalesQuoteLineItem, $magentoStore)
6
  {
7
+ return new self($magentoSalesQuoteLineItem, $magentoStore);
8
  }
9
 
10
  public function externalParentIdentifier()
app/code/community/VantageAnalytics/Analytics/Model/Transformer/Store.php CHANGED
@@ -3,7 +3,7 @@
3
  class VantageAnalytics_Analytics_Model_Transformer_Store extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
 
6
- public function __construct($magentoWebsite)
7
  {
8
  $this->website = $magentoWebsite;
9
  $this->entity = $magentoWebsite->getDefaultStore();
3
  class VantageAnalytics_Analytics_Model_Transformer_Store extends VantageAnalytics_Analytics_Model_Transformer_Base
4
  {
5
 
6
+ public function __construct($magentoWebsite, $magentoStore)
7
  {
8
  $this->website = $magentoWebsite;
9
  $this->entity = $magentoWebsite->getDefaultStore();
app/code/community/VantageAnalytics/Analytics/Test/Model/Customer.php CHANGED
@@ -10,9 +10,10 @@ class VantageAnalytics_Analytics_Test_Model_Customer extends VantageAnalytics_An
10
  public function simpleCustomer()
11
  {
12
  $customer = Mage::getModel('customer/customer')->load(1);
 
13
 
14
  $transformer =
15
- VantageAnalytics_Analytics_Model_Transformer_Customer::factory($customer);
16
 
17
  $this->assertEquals("example@example.com", $transformer->email());
18
  $this->assertEquals("john", $transformer->firstName());
@@ -28,9 +29,10 @@ class VantageAnalytics_Analytics_Test_Model_Customer extends VantageAnalytics_An
28
  public function vantageCustomerTest()
29
  {
30
  $customer = Mage::getModel('customer/customer')->load(1);
 
31
 
32
  $transformer =
33
- VantageAnalytics_Analytics_Model_Transformer_Customer::factory($customer);
34
 
35
  $data = $transformer->toVantage();
36
 
10
  public function simpleCustomer()
11
  {
12
  $customer = Mage::getModel('customer/customer')->load(1);
13
+ $store = Mage::app()->getStore();
14
 
15
  $transformer =
16
+ VantageAnalytics_Analytics_Model_Transformer_Customer::factory($customer, $store);
17
 
18
  $this->assertEquals("example@example.com", $transformer->email());
19
  $this->assertEquals("john", $transformer->firstName());
29
  public function vantageCustomerTest()
30
  {
31
  $customer = Mage::getModel('customer/customer')->load(1);
32
+ $store = Mage::app()->getStore();
33
 
34
  $transformer =
35
+ VantageAnalytics_Analytics_Model_Transformer_Customer::factory($customer, $store);
36
 
37
  $data = $transformer->toVantage();
38
 
app/code/community/VantageAnalytics/Analytics/Test/Model/LineItem.php CHANGED
@@ -19,9 +19,10 @@ class VantageAnalytics_Analytics_Test_Model_LineItem extends VantageAnalytics_An
19
  {
20
  $order = Mage::getModel('sales/order')->load(1);
21
  $items = $order->getAllItems();
 
22
 
23
  $transformer =
24
- VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem::factory($items[0]);
25
 
26
  $this->assertEquals("book", $transformer->sku());
27
  $this->assertEquals("1", $transformer->externalParentIdentifier());
19
  {
20
  $order = Mage::getModel('sales/order')->load(1);
21
  $items = $order->getAllItems();
22
+ $store = Mage::app()->getStore();
23
 
24
  $transformer =
25
+ VantageAnalytics_Analytics_Model_Transformer_SalesOrderLineItem::factory($items[0], $store);
26
 
27
  $this->assertEquals("book", $transformer->sku());
28
  $this->assertEquals("1", $transformer->externalParentIdentifier());
app/code/community/VantageAnalytics/Analytics/Test/Model/Order.php CHANGED
@@ -8,7 +8,8 @@ class VantageAnalytics_Analytics_Test_Model_Order extends VantageAnalytics_Analy
8
  if ($state) {
9
  $order->setState($state);
10
  }
11
- $transform = VantageAnalytics_Analytics_Model_Transformer_SalesOrder::factory($order);
 
12
  return $transform->toVantage();
13
  }
14
 
8
  if ($state) {
9
  $order->setState($state);
10
  }
11
+ $store = Mage::app()->getStore(1);
12
+ $transform = VantageAnalytics_Analytics_Model_Transformer_SalesOrder::factory($order, $store);
13
  return $transform->toVantage();
14
  }
15
 
app/code/community/VantageAnalytics/Analytics/Test/Model/Product.php CHANGED
@@ -12,9 +12,10 @@ class VantageAnalytics_Analytics_Test_Model_Product extends VantageAnalytics_Ana
12
  $price = 70.50;
13
  $product = Mage::getModel('catalog/product')->load(1);
14
  $product->setPrice($price);
 
15
 
16
  $transformer =
17
- VantageAnalytics_Analytics_Model_Transformer_Product::factory($product);
18
 
19
  $this->assertEquals("book", $transformer->sku());
20
  $this->assertEquals('2012-08-17T18:00:41+00:00', $transformer->sourceCreatedAt());
@@ -29,9 +30,10 @@ class VantageAnalytics_Analytics_Test_Model_Product extends VantageAnalytics_Ana
29
  public function toVantageTest()
30
  {
31
  $product = Mage::getModel('catalog/product')->load(1);
 
32
 
33
  $transformer =
34
- VantageAnalytics_Analytics_Model_Transformer_Product::factory($product);
35
 
36
  $data = $transformer->toVantage();
37
  $this->assertEquals('product', $data['entity_type']);
@@ -45,8 +47,9 @@ class VantageAnalytics_Analytics_Test_Model_Product extends VantageAnalytics_Ana
45
  public function parentProduct()
46
  {
47
  $product = Mage::getModel('catalog/product')->load(410955);
 
48
 
49
- $parentId = VantageAnalytics_Analytics_Model_ParentProduct::factory($product)->id();
50
 
51
  $this->assertEquals(336835, $parentId);
52
  }
12
  $price = 70.50;
13
  $product = Mage::getModel('catalog/product')->load(1);
14
  $product->setPrice($price);
15
+ $store = Mage::app()->getStore();
16
 
17
  $transformer =
18
+ VantageAnalytics_Analytics_Model_Transformer_Product::factory($product, $store);
19
 
20
  $this->assertEquals("book", $transformer->sku());
21
  $this->assertEquals('2012-08-17T18:00:41+00:00', $transformer->sourceCreatedAt());
30
  public function toVantageTest()
31
  {
32
  $product = Mage::getModel('catalog/product')->load(1);
33
+ $store = Mage::app()->getStore();
34
 
35
  $transformer =
36
+ VantageAnalytics_Analytics_Model_Transformer_Product::factory($product, $store);
37
 
38
  $data = $transformer->toVantage();
39
  $this->assertEquals('product', $data['entity_type']);
47
  public function parentProduct()
48
  {
49
  $product = Mage::getModel('catalog/product')->load(410955);
50
+ $store = Mage::app()->getStore();
51
 
52
+ $parentId = VantageAnalytics_Analytics_Model_ParentProduct::factory($product, $store)->id();
53
 
54
  $this->assertEquals(336835, $parentId);
55
  }
app/code/community/VantageAnalytics/Analytics/controllers/ExportController.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!function_exists('hash_equals')) {
4
+ function hash_equals($safe, $user)
5
+ {
6
+ $safeLen = strlen($safe);
7
+ $userLen = strlen($user);
8
+
9
+ if ($userLen != $safeLen) {
10
+ return false;
11
+ }
12
+
13
+ $result = 0;
14
+
15
+ for ($i = 0; $i < $userLen; $i++) {
16
+ $result |= (ord($safe[$i]) ^ ord($user[$i]));
17
+ }
18
+
19
+ // They are only identical strings if $result is exactly 0...
20
+ return $result === 0;
21
+ }
22
+ }
23
+
24
+
25
+ class VantageAnalytics_Analytics_ExportController extends Mage_Core_Controller_Front_Action
26
+ {
27
+ public function pageAction()
28
+ {
29
+ // verify secret
30
+ $secret = $this->getRequest()->getParam('secret');
31
+ if (!hash_equals($secret, 'banana'))
32
+ {
33
+ Mage::throwException("You are not authorized to view this page.");
34
+ }
35
+
36
+ $currentPage = min((int) $this->getRequest()->getParam('page', 1), 0);
37
+ $pageSize = max((int) $this->getRequest()->getParam('page_size', 50), 250);
38
+ $entityName = $this->getRequest()->getParam('model');
39
+ $store = $this->getRequest()->getParam('store');
40
+
41
+
42
+ if (!in_array($entityName, array('Store', 'Product', 'Customer', 'Order'))) {
43
+ Mage::throwException("You provided an invalid model.");
44
+ }
45
+
46
+ $exportClass = "VantageAnalytics_Analytics_Model_Export_" . $entityName;
47
+ $exporter = new $exportClass;
48
+ // $exporter->exportPage($websiteId, $startPage, $endPage);
49
+
50
+ echo json_encode(
51
+ array(
52
+ "model" => $model,
53
+ "currentPage" => $currentPage,
54
+ "totalPages" => 50,
55
+ "pageSize" => $pageSize,
56
+ "freeMemory" => 0,
57
+ "results" => array()
58
+ )
59
+ );
60
+ }
61
+ }
62
+
app/code/community/VantageAnalytics/Analytics/sql/vantageanalytics_analytics_setup/mysql4-upgrade-0.2.0-1.0.7.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- $installer = $this;
4
-
5
- $installer->startSetup();
6
- $installer->resetConfig();
7
- $installer->endSetup();
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>VantageAnalytics_Analytics</name>
4
- <version>1.0.11</version>
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!&#xD;
26
  &#xD;
27
  For store owners with multiple locations or multiple ecommerce stores, we offer a multi-store management panel to monitor each store&#x2019;s performance.</description>
28
- <notes>1.0.11&#xD;
 
 
 
 
29
  -------&#xD;
30
  - Send Dynamic Product Ad events&#xD;
31
  &#xD;
@@ -87,9 +91,9 @@ Improved robustness of historical data export process and report historical data
87
  &#xD;
88
  First stable release.</notes>
89
  <authors><author><name>Brandon Kane</name><user>brandon</user><email>brandon@vantageanalytics.com</email></author></authors>
90
- <date>2016-05-30</date>
91
- <time>22:59:46</time>
92
- <contents><target name="magecommunity"><dir name="VantageAnalytics"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><file name="Analyticsbackend.php" hash="e305f2e7b0bfad28d84da570b27e7ab7"/><file name="Reset.php" hash="532930f826f191a37c21a9556936c3ce"/></dir></dir><dir name="Helper"><file name="Account.php" hash="270976db69e227162d35d1eb9a424d6b"/><file name="Data.php" hash="e2368bb846dc4e8090a31c2cd9b4dd64"/><file name="DateFormatter.php" hash="6e98a6efb5263f01a9d463faa1043d6e"/><dir name="Extension"><file name="Lister.php" hash="bcd42cde1226011937276f35b84043b0"/><file name="Pool.php" hash="198c0585d60c9c3cd0d161de43eed4cc"/></dir><file name="Log.php" hash="eeb557a144f1254d2f01970530eded32"/><file name="Pixel.php" hash="85e46cf2763f8cb73a4589f3fdb9f7f3"/><file name="Queue.php" hash="2d9b23e9b7d6f9847a444c2837ca1f2e"/><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="Request.php" hash="e5cac61e391a2b132d7f4b0db0578ada"/><file name="RequestQueue.php" hash="ab1ec911b14c9d5bb688ea5b8cac9395"/><file name="Secret.php" hash="7056e3d3ae2d54dda82191d9e51832f2"/><file name="Signature.php" hash="9769075f75e55e60442f6e7afe0964d6"/><file name="Username.php" hash="8e8b3b0ae689b615aa19db8608741db9"/><file name="Webhook.php" hash="e4bac72b798acfda514d96b02dc0046c"/></dir><file name="Cron.php" hash="f385aff0db8c78e5349a4162b28a4348"/><file name="Debug.php" hash="c24900a7e9ecbfeb8c0d9509f3f8e44d"/><dir name="Export"><file name="Base.php" hash="1febd39582d38b0ef3d1761ca653ab03"/><file name="Customer.php" hash="2bac395f9573e99740737348e7cdc0ac"/><file name="ExportPage.php" hash="fa2b012e861c1149630452816ae724a7"/><file name="Order.php" hash="6a779faee4881f5babf032b218642131"/><file name="Product.php" hash="765dfbe5e4e3bf92d22fdfb49035bd98"/><file name="Runner.php" hash="05f1362952b62272e019522e64d1072b"/><file name="Store.php" hash="1cf68e5689615dfba835bb74118151cc"/></dir><file name="Heartbeat.php" hash="110d7158f12a86e2dcc877b40c9a44d4"/><dir name="Observer"><file name="Base.php" hash="060b2bc4ae4a6d0cee00d1cf21556d83"/><file name="CatalogProduct.php" hash="c6e553ed6feb5173f0405e771a1203d3"/><file name="Customer.php" hash="0686ca80283a14d98358b8e7179c1269"/><file name="SalesOrder.php" hash="e406749cf6b8e74e341968f2707af82f"/><file name="SalesQuote.php" hash="0bae57dbbdf65f10b8dbb59314861cc9"/><file name="Tracking.php" hash="a8a95092168e0c917109bb4ce9c6d9a9"/></dir><file name="ParentProduct.php" hash="e15d56807edb680a7c880f88d3cc654c"/><file name="Pixel.php" hash="3ed3efdfa25231e1b57ce68cebde4c76"/><file name="ProductCategories.php" hash="d3265e984587bf8a5d5cc202bd464c12"/><file name="ProductImages.php" hash="608c0444218733661dc94c214887cadd"/><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="8f766b0d85187de732db44b26a210773"/><file name="BaseSales.php" hash="7e248d70f07b24e50a92999696833101"/><file name="BaseSalesItem.php" hash="aa281fe585defda3844baffeb6dfa9f9"/><file name="Customer.php" hash="481e0972f572340c96a59da8f582dba9"/><file name="Product.php" hash="1f1951f3be2bf6880a2bd708c97ea71d"/><file name="SalesOrder.php" hash="9fb3aa63042873fa0f2f6dedc108e4f1"/><file name="SalesOrderLineItem.php" hash="34a919367236cdd9351454ed47cb78b2"/><file name="SalesQuote.php" hash="c1712d7eb2b440b4d9c77d9dab96717d"/><file name="SalesQuoteLineItem.php" hash="27687eba35dab7fdadad438aeb63bf03"/><file name="Store.php" hash="cde2395de468981b3b964184dd214afb"/></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="722d0096e8211b4b57485b24efced031"/><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="e35411c7d970af0b5913807830ffe45e"/><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="24cefdde2b5bf68452f5c6301c1d5efc"/><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="9f22904ec0015355f6fbf2f287d5574d"/><file name="Webhook.php" hash="d34e01e88599529cf79b8cc27efad550"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Analytics"><file name="AnalyticsbackendController.php" hash="6d82eb561da08535ae761f84ae27179e"/><file name="ResetController.php" hash="c45b58f6aaba218d7d271288add8780a"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="cdfb6a37810355796f416784ce7f5584"/><file name="config.xml" hash="534207999bd00fe15b1f56fe50dedd67"/><file name="system.xml" hash="96810a47632dbee35df743615ced3c41"/></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"/><file name="mysql4-upgrade-0.2.0-1.0.7.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="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="analytics.xml" hash="3f5da1f21784db4d01111aa208914d27"/></dir><dir name="template"><dir name="analytics"><file name="analyticsbackend.phtml" hash="2eb2bc2ba45a071c17ad376553b46c9b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="vantageanalytics_analytics.xml" hash="c852aff83b27479807f002adb350778f"/></dir><dir name="template"><dir name="vantageanalytics"><dir name="analytics"><file name="conversion.phtml" hash="e9e33218e9be8617cc5ef7c5fe885dee"/><file name="visitor.phtml" hash="35ea63a52433775d4e32dc96b5cdee3f"/><file name="productview.phtml" hash="f2148d125dae6e762c09418291d40328"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><file name="register.css" hash="704cc1e177a9353715d065cb0b8841d4"/></dir></dir></dir><dir name="base"><dir name="default"><dir name="images"><file name="vantage-for-magento.png" hash="36604b9b28ca5d8a7ff0ead39323eae9"/></dir></dir></dir></dir></target></contents>
93
  <compatible/>
94
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
95
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>VantageAnalytics_Analytics</name>
4
+ <version>1.0.12</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!&#xD;
26
  &#xD;
27
  For store owners with multiple locations or multiple ecommerce stores, we offer a multi-store management panel to monitor each store&#x2019;s performance.</description>
28
+ <notes>1.0.12&#xD;
29
+ -------&#xD;
30
+ - Bug fix: set store domain in product URL and images&#xD;
31
+ &#xD;
32
+ 1.0.11&#xD;
33
  -------&#xD;
34
  - Send Dynamic Product Ad events&#xD;
35
  &#xD;
91
  &#xD;
92
  First stable release.</notes>
93
  <authors><author><name>Brandon Kane</name><user>brandon</user><email>brandon@vantageanalytics.com</email></author></authors>
94
+ <date>2016-08-05</date>
95
+ <time>18:32:15</time>
96
+ <contents><target name="magecommunity"><dir name="VantageAnalytics"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><file name="Analyticsbackend.php" hash="e305f2e7b0bfad28d84da570b27e7ab7"/><file name="Reset.php" hash="532930f826f191a37c21a9556936c3ce"/></dir></dir><dir name="Helper"><file name="Account.php" hash="f3762de7b336e472bcf55536a3e3df94"/><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="2d9b23e9b7d6f9847a444c2837ca1f2e"/><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="Request.php" hash="e5cac61e391a2b132d7f4b0db0578ada"/><file name="RequestQueue.php" hash="ab1ec911b14c9d5bb688ea5b8cac9395"/><file name="Secret.php" hash="7056e3d3ae2d54dda82191d9e51832f2"/><file name="Signature.php" hash="9769075f75e55e60442f6e7afe0964d6"/><file name="Username.php" hash="8e8b3b0ae689b615aa19db8608741db9"/><file name="Webhook.php" hash="e4bac72b798acfda514d96b02dc0046c"/></dir><file name="Cron.php" hash="f385aff0db8c78e5349a4162b28a4348"/><file name="Debug.php" hash="37077022a46e1727724d4e4d8ae1f9be"/><dir name="Export"><file name="Base.php" hash="5f5df5d1e4b51dfbda43f0d9fd1859d4"/><file name="Customer.php" hash="2bac395f9573e99740737348e7cdc0ac"/><file name="ExportPage.php" hash="fa2b012e861c1149630452816ae724a7"/><file name="Order.php" hash="6a779faee4881f5babf032b218642131"/><file name="Product.php" hash="765dfbe5e4e3bf92d22fdfb49035bd98"/><file name="Runner.php" hash="05f1362952b62272e019522e64d1072b"/><file name="Store.php" hash="1cf68e5689615dfba835bb74118151cc"/></dir><file name="Heartbeat.php" hash="110d7158f12a86e2dcc877b40c9a44d4"/><dir name="Observer"><file name="Base.php" hash="38f76c0bac7817ac8756207fbea0c3a5"/><file name="CatalogProduct.php" hash="4c964ab1dd6850b124442e1a9f7506e7"/><file name="Customer.php" hash="0686ca80283a14d98358b8e7179c1269"/><file name="SalesOrder.php" hash="e406749cf6b8e74e341968f2707af82f"/><file name="SalesQuote.php" hash="0bae57dbbdf65f10b8dbb59314861cc9"/><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="83b5440d05aceb411610c650dcd39e14"/><file name="Store.php" hash="9c06558247a16b7a9c6511b3398b1f28"/></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"><dir name="Adminhtml"><dir name="Analytics"><file name="AnalyticsbackendController.php" hash="6d82eb561da08535ae761f84ae27179e"/><file name="ResetController.php" hash="c45b58f6aaba218d7d271288add8780a"/></dir></dir><file name="ExportController.php" hash="a40be0701a80b77d7c34913bd056a220"/></dir><dir name="etc"><file name="adminhtml.xml" hash="cdfb6a37810355796f416784ce7f5584"/><file name="config.xml" hash="534207999bd00fe15b1f56fe50dedd67"/><file name="system.xml" hash="96810a47632dbee35df743615ced3c41"/></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="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="analytics.xml" hash="3f5da1f21784db4d01111aa208914d27"/></dir><dir name="template"><dir name="analytics"><file name="analyticsbackend.phtml" hash="2eb2bc2ba45a071c17ad376553b46c9b"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="vantageanalytics_analytics.xml" hash="c852aff83b27479807f002adb350778f"/></dir><dir name="template"><dir name="vantageanalytics"><dir name="analytics"><file name="conversion.phtml" hash="e9e33218e9be8617cc5ef7c5fe885dee"/><file name="visitor.phtml" hash="35ea63a52433775d4e32dc96b5cdee3f"/><file name="productview.phtml" hash="f2148d125dae6e762c09418291d40328"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><file name="register.css" hash="704cc1e177a9353715d065cb0b8841d4"/></dir></dir></dir><dir name="base"><dir name="default"><dir name="images"><file name="vantage-for-magento.png" hash="36604b9b28ca5d8a7ff0ead39323eae9"/></dir></dir></dir></dir></target></contents>
97
  <compatible/>
98
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
99
  </package>