Metrilo_Analytics - Version 1.0.1

Version Notes

The first stable version of Metrilo's integration with Magento

Download this release

Release Info

Developer Murry Ivanoff
Extension Metrilo_Analytics
Version 1.0.1
Comparing to
See all releases


Code changes from version 1.0.0 to 1.0.1

app/code/community/Metrilo/Analytics/Helper/Data.php CHANGED
@@ -54,14 +54,26 @@ class Metrilo_Analytics_Helper_Data extends Mage_Core_Helper_Abstract
54
  * @param string $type
55
  * @param string|array $data
56
  */
57
- public function addEvent($method, $type, $data)
58
  {
59
- $events = (array)$this->getSession()->getData(Metrilo_Analytics_Block_Head::DATA_TAG);
60
- $events[] = array(
 
 
 
 
 
61
  'method' => $method,
62
  'type' => $type,
63
  'data' => $data
64
  );
 
 
 
 
 
 
 
65
  $this->getSession()->setData(Metrilo_Analytics_Block_Head::DATA_TAG, $events);
66
  }
67
 
@@ -85,7 +97,7 @@ class Metrilo_Analytics_Helper_Data extends Mage_Core_Helper_Abstract
85
  );
86
 
87
  if ($order->getCouponCode()) {
88
- $data['coupons'] = $order->getCouponCode();
89
  }
90
  $skusAdded = array();
91
  foreach ($order->getAllItems() as $item) {
54
  * @param string $type
55
  * @param string|array $data
56
  */
57
+ public function addEvent($method, $type, $data, $metaData = false)
58
  {
59
+ $events = array();
60
+
61
+ if ($this->getSession()->getData(Metrilo_Analytics_Block_Head::DATA_TAG) != '') {
62
+ $events = (array)$this->getSession()->getData(Metrilo_Analytics_Block_Head::DATA_TAG);
63
+ }
64
+
65
+ $eventToAdd = array(
66
  'method' => $method,
67
  'type' => $type,
68
  'data' => $data
69
  );
70
+
71
+ if ($metaData) {
72
+ $eventToAdd['metaData'] = $metaData;
73
+ }
74
+
75
+ array_push($events, $eventToAdd);
76
+
77
  $this->getSession()->setData(Metrilo_Analytics_Block_Head::DATA_TAG, $events);
78
  }
79
 
97
  );
98
 
99
  if ($order->getCouponCode()) {
100
+ $data['coupons'] = array($order->getCouponCode());
101
  }
102
  $skusAdded = array();
103
  foreach ($order->getAllItems() as $item) {
app/code/community/Metrilo/Analytics/Model/Observer.php CHANGED
@@ -44,12 +44,30 @@ class Metrilo_Analytics_Model_Observer
44
  {
45
  $helper = Mage::helper('metrilo_analytics');
46
  $action = $observer->getEvent()->getAction()->getFullActionName();
47
- $pageTracked = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  // homepage & CMS pages
49
  if ($action == 'cms_index_index' || $action == 'cms_page_view') {
50
  $title = Mage::getSingleton('cms/page')->getTitle();
51
- $helper->addEvent('track', 'pageview', $title);
52
- $pageTracked = true;
53
  }
54
  // category view pages
55
  if($action == 'catalog_category_view') {
@@ -59,7 +77,7 @@ class Metrilo_Analytics_Model_Observer
59
  'name' => $category->getName()
60
  );
61
  $helper->addEvent('track', 'view_category', $data);
62
- $pageTracked = true;
63
  }
64
  // product view pages
65
  if ($action == 'catalog_product_view') {
@@ -86,23 +104,35 @@ class Metrilo_Analytics_Model_Observer
86
  $data['categories'] = $categories;
87
  }
88
  $helper->addEvent('track', 'view_product', $data);
89
- $pageTracked = true;
90
  }
91
  // cart view
92
  if($action == 'checkout_cart_index') {
93
  $helper->addEvent('track', 'view_cart', array());
94
- $pageTracked = true;
95
  }
96
  // checkout
97
  if ($action != 'checkout_cart_index' && strpos($action, 'checkout') !== false && strpos($action, 'success') === false) {
98
  $helper->addEvent('track', 'checkout_start', array());
99
- $pageTracked = true;
100
  }
 
101
  // Any other pages
102
- if(!$pageTracked) {
103
- $title = $observer->getEvent()->getLayout()->getBlock('head')->getTitle();
104
- $helper->addEvent('track', 'pageview', $title);
105
- }
 
 
 
 
 
 
 
 
 
 
 
106
  }
107
 
108
  /**
@@ -200,6 +230,18 @@ class Metrilo_Analytics_Model_Observer
200
  $order = $observer->getOrder();
201
  if ($order->getId()) {
202
  $data = $helper->prepareOrderDetails($order);
 
 
 
 
 
 
 
 
 
 
 
 
203
  $helper->addEvent('track', 'order', $data);
204
  }
205
  }
44
  {
45
  $helper = Mage::helper('metrilo_analytics');
46
  $action = $observer->getEvent()->getAction()->getFullActionName();
47
+
48
+ if ($this->_isRejected($action)) {
49
+ return;
50
+ }
51
+
52
+ // Catalog search pages
53
+ if ($action == 'catalogsearch_result_index') {
54
+ $query = Mage::helper('catalogsearch')->getQuery();
55
+ if ($text = $query->getQueryText()) {
56
+ $resultCount = Mage::app()->getLayout()->getBlock('search.result')->getResultCount();
57
+ $params = array(
58
+ 'query' => $text,
59
+ 'result_count' => $resultCount
60
+ );
61
+ $helper->addEvent('track', 'search', $params);
62
+ return;
63
+ }
64
+ }
65
+
66
  // homepage & CMS pages
67
  if ($action == 'cms_index_index' || $action == 'cms_page_view') {
68
  $title = Mage::getSingleton('cms/page')->getTitle();
69
+ $helper->addEvent('track', 'pageview', $title, array('backend_hook' => $action));
70
+ return;
71
  }
72
  // category view pages
73
  if($action == 'catalog_category_view') {
77
  'name' => $category->getName()
78
  );
79
  $helper->addEvent('track', 'view_category', $data);
80
+ return;
81
  }
82
  // product view pages
83
  if ($action == 'catalog_product_view') {
104
  $data['categories'] = $categories;
105
  }
106
  $helper->addEvent('track', 'view_product', $data);
107
+ return;
108
  }
109
  // cart view
110
  if($action == 'checkout_cart_index') {
111
  $helper->addEvent('track', 'view_cart', array());
112
+ return;
113
  }
114
  // checkout
115
  if ($action != 'checkout_cart_index' && strpos($action, 'checkout') !== false && strpos($action, 'success') === false) {
116
  $helper->addEvent('track', 'checkout_start', array());
117
+ return;
118
  }
119
+
120
  // Any other pages
121
+ $title = $observer->getEvent()->getLayout()->getBlock('head')->getTitle();
122
+ $helper->addEvent('track', 'pageview', $title, array('backend_hook' => $action));
123
+ }
124
+
125
+ /**
126
+ * Events that we don't want to track
127
+ *
128
+ * @param string event
129
+ */
130
+ private function _isRejected(string $event)
131
+ {
132
+ return in_array(
133
+ $event,
134
+ array('catalogsearch_advanced_result', 'catalogsearch_advanced_index')
135
+ );
136
  }
137
 
138
  /**
230
  $order = $observer->getOrder();
231
  if ($order->getId()) {
232
  $data = $helper->prepareOrderDetails($order);
233
+ if($order->getCustomerIsGuest()) {
234
+ $identify = array(
235
+ 'id' => $order->getCustomerEmail(),
236
+ 'params' => array(
237
+ 'email' => $order->getCustomerEmail(),
238
+ 'name' => $order->getCustomerFirstname(). ' '. $order->getCustomerLastname(),
239
+ 'first_name' => $order->getCustomerFirstname(),
240
+ 'last_name' => $order->getCustomerLastname(),
241
+ )
242
+ );
243
+ $helper->addEvent('identify', 'identify', $identify);
244
+ }
245
  $helper->addEvent('track', 'order', $data);
246
  }
247
  }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Metrilo_Analytics</name>
4
- <version>1.0.0</version>
5
  <stability>stable</stability>
6
  <license>Apache Software License (ASL)</license>
7
  <channel>community</channel>
@@ -20,9 +20,9 @@
20
  * Metrilo automatically collects and analyzes your eCommerce data to use for your email campaigns.</description>
21
  <notes>The first stable version of Metrilo's integration with Magento</notes>
22
  <authors><author><name>Murry Ivanoff</name><user>Metrilo</user><email>murry@metrilo.com</email></author><author><name>Miroslav Petrov</name><user>miro</user><email>miro91tn@gmail.com</email></author><author><name>Zhivko Draganov</name><user>zhivko</user><email>zhivko@metrilo.com</email></author></authors>
23
- <date>2015-09-03</date>
24
- <time>08:26:32</time>
25
- <contents><target name="magecommunity"><dir name="Metrilo"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="70aadb3d62d998a3076bd4f9209db560"/></dir></dir></dir></dir><file name="Head.php" hash="7fc6870506f8882520b4e2b9596600d7"/></dir><dir name="Helper"><file name="Data.php" hash="3b3d5f6796d7370863ce116107a90f1c"/></dir><dir name="Model"><file name="Import.php" hash="1eb20cd00c210ee378039edb8d0515dc"/><file name="Observer.php" hash="ca427229dd8f754efd4b3cf511c25cf6"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AjaxController.php" hash="0a16196c1c62b3359508b0b688a36e04"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="00c90fdba5e48bb35367c16c83abd6a7"/><file name="config.xml" hash="4708aed8284ec5c1457ca08a5ae079f6"/><file name="system.xml" hash="7564c68e51df23d7975bc1c9ead7be8f"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="metrilo_analytics.xml" hash="0e6911e2e883992f2182969286d929b1"/></dir><dir name="template"><dir name="metrilo"><dir name="system"><dir name="config"><file name="button.phtml" hash="528d7eb52bf996b7b2a31e8c6a4d7d86"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="metrilo"><file name="favicon-metrilo.png" hash="743558f1e49a730be9d515197a36567b"/><file name="loader.gif" hash="e05e6bb35d035cac4f3e0c8af213e9ab"/><file name="logo.png" hash="e9e54afd81384e12f77aca4eaebf5be8"/><file name="styles.css" hash="da0c07513d917e4ad08ff50814b536e1"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Metrilo_Analytics.xml" hash="3a4dbecc4e093537f11dd4c8fa2756e7"/></dir></target></contents>
26
  <compatible/>
27
  <dependencies><required><php><min>5.2.1</min><max>5.6.22</max></php></required></dependencies>
28
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Metrilo_Analytics</name>
4
+ <version>1.0.1</version>
5
  <stability>stable</stability>
6
  <license>Apache Software License (ASL)</license>
7
  <channel>community</channel>
20
  * Metrilo automatically collects and analyzes your eCommerce data to use for your email campaigns.</description>
21
  <notes>The first stable version of Metrilo's integration with Magento</notes>
22
  <authors><author><name>Murry Ivanoff</name><user>Metrilo</user><email>murry@metrilo.com</email></author><author><name>Miroslav Petrov</name><user>miro</user><email>miro91tn@gmail.com</email></author><author><name>Zhivko Draganov</name><user>zhivko</user><email>zhivko@metrilo.com</email></author></authors>
23
+ <date>2015-11-17</date>
24
+ <time>15:02:29</time>
25
+ <contents><target name="magecommunity"><dir name="Metrilo"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Form"><file name="Button.php" hash="70aadb3d62d998a3076bd4f9209db560"/></dir></dir></dir></dir><file name="Head.php" hash="7fc6870506f8882520b4e2b9596600d7"/></dir><dir name="Helper"><file name="Data.php" hash="4930ff4f95f3b80a7cfb7590e6d1ac44"/></dir><dir name="Model"><file name="Import.php" hash="1eb20cd00c210ee378039edb8d0515dc"/><file name="Observer.php" hash="720905b3bdff1d71df92e32fee81ae04"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AjaxController.php" hash="0a16196c1c62b3359508b0b688a36e04"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="00c90fdba5e48bb35367c16c83abd6a7"/><file name="config.xml" hash="4708aed8284ec5c1457ca08a5ae079f6"/><file name="system.xml" hash="7564c68e51df23d7975bc1c9ead7be8f"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="metrilo_analytics.xml" hash="0e6911e2e883992f2182969286d929b1"/></dir><dir name="template"><dir name="metrilo"><dir name="system"><dir name="config"><file name="button.phtml" hash="528d7eb52bf996b7b2a31e8c6a4d7d86"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="metrilo"><file name="favicon-metrilo.png" hash="743558f1e49a730be9d515197a36567b"/><file name="loader.gif" hash="e05e6bb35d035cac4f3e0c8af213e9ab"/><file name="logo.png" hash="e9e54afd81384e12f77aca4eaebf5be8"/><file name="styles.css" hash="da0c07513d917e4ad08ff50814b536e1"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Metrilo_Analytics.xml" hash="3a4dbecc4e093537f11dd4c8fa2756e7"/></dir></target></contents>
26
  <compatible/>
27
  <dependencies><required><php><min>5.2.1</min><max>5.6.22</max></php></required></dependencies>
28
  </package>