Inside_Analytics - Version 2.6.2

Version Notes

New Features
- fixed observer methods - check if plugin active before executing
- fixed page title retrieval when FPC is enabled.

Download this release

Release Info

Developer Hadar Paz
Extension Inside_Analytics
Version 2.6.2
Comparing to
See all releases


Code changes from version 2.6.0 to 2.6.2

app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit.php CHANGED
@@ -1,61 +1,61 @@
1
- <?php
2
- /**
3
- * Description of class...
4
- *
5
- * @category Inside
6
- * @package Inside_Analytics
7
- * @author Inside <martin.novak@inside.tm>
8
- */
9
- class Inside_Analytics_Block_Adminhtml_Route_Edit
10
- extends Mage_Adminhtml_Block_Widget_Form_Container
11
- {
12
- /**
13
- * The route being edited
14
- * @var Inside_Analytics_Model_Route
15
- */
16
- protected $_route = null;
17
-
18
- public function __construct()
19
- {
20
- parent::__construct();
21
-
22
- $this->_objectId = 'id';
23
- $this->_blockGroup = 'inside';
24
- $this->_controller = 'adminhtml_route';
25
-
26
- if ($this->getRoute() && $this->getRoute()->getId() &&
27
- !$this->getRoute()->getUserDefined())
28
- {
29
- //system entry - read only
30
- $this->_removeButton('delete');
31
- }
32
-
33
- }
34
-
35
- /**
36
- * Gets the route being edited.
37
- *
38
- * @return Inside_Analytics_Model_Route
39
- */
40
- public function getRoute()
41
- {
42
- if (!$this->_route) {
43
- $this->_route = Mage::registry('current_inside_route');
44
- }
45
- return $this->_route;
46
- }
47
-
48
-
49
- public function getHeaderText()
50
- {
51
- if ($this->getRoute() && $this->getRoute()->getId()) {
52
- return $foo = $this->__(
53
- 'Route # %s | %s',
54
- $this->htmlEscape($this->getRoute()->getId()),
55
- $this->htmlEscape($this->getRoute()->getFullQualifier())
56
- );
57
- } else {
58
- return $foo = $this->__('New Track Route');
59
- }
60
- }
61
  }
1
+ <?php
2
+ /**
3
+ * Description of class...
4
+ *
5
+ * @category Inside
6
+ * @package Inside_Analytics
7
+ * @author Inside <martin.novak@inside.tm>
8
+ */
9
+ class Inside_Analytics_Block_Adminhtml_Route_Edit
10
+ extends Mage_Adminhtml_Block_Widget_Form_Container
11
+ {
12
+ /**
13
+ * The route being edited
14
+ * @var Inside_Analytics_Model_Route
15
+ */
16
+ protected $_route = null;
17
+
18
+ public function __construct()
19
+ {
20
+ parent::__construct();
21
+
22
+ $this->_objectId = 'id';
23
+ $this->_blockGroup = 'inside';
24
+ $this->_controller = 'adminhtml_route';
25
+
26
+ if ($this->getRoute() && $this->getRoute()->getId() &&
27
+ !$this->getRoute()->getUserDefined())
28
+ {
29
+ //system entry - read only
30
+ $this->_removeButton('delete');
31
+ }
32
+
33
+ }
34
+
35
+ /**
36
+ * Gets the route being edited.
37
+ *
38
+ * @return Inside_Analytics_Model_Route
39
+ */
40
+ public function getRoute()
41
+ {
42
+ if (!$this->_route) {
43
+ $this->_route = Mage::registry('current_inside_route');
44
+ }
45
+ return $this->_route;
46
+ }
47
+
48
+
49
+ public function getHeaderText()
50
+ {
51
+ if ($this->getRoute() && $this->getRoute()->getId()) {
52
+ return $foo = $this->__(
53
+ 'Route # %s | %s',
54
+ $this->htmlEscape($this->getRoute()->getId()),
55
+ $this->htmlEscape($this->getRoute()->getFullQualifier())
56
+ );
57
+ } else {
58
+ return $foo = $this->__('New Track Route');
59
+ }
60
+ }
61
  }
app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Form.php CHANGED
@@ -1,33 +1,33 @@
1
- <?php
2
- /**
3
- * Description of class...
4
- *
5
- * @category Inside
6
- * @package Inside_Analytics
7
- * @author Inside <martin.novak@inside.tm>
8
- */
9
- class Inside_Analytics_Block_Adminhtml_Route_Edit_Form
10
- extends Mage_Adminhtml_Block_Widget_Form
11
- {
12
-
13
- public function __construct()
14
- {
15
- parent::__construct();
16
- $this->setId('route_form');
17
- }
18
-
19
- protected function _prepareForm()
20
- {
21
- $form = new Varien_Data_Form(
22
- array(
23
- 'id' => 'edit_form',
24
- 'action' => $this->getData('action'),
25
- 'method' => 'post')
26
- );
27
-
28
- $form->setUseContainer(true);
29
- $this->setForm($form);
30
- return parent::_prepareForm();
31
- }
32
-
33
  }
1
+ <?php
2
+ /**
3
+ * Description of class...
4
+ *
5
+ * @category Inside
6
+ * @package Inside_Analytics
7
+ * @author Inside <martin.novak@inside.tm>
8
+ */
9
+ class Inside_Analytics_Block_Adminhtml_Route_Edit_Form
10
+ extends Mage_Adminhtml_Block_Widget_Form
11
+ {
12
+
13
+ public function __construct()
14
+ {
15
+ parent::__construct();
16
+ $this->setId('route_form');
17
+ }
18
+
19
+ protected function _prepareForm()
20
+ {
21
+ $form = new Varien_Data_Form(
22
+ array(
23
+ 'id' => 'edit_form',
24
+ 'action' => $this->getData('action'),
25
+ 'method' => 'post')
26
+ );
27
+
28
+ $form->setUseContainer(true);
29
+ $this->setForm($form);
30
+ return parent::_prepareForm();
31
+ }
32
+
33
  }
app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Tab/General.php CHANGED
@@ -1,176 +1,176 @@
1
- <?php
2
- /**
3
- * Description of class...
4
- *
5
- * @category Inside
6
- * @package Inside_Analytics
7
- * @author Inside <martin.novak@inside.tm>
8
- */
9
- class Inside_Analytics_Block_Adminhtml_Route_Edit_Tab_General
10
- extends Mage_Adminhtml_Block_Widget_Form
11
- implements Mage_Adminhtml_Block_Widget_Tab_Interface
12
- {
13
- /**
14
- * The route being edited
15
- * @var Inside_Analytics_Model_Route
16
- */
17
- protected $_route = null;
18
-
19
- /**
20
- * Prepare content for tab
21
- *
22
- * @return string
23
- */
24
- public function getTabLabel()
25
- {
26
- return $this->__('Track Route Information');
27
- }
28
-
29
- /**
30
- * Prepare title for tab
31
- *
32
- * @return string
33
- */
34
- public function getTabTitle()
35
- {
36
- return $this->__('Track Route Information');
37
- }
38
-
39
- /**
40
- * Returns status flag about this tab can be showed or not
41
- *
42
- * @return true
43
- */
44
- public function canShowTab()
45
- {
46
- return true;
47
- }
48
-
49
- /**
50
- * Returns status flag about this tab hidden or not
51
- *
52
- * @return true
53
- */
54
- public function isHidden()
55
- {
56
- return false;
57
- }
58
-
59
- protected function _prepareForm()
60
- {
61
- $model = Mage::registry('current_inside_route');
62
-
63
- $form = new Varien_Data_Form();
64
- $form->setHtmlIdPrefix('route_');
65
-
66
- $fieldset = $form->addFieldset('base_fieldset',
67
- array('legend' => $this->__('General Information'))
68
- );
69
-
70
- if ($model->getId()) {
71
- $fieldset->addField('id', 'hidden', array(
72
- 'name' => 'id',
73
- ));
74
- }
75
-
76
- $fieldset->addField('is_active', 'select', array(
77
- 'name' => 'is_active',
78
- 'label' => $this->__('Status'),
79
- 'title' => $this->__('Status'),
80
- 'required' => true,
81
- 'options' => array(
82
- '1' => $this->__('Enabled'),
83
- '0' => $this->__('Disabled'),
84
- ),
85
- ));
86
-
87
- $fieldset->addField('module', 'text', array(
88
- 'name' => 'module',
89
- 'label' => $this->__('Module Name'),
90
- 'title' => $this->__('Module Name'),
91
- 'required' => true,
92
- 'disabled' => $this->isReadOnly(),
93
- 'note' => $this->__('The modules route name (\'frontName\' as specified in modules configuration file).'),
94
- ));
95
-
96
- $fieldset->addField('controller', 'text', array(
97
- 'name' => 'controller',
98
- 'label' => $this->__('Controller Name'),
99
- 'title' => $this->__('Controller Name'),
100
- 'required' => false,
101
- 'disabled' => $this->isReadOnly(),
102
- 'note' => $this->__('Leave blank for any.'),
103
- ));
104
-
105
- $fieldset->addField('action', 'text', array(
106
- 'label' => $this->__('Action Name'),
107
- 'title' => $this->__('Action Name'),
108
- 'name' => 'action',
109
- 'required' => false,
110
- 'disabled' => $this->isReadOnly(),
111
- 'note' => $this->__('Leave blank for any. Only applicable if controller name exists.'),
112
- ));
113
-
114
- $fieldset->addField('type', 'select', array(
115
- 'name' => 'type',
116
- 'label' => $this->__('Page Type'),
117
- 'title' => $this->__('Page Type'),
118
- 'required' => true,
119
- 'disabled' => $this->isReadOnly(),
120
- 'options' => Mage::getSingleton('inside/system_config_source_page_type')->getOptions(),
121
- ));
122
-
123
- $fieldset->addField('is_ajax', 'select', array(
124
- 'name' => 'is_ajax',
125
- 'label' => $this->__('Is Ajax'),
126
- 'title' => $this->__('Is Ajax'),
127
- 'required' => true,
128
- 'disabled' => $this->isReadOnly(),
129
- 'options' => array(
130
- '1' => $this->__('Yes'),
131
- '0' => $this->__('No'),
132
- ),
133
- ));
134
-
135
- $fieldset->addField('search_param', 'text', array(
136
- 'label' => $this->__('Search Param'),
137
- 'title' => $this->__('Search Param'),
138
- 'name' => 'search_param',
139
- 'required' => true,
140
- 'disabled' => $this->isReadOnly(),
141
- 'note' => $this->__('The search parameter name.'),
142
- ));
143
-
144
- $form->setValues($model->getData());
145
- $this->setForm($form);
146
-
147
- return parent::_prepareForm();
148
- }
149
-
150
- /**
151
- * Gets the route being edited.
152
- *
153
- * @return Inside_Analytics_Model_Route
154
- */
155
- public function getRoute()
156
- {
157
- if (!$this->_route) {
158
- $this->_route = Mage::registry('current_inside_route');
159
- }
160
- return $this->_route;
161
- }
162
-
163
- /**
164
- * Is the current route read only (system) route?
165
- * @return boolean
166
- */
167
- public function isReadOnly()
168
- {
169
- if ($this->getRoute() && $this->getRoute()->getId() &&
170
- !$this->getRoute()->getUserDefined())
171
- {
172
- return true;
173
- }
174
- return false;
175
- }
176
- }
1
+ <?php
2
+ /**
3
+ * Description of class...
4
+ *
5
+ * @category Inside
6
+ * @package Inside_Analytics
7
+ * @author Inside <martin.novak@inside.tm>
8
+ */
9
+ class Inside_Analytics_Block_Adminhtml_Route_Edit_Tab_General
10
+ extends Mage_Adminhtml_Block_Widget_Form
11
+ implements Mage_Adminhtml_Block_Widget_Tab_Interface
12
+ {
13
+ /**
14
+ * The route being edited
15
+ * @var Inside_Analytics_Model_Route
16
+ */
17
+ protected $_route = null;
18
+
19
+ /**
20
+ * Prepare content for tab
21
+ *
22
+ * @return string
23
+ */
24
+ public function getTabLabel()
25
+ {
26
+ return $this->__('Track Route Information');
27
+ }
28
+
29
+ /**
30
+ * Prepare title for tab
31
+ *
32
+ * @return string
33
+ */
34
+ public function getTabTitle()
35
+ {
36
+ return $this->__('Track Route Information');
37
+ }
38
+
39
+ /**
40
+ * Returns status flag about this tab can be showed or not
41
+ *
42
+ * @return true
43
+ */
44
+ public function canShowTab()
45
+ {
46
+ return true;
47
+ }
48
+
49
+ /**
50
+ * Returns status flag about this tab hidden or not
51
+ *
52
+ * @return true
53
+ */
54
+ public function isHidden()
55
+ {
56
+ return false;
57
+ }
58
+
59
+ protected function _prepareForm()
60
+ {
61
+ $model = Mage::registry('current_inside_route');
62
+
63
+ $form = new Varien_Data_Form();
64
+ $form->setHtmlIdPrefix('route_');
65
+
66
+ $fieldset = $form->addFieldset('base_fieldset',
67
+ array('legend' => $this->__('General Information'))
68
+ );
69
+
70
+ if ($model->getId()) {
71
+ $fieldset->addField('id', 'hidden', array(
72
+ 'name' => 'id',
73
+ ));
74
+ }
75
+
76
+ $fieldset->addField('is_active', 'select', array(
77
+ 'name' => 'is_active',
78
+ 'label' => $this->__('Status'),
79
+ 'title' => $this->__('Status'),
80
+ 'required' => true,
81
+ 'options' => array(
82
+ '1' => $this->__('Enabled'),
83
+ '0' => $this->__('Disabled'),
84
+ ),
85
+ ));
86
+
87
+ $fieldset->addField('module', 'text', array(
88
+ 'name' => 'module',
89
+ 'label' => $this->__('Module Name'),
90
+ 'title' => $this->__('Module Name'),
91
+ 'required' => true,
92
+ 'disabled' => $this->isReadOnly(),
93
+ 'note' => $this->__('The modules route name (\'frontName\' as specified in modules configuration file).'),
94
+ ));
95
+
96
+ $fieldset->addField('controller', 'text', array(
97
+ 'name' => 'controller',
98
+ 'label' => $this->__('Controller Name'),
99
+ 'title' => $this->__('Controller Name'),
100
+ 'required' => false,
101
+ 'disabled' => $this->isReadOnly(),
102
+ 'note' => $this->__('Leave blank for any.'),
103
+ ));
104
+
105
+ $fieldset->addField('action', 'text', array(
106
+ 'label' => $this->__('Action Name'),
107
+ 'title' => $this->__('Action Name'),
108
+ 'name' => 'action',
109
+ 'required' => false,
110
+ 'disabled' => $this->isReadOnly(),
111
+ 'note' => $this->__('Leave blank for any. Only applicable if controller name exists.'),
112
+ ));
113
+
114
+ $fieldset->addField('type', 'select', array(
115
+ 'name' => 'type',
116
+ 'label' => $this->__('Page Type'),
117
+ 'title' => $this->__('Page Type'),
118
+ 'required' => true,
119
+ 'disabled' => $this->isReadOnly(),
120
+ 'options' => Mage::getSingleton('inside/system_config_source_page_type')->getOptions(),
121
+ ));
122
+
123
+ $fieldset->addField('is_ajax', 'select', array(
124
+ 'name' => 'is_ajax',
125
+ 'label' => $this->__('Is Ajax'),
126
+ 'title' => $this->__('Is Ajax'),
127
+ 'required' => true,
128
+ 'disabled' => $this->isReadOnly(),
129
+ 'options' => array(
130
+ '1' => $this->__('Yes'),
131
+ '0' => $this->__('No'),
132
+ ),
133
+ ));
134
+
135
+ $fieldset->addField('search_param', 'text', array(
136
+ 'label' => $this->__('Search Param'),
137
+ 'title' => $this->__('Search Param'),
138
+ 'name' => 'search_param',
139
+ 'required' => true,
140
+ 'disabled' => $this->isReadOnly(),
141
+ 'note' => $this->__('The search parameter name.'),
142
+ ));
143
+
144
+ $form->setValues($model->getData());
145
+ $this->setForm($form);
146
+
147
+ return parent::_prepareForm();
148
+ }
149
+
150
+ /**
151
+ * Gets the route being edited.
152
+ *
153
+ * @return Inside_Analytics_Model_Route
154
+ */
155
+ public function getRoute()
156
+ {
157
+ if (!$this->_route) {
158
+ $this->_route = Mage::registry('current_inside_route');
159
+ }
160
+ return $this->_route;
161
+ }
162
+
163
+ /**
164
+ * Is the current route read only (system) route?
165
+ * @return boolean
166
+ */
167
+ public function isReadOnly()
168
+ {
169
+ if ($this->getRoute() && $this->getRoute()->getId() &&
170
+ !$this->getRoute()->getUserDefined())
171
+ {
172
+ return true;
173
+ }
174
+ return false;
175
+ }
176
+ }
app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Tabs.php CHANGED
@@ -1,21 +1,21 @@
1
- <?php
2
-
3
- /**
4
- * Description of class...
5
- *
6
- * @category Inside
7
- * @package Inside_Analytics
8
- * @author Inside <martin.novak@inside.tm>
9
- */
10
- class Inside_Analytics_Block_Adminhtml_Route_Edit_Tabs
11
- extends Mage_Adminhtml_Block_Widget_Tabs
12
- {
13
-
14
- public function __construct()
15
- {
16
- parent::__construct();
17
- $this->setId('inside_route_edit_tabs');
18
- $this->setDestElementId('edit_form');
19
- }
20
-
21
- }
1
+ <?php
2
+
3
+ /**
4
+ * Description of class...
5
+ *
6
+ * @category Inside
7
+ * @package Inside_Analytics
8
+ * @author Inside <martin.novak@inside.tm>
9
+ */
10
+ class Inside_Analytics_Block_Adminhtml_Route_Edit_Tabs
11
+ extends Mage_Adminhtml_Block_Widget_Tabs
12
+ {
13
+
14
+ public function __construct()
15
+ {
16
+ parent::__construct();
17
+ $this->setId('inside_route_edit_tabs');
18
+ $this->setDestElementId('edit_form');
19
+ }
20
+
21
+ }
app/code/community/Inside/Analytics/Block/Analytics.php CHANGED
@@ -1,196 +1,196 @@
1
- <?php
2
-
3
- /**
4
- * Description of class...
5
- *
6
- * @category Inside
7
- * @package Inside_Analytics
8
- * @author Inside <martin.novak@inside.tm>
9
- */
10
- class Inside_Analytics_Block_Analytics extends Mage_Core_Block_Template
11
- {
12
- /**
13
- * The current request module, controller and action name
14
- * @var array
15
- */
16
- protected $_requestArray = null;
17
-
18
- /**
19
- * Get a specific page name (may be customized via layout)
20
- *
21
- * @return string|null
22
- */
23
- public function getPageName()
24
- {
25
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
26
- Mage::helper('inside')->log('Page name:'.$this->_getData('page_name'), true);
27
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
28
- return $this->_getData('page_name');
29
- }
30
-
31
- /**
32
- * Get inside server name to connect to
33
- *
34
- * @return string
35
- */
36
- protected function _getServer()
37
- {
38
- return Mage::helper('inside')->getServer();
39
- }
40
-
41
- /**
42
- * Get main getTracker code. This will initialise the _insideGraph tracker
43
- * object with your account key.
44
- *
45
- * @return string
46
- */
47
- protected function _getAccountCode()
48
- {
49
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
50
-
51
- $accountId = Mage::getStoreConfig(Inside_Analytics_Helper_Data::XML_PATH_ACCOUNT);
52
- $visitorId = Mage::helper('inside')->getVisitorId();
53
- $visitorName = Mage::helper('inside')->getVisitorName();
54
-
55
- Mage::helper('inside')->log('$accountId:'.$accountId, true);
56
- Mage::helper('inside')->log('$visitorId:'.$visitorId, true);
57
- Mage::helper('inside')->log('$visitorName:'.$visitorName, true);
58
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
59
-
60
- return "_inside.push({
61
- 'action': 'getTracker', 'account': '{$this->jsQuoteEscape($accountId)}'{$visitorId}{$visitorName}
62
- });
63
- ";
64
- }
65
-
66
- /**
67
- * Render regular page tracking javascript code
68
- *
69
- * @return string
70
- */
71
- protected function _getPageTrackingCode()
72
- {
73
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
74
-
75
- $script = "_inside.push({";
76
- $data = Mage::getModel('inside/pageView')->getPageTrackCodeData($this->_requestArray);
77
- foreach ($data as $key => $val) {
78
- if (is_null($val)) {
79
- continue;
80
- }
81
- $script .= '\''.$key.'\':'. json_encode($val).',';
82
- }
83
- Mage::helper('inside')->log('$script: '.$script, true);
84
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
85
-
86
- return substr($script, 0, strlen($script)-1) . "});";
87
- }
88
-
89
- /**
90
- * Render order items tracking code
91
- *
92
- * @return string
93
- */
94
- protected function _getOrdersTrackingCode()
95
- {
96
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
97
-
98
- $script = '';
99
- $data = Mage::getModel('inside/pageView')->getOrderTrackCodeData($this->_requestArray);
100
- if (!empty($data)) {
101
- foreach ($data as $index => $itemData) {
102
- $script .= "_inside.push({";
103
- foreach ($itemData as $key => $val) {
104
- if (is_null($val)) {
105
- continue;
106
- }
107
- $script .= '\''.$key.'\':'. json_encode($val).',';
108
- }
109
- $script = substr($script, 0, strlen($script)-1) . "});";
110
- }
111
- }
112
-
113
- Mage::helper('inside')->log('$script: '.$script, true);
114
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
115
-
116
- return $script;
117
- }
118
-
119
- /**
120
- * Render order complete tracking code
121
- *
122
- * @return string
123
- */
124
- protected function _getSaleTrackingCode()
125
- {
126
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
127
-
128
- $orderIds = $this->getOrderIds();
129
- if (empty($orderIds) || !is_array($orderIds)) {
130
- return;
131
- }
132
- $collection = Mage::getResourceModel('sales/order_collection')
133
- ->addFieldToFilter('entity_id', array('in' => $orderIds))
134
- ;
135
- $script = '';
136
- foreach ($collection as $order) {
137
- /* @var $order Mage_Sales_Model_Order */
138
- $script .= "_inside.push({
139
- 'action':'trackOrder',
140
- 'orderId':'{$order->getQuoteId()}',
141
- 'orderTotal':'{$order->getGrandTotal()}',
142
- 'complete':'true'});";
143
- }
144
-
145
- Mage::helper('inside')->log('$script: '.$script, true);
146
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
147
-
148
- return $script;
149
- }
150
-
151
- /**
152
- * Render debug code - request parts
153
- *
154
- * @return string
155
- */
156
- protected function _getDebugCode()
157
- {
158
- if (Mage::helper('inside')->canShowRequest()) {
159
- return '<h3>'.implode('::', array_values($this->_requestArray)).'</h3>';
160
- }
161
- return '';
162
- }
163
-
164
- /**
165
- * Render Inside Analytics tracking scripts
166
- *
167
- * @return string
168
- */
169
- protected function _toHtml()
170
- {
171
- if (!Mage::helper('inside')->isInsideAnalyticsAvailable() || !is_array($this->_requestArray)) {
172
- return $this->_getDebugCode();
173
- }
174
- return parent::_toHtml();
175
- }
176
-
177
- /**
178
- * Load current request route params
179
- */
180
- protected function _prepareLayout() {
181
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
182
-
183
- parent::_prepareLayout();
184
- $action = Mage::app()->getFrontController()->getAction();
185
-
186
- if ($action) {
187
- $this->_requestArray = array(
188
- 'module' => $action->getRequest()->getRequestedRouteName(),
189
- 'controller' => $action->getRequest()->getRequestedControllerName(),
190
- 'action' => $action->getRequest()->getRequestedActionName()
191
- );
192
- Mage::helper('inside')->log('$this->_requestArray: '.print_r($this->_requestArray, true));
193
- }
194
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
195
- }
196
- }
1
+ <?php
2
+
3
+ /**
4
+ * Description of class...
5
+ *
6
+ * @category Inside
7
+ * @package Inside_Analytics
8
+ * @author Inside <martin.novak@inside.tm>
9
+ */
10
+ class Inside_Analytics_Block_Analytics extends Mage_Core_Block_Template
11
+ {
12
+ /**
13
+ * The current request module, controller and action name
14
+ * @var array
15
+ */
16
+ protected $_requestArray = null;
17
+
18
+ /**
19
+ * Get a specific page name (may be customized via layout)
20
+ *
21
+ * @return string|null
22
+ */
23
+ public function getPageName()
24
+ {
25
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
26
+ Mage::helper('inside')->log('Page name:'.$this->_getData('page_name'), true);
27
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
28
+ return $this->_getData('page_name');
29
+ }
30
+
31
+ /**
32
+ * Get inside server name to connect to
33
+ *
34
+ * @return string
35
+ */
36
+ protected function _getServer()
37
+ {
38
+ return Mage::helper('inside')->getServer();
39
+ }
40
+
41
+ /**
42
+ * Get main getTracker code. This will initialise the _insideGraph tracker
43
+ * object with your account key.
44
+ *
45
+ * @return string
46
+ */
47
+ protected function _getAccountCode()
48
+ {
49
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
50
+
51
+ $accountId = Mage::getStoreConfig(Inside_Analytics_Helper_Data::XML_PATH_ACCOUNT);
52
+ $visitorId = Mage::helper('inside')->getVisitorId();
53
+ $visitorName = Mage::helper('inside')->getVisitorName();
54
+
55
+ Mage::helper('inside')->log('$accountId:'.$accountId, true);
56
+ Mage::helper('inside')->log('$visitorId:'.$visitorId, true);
57
+ Mage::helper('inside')->log('$visitorName:'.$visitorName, true);
58
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
59
+
60
+ return "_inside.push({
61
+ 'action': 'getTracker', 'account': '{$this->jsQuoteEscape($accountId)}'{$visitorId}{$visitorName}
62
+ });
63
+ ";
64
+ }
65
+
66
+ /**
67
+ * Render regular page tracking javascript code
68
+ *
69
+ * @return string
70
+ */
71
+ protected function _getPageTrackingCode()
72
+ {
73
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
74
+
75
+ $script = "_inside.push({";
76
+ $data = Mage::getModel('inside/pageView')->getPageTrackCodeData($this->_requestArray);
77
+ foreach ($data as $key => $val) {
78
+ if (is_null($val)) {
79
+ continue;
80
+ }
81
+ $script .= '\''.$key.'\':'. json_encode($val).',';
82
+ }
83
+ Mage::helper('inside')->log('$script: '.$script, true);
84
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
85
+
86
+ return substr($script, 0, strlen($script)-1) . "});";
87
+ }
88
+
89
+ /**
90
+ * Render order items tracking code
91
+ *
92
+ * @return string
93
+ */
94
+ protected function _getOrdersTrackingCode()
95
+ {
96
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
97
+
98
+ $script = '';
99
+ $data = Mage::getModel('inside/pageView')->getOrderTrackCodeData($this->_requestArray);
100
+ if (!empty($data)) {
101
+ foreach ($data as $index => $itemData) {
102
+ $script .= "_inside.push({";
103
+ foreach ($itemData as $key => $val) {
104
+ if (is_null($val)) {
105
+ continue;
106
+ }
107
+ $script .= '\''.$key.'\':'. json_encode($val).',';
108
+ }
109
+ $script = substr($script, 0, strlen($script)-1) . "});";
110
+ }
111
+ }
112
+
113
+ Mage::helper('inside')->log('$script: '.$script, true);
114
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
115
+
116
+ return $script;
117
+ }
118
+
119
+ /**
120
+ * Render order complete tracking code
121
+ *
122
+ * @return string
123
+ */
124
+ protected function _getSaleTrackingCode()
125
+ {
126
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
127
+
128
+ $orderIds = $this->getOrderIds();
129
+ if (empty($orderIds) || !is_array($orderIds)) {
130
+ return;
131
+ }
132
+ $collection = Mage::getResourceModel('sales/order_collection')
133
+ ->addFieldToFilter('entity_id', array('in' => $orderIds))
134
+ ;
135
+ $script = '';
136
+ foreach ($collection as $order) {
137
+ /* @var $order Mage_Sales_Model_Order */
138
+ $script .= "_inside.push({
139
+ 'action':'trackOrder',
140
+ 'orderId':'{$order->getQuoteId()}',
141
+ 'orderTotal':'{$order->getGrandTotal()}',
142
+ 'complete':'true'});";
143
+ }
144
+
145
+ Mage::helper('inside')->log('$script: '.$script, true);
146
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
147
+
148
+ return $script;
149
+ }
150
+
151
+ /**
152
+ * Render debug code - request parts
153
+ *
154
+ * @return string
155
+ */
156
+ protected function _getDebugCode()
157
+ {
158
+ if (Mage::helper('inside')->canShowRequest()) {
159
+ return '<h3>'.implode('::', array_values($this->_requestArray)).'</h3>';
160
+ }
161
+ return '';
162
+ }
163
+
164
+ /**
165
+ * Render Inside Analytics tracking scripts
166
+ *
167
+ * @return string
168
+ */
169
+ protected function _toHtml()
170
+ {
171
+ if (!Mage::helper('inside')->isInsideAnalyticsAvailable() || !is_array($this->_requestArray)) {
172
+ return $this->_getDebugCode();
173
+ }
174
+ return parent::_toHtml();
175
+ }
176
+
177
+ /**
178
+ * Load current request route params
179
+ */
180
+ protected function _prepareLayout() {
181
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
182
+
183
+ parent::_prepareLayout();
184
+ $action = Mage::app()->getFrontController()->getAction();
185
+
186
+ if ($action) {
187
+ $this->_requestArray = array(
188
+ 'module' => $action->getRequest()->getRequestedRouteName(),
189
+ 'controller' => $action->getRequest()->getRequestedControllerName(),
190
+ 'action' => $action->getRequest()->getRequestedActionName()
191
+ );
192
+ Mage::helper('inside')->log('$this->_requestArray: '.print_r($this->_requestArray, true));
193
+ }
194
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
195
+ }
196
+ }
app/code/community/Inside/Analytics/Helper/Data.php CHANGED
@@ -125,14 +125,25 @@ class Inside_Analytics_Helper_Data extends Mage_Core_Helper_Abstract {
125
  * @return string
126
  */
127
  public function getPageTitle()
128
- {
129
  $block = Mage::app()->getLayout()->getBlock('head');
130
  if ($block) {
 
 
 
 
131
  return $block->getTitle();
132
- }
 
 
 
 
 
133
  return '';
134
  }
135
 
 
 
136
  /**
137
  * Gets category array from page title (Amasty improved navigation)
138
  *
125
  * @return string
126
  */
127
  public function getPageTitle()
128
+ {
129
  $block = Mage::app()->getLayout()->getBlock('head');
130
  if ($block) {
131
+ if (Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
132
+ //save page title to FPC
133
+ Mage::getSingleton('enterprise_pagecache/processor')->setMetadata('page_title', $block->getTitle());
134
+ }
135
  return $block->getTitle();
136
+ } else {
137
+ //try to load from FPC
138
+ if (Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
139
+ return Mage::getSingleton('enterprise_pagecache/processor')->getMetadata('page_title');
140
+ }
141
+ }
142
  return '';
143
  }
144
 
145
+
146
+
147
  /**
148
  * Gets category array from page title (Amasty improved navigation)
149
  *
app/code/community/Inside/Analytics/Model/Observer.php CHANGED
@@ -11,19 +11,20 @@ class Inside_Analytics_Model_Observer {
11
 
12
  public function setOrderSuccessPageView(Varien_Event_Observer $observer)
13
  {
14
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
15
- $orderIds = $observer->getEvent()->getOrderIds();
16
- Mage::helper('inside')->log('$orderIds: '.$orderIds, true);
17
-
18
- if (empty($orderIds) || !is_array($orderIds)) {
19
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
20
- return;
21
- }
22
- $block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('inside_analytics');
23
- if ($block) {
24
- $block->setOrderIds($orderIds);
 
 
25
  }
26
-
27
  Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
28
  }
29
 
@@ -35,49 +36,54 @@ class Inside_Analytics_Model_Observer {
35
  public function setAjax(Varien_Event_Observer $observer)
36
  {
37
  Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
38
-
39
- $frontController = $observer->getEvent()->getFront();
40
- /* @var $frontController Mage_Core_Controller_Varien_Front */
41
- $routes = Mage::getResourceModel('inside/route_collection')
42
- ->addFieldToFilter('is_active', 1)
43
- ->addFieldToFilter('is_ajax', 1);
44
- Mage::helper('inside')->log('# OF ROUTES: '.$routes->count(), true);
45
- foreach ($routes as $route) {
46
- /* @var $route Inside_Analytics_Model_Route */
47
- if ($route->matches(
48
- $frontController->getRequest()->getModuleName(),
49
- $frontController->getRequest()->getControllerName(),
50
- $frontController->getRequest()->getActionName()
51
- )) {
52
- Mage::helper('inside')->log('Route ID '. $route->getId() . ' AJAX REQUEST MATCH --> setting ajax session variable.', true);
53
- Mage::getSingleton('core/session')->setInsideUpdateOnNext(true);
54
- } else {
55
- Mage::helper('inside')->log('Route ID '. $route->getId() . ' AJAX REQUEST DOES NOT MATCH', true);
56
- }
57
- }
 
58
  Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
59
  }
60
 
61
  public function setEmptySearch(Varien_Event_Observer $observer)
62
- {
63
- $layout = $observer->getEvent()->getLayout();
64
- /* @var $layout Mage_Core_Model_Layout */
65
- $action = $observer->getEvent()->getAction();
66
- /* @var $action Mage_Core_Controller_Varien_Action */
67
- $block = null;
68
- switch ($action->getFullActionName()) {
69
- case 'catalogsearch_advanced_result':
70
- $block = $layout->getBlock('catalogsearch_advanced_result');
71
- break;
72
- case 'catalogsearch_result_index':
73
- $block = $layout->getBlock('search.result');
74
- break;
75
- default:
76
- return $this;
77
- }
78
- if ($block) {
79
- Mage::register('search_results_count', $block->getResultCount(), true);
80
- }
 
 
 
 
81
  return $this;
82
  }
83
  }
11
 
12
  public function setOrderSuccessPageView(Varien_Event_Observer $observer)
13
  {
14
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
15
+ if (Mage::helper('inside')->isInsideAnalyticsAvailable()) {
16
+ $orderIds = $observer->getEvent()->getOrderIds();
17
+ Mage::helper('inside')->log('$orderIds: '.$orderIds, true);
18
+
19
+ if (empty($orderIds) || !is_array($orderIds)) {
20
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
21
+ return;
22
+ }
23
+ $block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('inside_analytics');
24
+ if ($block) {
25
+ $block->setOrderIds($orderIds);
26
+ }
27
  }
 
28
  Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
29
  }
30
 
36
  public function setAjax(Varien_Event_Observer $observer)
37
  {
38
  Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
39
+ if (Mage::helper('inside')->isInsideAnalyticsAvailable()) {
40
+ $frontController = $observer->getEvent()->getFront();
41
+ /* @var $frontController Mage_Core_Controller_Varien_Front */
42
+ $routes = Mage::getResourceModel('inside/route_collection')
43
+ ->addFieldToFilter('is_active', 1)
44
+ ->addFieldToFilter('is_ajax', 1);
45
+ Mage::helper('inside')->log('# OF ROUTES: '.$routes->count(), true);
46
+ foreach ($routes as $route) {
47
+ /* @var $route Inside_Analytics_Model_Route */
48
+ if ($route->matches(
49
+ $frontController->getRequest()->getModuleName(),
50
+ $frontController->getRequest()->getControllerName(),
51
+ $frontController->getRequest()->getActionName()
52
+ )) {
53
+ Mage::helper('inside')->log('Route ID '. $route->getId() . ' AJAX REQUEST MATCH --> setting ajax session variable.', true);
54
+ Mage::getSingleton('core/session')->setInsideUpdateOnNext(true);
55
+ } else {
56
+ Mage::helper('inside')->log('Route ID '. $route->getId() . ' AJAX REQUEST DOES NOT MATCH', true);
57
+ }
58
+ }
59
+ }
60
  Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
61
  }
62
 
63
  public function setEmptySearch(Varien_Event_Observer $observer)
64
+ {
65
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
66
+ if (Mage::helper('inside')->isInsideAnalyticsAvailable()) {
67
+ $layout = $observer->getEvent()->getLayout();
68
+ /* @var $layout Mage_Core_Model_Layout */
69
+ $action = $observer->getEvent()->getAction();
70
+ /* @var $action Mage_Core_Controller_Varien_Action */
71
+ $block = null;
72
+ switch ($action->getFullActionName()) {
73
+ case 'catalogsearch_advanced_result':
74
+ $block = $layout->getBlock('catalogsearch_advanced_result');
75
+ break;
76
+ case 'catalogsearch_result_index':
77
+ $block = $layout->getBlock('search.result');
78
+ break;
79
+ default:
80
+ return $this;
81
+ }
82
+ if ($block) {
83
+ Mage::register('search_results_count', $block->getResultCount(), true);
84
+ }
85
+ }
86
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
87
  return $this;
88
  }
89
  }
app/code/community/Inside/Analytics/Model/PageView.php CHANGED
@@ -1,354 +1,354 @@
1
- <?php
2
-
3
- /**
4
- * Description of class...
5
- *
6
- * @category Inside
7
- * @package Inside_Analytics
8
- * @author Inside <martin.novak@inside.tm>
9
- */
10
- class Inside_Analytics_Model_PageView extends Mage_Core_Model_Abstract {
11
-
12
- /**
13
- * @var Inside_Analytics_Model_PageView_Type
14
- */
15
- protected $_pageViewType = null;
16
-
17
- /**
18
- * @var Mage_Catalog_Model_Product
19
- */
20
- protected $_product = null;
21
-
22
- /**
23
- * @var Mage_Catalog_Model_Category
24
- */
25
- protected $_category = null;
26
-
27
- /**
28
- * @var boolean
29
- */
30
- protected $_outOfStock = false;
31
-
32
-
33
- /**
34
- * Build category name from page title
35
- * (applies to Amasty Improved Navigation and similar modules)
36
- *
37
- * @var boolean
38
- */
39
- protected $_categoryFromTitle = false;
40
-
41
-
42
- public function _construct()
43
- {
44
- parent::_construct();
45
- $this->_pageViewType = Mage::getModel('inside/pageView_type');
46
- $this->_categoryFromTitle = Mage::helper('inside')->buildCategoryFromTitle();
47
- $this->_loadProduct()->_loadCategory();
48
- }
49
-
50
- /**
51
- * Gets array of pageTrack required data
52
- *
53
- * @param string $requestArray
54
- * @return array
55
- */
56
- public function getPageTrackCodeData($requestArray)
57
- {
58
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
59
-
60
- $type = $this->_pageViewType->getPageType($requestArray);
61
- $common = array(
62
- 'action' => 'trackView',
63
- 'type' => $type,
64
- 'name' => $this->_pageViewType->getPageName($type),
65
- 'orderId' => $this->_getOrderId(),
66
- 'orderTotal' => $this->_getOrderTotal(),
67
- 'shippingTotal' => $this->_getShippingTotal(),
68
- 'tags' => $this->_getTags($type),
69
- );
70
- $pageSpecificData = $this->_getPageSpecificByType($type);
71
-
72
- Mage::helper('inside')->log('$pageSpecificData: '.print_r($pageSpecificData, true), true);
73
- Mage::helper('inside')->log('$common: '.print_r($common, true), true);
74
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
75
-
76
- return array_merge($common, $pageSpecificData);
77
- }
78
-
79
- /**
80
- * Gets array of order track data
81
- *
82
- * @param string $requestArray
83
- * @return array
84
- */
85
- public function getOrderTrackCodeData($requestArray)
86
- {
87
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
88
-
89
- $items = array();
90
- $type = $this->_pageViewType->getPageType($requestArray);
91
-
92
- Mage::helper('inside')->log('$type: '.$type, true);
93
- Mage::helper('inside')->log('$this->_getQuote()->getItemsCount(): '.$this->_getQuote()->getItemsCount(), true);
94
-
95
- if (($type == Inside_Analytics_Model_System_Config_Source_Page_Type::CHECKOUT || $this->_isForcedOrderUpdate())
96
- && $this->_getQuote()->getItemsCount() > 0)
97
- {
98
- foreach ($this->_getQuote()->getAllVisibleItems() as $item)
99
- {
100
- /* @var $item Mage_Sales_Model_Quote_Item */
101
- $items[] = array(
102
- 'action' => 'addItem',
103
- 'orderId' => $this->_getOrderId(),
104
- 'sku' => $item->getSku(),
105
- 'name' => $item->getName(),
106
- 'img' => Mage::helper('inside')->getProductImageUrl($item->getProduct()),
107
- 'price' => $item->getPriceInclTax() ? $item->getPriceInclTax() : $item->getPrice(),
108
- 'qty' => $item->getQty()
109
- );
110
- }
111
- //Add track order array
112
- $items[] = array(
113
- 'action' => 'trackOrder',
114
- 'orderId' => $this->_getOrderId(),
115
- 'orderTotal'=> $this->_getOrderTotal(),
116
- 'shippingTotal' => $this->_getShippingTotal(),
117
- 'update' => 'false'
118
- );
119
- }
120
- if ($this->_isForcedOrderUpdate()) {
121
- $this->_resetSession();
122
- }
123
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
124
- return $items;
125
- }
126
-
127
- /**
128
- * Gets specific data based on current page type
129
- * (ie product image on product pages)
130
- *
131
- * @param string $type
132
- * @return string
133
- */
134
- protected function _getPageSpecificByType($type)
135
- {
136
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
137
- Mage::helper('inside')->log('$type: '.$type, true);
138
-
139
- $extra = array();
140
- switch ($type) {
141
- case Inside_Analytics_Model_System_Config_Source_Page_Type::CATEGORY:
142
- if ($this->_categoryFromTitle) {
143
- $categoryArr = array_reverse(Mage::helper('inside')->getCategoryFromTitle());
144
- $extra['name'] = array_pop($categoryArr);
145
- $extra['category'] = implode(' / ', $categoryArr);
146
- if (empty($extra['name']) && $this->_category instanceof Mage_Catalog_Model_Category) {
147
- //defaults to real category name
148
- $this->_category->getName();
149
- }
150
- } else {
151
- //standard Magento
152
- if ($this->_category instanceof Mage_Catalog_Model_Category) {
153
- $catArr = Mage::helper('inside')->getFullCategoryName($this->_category);
154
- $extra['name'] = array_pop($catArr);
155
- $extra['category'] = implode(' / ', $catArr);
156
- }
157
- }
158
- break;
159
- case Inside_Analytics_Model_System_Config_Source_Page_Type::PRODUCT:
160
- if ($this->_product instanceof Mage_Catalog_Model_Product) {
161
- if($categoryName = Mage::helper('inside')->getFullCategoryName($this->_product)) {
162
- $extra['category'] = implode(' / ', $categoryName);
163
- }
164
- if($imageUrl = Mage::helper('inside')->getProductImageUrl($this->_product)) {
165
- $extra['img'] = $imageUrl;
166
- }
167
- //rewrite page name to include product name
168
- $extra['name'] = $this->_product->getName();
169
- }
170
- break;
171
- case Inside_Analytics_Model_System_Config_Source_Page_Type::SEARCH:
172
- $params = Mage::helper('inside')->getAllSearchParams();
173
- foreach ($params as $param) {
174
- if ($value = Mage::app()->getRequest()->getParam($param)) {
175
- $extra['name'] = $value;
176
- break;
177
- }
178
- }
179
- break;
180
- case Inside_Analytics_Model_System_Config_Source_Page_Type::ARTICLE:
181
- $extra['name'] = Mage::helper('inside')->getPageTitle();
182
- break;
183
-
184
- }
185
- Mage::helper('inside')->log('$extra: '.print_r($extra, true), true);
186
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
187
- return $extra;
188
- }
189
-
190
- /**
191
- * Get unique identifier of a page
192
- * (used by Inside to distinguish different pages of the same type)
193
- *
194
- * @deprecated Since v1.1.2 (Oct 7th 2013)
195
- * @param string $type
196
- * @return string
197
- */
198
- protected function _getPageUniqueId($type)
199
- {
200
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
201
- Mage::helper('inside')->log('$type: '.$type, true);
202
-
203
- $id = null;
204
- switch ($type) {
205
- case Inside_Analytics_Model_System_Config_Source_Page_Type::CATEGORY:
206
- if ($this->_category instanceof Mage_Catalog_Model_Category) {
207
- $id = $this->_category->getId();
208
- }
209
- break;
210
- case Inside_Analytics_Model_System_Config_Source_Page_Type::PRODUCT:
211
- if ($this->_product instanceof Mage_Catalog_Model_Product) {
212
- $id = $this->_product->getId();
213
- }
214
- break;
215
- }
216
- Mage::helper('inside')->log('$id: '.$id, true);
217
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
218
-
219
- return $id;
220
- }
221
-
222
- /**
223
- * Gets custom tags string
224
- *
225
- * @param string $type The page type
226
- * @return string
227
- */
228
- protected function _getTags($type)
229
- {
230
- $return = sprintf('language:%s', Mage::app()->getStore()->getCode());
231
- if ($this->_outOfStock) {
232
- $return.=', outofstock';
233
- }
234
- if ($type == Inside_Analytics_Model_System_Config_Source_Page_Type::SEARCH) {
235
- if (Mage::registry('search_results_count') === 0) {
236
- $return.=', emptysearch';
237
- }
238
- }
239
- return $return;
240
- }
241
-
242
- /**
243
- * Get checkout quote instance by current session
244
- *
245
- * @return Mage_Sales_Model_Quote
246
- */
247
- protected function _getQuote()
248
- {
249
- return Mage::getSingleton('checkout/session')->getQuote();
250
- }
251
-
252
- /**
253
- * Return Quote ID (only if items in cart)
254
- *
255
- * @return int|null
256
- */
257
- protected function _getOrderId()
258
- {
259
- if ($this->_getQuote()->getItemsCount() > 0) {
260
- return $this->_getQuote()->getId();
261
- }
262
- return null;
263
- }
264
-
265
- /**
266
- * Return formatted grand total of the current quote if active
267
- *
268
- * @return string
269
- */
270
- protected function _getOrderTotal()
271
- {
272
- if ($this->_getOrderId()) {
273
- return sprintf('%.2f', $this->_getQuote()->getGrandTotal());
274
- }
275
- return null;
276
- }
277
-
278
- /**
279
- * Return formatted grand total of the current quote if active
280
- *
281
- * @return string
282
- */
283
- protected function _getShippingTotal()
284
- {
285
- if ($this->_getOrderId()) {
286
- return sprintf('%.2f', $this->_getQuote()->getShippingAddress()->getBaseShippingInclTax());
287
- }
288
- return null;
289
- }
290
-
291
- /**
292
- * Load current product from registry
293
- * @return \Inside_Analytics_Model_PageView
294
- */
295
- protected function _loadProduct()
296
- {
297
- $product = Mage::registry('current_product');
298
- if (!$product && Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
299
- //try to load from cache
300
- $processor = Mage::getSingleton('enterprise_pagecache/processor');
301
- $productId = $processor->getMetadata(Enterprise_PageCache_Model_Processor_Product::METADATA_PRODUCT_ID);
302
- $product = Mage::getModel('catalog/product')->load($productId);
303
- }
304
- if ($product && $product->getId()) {
305
- $this->_product = $product;
306
- $this->_outOfStock = !$product->getData('is_in_stock');
307
- }
308
- return $this;
309
- }
310
-
311
- /**
312
- * Load current category from registry
313
- * @return \Inside_Analytics_Model_PageView
314
- */
315
- protected function _loadCategory()
316
- {
317
- $category = Mage::registry('current_category');
318
- if (!$category && Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
319
- //try to load from cache
320
- $processor = Mage::getSingleton('enterprise_pagecache/processor');
321
- $categoryId = $processor->getMetadata(Enterprise_PageCache_Model_Processor_Category::METADATA_CATEGORY_ID);
322
- $category = Mage::getModel('catalog/category')->load($categoryId);
323
- }
324
- if ($category && $category->getId()) {
325
- $this->_category = $category;
326
- }
327
- return $this;
328
- }
329
-
330
- /**
331
- * Check if we have outstanding Ajax add-to-cart call
332
- *
333
- * @return boolean
334
- */
335
- protected function _isForcedOrderUpdate()
336
- {
337
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
338
- Mage::helper('inside')->log('session update on next: '.(string)Mage::getSingleton('core/session')->getInsideUpdateOnNext(), true);
339
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
340
- return Mage::getSingleton('core/session')->getInsideUpdateOnNext() === true;
341
- }
342
-
343
- /**
344
- * Resets Ajax call related session variables
345
- */
346
- protected function _resetSession()
347
- {
348
- Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
349
- Mage::getSingleton('core/session')->unsetData('inside_update_on_next');
350
- Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
351
- }
352
-
353
- }
354
-
1
+ <?php
2
+
3
+ /**
4
+ * Description of class...
5
+ *
6
+ * @category Inside
7
+ * @package Inside_Analytics
8
+ * @author Inside <martin.novak@inside.tm>
9
+ */
10
+ class Inside_Analytics_Model_PageView extends Mage_Core_Model_Abstract {
11
+
12
+ /**
13
+ * @var Inside_Analytics_Model_PageView_Type
14
+ */
15
+ protected $_pageViewType = null;
16
+
17
+ /**
18
+ * @var Mage_Catalog_Model_Product
19
+ */
20
+ protected $_product = null;
21
+
22
+ /**
23
+ * @var Mage_Catalog_Model_Category
24
+ */
25
+ protected $_category = null;
26
+
27
+ /**
28
+ * @var boolean
29
+ */
30
+ protected $_outOfStock = false;
31
+
32
+
33
+ /**
34
+ * Build category name from page title
35
+ * (applies to Amasty Improved Navigation and similar modules)
36
+ *
37
+ * @var boolean
38
+ */
39
+ protected $_categoryFromTitle = false;
40
+
41
+
42
+ public function _construct()
43
+ {
44
+ parent::_construct();
45
+ $this->_pageViewType = Mage::getModel('inside/pageView_type');
46
+ $this->_categoryFromTitle = Mage::helper('inside')->buildCategoryFromTitle();
47
+ $this->_loadProduct()->_loadCategory();
48
+ }
49
+
50
+ /**
51
+ * Gets array of pageTrack required data
52
+ *
53
+ * @param string $requestArray
54
+ * @return array
55
+ */
56
+ public function getPageTrackCodeData($requestArray)
57
+ {
58
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
59
+
60
+ $type = $this->_pageViewType->getPageType($requestArray);
61
+ $common = array(
62
+ 'action' => 'trackView',
63
+ 'type' => $type,
64
+ 'name' => $this->_pageViewType->getPageName($type),
65
+ 'orderId' => $this->_getOrderId(),
66
+ 'orderTotal' => $this->_getOrderTotal(),
67
+ 'shippingTotal' => $this->_getShippingTotal(),
68
+ 'tags' => $this->_getTags($type),
69
+ );
70
+ $pageSpecificData = $this->_getPageSpecificByType($type);
71
+
72
+ Mage::helper('inside')->log('$pageSpecificData: '.print_r($pageSpecificData, true), true);
73
+ Mage::helper('inside')->log('$common: '.print_r($common, true), true);
74
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
75
+
76
+ return array_merge($common, $pageSpecificData);
77
+ }
78
+
79
+ /**
80
+ * Gets array of order track data
81
+ *
82
+ * @param string $requestArray
83
+ * @return array
84
+ */
85
+ public function getOrderTrackCodeData($requestArray)
86
+ {
87
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
88
+
89
+ $items = array();
90
+ $type = $this->_pageViewType->getPageType($requestArray);
91
+
92
+ Mage::helper('inside')->log('$type: '.$type, true);
93
+ Mage::helper('inside')->log('$this->_getQuote()->getItemsCount(): '.$this->_getQuote()->getItemsCount(), true);
94
+
95
+ if (($type == Inside_Analytics_Model_System_Config_Source_Page_Type::CHECKOUT || $this->_isForcedOrderUpdate())
96
+ && $this->_getQuote()->getItemsCount() > 0)
97
+ {
98
+ foreach ($this->_getQuote()->getAllVisibleItems() as $item)
99
+ {
100
+ /* @var $item Mage_Sales_Model_Quote_Item */
101
+ $items[] = array(
102
+ 'action' => 'addItem',
103
+ 'orderId' => $this->_getOrderId(),
104
+ 'sku' => $item->getSku(),
105
+ 'name' => $item->getName(),
106
+ 'img' => Mage::helper('inside')->getProductImageUrl($item->getProduct()),
107
+ 'price' => $item->getPriceInclTax() ? $item->getPriceInclTax() : $item->getPrice(),
108
+ 'qty' => $item->getQty()
109
+ );
110
+ }
111
+ //Add track order array
112
+ $items[] = array(
113
+ 'action' => 'trackOrder',
114
+ 'orderId' => $this->_getOrderId(),
115
+ 'orderTotal'=> $this->_getOrderTotal(),
116
+ 'shippingTotal' => $this->_getShippingTotal(),
117
+ 'update' => 'false'
118
+ );
119
+ }
120
+ if ($this->_isForcedOrderUpdate()) {
121
+ $this->_resetSession();
122
+ }
123
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
124
+ return $items;
125
+ }
126
+
127
+ /**
128
+ * Gets specific data based on current page type
129
+ * (ie product image on product pages)
130
+ *
131
+ * @param string $type
132
+ * @return string
133
+ */
134
+ protected function _getPageSpecificByType($type)
135
+ {
136
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
137
+ Mage::helper('inside')->log('$type: '.$type, true);
138
+
139
+ $extra = array();
140
+ switch ($type) {
141
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::CATEGORY:
142
+ if ($this->_categoryFromTitle) {
143
+ $categoryArr = array_reverse(Mage::helper('inside')->getCategoryFromTitle());
144
+ $extra['name'] = array_pop($categoryArr);
145
+ $extra['category'] = implode(' / ', $categoryArr);
146
+ if (empty($extra['name']) && $this->_category instanceof Mage_Catalog_Model_Category) {
147
+ //defaults to real category name
148
+ $this->_category->getName();
149
+ }
150
+ } else {
151
+ //standard Magento
152
+ if ($this->_category instanceof Mage_Catalog_Model_Category) {
153
+ $catArr = Mage::helper('inside')->getFullCategoryName($this->_category);
154
+ $extra['name'] = array_pop($catArr);
155
+ $extra['category'] = implode(' / ', $catArr);
156
+ }
157
+ }
158
+ break;
159
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::PRODUCT:
160
+ if ($this->_product instanceof Mage_Catalog_Model_Product) {
161
+ if($categoryName = Mage::helper('inside')->getFullCategoryName($this->_product)) {
162
+ $extra['category'] = implode(' / ', $categoryName);
163
+ }
164
+ if($imageUrl = Mage::helper('inside')->getProductImageUrl($this->_product)) {
165
+ $extra['img'] = $imageUrl;
166
+ }
167
+ //rewrite page name to include product name
168
+ $extra['name'] = $this->_product->getName();
169
+ }
170
+ break;
171
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::SEARCH:
172
+ $params = Mage::helper('inside')->getAllSearchParams();
173
+ foreach ($params as $param) {
174
+ if ($value = Mage::app()->getRequest()->getParam($param)) {
175
+ $extra['name'] = $value;
176
+ break;
177
+ }
178
+ }
179
+ break;
180
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::ARTICLE:
181
+ $extra['name'] = Mage::helper('inside')->getPageTitle();
182
+ break;
183
+
184
+ }
185
+ Mage::helper('inside')->log('$extra: '.print_r($extra, true), true);
186
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
187
+ return $extra;
188
+ }
189
+
190
+ /**
191
+ * Get unique identifier of a page
192
+ * (used by Inside to distinguish different pages of the same type)
193
+ *
194
+ * @deprecated Since v1.1.2 (Oct 7th 2013)
195
+ * @param string $type
196
+ * @return string
197
+ */
198
+ protected function _getPageUniqueId($type)
199
+ {
200
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
201
+ Mage::helper('inside')->log('$type: '.$type, true);
202
+
203
+ $id = null;
204
+ switch ($type) {
205
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::CATEGORY:
206
+ if ($this->_category instanceof Mage_Catalog_Model_Category) {
207
+ $id = $this->_category->getId();
208
+ }
209
+ break;
210
+ case Inside_Analytics_Model_System_Config_Source_Page_Type::PRODUCT:
211
+ if ($this->_product instanceof Mage_Catalog_Model_Product) {
212
+ $id = $this->_product->getId();
213
+ }
214
+ break;
215
+ }
216
+ Mage::helper('inside')->log('$id: '.$id, true);
217
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
218
+
219
+ return $id;
220
+ }
221
+
222
+ /**
223
+ * Gets custom tags string
224
+ *
225
+ * @param string $type The page type
226
+ * @return string
227
+ */
228
+ protected function _getTags($type)
229
+ {
230
+ $return = sprintf('language:%s', Mage::app()->getStore()->getCode());
231
+ if ($this->_outOfStock) {
232
+ $return.=', outofstock';
233
+ }
234
+ if ($type == Inside_Analytics_Model_System_Config_Source_Page_Type::SEARCH) {
235
+ if (Mage::registry('search_results_count') === 0) {
236
+ $return.=', emptysearch';
237
+ }
238
+ }
239
+ return $return;
240
+ }
241
+
242
+ /**
243
+ * Get checkout quote instance by current session
244
+ *
245
+ * @return Mage_Sales_Model_Quote
246
+ */
247
+ protected function _getQuote()
248
+ {
249
+ return Mage::getSingleton('checkout/session')->getQuote();
250
+ }
251
+
252
+ /**
253
+ * Return Quote ID (only if items in cart)
254
+ *
255
+ * @return int|null
256
+ */
257
+ protected function _getOrderId()
258
+ {
259
+ if ($this->_getQuote()->getItemsCount() > 0) {
260
+ return $this->_getQuote()->getId();
261
+ }
262
+ return null;
263
+ }
264
+
265
+ /**
266
+ * Return formatted grand total of the current quote if active
267
+ *
268
+ * @return string
269
+ */
270
+ protected function _getOrderTotal()
271
+ {
272
+ if ($this->_getOrderId()) {
273
+ return sprintf('%.2f', $this->_getQuote()->getGrandTotal());
274
+ }
275
+ return null;
276
+ }
277
+
278
+ /**
279
+ * Return formatted grand total of the current quote if active
280
+ *
281
+ * @return string
282
+ */
283
+ protected function _getShippingTotal()
284
+ {
285
+ if ($this->_getOrderId()) {
286
+ return sprintf('%.2f', $this->_getQuote()->getShippingAddress()->getBaseShippingInclTax());
287
+ }
288
+ return null;
289
+ }
290
+
291
+ /**
292
+ * Load current product from registry
293
+ * @return \Inside_Analytics_Model_PageView
294
+ */
295
+ protected function _loadProduct()
296
+ {
297
+ $product = Mage::registry('current_product');
298
+ if (!$product && Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
299
+ //try to load from cache
300
+ $processor = Mage::getSingleton('enterprise_pagecache/processor');
301
+ $productId = $processor->getMetadata(Enterprise_PageCache_Model_Processor_Product::METADATA_PRODUCT_ID);
302
+ $product = Mage::getModel('catalog/product')->load($productId);
303
+ }
304
+ if ($product && $product->getId()) {
305
+ $this->_product = $product;
306
+ $this->_outOfStock = !$product->getData('is_in_stock');
307
+ }
308
+ return $this;
309
+ }
310
+
311
+ /**
312
+ * Load current category from registry
313
+ * @return \Inside_Analytics_Model_PageView
314
+ */
315
+ protected function _loadCategory()
316
+ {
317
+ $category = Mage::registry('current_category');
318
+ if (!$category && Mage::getEdition() === Mage::EDITION_ENTERPRISE) {
319
+ //try to load from cache
320
+ $processor = Mage::getSingleton('enterprise_pagecache/processor');
321
+ $categoryId = $processor->getMetadata(Enterprise_PageCache_Model_Processor_Category::METADATA_CATEGORY_ID);
322
+ $category = Mage::getModel('catalog/category')->load($categoryId);
323
+ }
324
+ if ($category && $category->getId()) {
325
+ $this->_category = $category;
326
+ }
327
+ return $this;
328
+ }
329
+
330
+ /**
331
+ * Check if we have outstanding Ajax add-to-cart call
332
+ *
333
+ * @return boolean
334
+ */
335
+ protected function _isForcedOrderUpdate()
336
+ {
337
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
338
+ Mage::helper('inside')->log('session update on next: '.(string)Mage::getSingleton('core/session')->getInsideUpdateOnNext(), true);
339
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
340
+ return Mage::getSingleton('core/session')->getInsideUpdateOnNext() === true;
341
+ }
342
+
343
+ /**
344
+ * Resets Ajax call related session variables
345
+ */
346
+ protected function _resetSession()
347
+ {
348
+ Mage::helper('inside')->log('ENTERING: '.__METHOD__, true);
349
+ Mage::getSingleton('core/session')->unsetData('inside_update_on_next');
350
+ Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
351
+ }
352
+
353
+ }
354
+
app/code/community/Inside/Analytics/Model/System/Config/Source/Abstract.php CHANGED
@@ -1,88 +1,88 @@
1
- <?php
2
- /**
3
- * Description of class...
4
- *
5
- * @category Inside
6
- * @package Inside_Analytics
7
- * @author Inside <martin.novak@inside.tm>
8
- */
9
- abstract class Inside_Analytics_Model_System_Config_Source_Abstract
10
- {
11
-
12
- /**
13
- * The array of options in the configuration item.
14
- *
15
- * This array's keys are the values used in the database etc. and the
16
- * values of this array are used as labels on the frontend.
17
- *
18
- * @var array
19
- */
20
- protected $_options;
21
-
22
- public function __construct()
23
- {
24
- $this->_setupOptions();
25
- }
26
-
27
- /**
28
- * Sets up the $_options array with the correct values.
29
- *
30
- * This function is called in the constructor.
31
- *
32
- * @return Inside_Analytics_Model_System_Config_Source_Abstract
33
- */
34
- protected abstract function _setupOptions();
35
-
36
- /**
37
- * Gets all the options in the key => value type array.
38
- *
39
- * @return array
40
- */
41
- public function getOptions($please_select = false)
42
- {
43
- $options = $this->_options;
44
- if ($please_select) {
45
- $options = array(null => '--Please Select--') + $options;
46
- }
47
- return $options;
48
- }
49
-
50
- /**
51
- * Converts the options into a format suitable for use in the admin area.
52
- *
53
- * @return array
54
- */
55
- public function toOptionArray()
56
- {
57
- return $this->_toOptionArray($this->_options);
58
- }
59
-
60
- protected function _toOptionArray($input)
61
- {
62
- $array = array();
63
-
64
- foreach ($input as $key => $value) {
65
- $array[] = array(
66
- 'value' => $key,
67
- 'label' => $value,
68
- );
69
- }
70
-
71
- return $array;
72
- }
73
-
74
- /**
75
- * Looks up an option by key and gets the label.
76
- *
77
- * @param mixed $value
78
- * @return mixed
79
- */
80
- public function getOptionLabel($value)
81
- {
82
- if (array_key_exists($value, $this->_options)) {
83
- return $this->_options[$value];
84
- }
85
- return null;
86
- }
87
-
88
- }
1
+ <?php
2
+ /**
3
+ * Description of class...
4
+ *
5
+ * @category Inside
6
+ * @package Inside_Analytics
7
+ * @author Inside <martin.novak@inside.tm>
8
+ */
9
+ abstract class Inside_Analytics_Model_System_Config_Source_Abstract
10
+ {
11
+
12
+ /**
13
+ * The array of options in the configuration item.
14
+ *
15
+ * This array's keys are the values used in the database etc. and the
16
+ * values of this array are used as labels on the frontend.
17
+ *
18
+ * @var array
19
+ */
20
+ protected $_options;
21
+
22
+ public function __construct()
23
+ {
24
+ $this->_setupOptions();
25
+ }
26
+
27
+ /**
28
+ * Sets up the $_options array with the correct values.
29
+ *
30
+ * This function is called in the constructor.
31
+ *
32
+ * @return Inside_Analytics_Model_System_Config_Source_Abstract
33
+ */
34
+ protected abstract function _setupOptions();
35
+
36
+ /**
37
+ * Gets all the options in the key => value type array.
38
+ *
39
+ * @return array
40
+ */
41
+ public function getOptions($please_select = false)
42
+ {
43
+ $options = $this->_options;
44
+ if ($please_select) {
45
+ $options = array(null => '--Please Select--') + $options;
46
+ }
47
+ return $options;
48
+ }
49
+
50
+ /**
51
+ * Converts the options into a format suitable for use in the admin area.
52
+ *
53
+ * @return array
54
+ */
55
+ public function toOptionArray()
56
+ {
57
+ return $this->_toOptionArray($this->_options);
58
+ }
59
+
60
+ protected function _toOptionArray($input)
61
+ {
62
+ $array = array();
63
+
64
+ foreach ($input as $key => $value) {
65
+ $array[] = array(
66
+ 'value' => $key,
67
+ 'label' => $value,
68
+ );
69
+ }
70
+
71
+ return $array;
72
+ }
73
+
74
+ /**
75
+ * Looks up an option by key and gets the label.
76
+ *
77
+ * @param mixed $value
78
+ * @return mixed
79
+ */
80
+ public function getOptionLabel($value)
81
+ {
82
+ if (array_key_exists($value, $this->_options)) {
83
+ return $this->_options[$value];
84
+ }
85
+ return null;
86
+ }
87
+
88
+ }
app/code/community/Inside/Analytics/Model/System/Config/Source/Page/Type.php CHANGED
@@ -1,43 +1,43 @@
1
- <?php
2
- /**
3
- * Description of class...
4
- *
5
- * @category Inside
6
- * @package Inside_Analytics
7
- * @author Inside <martin.novak@inside.tm>
8
- */
9
- class Inside_Analytics_Model_System_Config_Source_Page_Type
10
- extends Inside_Analytics_Model_System_Config_Source_Abstract
11
- {
12
-
13
- const HOMEPAGE = 'homepage';
14
- const ARTICLE = 'article';
15
- const SEARCH = 'search';
16
- const CATEGORY = 'productcategory';
17
- const PRODUCT = 'product';
18
- const LOGIN = 'login';
19
- const CHECKOUT = 'checkout';
20
- const ORDERCONFIRMED = 'orderconfirmed';
21
- const LEAD = 'lead';
22
- const LEADCONFIRMED = 'leadconfirmed';
23
- const NOTFOUND = 'pagenotfound';
24
- const OTHER = 'other';
25
-
26
- protected function _setupOptions()
27
- {
28
- $this->_options = array(
29
- self::HOMEPAGE => Mage::helper('inside')->__('Home Page'),
30
- self::ARTICLE => Mage::helper('inside')->__('Article Page'),
31
- self::SEARCH => Mage::helper('inside')->__('Search Result Page'),
32
- self::CATEGORY => Mage::helper('inside')->__('Product Category Page'),
33
- self::PRODUCT => Mage::helper('inside')->__('Product View Page'),
34
- self::LOGIN => Mage::helper('inside')->__('Login Page'),
35
- self::CHECKOUT => Mage::helper('inside')->__('Shopping Cart or Checkout Page'),
36
- self::ORDERCONFIRMED => Mage::helper('inside')->__('Order Confirmation Page'),
37
- // self::LEAD => Mage::helper('inside')->__('Lead/Form Page'),
38
- // self::LEADCONFIRMED => Mage::helper('inside')->__('Lead/Form Confirmation Page'),
39
- self::NOTFOUND => Mage::helper('inside')->__('Page not Found (404)'),
40
- );
41
- }
42
-
43
  }
1
+ <?php
2
+ /**
3
+ * Description of class...
4
+ *
5
+ * @category Inside
6
+ * @package Inside_Analytics
7
+ * @author Inside <martin.novak@inside.tm>
8
+ */
9
+ class Inside_Analytics_Model_System_Config_Source_Page_Type
10
+ extends Inside_Analytics_Model_System_Config_Source_Abstract
11
+ {
12
+
13
+ const HOMEPAGE = 'homepage';
14
+ const ARTICLE = 'article';
15
+ const SEARCH = 'search';
16
+ const CATEGORY = 'productcategory';
17
+ const PRODUCT = 'product';
18
+ const LOGIN = 'login';
19
+ const CHECKOUT = 'checkout';
20
+ const ORDERCONFIRMED = 'orderconfirmed';
21
+ const LEAD = 'lead';
22
+ const LEADCONFIRMED = 'leadconfirmed';
23
+ const NOTFOUND = 'pagenotfound';
24
+ const OTHER = 'other';
25
+
26
+ protected function _setupOptions()
27
+ {
28
+ $this->_options = array(
29
+ self::HOMEPAGE => Mage::helper('inside')->__('Home Page'),
30
+ self::ARTICLE => Mage::helper('inside')->__('Article Page'),
31
+ self::SEARCH => Mage::helper('inside')->__('Search Result Page'),
32
+ self::CATEGORY => Mage::helper('inside')->__('Product Category Page'),
33
+ self::PRODUCT => Mage::helper('inside')->__('Product View Page'),
34
+ self::LOGIN => Mage::helper('inside')->__('Login Page'),
35
+ self::CHECKOUT => Mage::helper('inside')->__('Shopping Cart or Checkout Page'),
36
+ self::ORDERCONFIRMED => Mage::helper('inside')->__('Order Confirmation Page'),
37
+ // self::LEAD => Mage::helper('inside')->__('Lead/Form Page'),
38
+ // self::LEADCONFIRMED => Mage::helper('inside')->__('Lead/Form Confirmation Page'),
39
+ self::NOTFOUND => Mage::helper('inside')->__('Page not Found (404)'),
40
+ );
41
+ }
42
+
43
  }
app/code/community/Inside/Analytics/etc/config.xml CHANGED
@@ -11,7 +11,7 @@
11
  <config>
12
  <modules>
13
  <Inside_Analytics>
14
- <version>2.6.0</version>
15
  </Inside_Analytics>
16
  </modules>
17
  <global>
11
  <config>
12
  <modules>
13
  <Inside_Analytics>
14
+ <version>2.6.2</version>
15
  </Inside_Analytics>
16
  </modules>
17
  <global>
app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-1.1.2-2.0.0.php CHANGED
@@ -1,48 +1,48 @@
1
- <?php
2
-
3
- set_time_limit(0);
4
-
5
- /* @var $this Mage_Eav_Model_Entity_Setup */
6
- /* @var $installer Mage_Eav_Model_Entity_Setup */
7
-
8
- $installer = $this;
9
- $installer->startSetup();
10
-
11
- // Create custom track route table
12
- $installer->run("
13
- DROP TABLE IF EXISTS {$this->getTable('insideanalytics_route')};
14
- CREATE TABLE {$this->getTable('insideanalytics_route')} (
15
- `id` int(13) UNSIGNED NOT NULL AUTO_INCREMENT,
16
- `module` varchar(100) NOT NULL,
17
- `controller` varchar(100) NULL DEFAULT NULL,
18
- `action` varchar(100) NULL DEFAULT NULL,
19
- `full_qualifier` varchar(255) NOT NULL,
20
- `type` varchar(50) NOT NULL,
21
- `search_param` varchar(50) NULL DEFAULT NULL,
22
- `user_defined` boolean NOT NULL DEFAULT 1,
23
- PRIMARY KEY (`id`),
24
- UNIQUE KEY `UNIQUE_ROUTE_NAME` (`full_qualifier`)
25
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
26
-
27
- INSERT INTO {$this->getTable('insideanalytics_route')} (`id`, `module`, `controller`, `action`, `full_qualifier`, `type`, `search_param`, `user_defined`) VALUES
28
- (1, 'cms', 'index', 'index', 'cms_index_index', 'homepage', NULL, 0),
29
- (2, 'cms', 'page', 'view', 'cms_page_view', 'article', NULL, 0),
30
- (3, 'catalog', 'seo_sitemap', 'category', 'catalog_seo_sitemap_category', 'article', NULL, 0),
31
- (4, 'catalogsearch', 'result', 'index', 'catalogsearch_result_index', 'search', 'q', 0),
32
- (5, 'catalogsearch', 'advanced', 'index', 'catalogsearch_advanced_index', 'search', 'q', 0),
33
- (6, 'sli', 'search', NULL, 'sli_search', 'search', 'w', 0),
34
- (7, 'catalog', 'category', 'view', 'catalog_category_view', 'productcategory', NULL, 0),
35
- (8, 'amshopby', 'index', 'index', 'amshopby_index_index', 'productcategory', NULL, 0),
36
- (9, 'catalog', 'product', 'view', 'catalog_product_view', 'product', NULL, 0),
37
- (10, 'customer', 'account', 'login', 'customer_account_login', 'login', NULL, 0),
38
- (11, 'checkout', 'multishipping', 'login', 'checkout_multishipping_login', 'login', NULL, 0),
39
- (12, 'checkout', 'cart', 'index', 'checkout_cart_index', 'checkout', NULL, 0),
40
- (13, 'checkout', 'onepage', 'index', 'checkout_onepage_index', 'checkout', NULL, 0),
41
- (14, 'onestepcheckout', NULL, NULL, 'onestepcheckout', 'checkout', NULL, 0),
42
- (15, 'checkout', 'multishipping', 'index', 'checkout_multishipping', 'checkout', NULL, 0),
43
- (16, 'checkout', 'onepage', 'success', 'checkout_onepage_success', 'orderconfirmed', NULL, 0),
44
- (17, 'checkout', 'multishipping', 'success', 'checkout_multishipping_success', 'orderconfirmed', NULL, 0),
45
- (18, 'cms', 'index', 'noRoute', 'cms_index_noRoute', 'pagenotfound', NULL, 0)
46
- ");
47
-
48
- $installer->endSetup();
1
+ <?php
2
+
3
+ set_time_limit(0);
4
+
5
+ /* @var $this Mage_Eav_Model_Entity_Setup */
6
+ /* @var $installer Mage_Eav_Model_Entity_Setup */
7
+
8
+ $installer = $this;
9
+ $installer->startSetup();
10
+
11
+ // Create custom track route table
12
+ $installer->run("
13
+ DROP TABLE IF EXISTS {$this->getTable('insideanalytics_route')};
14
+ CREATE TABLE {$this->getTable('insideanalytics_route')} (
15
+ `id` int(13) UNSIGNED NOT NULL AUTO_INCREMENT,
16
+ `module` varchar(100) NOT NULL,
17
+ `controller` varchar(100) NULL DEFAULT NULL,
18
+ `action` varchar(100) NULL DEFAULT NULL,
19
+ `full_qualifier` varchar(255) NOT NULL,
20
+ `type` varchar(50) NOT NULL,
21
+ `search_param` varchar(50) NULL DEFAULT NULL,
22
+ `user_defined` boolean NOT NULL DEFAULT 1,
23
+ PRIMARY KEY (`id`),
24
+ UNIQUE KEY `UNIQUE_ROUTE_NAME` (`full_qualifier`)
25
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
26
+
27
+ INSERT INTO {$this->getTable('insideanalytics_route')} (`id`, `module`, `controller`, `action`, `full_qualifier`, `type`, `search_param`, `user_defined`) VALUES
28
+ (1, 'cms', 'index', 'index', 'cms_index_index', 'homepage', NULL, 0),
29
+ (2, 'cms', 'page', 'view', 'cms_page_view', 'article', NULL, 0),
30
+ (3, 'catalog', 'seo_sitemap', 'category', 'catalog_seo_sitemap_category', 'article', NULL, 0),
31
+ (4, 'catalogsearch', 'result', 'index', 'catalogsearch_result_index', 'search', 'q', 0),
32
+ (5, 'catalogsearch', 'advanced', 'index', 'catalogsearch_advanced_index', 'search', 'q', 0),
33
+ (6, 'sli', 'search', NULL, 'sli_search', 'search', 'w', 0),
34
+ (7, 'catalog', 'category', 'view', 'catalog_category_view', 'productcategory', NULL, 0),
35
+ (8, 'amshopby', 'index', 'index', 'amshopby_index_index', 'productcategory', NULL, 0),
36
+ (9, 'catalog', 'product', 'view', 'catalog_product_view', 'product', NULL, 0),
37
+ (10, 'customer', 'account', 'login', 'customer_account_login', 'login', NULL, 0),
38
+ (11, 'checkout', 'multishipping', 'login', 'checkout_multishipping_login', 'login', NULL, 0),
39
+ (12, 'checkout', 'cart', 'index', 'checkout_cart_index', 'checkout', NULL, 0),
40
+ (13, 'checkout', 'onepage', 'index', 'checkout_onepage_index', 'checkout', NULL, 0),
41
+ (14, 'onestepcheckout', NULL, NULL, 'onestepcheckout', 'checkout', NULL, 0),
42
+ (15, 'checkout', 'multishipping', 'index', 'checkout_multishipping', 'checkout', NULL, 0),
43
+ (16, 'checkout', 'onepage', 'success', 'checkout_onepage_success', 'orderconfirmed', NULL, 0),
44
+ (17, 'checkout', 'multishipping', 'success', 'checkout_multishipping_success', 'orderconfirmed', NULL, 0),
45
+ (18, 'cms', 'index', 'noRoute', 'cms_index_noRoute', 'pagenotfound', NULL, 0)
46
+ ");
47
+
48
+ $installer->endSetup();
app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-2.0.0-2.1.0.php CHANGED
@@ -1,18 +1,18 @@
1
- <?php
2
-
3
- set_time_limit(0);
4
-
5
- /* @var $this Mage_Eav_Model_Entity_Setup */
6
- /* @var $installer Mage_Eav_Model_Entity_Setup */
7
-
8
- $installer = $this;
9
- $installer->startSetup();
10
-
11
- // Add support for Ajax requests
12
- $installer->run("
13
- ALTER TABLE {$this->getTable('insideanalytics_route')}
14
- ADD `is_ajax` boolean NOT NULL DEFAULT 0
15
- ;
16
- ");
17
-
18
- $installer->endSetup();
1
+ <?php
2
+
3
+ set_time_limit(0);
4
+
5
+ /* @var $this Mage_Eav_Model_Entity_Setup */
6
+ /* @var $installer Mage_Eav_Model_Entity_Setup */
7
+
8
+ $installer = $this;
9
+ $installer->startSetup();
10
+
11
+ // Add support for Ajax requests
12
+ $installer->run("
13
+ ALTER TABLE {$this->getTable('insideanalytics_route')}
14
+ ADD `is_ajax` boolean NOT NULL DEFAULT 0
15
+ ;
16
+ ");
17
+
18
+ $installer->endSetup();
app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-2.1.0-2.2.0.php CHANGED
@@ -1,18 +1,18 @@
1
- <?php
2
-
3
- set_time_limit(0);
4
-
5
- /* @var $this Mage_Eav_Model_Entity_Setup */
6
- /* @var $installer Mage_Eav_Model_Entity_Setup */
7
-
8
- $installer = $this;
9
- $installer->startSetup();
10
-
11
- // Add support for Ajax requests
12
- $installer->run("
13
- ALTER TABLE {$this->getTable('insideanalytics_route')}
14
- ADD `is_active` boolean NOT NULL DEFAULT 1
15
- ;
16
- ");
17
-
18
- $installer->endSetup();
1
+ <?php
2
+
3
+ set_time_limit(0);
4
+
5
+ /* @var $this Mage_Eav_Model_Entity_Setup */
6
+ /* @var $installer Mage_Eav_Model_Entity_Setup */
7
+
8
+ $installer = $this;
9
+ $installer->startSetup();
10
+
11
+ // Add support for Ajax requests
12
+ $installer->run("
13
+ ALTER TABLE {$this->getTable('insideanalytics_route')}
14
+ ADD `is_active` boolean NOT NULL DEFAULT 1
15
+ ;
16
+ ");
17
+
18
+ $installer->endSetup();
app/design/frontend/base/default/template/inside/analytics.phtml CHANGED
@@ -1,20 +1,20 @@
1
- <?php if (!Mage::helper('core/cookie')->isUserNotAllowSaveCookie()): ?>
2
- <!-- BEGIN INSIDE ANALYTICS CODE -->
3
- <?php echo $this->_getDebugCode() ?>
4
- <script type="text/javascript">
5
- //<![CDATA[
6
- var _inside = _inside || [];
7
- <?php echo $this->_getAccountCode() ?>
8
- <?php echo $this->_getPageTrackingCode() ?>
9
- <?php echo $this->_getOrdersTrackingCode() ?>
10
- <?php echo $this->_getSaleTrackingCode() ?>
11
-
12
- (function () {
13
- var inside = document.createElement('script'); inside.type = 'text/javascript'; inside.async = true;
14
- inside.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + '<?php echo $this->_getServer() ?>' +'/ig.js?hn=' + encodeURIComponent(document.location.hostname) + '&_=' + Math.random();
15
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(inside, s);
16
- })();
17
- //]]>
18
- </script>
19
- <!-- END INSIDE ANALYTICS CODE -->
20
  <?php endif; ?>
1
+ <?php if (!Mage::helper('core/cookie')->isUserNotAllowSaveCookie()): ?>
2
+ <!-- BEGIN INSIDE ANALYTICS CODE -->
3
+ <?php echo $this->_getDebugCode() ?>
4
+ <script type="text/javascript">
5
+ //<![CDATA[
6
+ var _inside = _inside || [];
7
+ <?php echo $this->_getAccountCode() ?>
8
+ <?php echo $this->_getPageTrackingCode() ?>
9
+ <?php echo $this->_getOrdersTrackingCode() ?>
10
+ <?php echo $this->_getSaleTrackingCode() ?>
11
+
12
+ (function () {
13
+ var inside = document.createElement('script'); inside.type = 'text/javascript'; inside.async = true;
14
+ inside.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + '<?php echo $this->_getServer() ?>' +'/ig.js?hn=' + encodeURIComponent(document.location.hostname) + '&_=' + Math.random();
15
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(inside, s);
16
+ })();
17
+ //]]>
18
+ </script>
19
+ <!-- END INSIDE ANALYTICS CODE -->
20
  <?php endif; ?>
app/etc/modules/Inside_Analytics.xml CHANGED
@@ -1,9 +1,9 @@
1
- <?xml version="1.0"?>
2
- <config>
3
- <modules>
4
- <Inside_Analytics>
5
- <active>true</active>
6
- <codePool>community</codePool>
7
- </Inside_Analytics>
8
- </modules>
9
- </config>
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Inside_Analytics>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Inside_Analytics>
8
+ </modules>
9
+ </config>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Inside_Analytics</name>
4
- <version>2.6.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.inside.tm/servicecontract">Inside Service Contract</license>
7
  <channel>community</channel>
@@ -31,14 +31,13 @@ Call us for an online presentation:&lt;br /&gt;&#xD;
31
  USA Call Hadar on 310.661.0308 9AM - 6PM PST &lt;br /&gt;&#xD;
32
  AUS Call Michael on 03 8637 1534 9AM - 5PM EST </description>
33
  <notes>New Features&#xD;
34
- - added empty search tag&#xD;
35
- - added out of stock tag&#xD;
36
- - fixed loading of category and product on cached pages&#xD;
37
  </notes>
38
  <authors><author><name>Hadar Paz</name><user>MAG001834167</user><email>hadar.paz@inside.tm</email></author></authors>
39
- <date>2014-11-17</date>
40
- <time>08:36:44</time>
41
- <contents><target name="magecommunity"><dir name="Inside"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><dir name="Route"><dir name="Edit"><file name="Form.php" hash="1d33f13c65cd268aa609904a598a4a43"/><dir name="Tab"><file name="General.php" hash="3fb90a753247c42454d942b9c7c12b6a"/></dir><file name="Tabs.php" hash="aeb4125bde86d7d07a1b263e9a776274"/></dir><file name="Edit.php" hash="b250cc9a5b7252d3c8b78fac93bee273"/><file name="Grid.php" hash="6819b33d1e77a64724d3d0d0b61fe894"/></dir><file name="Route.php" hash="1116daacd2d91c25c1b11c238482e9ae"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Button"><file name="Clearlog.php" hash="2b15b253af80856c7e0f6b18229edb44"/><file name="Showlog.php" hash="3e44b43ce52b5d22806df05ef41fb59a"/></dir></dir></dir></dir></dir><file name="Analytics.php" hash="f05276c813c4300d154816eb065ee5cc"/></dir><dir name="Helper"><file name="Data.php" hash="685038ac4f7047db4f9b7a18fc16c401"/></dir><dir name="Model"><dir name="Container"><file name="Analytics.php" hash="4bc1c63b05071065d40d1863b5f1235f"/></dir><dir name="Mysql4"><dir name="Route"><file name="Collection.php" hash="8aceeaea4490909d1536f953ba1e28c1"/></dir><file name="Route.php" hash="ef1d9069d996c6e2886a73941fb44c61"/></dir><file name="Observer.php" hash="c9e3467d0acf99a81b7e1804abb49750"/><dir name="PageView"><file name="Type.php" hash="f74edfe8d845645d3cb2265517306ccd"/></dir><file name="PageView.php" hash="4ed726ccfb7844ef34daa7f8effbe2c5"/><file name="Route.php" hash="5d5adf4663faa265967e5ae40264b7a1"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Abstract.php" hash="ffd23e007fa3f9fea473c9183bf58bc7"/><dir name="Page"><file name="Type.php" hash="4991eba0607d35132c16b0c7deec0ec0"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DebugController.php" hash="50754bcbce36b1edc99e15445b7f06bc"/><file name="RouteController.php" hash="333445550bd1f8eedf1fc3e7321e1b0d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="11fbacf4dd6153fdff62b160f3a3cf17"/><file name="cache.xml" hash="b87e8e77bcb7ff06ea305dc371f95719"/><file name="config.xml" hash="63fc8dc1e6ae9c5827a94ec274918f74"/><file name="system.xml" hash="2b8092b04591fdcccbbecc3f19441a5c"/></dir><dir name="sql"><dir name="inside_setup"><file name="mysql4-upgrade-1.1.2-2.0.0.php" hash="e123452c8d68d8961663fe6508ca580c"/><file name="mysql4-upgrade-2.0.0-2.1.0.php" hash="59426151530545b4efc807fe22002a18"/><file name="mysql4-upgrade-2.1.0-2.2.0.php" hash="4543cc4128ef9345923e9ac71c05621d"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="inside"><file name="analytics.xml" hash="76a3e04439048e976f23cf7330851ddd"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="inside"><file name="analytics.xml" hash="5d64993f4dec32725664d4ac1073b431"/></dir></dir><dir name="template"><dir name="inside"><file name="analytics.phtml" hash="c08328c8084fe4b2b0fbf2dbcea12993"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Inside_Analytics.xml" hash="4a6e86a99302b7ddecadffb844c4c3a8"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="inside"><file name="route.js" hash="0067644797c73ca5be7c052fdcfaa78d"/></dir></dir></dir></dir></target></contents>
42
  <compatible/>
43
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
44
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Inside_Analytics</name>
4
+ <version>2.6.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.inside.tm/servicecontract">Inside Service Contract</license>
7
  <channel>community</channel>
31
  USA Call Hadar on 310.661.0308 9AM - 6PM PST &lt;br /&gt;&#xD;
32
  AUS Call Michael on 03 8637 1534 9AM - 5PM EST </description>
33
  <notes>New Features&#xD;
34
+ - fixed observer methods - check if plugin active before executing&#xD;
35
+ - fixed page title retrieval when FPC is enabled.&#xD;
 
36
  </notes>
37
  <authors><author><name>Hadar Paz</name><user>MAG001834167</user><email>hadar.paz@inside.tm</email></author></authors>
38
+ <date>2015-02-17</date>
39
+ <time>05:41:31</time>
40
+ <contents><target name="magecommunity"><dir name="Inside"><dir name="Analytics"><dir name="Block"><dir name="Adminhtml"><dir name="Route"><dir name="Edit"><file name="Form.php" hash="584ccfb1594f782ce2988a875286e081"/><dir name="Tab"><file name="General.php" hash="a752112ef91f80d31d2c3a716b46b266"/></dir><file name="Tabs.php" hash="8bdbeaca34e97ceda8a8bf253ceaef66"/></dir><file name="Edit.php" hash="f3196bddb5c08c45a284ca511506f37b"/><file name="Grid.php" hash="6819b33d1e77a64724d3d0d0b61fe894"/></dir><file name="Route.php" hash="1116daacd2d91c25c1b11c238482e9ae"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Button"><file name="Clearlog.php" hash="2b15b253af80856c7e0f6b18229edb44"/><file name="Showlog.php" hash="3e44b43ce52b5d22806df05ef41fb59a"/></dir></dir></dir></dir></dir><file name="Analytics.php" hash="64a061f9b71600cfc9e55a3513851f7c"/></dir><dir name="Helper"><file name="Data.php" hash="ab75cc319b5e7099d61f6b7cff396816"/></dir><dir name="Model"><dir name="Container"><file name="Analytics.php" hash="4bc1c63b05071065d40d1863b5f1235f"/></dir><dir name="Mysql4"><dir name="Route"><file name="Collection.php" hash="8aceeaea4490909d1536f953ba1e28c1"/></dir><file name="Route.php" hash="ef1d9069d996c6e2886a73941fb44c61"/></dir><file name="Observer.php" hash="77cdf584113daf3f7b0aad38fe8555e7"/><dir name="PageView"><file name="Type.php" hash="f74edfe8d845645d3cb2265517306ccd"/></dir><file name="PageView.php" hash="2cf1adbbab824959a9c0f0672f59af96"/><file name="Route.php" hash="5d5adf4663faa265967e5ae40264b7a1"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Abstract.php" hash="33f9c2e77cd4d958e22d2029edcca050"/><dir name="Page"><file name="Type.php" hash="1c5114fec4c2cc76cbfc33aa22061a92"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="DebugController.php" hash="50754bcbce36b1edc99e15445b7f06bc"/><file name="RouteController.php" hash="333445550bd1f8eedf1fc3e7321e1b0d"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="11fbacf4dd6153fdff62b160f3a3cf17"/><file name="cache.xml" hash="b87e8e77bcb7ff06ea305dc371f95719"/><file name="config.xml" hash="430ff21d0b4aa4961283babe9e4f036f"/><file name="system.xml" hash="2b8092b04591fdcccbbecc3f19441a5c"/></dir><dir name="sql"><dir name="inside_setup"><file name="mysql4-upgrade-1.1.2-2.0.0.php" hash="cd64c55cb2a702ea3a039a5875e26a84"/><file name="mysql4-upgrade-2.0.0-2.1.0.php" hash="63311e7a9acf9fcb41e74b5eb79ee75c"/><file name="mysql4-upgrade-2.1.0-2.2.0.php" hash="d34786ec0c92ef174add04adfeb1f2b8"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="inside"><file name="analytics.xml" hash="76a3e04439048e976f23cf7330851ddd"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="inside"><file name="analytics.xml" hash="5d64993f4dec32725664d4ac1073b431"/></dir></dir><dir name="template"><dir name="inside"><file name="analytics.phtml" hash="bfa977a47d76752b8cf11c7a5abc0cc4"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Inside_Analytics.xml" hash="43708f02223e5bae51183531b71966d9"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="inside"><file name="route.js" hash="0067644797c73ca5be7c052fdcfaa78d"/></dir></dir></dir></dir></target></contents>
41
  <compatible/>
42
  <dependencies><required><php><min>5.2.13</min><max>6.0.0</max></php></required></dependencies>
43
  </package>