Converdo_Analytics - Version 2.1.5.57

Version Notes

More reliable way to track orders and product metadata.

Download this release

Release Info

Developer Roeland van Oostenbrugge
Extension Converdo_Analytics
Version 2.1.5.57
Comparing to
See all releases


Code changes from version 2.1.5.56 to 2.1.5.57

Files changed (30) hide show
  1. app/code/community/Converdo/Common/API/ConverdoAPI.php +11 -0
  2. app/code/community/Converdo/Common/API/ConverdoClient.php +42 -24
  3. app/code/community/Converdo/Common/API/Factories/OrderFactory.php +1 -1
  4. app/code/community/Converdo/Common/API/Requests.php +15 -14
  5. app/code/community/Converdo/Common/API/Sections/SetupAPI.php +20 -0
  6. app/code/community/Converdo/Common/Config/Configuration.php +12 -1
  7. app/code/community/Converdo/Common/Controllers/PingController.php +5 -8
  8. app/code/community/Converdo/Common/Query/Managers/QueryManager.php +1 -1
  9. app/code/community/Converdo/Common/Query/Managers/QueryMetadata.php +1 -1
  10. app/code/community/Converdo/Common/Query/Queries/AbstractQuery.php +1 -1
  11. app/code/community/Converdo/Common/Query/Queries/AddEcommerceItem.php +1 -1
  12. app/code/community/Converdo/Common/Query/Queries/CategoryView.php +1 -1
  13. app/code/community/Converdo/Common/Query/Queries/CustomVariable.php +1 -1
  14. app/code/community/Converdo/Common/Query/Queries/EcommerceView.php +1 -1
  15. app/code/community/Converdo/Common/Query/Queries/EnableHeartBeatTimer.php +1 -1
  16. app/code/community/Converdo/Common/Query/Queries/EnableLinkTracking.php +1 -1
  17. app/code/community/Converdo/Common/Query/Queries/SiteId.php +1 -1
  18. app/code/community/Converdo/Common/Query/Queries/TrackEcommerceCart.php +1 -1
  19. app/code/community/Converdo/Common/Query/Queries/TrackPageView.php +1 -1
  20. app/code/community/Converdo/Common/Query/Queries/TrackSiteSearch.php +1 -1
  21. app/code/community/Converdo/Common/Query/Queries/TrackerUrl.php +1 -1
  22. app/code/community/Converdo/Common/Support/ListensToOrders.php +60 -0
  23. app/code/community/Converdo/Common/autoload.php +67 -86
  24. app/code/community/Converdo/Common/bootstrap.php +0 -2
  25. app/code/community/Converdo/Common/config.php +1 -0
  26. app/code/community/Converdo/Magento/Block/Tracker.php +1 -1
  27. app/code/community/Converdo/Magento/Factories/EcommerceItemFactory.php +3 -1
  28. app/code/community/Converdo/Magento/Model/Observer.php +28 -18
  29. app/code/community/Converdo/Magento/etc/config.xml +1 -1
  30. package.xml +4 -4
app/code/community/Converdo/Common/API/ConverdoAPI.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace Converdo\Common\API;
4
 
5
  use Converdo\Common\API\Sections\ConverdoOrderAPI;
 
6
 
7
  class ConverdoAPI
8
  {
@@ -15,4 +16,14 @@ class ConverdoAPI
15
  {
16
  return new ConverdoOrderAPI();
17
  }
 
 
 
 
 
 
 
 
 
 
18
  }
3
  namespace Converdo\Common\API;
4
 
5
  use Converdo\Common\API\Sections\ConverdoOrderAPI;
6
+ use Converdo\Common\API\Sections\SetupAPI;
7
 
8
  class ConverdoAPI
9
  {
16
  {
17
  return new ConverdoOrderAPI();
18
  }
19
+
20
+ /**
21
+ * Returns a new SetupAPI instance.
22
+ *
23
+ * @return SetupAPI
24
+ */
25
+ public static function setup()
26
+ {
27
+ return new SetupAPI();
28
+ }
29
  }
app/code/community/Converdo/Common/API/ConverdoClient.php CHANGED
@@ -108,49 +108,67 @@ class ConverdoClient
108
  /**
109
  * Builds the URL for the request.
110
  *
 
111
  * @return string
112
  */
113
- protected function buildUrl()
114
  {
115
- return 'https:' . cvd_config()->url(
 
 
 
 
 
 
 
 
 
 
 
 
116
  "index.php?" .
117
- http_build_query([
118
- 'module' => 'API',
119
- 'method' => $this->module,
120
- 'idSite' => cvd_config()->platform()->website(),
121
- 'token_auth' => cvd_config()->platform()->user(),
122
- 'format' => 'json',
123
- ])
124
  );
125
  }
126
 
127
  /**
128
  * Posts the data to the API.
129
  *
 
130
  * @return bool
131
  */
132
  public function post()
133
  {
134
- try {
135
- $ch = curl_init($this->buildUrl());
136
 
137
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
138
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
139
- curl_setopt($ch, CURLOPT_POSTFIELDS, $this->getParameters());
140
- curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/resources/api_cert_chain.pem');
141
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
142
 
143
- $response = curl_exec($ch);
 
 
144
 
145
- if ($response === FALSE) {
146
- throw new Exception(curl_error($ch));
147
- }
 
 
148
 
149
- curl_close($ch);
150
- } catch (Exception $e) {
151
- cvd_logger()->error("Could not connect to API with message: {$e->getMessage()}");
152
  }
153
 
154
- return true;
 
 
 
 
 
 
 
 
155
  }
156
  }
108
  /**
109
  * Builds the URL for the request.
110
  *
111
+ * @param string $method
112
  * @return string
113
  */
114
+ protected function buildUrl($method = 'GET')
115
  {
116
+ $parameters = [
117
+ 'module' => 'API',
118
+ 'method' => $this->module,
119
+ 'idSite' => cvd_config()->platform()->website(),
120
+ 'token_auth' => cvd_config()->platform()->user(),
121
+ 'format' => 'json',
122
+ ];
123
+
124
+ if ($method === 'GET') {
125
+ $parameters = $parameters + $this->getParameters();
126
+ }
127
+
128
+ return cvd_config()->protocol() . ':' . cvd_config()->url(
129
  "index.php?" .
130
+ http_build_query($parameters)
 
 
 
 
 
 
131
  );
132
  }
133
 
134
  /**
135
  * Posts the data to the API.
136
  *
137
+ * @throws Exception
138
  * @return bool
139
  */
140
  public function post()
141
  {
142
+ return $this->request('POST');
143
+ }
144
 
145
+ public function get()
146
+ {
147
+ return $this->request('GET');
148
+ }
 
149
 
150
+ public function request($method = 'GET')
151
+ {
152
+ $ch = curl_init($this->buildUrl($method));
153
 
154
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
155
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method));
156
+ curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/resources/api_cert_chain.pem');
157
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
158
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
159
 
160
+ if ($method === 'POST') {
161
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $this->getParameters());
 
162
  }
163
 
164
+ $response = curl_exec($ch);
165
+
166
+ if ($response === FALSE) {
167
+ throw new Exception(curl_error($ch));
168
+ }
169
+
170
+ curl_close($ch);
171
+
172
+ return trim($response);
173
  }
174
  }
app/code/community/Converdo/Common/API/Factories/OrderFactory.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace Converdo\Common\Page\Factories;
4
 
5
  use Converdo\Common\API\Models\Contracts\OrderInterface;
6
  use Converdo\Common\API\Models\Order;
1
  <?php
2
 
3
+ namespace Converdo\Common\API\Factories;
4
 
5
  use Converdo\Common\API\Models\Contracts\OrderInterface;
6
  use Converdo\Common\API\Models\Order;
app/code/community/Converdo/Common/API/Requests.php CHANGED
@@ -4,7 +4,6 @@ namespace Converdo\Common\API;
4
 
5
  use Converdo\Common\API\Models\Contracts\OrderInterface;
6
  use Converdo\Common\Cookie\Managers\CookieManager;
7
- use Exception;
8
 
9
  class Requests
10
  {
@@ -16,15 +15,11 @@ class Requests
16
  */
17
  public static function orderCreate(OrderInterface $order)
18
  {
19
- try {
20
- (new ConverdoAPI())->order()->create($order);
21
 
22
- CookieManager::logEcommerce();
23
 
24
- cvd_logger()->info("New order [{$order->getOrderId()}] was placed.");
25
- } catch (Exception $e) {
26
- cvd_logger()->error($e->getMessage());
27
- }
28
 
29
  return true;
30
  }
@@ -37,14 +32,20 @@ class Requests
37
  */
38
  public static function orderStatusUpdate(OrderInterface $order)
39
  {
40
- try {
41
- (new ConverdoAPI())->order()->modifyStatus($order);
42
 
43
- cvd_logger()->info("Order [{$order->getOrderId()}] status changed to [{$order->getStatus()}]");
44
- } catch (Exception $e) {
45
- cvd_logger()->error($e->getMessage());
46
- }
47
 
48
  return true;
49
  }
 
 
 
 
 
 
 
 
 
 
50
  }
4
 
5
  use Converdo\Common\API\Models\Contracts\OrderInterface;
6
  use Converdo\Common\Cookie\Managers\CookieManager;
 
7
 
8
  class Requests
9
  {
15
  */
16
  public static function orderCreate(OrderInterface $order)
17
  {
18
+ cvd_logger()->info("Order [#{$order->getOrderId()}] was created in the webshop.");
 
19
 
20
+ (new ConverdoAPI())->order()->create($order);
21
 
22
+ CookieManager::logEcommerce();
 
 
 
23
 
24
  return true;
25
  }
32
  */
33
  public static function orderStatusUpdate(OrderInterface $order)
34
  {
35
+ cvd_logger()->info("Order [#{$order->getOrderId()}] status changed to [{$order->getStatus()}] in the webshop.");
 
36
 
37
+ (new ConverdoAPI())->order()->modifyStatus($order);
 
 
 
38
 
39
  return true;
40
  }
41
+
42
+ /**
43
+ * Retrieves the website configuration.
44
+ *
45
+ * @return string
46
+ */
47
+ public static function configuration()
48
+ {
49
+ return (new ConverdoAPI())->setup()->configuration();
50
+ }
51
  }
app/code/community/Converdo/Common/API/Sections/SetupAPI.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Converdo\Common\API\Sections;
4
+
5
+ use Converdo\Common\API\ConverdoClient;
6
+
7
+ class SetupAPI
8
+ {
9
+ /**
10
+ * Retrieve the website configuration.
11
+ *
12
+ * @return bool
13
+ */
14
+ public function configuration()
15
+ {
16
+ return (new ConverdoClient())
17
+ ->setModule('ConverdoSiteManager.configurationCVD')
18
+ ->get();
19
+ }
20
+ }
app/code/community/Converdo/Common/Config/Configuration.php CHANGED
@@ -13,7 +13,7 @@ class Configuration
13
  *
14
  * @var string
15
  */
16
- const VERSION = '2.1.5.56';
17
 
18
  /**
19
  * The Converdo Analytics URL.
@@ -123,6 +123,17 @@ class Configuration
123
  return $this->platform;
124
  }
125
 
 
 
 
 
 
 
 
 
 
 
 
126
  protected function resolveBindings()
127
  {
128
  cvd_app()->bindArray($this->platform()->bindings());
13
  *
14
  * @var string
15
  */
16
+ const VERSION = '2.1.5.57';
17
 
18
  /**
19
  * The Converdo Analytics URL.
123
  return $this->platform;
124
  }
125
 
126
+ /**
127
+ * Returns the protocol to use for API requests.
128
+ *
129
+ * @return string
130
+ */
131
+ public function protocol()
132
+ {
133
+ return $this->environment['protocol'];
134
+ }
135
+
136
+
137
  protected function resolveBindings()
138
  {
139
  cvd_app()->bindArray($this->platform()->bindings());
app/code/community/Converdo/Common/Controllers/PingController.php CHANGED
@@ -4,6 +4,7 @@ namespace Converdo\Common\Controllers;
4
 
5
  use Converdo\Common\Response\JsonResponse;
6
  use Converdo\Common\Support\UsesInput;
 
7
 
8
  class PingController extends JsonResponse
9
  {
@@ -67,17 +68,13 @@ class PingController extends JsonResponse
67
  $website = cvd_config()->platform()->website();
68
  $user = cvd_config()->platform()->user();
69
 
70
- $api = file_get_contents("https://converdo.com/api/ping/{$website}");
71
- $api = json_decode($api);
72
 
73
- if (! $api || $api->error) {
74
- return null;
75
- }
76
-
77
- $tokens = json_decode(cvd_config()->crypt()->decrypt($api->tokens), true);
78
 
79
  $validSite = $tokens['site'] === $website;
80
- $validUser = $tokens['user'] === $user;
81
  $validEncryption = $tokens['encryption'] === cvd_config()->platform()->encryption();
82
 
83
  return [
4
 
5
  use Converdo\Common\Response\JsonResponse;
6
  use Converdo\Common\Support\UsesInput;
7
+ use Converdo\Common\API\Requests;
8
 
9
  class PingController extends JsonResponse
10
  {
68
  $website = cvd_config()->platform()->website();
69
  $user = cvd_config()->platform()->user();
70
 
71
+ $api = Requests::configuration();
72
+ $api = json_decode($api, true)[0];
73
 
74
+ $tokens = json_decode(cvd_config()->crypt()->decrypt($api['tokens']), true);
 
 
 
 
75
 
76
  $validSite = $tokens['site'] === $website;
77
+ $validUser = in_array($user, $tokens['user']);
78
  $validEncryption = $tokens['encryption'] === cvd_config()->platform()->encryption();
79
 
80
  return [
app/code/community/Converdo/Common/Query/Managers/QueryManager.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace Converdo\Common\Managers;
4
 
5
  use Converdo\Common\Query\Queries\Contracts\QueryInterface;
6
 
1
  <?php
2
 
3
+ namespace Converdo\Common\Query\Managers;
4
 
5
  use Converdo\Common\Query\Queries\Contracts\QueryInterface;
6
 
app/code/community/Converdo/Common/Query/Managers/QueryMetadata.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace Converdo\Common\Managers;
4
 
5
  use Converdo\Common\Support\HasParameters;
6
 
1
  <?php
2
 
3
+ namespace Converdo\Common\Query\Managers;
4
 
5
  use Converdo\Common\Support\HasParameters;
6
 
app/code/community/Converdo/Common/Query/Queries/AbstractQuery.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryMetadata;
6
  use Converdo\Common\Query\Queries\Contracts\QueryInterface;
7
  use Converdo\Common\Support\HasParameters;
8
 
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryMetadata;
6
  use Converdo\Common\Query\Queries\Contracts\QueryInterface;
7
  use Converdo\Common\Support\HasParameters;
8
 
app/code/community/Converdo/Common/Query/Queries/AddEcommerceItem.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class AddEcommerceItem extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class AddEcommerceItem extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/CategoryView.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class CategoryView extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class CategoryView extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/CustomVariable.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class CustomVariable extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class CustomVariable extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/EcommerceView.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class EcommerceView extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class EcommerceView extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/EnableHeartBeatTimer.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class EnableHeartBeatTimer extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class EnableHeartBeatTimer extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/EnableLinkTracking.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class EnableLinkTracking extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class EnableLinkTracking extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/SiteId.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class SiteId extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class SiteId extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/TrackEcommerceCart.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class TrackEcommerceCart extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class TrackEcommerceCart extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/TrackPageView.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class TrackPageView extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class TrackPageView extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/TrackSiteSearch.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class TrackSiteSearch extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class TrackSiteSearch extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Query/Queries/TrackerUrl.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
 
7
  class TrackerUrl extends AbstractQuery
8
  {
2
 
3
  namespace Converdo\Common\Query\Queries;
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
 
7
  class TrackerUrl extends AbstractQuery
8
  {
app/code/community/Converdo/Common/Support/ListensToOrders.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Converdo\Common\Support;
4
+
5
+ use Mage_Sales_Model_Order;
6
+ use Varien_Event_Observer;
7
+
8
+ trait ListensToOrders
9
+ {
10
+ /**
11
+ * @var Mage_Sales_Model_Order
12
+ */
13
+ protected $order;
14
+
15
+ /**
16
+ * Gets whether the plugin is disabled and should stop listening to the orders.
17
+ *
18
+ * @return bool
19
+ */
20
+ protected function isDisabled()
21
+ {
22
+ return cvd_config()->platform()->disabled();
23
+ }
24
+
25
+ /**
26
+ * Gets whether the order is invalid or empty and should stop listening to the orders.
27
+ *
28
+ * @param Varien_Event_Observer $observer
29
+ * @return bool
30
+ */
31
+ protected function hasInvalidOrder(Varien_Event_Observer $observer)
32
+ {
33
+ $this->order = $observer->getEvent()->getOrder();
34
+
35
+ return ! $this->order;
36
+ }
37
+
38
+ /**
39
+ * Gets whether the order status is invalid or empty and should stop listening to the orders.
40
+ *
41
+ * @param Varien_Event_Observer $observer
42
+ * @return bool
43
+ */
44
+ protected function hasInvalidOrderOrStatus(Varien_Event_Observer $observer)
45
+ {
46
+ $this->order = $observer->getEvent()->getOrder();
47
+
48
+ return ! $this->order || ! $this->order->getStatus();
49
+ }
50
+
51
+ /**
52
+ * Gets the order.
53
+ *
54
+ * @return Mage_Sales_Model_Order
55
+ */
56
+ public function order()
57
+ {
58
+ return $this->order;
59
+ }
60
+ }
app/code/community/Converdo/Common/autoload.php CHANGED
@@ -1,94 +1,75 @@
1
  <?php
2
 
3
  $classmap = [
4
- '/Common/Support/HasParameters.php',
5
- '/Common/Support/Arrayable.php',
6
- '/Common/Input/Input.php',
7
- '/Common/Input/InputManager.php',
8
- '/Common/Support/UsesInput.php',
9
-
10
- '/Common/Log/LoggerInterface.php',
11
- '/Common/Log/Logger.php',
12
- '/Common/Log/LoggerAwareInterface.php',
13
- '/Common/Log/LogReader.php',
14
-
15
- '/Common/Security/Crypt.php',
16
-
17
- '/Common/Response/Response.php',
18
- '/Common/Response/JsonResponse.php',
19
-
20
- '/Common/Query/Queries/Contracts/QueryInterface.php',
21
-
22
- '/Common/Query/Managers/QueryManager.php',
23
- '/Common/Query/Managers/QueryMetadata.php',
24
-
25
- '/Common/Query/Models/Contracts/EcommerceCartInterface.php',
26
- '/Common/Query/Models/Contracts/EcommerceCategoryInterface.php',
27
- '/Common/Query/Models/Contracts/EcommerceItemInterface.php',
28
- '/Common/Query/Models/Contracts/EcommerceSearchInterface.php',
29
-
30
- '/Common/Query/Models/EcommerceCart.php',
31
- '/Common/Query/Models/EcommerceCategory.php',
32
- '/Common/Query/Models/EcommerceItem.php',
33
- '/Common/Query/Models/EcommerceSearch.php',
34
-
35
- '/Common/Query/Queries/AbstractQuery.php',
36
- '/Common/Query/Queries/EcommerceView.php',
37
- '/Common/Query/Queries/CategoryView.php',
38
- '/Common/Query/Queries/AddEcommerceItem.php',
39
- '/Common/Query/Queries/TrackEcommerceCart.php',
40
- '/Common/Query/Queries/SiteId.php',
41
- '/Common/Query/Queries/TrackerUrl.php',
42
- '/Common/Query/Queries/TrackPageView.php',
43
- '/Common/Query/Queries/TrackSiteSearch.php',
44
- '/Common/Query/Queries/EnableLinkTracking.php',
45
- '/Common/Query/Queries/EnableHeartBeatTimer.php',
46
- '/Common/Query/Queries/CustomVariable.php',
47
-
48
- '/Common/Page/Models/Contracts/PageInterface.php',
49
- '/Common/Page/Models/Page.php',
50
-
51
- '/Common/Page/Factories/PageFactory.php',
52
-
53
- '/Common/Page/Support/PageTypes.php',
54
- '/Common/Page/Support/Contracts/RouteResolverInterface.php',
55
-
56
- '/Common/Cookie/Models/Contracts/CookieInterface.php',
57
- '/Common/Cookie/Models/Cookie.php',
58
- '/Common/Cookie/Factories/CookieFactory.php',
59
- '/Common/Cookie/Managers/CookieManager.php',
60
-
61
- '/Common/Controllers/PingController.php',
62
-
63
- '/Common/Container/Container.php',
64
-
65
- '/Common/Config/Contracts/PlatformConfigurationContract.php',
66
- '/Common/Config/Configuration.php',
67
-
68
- '/Common/API/Models/Contracts/OrderInterface.php',
69
- '/Common/API/Models/Order.php',
70
- '/Common/API/ConverdoClient.php',
71
- '/Common/API/Sections/ConverdoOrderAPI.php',
72
- '/Common/API/ConverdoAPI.php',
73
- '/Common/API/Requests.php',
74
- '/Common/API/Factories/OrderFactory.php',
75
-
76
- '/Magento/Page/RouteResolver.php',
77
- '/Magento/Config/Configuration.php',
78
- '/Magento/Container/Bindings.php',
79
- '/Magento/Factories/EcommerceCartFactory.php',
80
- '/Magento/Factories/EcommerceCategoryFactory.php',
81
- '/Magento/Factories/EcommerceItemFactory.php',
82
- '/Magento/Factories/EcommerceSearchFactory.php',
83
- '/Magento/Support/PriceHelper.php',
84
  ];
85
 
86
  foreach ($classmap as $class) {
87
- $class = MAGENTO_ROOT . '/app/code/community/Converdo/' . $class;
88
-
89
- if (! file_exists($class)) {
90
- return false;
91
  }
92
-
93
- require_once $class;
94
  }
1
  <?php
2
 
3
  $classmap = [
4
+ '/Common/Support/HasParameters',
5
+ '/Common/Support/Arrayable',
6
+ '/Common/Support/ListensToOrders',
7
+ '/Common/Input/Input',
8
+ '/Common/Input/InputManager',
9
+ '/Common/Support/UsesInput',
10
+ '/Common/Log/LoggerInterface',
11
+ '/Common/Log/Logger',
12
+ '/Common/Log/LoggerAwareInterface',
13
+ '/Common/Log/LogReader',
14
+ '/Common/Security/Crypt',
15
+ '/Common/Response/Response',
16
+ '/Common/Response/JsonResponse',
17
+ '/Common/Query/Queries/Contracts/QueryInterface',
18
+ '/Common/Query/Managers/QueryManager',
19
+ '/Common/Query/Managers/QueryMetadata',
20
+ '/Common/Query/Models/Contracts/EcommerceCartInterface',
21
+ '/Common/Query/Models/Contracts/EcommerceCategoryInterface',
22
+ '/Common/Query/Models/Contracts/EcommerceItemInterface',
23
+ '/Common/Query/Models/Contracts/EcommerceSearchInterface',
24
+ '/Common/Query/Models/EcommerceCart',
25
+ '/Common/Query/Models/EcommerceCategory',
26
+ '/Common/Query/Models/EcommerceItem',
27
+ '/Common/Query/Models/EcommerceSearch',
28
+ '/Common/Query/Queries/AbstractQuery',
29
+ '/Common/Query/Queries/EcommerceView',
30
+ '/Common/Query/Queries/CategoryView',
31
+ '/Common/Query/Queries/AddEcommerceItem',
32
+ '/Common/Query/Queries/TrackEcommerceCart',
33
+ '/Common/Query/Queries/SiteId',
34
+ '/Common/Query/Queries/TrackerUrl',
35
+ '/Common/Query/Queries/TrackPageView',
36
+ '/Common/Query/Queries/TrackSiteSearch',
37
+ '/Common/Query/Queries/EnableLinkTracking',
38
+ '/Common/Query/Queries/EnableHeartBeatTimer',
39
+ '/Common/Query/Queries/CustomVariable',
40
+ '/Common/Page/Models/Contracts/PageInterface',
41
+ '/Common/Page/Models/Page',
42
+ '/Common/Page/Factories/PageFactory',
43
+ '/Common/Page/Support/PageTypes',
44
+ '/Common/Page/Support/Contracts/RouteResolverInterface',
45
+ '/Common/Cookie/Models/Contracts/CookieInterface',
46
+ '/Common/Cookie/Models/Cookie',
47
+ '/Common/Cookie/Factories/CookieFactory',
48
+ '/Common/Cookie/Managers/CookieManager',
49
+ '/Common/Controllers/PingController',
50
+ '/Common/Container/Container',
51
+ '/Common/Config/Contracts/PlatformConfigurationContract',
52
+ '/Common/Config/Configuration',
53
+ '/Common/API/Models/Contracts/OrderInterface',
54
+ '/Common/API/Models/Order',
55
+ '/Common/API/ConverdoClient',
56
+ '/Common/API/Sections/ConverdoOrderAPI',
57
+ '/Common/API/Sections/SetupAPI',
58
+ '/Common/API/ConverdoAPI',
59
+ '/Common/API/Requests',
60
+ '/Common/API/Factories/OrderFactory',
61
+ '/Magento/Page/RouteResolver',
62
+ '/Magento/Config/Configuration',
63
+ '/Magento/Container/Bindings',
64
+ '/Magento/Factories/EcommerceCartFactory',
65
+ '/Magento/Factories/EcommerceCategoryFactory',
66
+ '/Magento/Factories/EcommerceItemFactory',
67
+ '/Magento/Factories/EcommerceSearchFactory',
68
+ '/Magento/Support/PriceHelper',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  ];
70
 
71
  foreach ($classmap as $class) {
72
+ if (realpath(dirname(__DIR__) . $class . '.php')) {
73
+ require_once dirname(__DIR__) . $class . '.php';
 
 
74
  }
 
 
75
  }
app/code/community/Converdo/Common/bootstrap.php CHANGED
@@ -1,7 +1,5 @@
1
  <?php
2
 
3
- define('CONVERDO_ANALYTICS_START', microtime(true));
4
-
5
  $autoload = require_once __DIR__ . '/autoload.php';
6
 
7
  $functions = require_once __DIR__ . '/functions.php';
1
  <?php
2
 
 
 
3
  $autoload = require_once __DIR__ . '/autoload.php';
4
 
5
  $functions = require_once __DIR__ . '/functions.php';
app/code/community/Converdo/Common/config.php CHANGED
@@ -3,6 +3,7 @@
3
  return [
4
 
5
  'name' => 'production',
 
6
  'tracker_url' => '//tracker.converdo.com/',
7
  'log_file' => 'ConverdoAnalytics.log',
8
 
3
  return [
4
 
5
  'name' => 'production',
6
+ 'protocol' => 'https',
7
  'tracker_url' => '//tracker.converdo.com/',
8
  'log_file' => 'ConverdoAnalytics.log',
9
 
app/code/community/Converdo/Magento/Block/Tracker.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  require_once __DIR__ . '/../../Common/bootstrap.php';
4
 
5
- use Converdo\Common\Managers\QueryManager;
6
  use Converdo\Common\Query\Queries\SiteId;
7
  use Converdo\Common\Query\Queries\TrackerUrl;
8
  use Converdo\Common\Query\Queries\TrackSiteSearch;
2
 
3
  require_once __DIR__ . '/../../Common/bootstrap.php';
4
 
5
+ use Converdo\Common\Query\Managers\QueryManager;
6
  use Converdo\Common\Query\Queries\SiteId;
7
  use Converdo\Common\Query\Queries\TrackerUrl;
8
  use Converdo\Common\Query\Queries\TrackSiteSearch;
app/code/community/Converdo/Magento/Factories/EcommerceItemFactory.php CHANGED
@@ -43,7 +43,9 @@ class EcommerceItemFactory
43
  */
44
  protected static function categories(array $ids)
45
  {
46
- $categories = array_splice(array_filter($ids), 0, 5);
 
 
47
 
48
  foreach ($ids as $key => $id) {
49
  $category = Mage::getModel('catalog/category')->load($id);
43
  */
44
  protected static function categories(array $ids)
45
  {
46
+ $categories = array_filter($ids);
47
+
48
+ $categories = array_splice($categories, 0, 5);
49
 
50
  foreach ($ids as $key => $id) {
51
  $category = Mage::getModel('catalog/category')->load($id);
app/code/community/Converdo/Magento/Model/Observer.php CHANGED
@@ -1,9 +1,15 @@
1
  <?php
2
 
3
- require_once __DIR__ . '/../../Common/bootstrap.php';
 
 
 
 
4
 
5
  class Converdo_Magento_Model_Observer
6
  {
 
 
7
  /**
8
  * Listens to placed orders. Sends the order to the Converdo Analytics API.
9
  *
@@ -12,16 +18,18 @@ class Converdo_Magento_Model_Observer
12
  */
13
  public function onOrderPlacedEvent(Varien_Event_Observer $observer)
14
  {
15
- /* @var $order Mage_Sales_Model_Order */
 
 
16
 
17
- if (cvd_config()->platform()->enabled()) {
18
- $order = $observer->getEvent()->getOrder();
 
 
19
 
20
- if ($order) {
21
- \Converdo\Common\API\Requests::orderCreate(
22
- \Converdo\Common\Page\Factories\OrderFactory::build($order)
23
- );
24
- }
25
  }
26
  }
27
 
@@ -33,16 +41,18 @@ class Converdo_Magento_Model_Observer
33
  */
34
  public function onOrderStatusChangedEvent(Varien_Event_Observer $observer)
35
  {
36
- /* @var $order Mage_Sales_Model_Order */
 
 
37
 
38
- if (cvd_config()->platform()->enabled()) {
39
- $order = $observer->getEvent()->getOrder();
 
 
40
 
41
- if ($order && $order->getStatus()) {
42
- \Converdo\Common\API\Requests::orderStatusUpdate(
43
- \Converdo\Common\Page\Factories\OrderFactory::build($order)
44
- );
45
- }
46
- }
47
  }
48
  }
1
  <?php
2
 
3
+ require_once dirname(dirname(__DIR__)) . '/Common/bootstrap.php';
4
+
5
+ use Converdo\Common\API\Factories\OrderFactory;
6
+ use Converdo\Common\API\Requests;
7
+ use Converdo\Common\Support\ListensToOrders;
8
 
9
  class Converdo_Magento_Model_Observer
10
  {
11
+ use ListensToOrders;
12
+
13
  /**
14
  * Listens to placed orders. Sends the order to the Converdo Analytics API.
15
  *
18
  */
19
  public function onOrderPlacedEvent(Varien_Event_Observer $observer)
20
  {
21
+ if ($this->isDisabled() || $this->hasInvalidOrder($observer)) {
22
+ return;
23
+ }
24
 
25
+ try {
26
+ Requests::orderCreate(
27
+ $model = OrderFactory::build($this->order())
28
+ );
29
 
30
+ cvd_logger()->info("Order [#{$model->getOrderId()}] was pushed to Converdo Analytics.");
31
+ } catch (Exception $e) {
32
+ cvd_logger()->error($e->getMessage());
 
 
33
  }
34
  }
35
 
41
  */
42
  public function onOrderStatusChangedEvent(Varien_Event_Observer $observer)
43
  {
44
+ if ($this->isDisabled() || $this->hasInvalidOrderOrStatus($observer)) {
45
+ return;
46
+ }
47
 
48
+ try {
49
+ Requests::orderStatusUpdate(
50
+ $model = OrderFactory::build($this->order())
51
+ );
52
 
53
+ cvd_logger()->info("Order [#{$model->getOrderId()}] status [{$model->getStatus()}] was pushed to Converdo Analytics.");
54
+ } catch (Exception $e) {
55
+ cvd_logger()->error($e->getMessage());
56
+ }
 
 
57
  }
58
  }
app/code/community/Converdo/Magento/etc/config.xml CHANGED
@@ -3,7 +3,7 @@
3
  <config>
4
  <modules>
5
  <Converdo_Magento>
6
- <version>2.1.5.56</version>
7
  </Converdo_Magento>
8
  </modules>
9
  <global>
3
  <config>
4
  <modules>
5
  <Converdo_Magento>
6
+ <version>2.1.5.57</version>
7
  </Converdo_Magento>
8
  </modules>
9
  <global>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Converdo_Analytics</name>
4
- <version>2.1.5.56</version>
5
  <stability>stable</stability>
6
  <license>MITL</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Better E-commerce Analytics. Clear, actionable insight in the behavior of your visitors. Improve your campaigns and conversion rate easily. This plugin, installed in a minute, is all you need to have a complete and powerfull Analytics Suite. View your KPI's and sales funnels, segmented on dozens of dimensions like page type, device, landing page, campaign, etc. This plugin collects your users behaviour so you can view the insights on your dashboard on converdo.com. You can use Converdo Analytics side by side with Google Analytics without a problem. It works asynchronous so it will never impact your user experience. This extension is made especially for Magento ecommerce stores, which provides you powerfull insights out of the box.</description>
11
  <notes>More reliable way to track orders and product metadata.</notes>
12
  <authors><author><name>Roeland van Oostenbrugge</name><user>converdo</user><email>roeland@converdo.nl</email></author></authors>
13
- <date>2017-04-13</date>
14
- <time>14:41:18</time>
15
- <contents><target name="magecommunity"><dir name="Converdo"><dir name="Common"><dir name="API"><file name="ConverdoAPI.php" hash="432539ea2f6388eb6e067dd689676054"/><file name="ConverdoClient.php" hash="26f62f764c4b47714f69f9e06009893c"/><dir name="Factories"><file name="OrderFactory.php" hash="f3718d7811896d18ade13c77826fc910"/></dir><dir name="Models"><dir name="Contracts"><file name="OrderInterface.php" hash="426e172166014f03cfe4d44bf4041711"/></dir><file name="Order.php" hash="fc528438a5f74c8e3689189a4c305627"/></dir><file name="Requests.php" hash="7b9a3341c1db50b44eac0d7f207f35f0"/><dir name="Sections"><file name="ConverdoOrderAPI.php" hash="0865ae8e4c4d49b60e96e73c62e7c59a"/></dir><dir name="resources"><file name="api_cert_chain.pem" hash="38cd779c9429ab6e2e5ae3437b763238"/></dir></dir><dir name="Config"><file name="Configuration.php" hash="71bec19d8c3bf2dc239d5fdc6c7d366c"/><dir name="Contracts"><file name="PlatformConfigurationContract.php" hash="a81b3b6f3d95a1d295aa4655d89ea4c7"/></dir></dir><dir name="Container"><file name="Container.php" hash="b5397c8e26370c051cc78d6e6f1fd1d9"/></dir><dir name="Controllers"><file name="PingController.php" hash="31bd42531725c49273f5f2dc4793c4ac"/></dir><dir name="Cookie"><dir name="Factories"><file name="CookieFactory.php" hash="a2f67fc875f3bead010019f0ca9c8562"/></dir><dir name="Managers"><file name="CookieManager.php" hash="7c47484c5c0bb99c11f67a1adbfacad5"/></dir><dir name="Models"><dir name="Contracts"><file name="CookieInterface.php" hash="87c4d60b8cd462d41256b536b950d6f4"/></dir><file name="Cookie.php" hash="f4281cb4f6cf64739c47934089787e28"/></dir></dir><dir name="Input"><file name="Input.php" hash="dff17aa36ebff1249828ef849a7f6b3d"/><file name="InputManager.php" hash="ba9c61bb2a5d9e762c405f68b3773e45"/></dir><dir name="Log"><file name="LogReader.php" hash="8d1e48c646aebbacc9d22d37e3c42a71"/><file name="Logger.php" hash="51f3a0097798660f2cc0e24064a7c7d7"/><file name="LoggerAwareInterface.php" hash="75abd91a001bcf77df81ba4b487dadf4"/><file name="LoggerInterface.php" hash="9fd1a50cac6d243e5886df81aabf9794"/></dir><dir name="Page"><dir name="Factories"><file name="PageFactory.php" hash="aa982ee69889e676f67abd564279fde2"/></dir><dir name="Models"><dir name="Contracts"><file name="PageInterface.php" hash="ba745e11e0372dda50981143cb1d1570"/></dir><file name="Page.php" hash="7b75835e5737b69cf46ea77644cfa851"/></dir><dir name="Support"><dir name="Contracts"><file name="RouteResolverInterface.php" hash="400bfe4611b9e732d9fdd4fef86575fe"/></dir><file name="PageTypes.php" hash="c00d29114e972a7dc24a666a110f1dbf"/></dir></dir><dir name="Query"><dir name="Managers"><file name="QueryManager.php" hash="84426e2fe1bd199d2138cb5b160b2eb3"/><file name="QueryMetadata.php" hash="f1d4df587d00c72c1979194e2cad652c"/></dir><dir name="Models"><dir name="Contracts"><file name="EcommerceCartInterface.php" hash="7b18db590c782d99f7b9514c5d375348"/><file name="EcommerceCategoryInterface.php" hash="159b1bb3a4248c67e46dd6201064ed2c"/><file name="EcommerceItemInterface.php" hash="9be3da4668044b3fb0609bb496371da6"/><file name="EcommerceSearchInterface.php" hash="6aad67169123749733737e2b0104ffba"/></dir><file name="EcommerceCart.php" hash="d569b0d2ecb4421b9e06c4de03b1a31a"/><file name="EcommerceCategory.php" hash="d704a2ef710fb7b7bf07d582db2e0611"/><file name="EcommerceItem.php" hash="90efad4308237bfbdb11e67f562d0e8d"/><file name="EcommerceSearch.php" hash="0165c34cab7c3d0a73694d50a26dd77a"/></dir><dir name="Queries"><file name="AbstractQuery.php" hash="fc17566a13fbb5dbada30d4a484b1c10"/><file name="AddEcommerceItem.php" hash="fa06f091d857da316b88ca478659ab12"/><file name="CategoryView.php" hash="ef1ea971183dd860f3691a04a17a29a5"/><dir name="Contracts"><file name="QueryInterface.php" hash="fb92b5d11d99cfbff66af5596032fc13"/></dir><file name="CustomVariable.php" hash="6da73fa0855929c82b48832665304478"/><file name="EcommerceView.php" hash="c12180499dccb8bcf221f25d5f3a5e97"/><file name="EnableHeartBeatTimer.php" hash="ae8f29109aa092e5df3219806e20e3a5"/><file name="EnableLinkTracking.php" hash="16eb04587eb0bb1874b1c2bc3b1a3f3e"/><file name="SiteId.php" hash="b1d7890e673d8c958c763e7a3f5d1119"/><file name="TrackEcommerceCart.php" hash="801ad3399b238cc947d51da246dc4755"/><file name="TrackPageView.php" hash="e554c9f7b893148985a6e93772afa760"/><file name="TrackSiteSearch.php" hash="06446020dae5ff4e2d9b4f1e612f9c70"/><file name="TrackerUrl.php" hash="7813ff69d8f76921c442895bdd9d4f5f"/></dir></dir><dir name="Response"><file name="JsonResponse.php" hash="d3a4ff6984e2378d74f8afe007ea1d8d"/><file name="Response.php" hash="a4fb3927099ee5e69ea869b464039fd6"/></dir><dir name="Security"><file name="Crypt.php" hash="d0f67307ef26d6691c72c702b7fcf3f2"/></dir><dir name="Support"><file name="Arrayable.php" hash="cd34de85cce8e6b7ca3f5585dfa631e9"/><file name="HasParameters.php" hash="0821ecb3fd95c56e34880e86d1afb246"/><file name="UsesInput.php" hash="e4c019693f821df634361955a24d056d"/></dir><file name="autoload.php" hash="af11b44634fe2910a75c94e58c9e842b"/><file name="bootstrap.php" hash="2ddcf1ff10a3cb32f3613b806f0d4427"/><file name="config.php" hash="13de96b66211ba832d0c359bacd2bc4c"/><file name="dependencies.php" hash="e35bc74ed0d628cc007581178881854c"/><file name="functions.php" hash="1ec63ac646838220bfd7c04e536a5fd4"/></dir><dir name="Magento"><dir name="Block"><file name="Tracker.php" hash="6d883c0fdc6d8768bfe4465b7006d570"/></dir><dir name="Config"><file name="Configuration.php" hash="8872732a1e15fe6e77359770abd8d4fb"/></dir><dir name="Container"><file name="Bindings.php" hash="25bfa222ea8ce66da2b50a6cc9c48ac0"/></dir><dir name="Factories"><file name="EcommerceCartFactory.php" hash="43ce610668ad865ddaaa5dfce6420e93"/><file name="EcommerceCategoryFactory.php" hash="7d21cba8d68be5bccb4f6387badb8674"/><file name="EcommerceItemFactory.php" hash="bedf9b354ee73443170e2310433f3734"/><file name="EcommerceSearchFactory.php" hash="ea08378e24f27567abb3ae85f500e658"/></dir><dir name="Helper"><file name="Data.php" hash="5b2572fbbd9d6acfe1907830ab883a19"/></dir><dir name="Model"><file name="Observer.php" hash="798074982172e7d8c14a13b5e7ee7c9f"/></dir><dir name="Page"><file name="RouteResolver.php" hash="fe9952398586e39679c85092ea03f013"/></dir><dir name="Support"><file name="PriceHelper.php" hash="375c5f44c2c9b90618919412e235e961"/></dir><dir name="controllers"><file name="PingController.php" hash="7649748a504168df69239daed1a96418"/></dir><dir name="etc"><file name="adminhtml.xml" hash="9923bfe8c0f4aa318166e15cd373cf09"/><file name="config.xml" hash="c6a44d8819c5d7be4fbc0ae0d4557e96"/><file name="system.xml" hash="f45bc8eac0bd50a4ca12241d01c19322"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="analytics.xml" hash="d3f9d35df1981968a55a331c2b92d473"/></dir><dir name="template"><dir name="analytics"><file name="analytics.phtml" hash="30a9a5e06b7f8e8c8dc5d73249f1e172"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Converdo_Analytics.xml" hash="c1e39f4e5886e1a22dc078ddebca8ee3"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Converdo_Analytics.csv" hash="425f8597860e056c6566f3aab5c43a5e"/></dir><dir name="nl_NL"><file name="Converdo_Analytics.csv" hash="08d8c0cf37c34a266b120bc75a0fa924"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="converdoanalytics"><dir name="css"><file name="system_config_edit.css" hash="fd6f5337fd9a9b69b85079e17aa0e40b"/></dir><dir name="images"><file name="favicon.png" hash="674c9388eba1ea89e200fe6b1a62fc24"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="converdoanalytics.xml" hash="b949a1ad4594eeb82ae7138c60afc19e"/></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.5.37</min><max>7.0.5</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Converdo_Analytics</name>
4
+ <version>2.1.5.57</version>
5
  <stability>stable</stability>
6
  <license>MITL</license>
7
  <channel>community</channel>
10
  <description>Better E-commerce Analytics. Clear, actionable insight in the behavior of your visitors. Improve your campaigns and conversion rate easily. This plugin, installed in a minute, is all you need to have a complete and powerfull Analytics Suite. View your KPI's and sales funnels, segmented on dozens of dimensions like page type, device, landing page, campaign, etc. This plugin collects your users behaviour so you can view the insights on your dashboard on converdo.com. You can use Converdo Analytics side by side with Google Analytics without a problem. It works asynchronous so it will never impact your user experience. This extension is made especially for Magento ecommerce stores, which provides you powerfull insights out of the box.</description>
11
  <notes>More reliable way to track orders and product metadata.</notes>
12
  <authors><author><name>Roeland van Oostenbrugge</name><user>converdo</user><email>roeland@converdo.nl</email></author></authors>
13
+ <date>2017-04-18</date>
14
+ <time>12:06:17</time>
15
+ <contents><target name="magecommunity"><dir name="Converdo"><dir name="Common"><dir name="API"><file name="ConverdoAPI.php" hash="73dfefe52b6f0066863e93239bb607c6"/><file name="ConverdoClient.php" hash="4f79d13a77da330ec187390a435fa954"/><dir name="Factories"><file name="OrderFactory.php" hash="9515dd34734170910ae8f1ebf723409e"/></dir><dir name="Models"><dir name="Contracts"><file name="OrderInterface.php" hash="426e172166014f03cfe4d44bf4041711"/></dir><file name="Order.php" hash="fc528438a5f74c8e3689189a4c305627"/></dir><file name="Requests.php" hash="a0e2e58520de186e229ff6cfef48b086"/><dir name="Sections"><file name="ConverdoOrderAPI.php" hash="0865ae8e4c4d49b60e96e73c62e7c59a"/><file name="SetupAPI.php" hash="9a1059594426d668bd74394e16b8af52"/></dir><dir name="resources"><file name="api_cert_chain.pem" hash="38cd779c9429ab6e2e5ae3437b763238"/></dir></dir><dir name="Config"><file name="Configuration.php" hash="f7ea85f763cb49811fc66342ecf09bed"/><dir name="Contracts"><file name="PlatformConfigurationContract.php" hash="a81b3b6f3d95a1d295aa4655d89ea4c7"/></dir></dir><dir name="Container"><file name="Container.php" hash="b5397c8e26370c051cc78d6e6f1fd1d9"/></dir><dir name="Controllers"><file name="PingController.php" hash="b8cf566fb1631795606b13357b5d9954"/></dir><dir name="Cookie"><dir name="Factories"><file name="CookieFactory.php" hash="a2f67fc875f3bead010019f0ca9c8562"/></dir><dir name="Managers"><file name="CookieManager.php" hash="7c47484c5c0bb99c11f67a1adbfacad5"/></dir><dir name="Models"><dir name="Contracts"><file name="CookieInterface.php" hash="87c4d60b8cd462d41256b536b950d6f4"/></dir><file name="Cookie.php" hash="f4281cb4f6cf64739c47934089787e28"/></dir></dir><dir name="Input"><file name="Input.php" hash="dff17aa36ebff1249828ef849a7f6b3d"/><file name="InputManager.php" hash="ba9c61bb2a5d9e762c405f68b3773e45"/></dir><dir name="Log"><file name="LogReader.php" hash="8d1e48c646aebbacc9d22d37e3c42a71"/><file name="Logger.php" hash="51f3a0097798660f2cc0e24064a7c7d7"/><file name="LoggerAwareInterface.php" hash="75abd91a001bcf77df81ba4b487dadf4"/><file name="LoggerInterface.php" hash="9fd1a50cac6d243e5886df81aabf9794"/></dir><dir name="Page"><dir name="Factories"><file name="PageFactory.php" hash="aa982ee69889e676f67abd564279fde2"/></dir><dir name="Models"><dir name="Contracts"><file name="PageInterface.php" hash="ba745e11e0372dda50981143cb1d1570"/></dir><file name="Page.php" hash="7b75835e5737b69cf46ea77644cfa851"/></dir><dir name="Support"><dir name="Contracts"><file name="RouteResolverInterface.php" hash="400bfe4611b9e732d9fdd4fef86575fe"/></dir><file name="PageTypes.php" hash="c00d29114e972a7dc24a666a110f1dbf"/></dir></dir><dir name="Query"><dir name="Managers"><file name="QueryManager.php" hash="61e60f8398362956cb0ec8c762b02395"/><file name="QueryMetadata.php" hash="200fa9e4617ad1a2af5e1917f98608b7"/></dir><dir name="Models"><dir name="Contracts"><file name="EcommerceCartInterface.php" hash="7b18db590c782d99f7b9514c5d375348"/><file name="EcommerceCategoryInterface.php" hash="159b1bb3a4248c67e46dd6201064ed2c"/><file name="EcommerceItemInterface.php" hash="9be3da4668044b3fb0609bb496371da6"/><file name="EcommerceSearchInterface.php" hash="6aad67169123749733737e2b0104ffba"/></dir><file name="EcommerceCart.php" hash="d569b0d2ecb4421b9e06c4de03b1a31a"/><file name="EcommerceCategory.php" hash="d704a2ef710fb7b7bf07d582db2e0611"/><file name="EcommerceItem.php" hash="90efad4308237bfbdb11e67f562d0e8d"/><file name="EcommerceSearch.php" hash="0165c34cab7c3d0a73694d50a26dd77a"/></dir><dir name="Queries"><file name="AbstractQuery.php" hash="5dcee2afe12464bfc44da51e4239a446"/><file name="AddEcommerceItem.php" hash="fddbf90dd55152fc6a7c7b0b505c028a"/><file name="CategoryView.php" hash="8ffba1f33d6422906f7ed892622fb7d0"/><dir name="Contracts"><file name="QueryInterface.php" hash="fb92b5d11d99cfbff66af5596032fc13"/></dir><file name="CustomVariable.php" hash="aeb6b689fe9329b3575568baad8654bc"/><file name="EcommerceView.php" hash="c050012bc7e21c8756556cd98a61ae47"/><file name="EnableHeartBeatTimer.php" hash="764297b7bdeafe467b30a9fd818e9387"/><file name="EnableLinkTracking.php" hash="ad80f078bac6d11bebd410fd6d5940aa"/><file name="SiteId.php" hash="512d6b403ca87040a91634a025ba61b3"/><file name="TrackEcommerceCart.php" hash="feaee2f5a7179ccf850a620b281c32da"/><file name="TrackPageView.php" hash="c493c1740f6c1ecc607da3491dbbcfb0"/><file name="TrackSiteSearch.php" hash="ca3316f8aec5439041ff2d88953362ae"/><file name="TrackerUrl.php" hash="d9149278970edebdc256596f8cfb841e"/></dir></dir><dir name="Response"><file name="JsonResponse.php" hash="d3a4ff6984e2378d74f8afe007ea1d8d"/><file name="Response.php" hash="a4fb3927099ee5e69ea869b464039fd6"/></dir><dir name="Security"><file name="Crypt.php" hash="d0f67307ef26d6691c72c702b7fcf3f2"/></dir><dir name="Support"><file name="Arrayable.php" hash="cd34de85cce8e6b7ca3f5585dfa631e9"/><file name="HasParameters.php" hash="0821ecb3fd95c56e34880e86d1afb246"/><file name="ListensToOrders.php" hash="7dfed83d1ed17eac76adc9155f430c83"/><file name="UsesInput.php" hash="e4c019693f821df634361955a24d056d"/></dir><file name="autoload.php" hash="87bc082ad2c25ec28e2084bd41a1b48f"/><file name="bootstrap.php" hash="69f043c0de3d8c5afcde2dfcdc8c946d"/><file name="config.php" hash="731202bc124bad83a91f9a76f81f1a16"/><file name="dependencies.php" hash="e35bc74ed0d628cc007581178881854c"/><file name="functions.php" hash="1ec63ac646838220bfd7c04e536a5fd4"/></dir><dir name="Magento"><dir name="Block"><file name="Tracker.php" hash="26cdb06b3c7c4fabcb316e58e5f4fa20"/></dir><dir name="Config"><file name="Configuration.php" hash="8872732a1e15fe6e77359770abd8d4fb"/></dir><dir name="Container"><file name="Bindings.php" hash="25bfa222ea8ce66da2b50a6cc9c48ac0"/></dir><dir name="Factories"><file name="EcommerceCartFactory.php" hash="43ce610668ad865ddaaa5dfce6420e93"/><file name="EcommerceCategoryFactory.php" hash="7d21cba8d68be5bccb4f6387badb8674"/><file name="EcommerceItemFactory.php" hash="7c09e3ac74f1ccab2ab368a69fefcf39"/><file name="EcommerceSearchFactory.php" hash="ea08378e24f27567abb3ae85f500e658"/></dir><dir name="Helper"><file name="Data.php" hash="5b2572fbbd9d6acfe1907830ab883a19"/></dir><dir name="Model"><file name="Observer.php" hash="29974dafb986c52cee066c8f4813f215"/></dir><dir name="Page"><file name="RouteResolver.php" hash="fe9952398586e39679c85092ea03f013"/></dir><dir name="Support"><file name="PriceHelper.php" hash="375c5f44c2c9b90618919412e235e961"/></dir><dir name="controllers"><file name="PingController.php" hash="7649748a504168df69239daed1a96418"/></dir><dir name="etc"><file name="adminhtml.xml" hash="9923bfe8c0f4aa318166e15cd373cf09"/><file name="config.xml" hash="43db0c00b39c0d284dd40923d4196bae"/><file name="system.xml" hash="f45bc8eac0bd50a4ca12241d01c19322"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="analytics.xml" hash="d3f9d35df1981968a55a331c2b92d473"/></dir><dir name="template"><dir name="analytics"><file name="analytics.phtml" hash="30a9a5e06b7f8e8c8dc5d73249f1e172"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Converdo_Analytics.xml" hash="c1e39f4e5886e1a22dc078ddebca8ee3"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Converdo_Analytics.csv" hash="425f8597860e056c6566f3aab5c43a5e"/></dir><dir name="nl_NL"><file name="Converdo_Analytics.csv" hash="08d8c0cf37c34a266b120bc75a0fa924"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="converdoanalytics"><dir name="css"><file name="system_config_edit.css" hash="fd6f5337fd9a9b69b85079e17aa0e40b"/></dir><dir name="images"><file name="favicon.png" hash="674c9388eba1ea89e200fe6b1a62fc24"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="converdoanalytics.xml" hash="b949a1ad4594eeb82ae7138c60afc19e"/></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.5.37</min><max>7.0.5</max></php></required></dependencies>
18
  </package>