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 +60 -60
- app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Form.php +32 -32
- app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Tab/General.php +176 -176
- app/code/community/Inside/Analytics/Block/Adminhtml/Route/Edit/Tabs.php +21 -21
- app/code/community/Inside/Analytics/Block/Analytics.php +196 -196
- app/code/community/Inside/Analytics/Helper/Data.php +13 -2
- app/code/community/Inside/Analytics/Model/Observer.php +57 -51
- app/code/community/Inside/Analytics/Model/PageView.php +354 -354
- app/code/community/Inside/Analytics/Model/System/Config/Source/Abstract.php +88 -88
- app/code/community/Inside/Analytics/Model/System/Config/Source/Page/Type.php +42 -42
- app/code/community/Inside/Analytics/etc/config.xml +1 -1
- app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-1.1.2-2.0.0.php +48 -48
- app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-2.0.0-2.1.0.php +18 -18
- app/code/community/Inside/Analytics/sql/inside_setup/mysql4-upgrade-2.1.0-2.2.0.php +18 -18
- app/design/frontend/base/default/template/inside/analytics.phtml +19 -19
- app/etc/modules/Inside_Analytics.xml +9 -9
- package.xml +6 -7
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 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
$block
|
|
|
|
|
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 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
|
|
58 |
Mage::helper('inside')->log('LEAVING: '.__METHOD__, true);
|
59 |
}
|
60 |
|
61 |
public function setEmptySearch(Varien_Event_Observer $observer)
|
62 |
-
{
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
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.
|
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.
|
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:<br />
|
|
31 |
USA Call Hadar on 310.661.0308 9AM - 6PM PST <br />
|
32 |
AUS Call Michael on 03 8637 1534 9AM - 5PM EST </description>
|
33 |
<notes>New Features
|
34 |
-
-
|
35 |
-
-
|
36 |
-
- fixed loading of category and product on cached pages
|
37 |
</notes>
|
38 |
<authors><author><name>Hadar Paz</name><user>MAG001834167</user><email>hadar.paz@inside.tm</email></author></authors>
|
39 |
-
<date>
|
40 |
-
<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="
|
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 <br />
|
32 |
AUS Call Michael on 03 8637 1534 9AM - 5PM EST </description>
|
33 |
<notes>New Features
|
34 |
+
- fixed observer methods - check if plugin active before executing
|
35 |
+
- fixed page title retrieval when FPC is enabled.
|
|
|
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>
|