Version Notes
dddd
Download this release
Release Info
Developer | Increasingly |
Extension | increasingly_key |
Version | 1.0.1 |
Comparing to | |
See all releases |
Version 1.0.1
- app/code/community/Increasingly/Analytics/Block/Addtocart.php +46 -0
- app/code/community/Increasingly/Analytics/Block/Adminhtml/DataIntegration.php +178 -0
- app/code/community/Increasingly/Analytics/Block/Cart.php +161 -0
- app/code/community/Increasingly/Analytics/Block/Category.php +68 -0
- app/code/community/Increasingly/Analytics/Block/Element.php +69 -0
- app/code/community/Increasingly/Analytics/Block/Embed.php +63 -0
- app/code/community/Increasingly/Analytics/Block/Pagetype.php +80 -0
- app/code/community/Increasingly/Analytics/Block/Product.php +92 -0
- app/code/community/Increasingly/Analytics/Block/Track.php +63 -0
- app/code/community/Increasingly/Analytics/Helper/Data.php +337 -0
- app/code/community/Increasingly/Analytics/Helper/DateFormatter.php +38 -0
- app/code/community/Increasingly/Analytics/Helper/PriceFormatter.php +170 -0
- app/code/community/Increasingly/Analytics/Helper/ProductFormatter.php +197 -0
- app/code/community/Increasingly/Analytics/Model/Base.php +52 -0
- app/code/community/Increasingly/Analytics/Model/Bundle.php +36 -0
- app/code/community/Increasingly/Analytics/Model/DataIntegration.php +65 -0
- app/code/community/Increasingly/Analytics/Model/Meta/Product.php +509 -0
- app/code/community/Increasingly/Analytics/Model/Mysql4/Bundle.php +40 -0
- app/code/community/Increasingly/Analytics/Model/Mysql4/Bundle/Collection.php +40 -0
- app/code/community/Increasingly/Analytics/Model/Observer.php +513 -0
- app/code/community/Increasingly/Analytics/Model/Product.php +42 -0
- app/code/community/Increasingly/Analytics/controllers/AddbundletocartController.php +245 -0
- app/code/community/Increasingly/Analytics/controllers/Adminhtml/DataIntegrationController.php +125 -0
- app/code/community/Increasingly/Analytics/controllers/ProductsApiController.php +156 -0
- app/code/community/Increasingly/Analytics/etc/config.xml +249 -0
- app/code/community/Increasingly/Analytics/sql/setup/mysql-install-1.0.0.php +29 -0
- app/design/adminhtml/default/default/layout/increasingly_analytics.xml +8 -0
- app/design/adminhtml/default/default/template/increasingly/dataintegration.phtml +104 -0
- app/design/frontend/base/default/layout/increasingly_analytics.xml +226 -0
- app/design/frontend/base/default/template/increasingly/addtocart.phtml +62 -0
- app/design/frontend/base/default/template/increasingly/cart.phtml +67 -0
- app/design/frontend/base/default/template/increasingly/category.phtml +38 -0
- app/design/frontend/base/default/template/increasingly/element.phtml +40 -0
- app/design/frontend/base/default/template/increasingly/embed.phtml +35 -0
- app/design/frontend/base/default/template/increasingly/pagetype.phtml +65 -0
- app/design/frontend/base/default/template/increasingly/product.phtml +76 -0
- app/design/frontend/base/default/template/increasingly/track.phtml +71 -0
- app/etc/modules/Increasingly_Analytics.xml +12 -0
- package.xml +54 -0
- skin/adminhtml/default/default/increasingly/loader.gif +0 -0
app/code/community/Increasingly/Analytics/Block/Addtocart.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Adds the `add-to-cart` script.
|
30 |
+
*
|
31 |
+
*/
|
32 |
+
class Increasingly_Analytics_Block_Addtocart extends Mage_Core_Block_Template
|
33 |
+
{
|
34 |
+
/**
|
35 |
+
* Render script if the module is enabled for the current store.
|
36 |
+
*
|
37 |
+
* @return string
|
38 |
+
*/
|
39 |
+
protected function _toHtml()
|
40 |
+
{
|
41 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
42 |
+
return '';
|
43 |
+
}
|
44 |
+
return parent::_toHtml();
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Adminhtml/DataIntegration.php
ADDED
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Add import model and view for enabling increasingly
|
29 |
+
*
|
30 |
+
*
|
31 |
+
*/
|
32 |
+
class Increasingly_Analytics_Block_Adminhtml_DataIntegration extends Mage_Adminhtml_Block_Widget_Form_Container
|
33 |
+
{
|
34 |
+
/**
|
35 |
+
* Set template for the data import from Magento to Increasingly API
|
36 |
+
*/
|
37 |
+
protected function _construct()
|
38 |
+
{
|
39 |
+
parent::_construct();
|
40 |
+
$this->setTemplate('increasingly/dataintegration.phtml');
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get import model instance
|
45 |
+
*
|
46 |
+
* @return Increasingly_Analytics_Model_Import
|
47 |
+
*/
|
48 |
+
public function getImport()
|
49 |
+
{
|
50 |
+
return Mage::getSingleton('increasingly_analytics/DataIntegration');
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @return Increasingly Analytics Installation Status
|
55 |
+
*/
|
56 |
+
public function renderIncreasinglyEnableStatus($selected=0)
|
57 |
+
{
|
58 |
+
$options=array();
|
59 |
+
$options[]=array('label'=>'Yes','value'=>1);
|
60 |
+
$options[]=array('label'=>'No','value'=>0);
|
61 |
+
|
62 |
+
$html=$this->_getSelectHtml('increasingly_analytics_settings_enable',$options,$selected,'select','increasingly_analytics_settings_enable');
|
63 |
+
return $html;
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* @return Increasingly Analytics Admin Settings Select widget
|
68 |
+
*/
|
69 |
+
private function _getSelectHtml($name,$options,$default=0,$class='',$id='')
|
70 |
+
{
|
71 |
+
$select='<select name="'.$name.'" id="'.$id.'" onchange=loadHtmlFields(this.value) class="'.$class.'">';
|
72 |
+
foreach ($options as $option)
|
73 |
+
{
|
74 |
+
$selected='';
|
75 |
+
if($option['value']==$default)
|
76 |
+
{
|
77 |
+
$selected='selected';
|
78 |
+
}
|
79 |
+
$select.='<option value="'.$option['value'].'" '.$selected.'>'.$option['label'].'</option>';
|
80 |
+
}
|
81 |
+
|
82 |
+
$select.='</select>';
|
83 |
+
|
84 |
+
return $select;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Render script if the module is enabled for the current store.
|
89 |
+
*
|
90 |
+
* @return string
|
91 |
+
*/
|
92 |
+
protected function _toHtml()
|
93 |
+
{
|
94 |
+
$html = parent::_toHtml();
|
95 |
+
return $html;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Return element html
|
100 |
+
*
|
101 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
102 |
+
* @return string
|
103 |
+
*/
|
104 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
105 |
+
{
|
106 |
+
return $this->_toHtml();
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Render Increasingly analytics store admin UX for setting the configurations.
|
111 |
+
*
|
112 |
+
* @return string
|
113 |
+
*/
|
114 |
+
public function getHtmlFields($selected=0)
|
115 |
+
{
|
116 |
+
$htmlContent = '';
|
117 |
+
$display = 'display:display';
|
118 |
+
$importButtonClass = 'scalable';
|
119 |
+
$isEnabledOrDisabled = 'enabled';
|
120 |
+
|
121 |
+
if($selected == 0)
|
122 |
+
{
|
123 |
+
$display = 'display:none';
|
124 |
+
$importButtonClass = 'disabled';
|
125 |
+
$isEnabledOrDisabled = 'disabled';
|
126 |
+
}
|
127 |
+
|
128 |
+
$htmlContent ='<tr id="row_increasingly_analytics_settings_api_key" style="'.$display.'">';
|
129 |
+
$htmlContent = $htmlContent . '<td class="label"><label for="increasingly_analytics_settings_api_key"> API Key</label></td>';
|
130 |
+
$htmlContent = $htmlContent . '<td class="value"><input id="increasingly_analytics_settings_api_key"';
|
131 |
+
$htmlContent = $htmlContent . 'name="increasingly_analytics_settings_api_key"';
|
132 |
+
$htmlContent = $htmlContent . 'value="'.Mage::getStoreConfig('increasingly_analytics/settings/api_key').'"';
|
133 |
+
$htmlContent = $htmlContent . 'class="input-text" type="text"/></td></tr>';
|
134 |
+
|
135 |
+
$htmlContent = $htmlContent . '<tr id="row_increasingly_analytics_settings_api_secret" style="'.$display.'">';
|
136 |
+
$htmlContent = $htmlContent . '<td class="label"><label for="increasingly_analytics_settings_api_secret"> API Secret</label></td>';
|
137 |
+
$htmlContent = $htmlContent . '<td class="value"><input id="increasingly_analytics_settings_api_secret"';
|
138 |
+
$htmlContent = $htmlContent . 'name="increasingly_analytics_settings_api_secret"';
|
139 |
+
$htmlContent = $htmlContent . 'value="'.Mage::getStoreConfig('increasingly_analytics/settings/api_secret').'"';
|
140 |
+
$htmlContent = $htmlContent . 'class="input-text" type="text"/></td></tr>';
|
141 |
+
|
142 |
+
$htmlContent = $htmlContent . '<tr id="row_increasingly_analytics_settings_import" style="'.$display.'">';
|
143 |
+
$htmlContent = $htmlContent . '<td class="label"><label for="increasingly_analytics_settings_import"> Import orders</label></td>';
|
144 |
+
$htmlContent = $htmlContent . '<td class="value"><div style="float: left;">';
|
145 |
+
|
146 |
+
if($selected == 0)
|
147 |
+
{
|
148 |
+
$htmlContent = $htmlContent . '<p>Please enable the extension to import order data to increasingly by providing API key and secret received while registering to increasingly.</p>';
|
149 |
+
}
|
150 |
+
else
|
151 |
+
{
|
152 |
+
$htmlContent = $htmlContent . '<h3>Importing your historical data</h3><p>';
|
153 |
+
$htmlContent = $htmlContent . 'Increasingly will consider previous order data for analysis to recommend product bundles.';
|
154 |
+
$htmlContent = $htmlContent . '</p></div><div style="clear:both"></div>';
|
155 |
+
|
156 |
+
$htmlContent = $htmlContent . '<button id="increasingly_button" title="Import data" type="button" class="'.$importButtonClass.'"';
|
157 |
+
$htmlContent = $htmlContent . 'onclick="javascript:import_increasingly(); return false;" '.$isEnabledOrDisabled.'>';
|
158 |
+
$htmlContent = $htmlContent . '<span><span><span>Import data</span></span></span></button>';
|
159 |
+
}
|
160 |
+
|
161 |
+
$htmlContent = $htmlContent . '<div style="clear:both"></div><div id="increasingly_import_status"></div>';
|
162 |
+
$htmlContent = $htmlContent . '<div style="clear:both"></div></td></tr>';
|
163 |
+
|
164 |
+
$html=$htmlContent;
|
165 |
+
|
166 |
+
return $html;
|
167 |
+
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Return Import action url for button
|
172 |
+
* @return string
|
173 |
+
*/
|
174 |
+
public function getOrderImportUrl()
|
175 |
+
{
|
176 |
+
return Mage::helper('adminhtml')->getUrl("*/*/importOrder", array('isAsync'=> true));
|
177 |
+
}
|
178 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Cart.php
ADDED
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Shopping cart content tagging block.
|
30 |
+
* Adds meta-data to the HTML document for shopping cart content.
|
31 |
+
*/
|
32 |
+
class Increasingly_Analytics_Block_Cart extends Mage_Checkout_Block_Cart_Abstract
|
33 |
+
{
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Render shopping cart content as hidden meta data if the module is
|
37 |
+
* enabled for the current store.
|
38 |
+
*
|
39 |
+
* @return string
|
40 |
+
*/
|
41 |
+
protected function _toHtml()
|
42 |
+
{
|
43 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
44 |
+
return '';
|
45 |
+
}
|
46 |
+
return parent::_toHtml();
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Returns the product id for a quote item.
|
51 |
+
* Always try to find the "parent" product ID if the product is a child of
|
52 |
+
* another product type. We do this because it is the parent product that
|
53 |
+
* we tag on the product page, and the child does not always have it's own
|
54 |
+
* product page. This is important because it is the tagged info on the
|
55 |
+
* product page that is used to generate product bundles.
|
56 |
+
*
|
57 |
+
* @param Mage_Sales_Model_Quote_Item $item the quote item model.
|
58 |
+
*
|
59 |
+
* @return int|string
|
60 |
+
*/
|
61 |
+
public function getProductId($item)
|
62 |
+
{
|
63 |
+
$parentItem = $item->getOptionByCode('product_type');
|
64 |
+
if (!is_null($parentItem)) {
|
65 |
+
return $parentItem->getProductId();
|
66 |
+
} elseif ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {
|
67 |
+
/** @var Mage_Catalog_Model_Product_Type_Configurable $model */
|
68 |
+
$model = Mage::getModel('catalog/product_type_configurable');
|
69 |
+
$parentIds = $model->getParentIdsByChild($item->getProductId());
|
70 |
+
$attributes = $item->getBuyRequest()->getData('super_attribute');
|
71 |
+
// If the product has a configurable parent, we assume we should tag
|
72 |
+
// the parent. If there are many parent IDs, we are safer to tag the
|
73 |
+
// products own ID.
|
74 |
+
if (count($parentIds) === 1 && !empty($attributes)) {
|
75 |
+
return $parentIds[0];
|
76 |
+
}
|
77 |
+
}
|
78 |
+
return $item->getProductId();
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Returns the name for a quote item.
|
83 |
+
* Configurable products will have their chosen options added to their name.
|
84 |
+
* Bundle products will have their chosen child product names added.
|
85 |
+
* Grouped products will have their parent product name prepended.
|
86 |
+
* All others will have their own name only.
|
87 |
+
*
|
88 |
+
* @param Mage_Sales_Model_Quote_Item $item the quote item model.
|
89 |
+
*
|
90 |
+
* @return string
|
91 |
+
*/
|
92 |
+
public function getProductName($item)
|
93 |
+
{
|
94 |
+
$name = $item->getName();
|
95 |
+
$optNames = array();
|
96 |
+
|
97 |
+
if ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {
|
98 |
+
/** @var Mage_Catalog_Model_Product_Type_Configurable $model */
|
99 |
+
$model = Mage::getModel('catalog/product_type_configurable');
|
100 |
+
$parentIds = $model->getParentIdsByChild($item->getProductId());
|
101 |
+
// If the product has a configurable parent, we assume we should tag
|
102 |
+
// the parent. If there are many parent IDs, we are safer to tag the
|
103 |
+
// products own name alone.
|
104 |
+
if (count($parentIds) === 1) {
|
105 |
+
$attributes = $item->getBuyRequest()->getData('super_attribute');
|
106 |
+
if (is_array($attributes)) {
|
107 |
+
foreach ($attributes as $id => $value) {
|
108 |
+
/** @var Mage_Catalog_Model_Resource_Eav_Attribute $attribute */
|
109 |
+
$attribute = Mage::getModel('catalog/resource_eav_attribute')
|
110 |
+
->load($id);
|
111 |
+
$label = $attribute->getSource()->getOptionText($value);
|
112 |
+
if (!empty($label)) {
|
113 |
+
$optNames[] = $label;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
} elseif ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
|
119 |
+
/* @var $helper Mage_Catalog_Helper_Product_Configuration */
|
120 |
+
$helper = Mage::helper('catalog/product_configuration');
|
121 |
+
foreach ($helper->getConfigurableOptions($item) as $opt) {
|
122 |
+
if (isset($opt['value']) && is_string($opt['value'])) {
|
123 |
+
$optNames[] = $opt['value'];
|
124 |
+
}
|
125 |
+
}
|
126 |
+
} elseif ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {
|
127 |
+
$type = $item->getProduct()->getTypeInstance(true);
|
128 |
+
$opts = $type->getOrderOptions($item->getProduct());
|
129 |
+
if (isset($opts['bundle_options']) && is_array($opts['bundle_options'])) {
|
130 |
+
foreach ($opts['bundle_options'] as $opt) {
|
131 |
+
if (isset($opt['value']) && is_array($opt['value'])) {
|
132 |
+
foreach ($opt['value'] as $val) {
|
133 |
+
$qty = '';
|
134 |
+
if (isset($val['qty']) && is_int($val['qty'])) {
|
135 |
+
$qty .= $val['qty'] . ' x ';
|
136 |
+
}
|
137 |
+
if (isset($val['title']) && is_string($val['title'])) {
|
138 |
+
$optNames[] = $qty . $val['title'];
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
} elseif ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_GROUPED) {
|
145 |
+
$config = $item->getBuyRequest()->getData('super_product_config');
|
146 |
+
if (isset($config['product_id'])) {
|
147 |
+
/** @var Mage_Catalog_Model_Product $parent */
|
148 |
+
$parent = Mage::getModel('catalog/product')
|
149 |
+
->load($config['product_id']);
|
150 |
+
$parentName = $parent->getName();
|
151 |
+
if (!empty($parentName)) {
|
152 |
+
$name = $parentName.' - '.$name;
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
if (!empty($optNames)) {
|
157 |
+
$name .= ' (' . implode(', ', $optNames) . ')';
|
158 |
+
}
|
159 |
+
return $name;
|
160 |
+
}
|
161 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Category.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Current category tagging block.
|
30 |
+
* Adds meta-data to the HTML document for the current catalog category
|
31 |
+
* (including parent categories).
|
32 |
+
*/
|
33 |
+
class Increasingly_Analytics_Block_Category extends Mage_Core_Block_Template
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* @var string Cached category string.
|
37 |
+
*/
|
38 |
+
protected $_category;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Render category string as hidden meta data if the module is enabled for
|
42 |
+
* the current store.
|
43 |
+
*
|
44 |
+
* @return string
|
45 |
+
*/
|
46 |
+
protected function _toHtml()
|
47 |
+
{
|
48 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
49 |
+
return '';
|
50 |
+
}
|
51 |
+
return parent::_toHtml();
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Return the current product category string for the category tagging.
|
56 |
+
*
|
57 |
+
* @return string
|
58 |
+
*/
|
59 |
+
public function getCategory()
|
60 |
+
{
|
61 |
+
if (!$this->_category) {
|
62 |
+
$category = Mage::registry('current_category');
|
63 |
+
$this->_category = Mage::helper('increasingly_analytics')
|
64 |
+
->buildCategoryString($category);
|
65 |
+
}
|
66 |
+
return $this->_category;
|
67 |
+
}
|
68 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Element.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Increasingly element block.
|
30 |
+
* Used to render placeholder elements that display the product bundles.
|
31 |
+
*
|
32 |
+
* @method string getDivId() Return the id of the element (defined in layout).
|
33 |
+
*/
|
34 |
+
class Increasingly_Analytics_Block_Element extends Mage_Core_Block_Template
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Default id assigned to the element if none is set in the layout xml.
|
38 |
+
*/
|
39 |
+
const DEFAULT_ID = 'missingDivIdParameter';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Render HTML placeholder element for the product bundles if the
|
43 |
+
* module is enabled for the current store.
|
44 |
+
*
|
45 |
+
* @return string
|
46 |
+
*/
|
47 |
+
protected function _toHtml()
|
48 |
+
{
|
49 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
50 |
+
return '';
|
51 |
+
}
|
52 |
+
return parent::_toHtml();
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Return the id of the element. If none is defined in the layout xml,
|
57 |
+
* then set a default one.
|
58 |
+
*
|
59 |
+
* @return string
|
60 |
+
*/
|
61 |
+
public function getElementId()
|
62 |
+
{
|
63 |
+
$id = $this->getDivId();
|
64 |
+
if ($id === null) {
|
65 |
+
$id = self::DEFAULT_ID;
|
66 |
+
}
|
67 |
+
return $id;
|
68 |
+
}
|
69 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Embed.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Increasingly embed script block.
|
29 |
+
* Adds JavaScript to the document HEAD that takes care of the meta-data gathering
|
30 |
+
* and displaying of product bundles
|
31 |
+
*/
|
32 |
+
class Increasingly_Analytics_Block_Embed extends Mage_Core_Block_Template
|
33 |
+
{
|
34 |
+
const DEFAULT_SERVER_ADDRESS = 'www.increasingly.co';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Render JavaScript that handles the data gathering and displaying of
|
38 |
+
* product bundles if the module is enabled for the current store.
|
39 |
+
*
|
40 |
+
* @return string
|
41 |
+
*/
|
42 |
+
protected function _toHtml()
|
43 |
+
{
|
44 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
45 |
+
return '';
|
46 |
+
}
|
47 |
+
return parent::_toHtml();
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Gets the Increasingly server address.
|
52 |
+
* This is either taken from the local environment if exists or else it
|
53 |
+
*
|
54 |
+
* @return string the url.
|
55 |
+
*/
|
56 |
+
public function getServerAddress()
|
57 |
+
{
|
58 |
+
return Mage::app()->getRequest()->getEnv(
|
59 |
+
'INCREASINGLY_SERVER_URL',
|
60 |
+
self::DEFAULT_SERVER_ADDRESS
|
61 |
+
);
|
62 |
+
}
|
63 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Pagetype.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Solutions Ltd <magento@Increasingly.com>
|
24 |
+
* @copyright Copyright (c) 2013-2015 Increasingly Solutions Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Increasingly meta block.
|
29 |
+
* Used to render meta tag elements to to the HTML document
|
30 |
+
*/
|
31 |
+
class Increasingly_Analytics_Block_Pagetype extends Mage_Core_Block_Template
|
32 |
+
{
|
33 |
+
/**
|
34 |
+
* Render meta tags if the module is enabled for the current store.
|
35 |
+
*
|
36 |
+
* @return string
|
37 |
+
*/
|
38 |
+
protected function _toHtml()
|
39 |
+
{
|
40 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
41 |
+
return '';
|
42 |
+
}
|
43 |
+
return parent::_toHtml();
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Returns the current page type of the Increasingly extension.
|
49 |
+
*
|
50 |
+
* @return string the page type
|
51 |
+
*/
|
52 |
+
public function getCurrentPageType()
|
53 |
+
{
|
54 |
+
$pageIdentifier = Mage::app()->getFrontController()->getAction()->getFullActionName();
|
55 |
+
return $pageIdentifier;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Returns the current API key of the Increasingly extension.
|
60 |
+
*
|
61 |
+
* @return string the API key for the current store.
|
62 |
+
*/
|
63 |
+
public function getAPIKey()
|
64 |
+
{
|
65 |
+
return substr(
|
66 |
+
Mage::app()->getStore()->getConfig('general/locale/code'), 0, 2);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Returns the current Form key of the user.
|
71 |
+
*
|
72 |
+
* @return string the Form key for adding the product bundles to the cart.
|
73 |
+
*/
|
74 |
+
public function getFormKey()
|
75 |
+
{
|
76 |
+
$request = $this->getRequest();
|
77 |
+
$formKey = Mage::getSingleton('core/session')->getFormKey();
|
78 |
+
return $formKey;
|
79 |
+
}
|
80 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Product.php
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product tagging block.
|
30 |
+
* Adds meta-data to the HTML document for the currently viewed product.
|
31 |
+
*
|
32 |
+
*/
|
33 |
+
class Increasingly_Analytics_Block_Product extends Mage_Catalog_Block_Product_Abstract
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* @var Increasingly_Analytics_Model_Meta_Product runtime cache for the product meta.
|
37 |
+
*/
|
38 |
+
protected $_product;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @var string runtime cache for the current category path string.
|
42 |
+
*/
|
43 |
+
protected $_currentCategory;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Render product info as hidden meta data if the module is enabled for the
|
47 |
+
* current store.
|
48 |
+
* If it is a "bundle" product with fixed price type, then do not render.
|
49 |
+
* These are not supported due to their child products not having prices
|
50 |
+
* available.
|
51 |
+
*
|
52 |
+
* @return string
|
53 |
+
*/
|
54 |
+
protected function _toHtml()
|
55 |
+
{
|
56 |
+
if (!Mage::helper('increasingly_analytics')->isEnabled()) {
|
57 |
+
return '';
|
58 |
+
}
|
59 |
+
return parent::_toHtml();
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Returns the product meta data to tag.
|
64 |
+
*
|
65 |
+
* @return Increasingly_Analytics_Model_Meta_Product the meta data.
|
66 |
+
*/
|
67 |
+
public function getMetaProduct()
|
68 |
+
{
|
69 |
+
if ($this->_product === null) {
|
70 |
+
/** @var Increasingly_Analytics_Model_Meta_Product $model */
|
71 |
+
$model = Mage::getModel('increasingly_analytics/meta_product');
|
72 |
+
$model->loadData($this->getProduct());
|
73 |
+
$this->_product = $model;
|
74 |
+
}
|
75 |
+
return $this->_product;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Returns the current category under which the product is viewed.
|
80 |
+
*
|
81 |
+
* @return string the category path or empty if not found.
|
82 |
+
*/
|
83 |
+
public function getCurrentCategory()
|
84 |
+
{
|
85 |
+
if (!$this->_currentCategory) {
|
86 |
+
$category = Mage::registry('current_category');
|
87 |
+
$this->_currentCategory = Mage::helper('increasingly_analytics')
|
88 |
+
->buildCategoryString($category);
|
89 |
+
}
|
90 |
+
return $this->_currentCategory;
|
91 |
+
}
|
92 |
+
}
|
app/code/community/Increasingly/Analytics/Block/Track.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Tracks events to send it to increasingly
|
29 |
+
*/
|
30 |
+
class Increasingly_Analytics_Block_Track extends Mage_Core_Block_Template
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* key in session storage
|
34 |
+
*/
|
35 |
+
const DATA_KEY = "increasingly_events";
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Get tracking events to track them to increasingly api
|
39 |
+
* @return array
|
40 |
+
*/
|
41 |
+
public function getTrackingEvents()
|
42 |
+
{
|
43 |
+
$helper = Mage::helper('increasingly_analytics');
|
44 |
+
$events = (array)Mage::getSingleton('core/session')->getData(self::DATA_KEY);
|
45 |
+
|
46 |
+
// clear data from session
|
47 |
+
Mage::getSingleton('core/session')->setData(self::DATA_KEY,'');
|
48 |
+
return array_filter($events);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Render category string as hidden meta data if the module is enabled for
|
53 |
+
* the current store.
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
protected function _toHtml()
|
58 |
+
{
|
59 |
+
$html = parent::_toHtml();
|
60 |
+
if(Mage::helper('increasingly_analytics')->isEnabled())
|
61 |
+
return $html;
|
62 |
+
}
|
63 |
+
}
|
app/code/community/Increasingly/Analytics/Helper/Data.php
ADDED
@@ -0,0 +1,337 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Helper class provides api call functionality and building order details, track events etc.
|
29 |
+
*/
|
30 |
+
class Increasingly_Analytics_Helper_Data extends Mage_Core_Helper_Abstract
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* Path to store config installation ID.
|
34 |
+
*/
|
35 |
+
const XML_PATH_INSTALLATION_ID = 'increasingly_analytics/installation/id';
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Path to store config Increasingly product image version.
|
39 |
+
*/
|
40 |
+
const XML_PATH_IMAGE_VERSION = 'increasingly_analytics/image_options/image_version';
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var string the name of the cookie where the Increasingly ID can be found.
|
44 |
+
*/
|
45 |
+
const COOKIE_NAME = '2c_cId';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string the name of the cookie where the Increasingly ID can be found.
|
49 |
+
*/
|
50 |
+
const VISITOR_HASH_ALGO = 'sha256';
|
51 |
+
/**
|
52 |
+
* Get session instance
|
53 |
+
*
|
54 |
+
* @return Mage_Core_Model_Session
|
55 |
+
*/
|
56 |
+
public function getSession()
|
57 |
+
{
|
58 |
+
return Mage::getSingleton('core/session');
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Check if increasingly module is enabled
|
63 |
+
*
|
64 |
+
* @return boolean
|
65 |
+
*/
|
66 |
+
public function isEnabled()
|
67 |
+
{
|
68 |
+
return Mage::getStoreConfig('increasingly_analytics/settings/enable');
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Get API Token from configuration
|
73 |
+
*
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
public function getApiToken()
|
77 |
+
{
|
78 |
+
return Mage::getStoreConfig('increasingly_analytics/settings/api_key');
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Get API Secret from configuration
|
83 |
+
*
|
84 |
+
* @return string
|
85 |
+
*/
|
86 |
+
public function getApiSecret()
|
87 |
+
{
|
88 |
+
return Mage::getStoreConfig('increasingly_analytics/settings/api_secret');
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Add event for tracking
|
93 |
+
*
|
94 |
+
*/
|
95 |
+
public function addEvent($method, $type, $data)
|
96 |
+
{
|
97 |
+
$event_data = array();
|
98 |
+
|
99 |
+
if ($this->getSession()->getData(Increasingly_Analytics_Block_Track::DATA_KEY) != '')
|
100 |
+
{
|
101 |
+
$event_data = (array)$this->getSession()->getData(Increasingly_Analytics_Block_Track::DATA_KEY);
|
102 |
+
}
|
103 |
+
|
104 |
+
$version = (string)Mage::getConfig()->getModuleConfig("Increasingly_Analytics")->version;
|
105 |
+
|
106 |
+
$currentEvent = array(
|
107 |
+
'event_data' => $data,
|
108 |
+
'event_type' => $type,
|
109 |
+
'method' => $method,
|
110 |
+
'platform' => 'Magento ' . Mage::getEdition() . ' ' . Mage::getVersion(),
|
111 |
+
'token' => $this->getApiToken(),
|
112 |
+
'version' => $version
|
113 |
+
);
|
114 |
+
|
115 |
+
array_push($event_data, $currentEvent);
|
116 |
+
$this->getSession()->setData(Increasingly_Analytics_Block_Track::DATA_KEY, $event_data);
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Get order details and sort them
|
121 |
+
* @param Mage_Sales_Model_Order $order
|
122 |
+
* @return array
|
123 |
+
*/
|
124 |
+
public function buildOrderDetailsData($order)
|
125 |
+
{
|
126 |
+
$priceFormatter = Mage::helper('increasingly_analytics/PriceFormatter');
|
127 |
+
$data = array(
|
128 |
+
'order_id' => $order->getIncrementId(),
|
129 |
+
'order_status' => $order->getStatus(),
|
130 |
+
'order_amount' => $priceFormatter->format($order->getGrandTotal()),
|
131 |
+
'shipping_amount' => $priceFormatter->format($order->getShippingAmount()),
|
132 |
+
'tax_amount' => $priceFormatter->format($order->getTaxAmount()),
|
133 |
+
'items' => array(),
|
134 |
+
'shipping_method' => $order->getShippingDescription(),
|
135 |
+
'currency_code' => $order->getOrderCurrencyCode(),
|
136 |
+
'payment_method' => $order->getPayment()->getMethodInstance()->getTitle()
|
137 |
+
);
|
138 |
+
|
139 |
+
if($order->getCustomerIsGuest()){
|
140 |
+
$data['customer_email'] = $order->getCustomerEmail();
|
141 |
+
$data['customer_first_name'] = $order->getCustomerFirstname();
|
142 |
+
$data['customer_last_name'] = $order->getCustomerLastname();
|
143 |
+
$data['customer_name'] = $order->getCustomerFirstname(). ' '. $order->getCustomerLastname();
|
144 |
+
}
|
145 |
+
else {
|
146 |
+
$data['customer_email'] = $order->getCustomerEmail();
|
147 |
+
$data['customer_first_name'] = $order->getBillingAddress()->getFirstname();
|
148 |
+
$data['customer_last_name'] = $order->getBillingAddress()->getLastname();
|
149 |
+
$data['customer_name'] = $order->getBillingAddress()->getName();
|
150 |
+
}
|
151 |
+
if ($order->getDiscountAmount()) {
|
152 |
+
$data['discount_amount'] = $priceFormatter->format($order->getDiscountAmount());
|
153 |
+
}
|
154 |
+
if ($order->getCouponCode()) {
|
155 |
+
$data['coupons'] = $order->getCouponCode();
|
156 |
+
}
|
157 |
+
if($order->getRemoteIp()){
|
158 |
+
$data['user_ip'] = $order->getRemoteIp();
|
159 |
+
}
|
160 |
+
if ($order->getCreatedAt()) {
|
161 |
+
$data['order_time'] = $order->getCreatedAt();
|
162 |
+
}
|
163 |
+
foreach ($order->getAllItems() as $item)
|
164 |
+
{
|
165 |
+
$dataItem = array(
|
166 |
+
'product_id' => $item->getProductId(),
|
167 |
+
'product_price' => $priceFormatter->format($item->getPrice()) ? $priceFormatter->format($item->getPrice()) :
|
168 |
+
$priceFormatter->format($item->getProduct()->getFinalPrice()),
|
169 |
+
'product_name' => $item->getName(),
|
170 |
+
'product_url' => $item->getProduct()->getProductUrl(),
|
171 |
+
'product_sku' => $item->getSku(),
|
172 |
+
'qty' => (int)$item->getQtyOrdered(),
|
173 |
+
'product_type' => $item->getProductType()
|
174 |
+
);
|
175 |
+
$data['items'][] = $dataItem;
|
176 |
+
}
|
177 |
+
|
178 |
+
$data['bundles'] = $this->formBundleJson();
|
179 |
+
return $data;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**Form json data for sending the bundle details to the Increasingly API
|
183 |
+
**
|
184 |
+
*/
|
185 |
+
public function formBundleJson(){
|
186 |
+
try {
|
187 |
+
$bundleData = [];
|
188 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
189 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()
|
190 |
+
->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
191 |
+
foreach($userBundleCollection as $userBundle){
|
192 |
+
$userBundle->getBundleId();
|
193 |
+
$userBundle->getDiscountPrice();
|
194 |
+
$userBundle->getTotalSpecialPrice();
|
195 |
+
array_push($bundleData,
|
196 |
+
array('id' => $userBundle->getBundleId(),
|
197 |
+
'discountPrice' => $userBundle->getDiscountPrice(),
|
198 |
+
'totalSpecialPrice' => $userBundle->getTotalSpecialPrice()
|
199 |
+
));
|
200 |
+
}
|
201 |
+
}
|
202 |
+
catch (Exception $e)
|
203 |
+
{
|
204 |
+
Mage::log("Increasingly form bundle json- " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
205 |
+
}
|
206 |
+
return $bundleData;
|
207 |
+
}
|
208 |
+
|
209 |
+
/**Delete bundle when the products in the cart are deleted
|
210 |
+
**
|
211 |
+
*/
|
212 |
+
public function deleteBundleOnProductDeleteFromCart($product_id){
|
213 |
+
try {
|
214 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
215 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
216 |
+
if(count($userBundleCollection) >= 1){
|
217 |
+
$userBundle = Mage::getModel('increasingly_analytics/bundle');
|
218 |
+
$userBundle->setId($userBundleCollection->getFirstItem()->getId())->delete();
|
219 |
+
$userBundle->save($cookieValue);
|
220 |
+
}
|
221 |
+
}
|
222 |
+
catch (Exception $e)
|
223 |
+
{
|
224 |
+
Mage::log("Increasingly delete bundle on delete from cart- " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
225 |
+
}
|
226 |
+
|
227 |
+
}
|
228 |
+
|
229 |
+
/**Delete bundle when all the items in the cart are deleted
|
230 |
+
**
|
231 |
+
*/
|
232 |
+
public function deleteBundleOnEmptyCart($quote){
|
233 |
+
try {
|
234 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
235 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
236 |
+
$productIds = explode(',', $userBundle->getProductIds);
|
237 |
+
if($quote->getItemsCount() == 0 && count($userBundleCollection) >= 0) {
|
238 |
+
foreach ($userBundleCollection as $userBundle) {
|
239 |
+
$userBundle->delete();
|
240 |
+
|
241 |
+
}
|
242 |
+
}
|
243 |
+
}
|
244 |
+
catch (Exception $e)
|
245 |
+
{
|
246 |
+
Mage::log("Increasingly delete bundle on emptyCart- " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
247 |
+
}
|
248 |
+
|
249 |
+
}
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Sends event data to increasingly through API
|
253 |
+
*/
|
254 |
+
public function increasinglyApi($importData,$event_type,$method,$api_token,$api_secret)
|
255 |
+
{
|
256 |
+
$result = '';
|
257 |
+
try {
|
258 |
+
$version = (string)Mage::getConfig()->getModuleConfig("Increasingly_Analytics")->version;
|
259 |
+
$data = array(
|
260 |
+
'event_data' => $importData,
|
261 |
+
'event_type'=> $event_type,
|
262 |
+
'method' => $method,
|
263 |
+
'platform' => 'Magento ' . Mage::getEdition() . ' ' . Mage::getVersion(),
|
264 |
+
'token' => $api_token,
|
265 |
+
'version' => $version
|
266 |
+
);
|
267 |
+
// sort data
|
268 |
+
ksort($data);
|
269 |
+
$encodedData = base64_encode(Mage::helper('core')->jsonEncode($data));
|
270 |
+
$signature = md5($encodedData.$api_secret);
|
271 |
+
$url = 'http://optimizedby.increasingly.co/ImportData';
|
272 |
+
$client = new Varien_Http_Client($url);
|
273 |
+
Mage::log($data,null, 'Increasingly_Analytics.log');
|
274 |
+
$postData = array(
|
275 |
+
'signature' => $signature,
|
276 |
+
'eventData' => $encodedData
|
277 |
+
);
|
278 |
+
$jsonData = json_encode($postData);
|
279 |
+
$client->setRawData($jsonData, 'application/json');
|
280 |
+
$response = $client->request('POST');
|
281 |
+
$result = json_decode($response->getBody());
|
282 |
+
if ($response->isError()) {
|
283 |
+
Mage::log($response->getBody(), null, 'Increasingly_Analytics.log');
|
284 |
+
}
|
285 |
+
|
286 |
+
}
|
287 |
+
catch (Exception $e)
|
288 |
+
{
|
289 |
+
Mage::log("Increasingly api call- " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
290 |
+
}
|
291 |
+
return $result;
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Builds a tagging string of the given category including all its parent
|
296 |
+
* categories.
|
297 |
+
* The categories are sorted by their position in the category tree path.
|
298 |
+
*
|
299 |
+
* @param Mage_Catalog_Model_Category $category the category model.
|
300 |
+
*
|
301 |
+
* @return string
|
302 |
+
*/
|
303 |
+
public function buildCategoryString($category)
|
304 |
+
{
|
305 |
+
$data = array();
|
306 |
+
if ($category instanceof Mage_Catalog_Model_Category) {
|
307 |
+
/** @var $categories Mage_Catalog_Model_Category[] */
|
308 |
+
$categories = $category->getParentCategories();
|
309 |
+
$path = $category->getPathInStore();
|
310 |
+
$ids = array_reverse(explode(',', $path));
|
311 |
+
foreach ($ids as $id) {
|
312 |
+
if (isset($categories[$id]) && $categories[$id]->getName()) {
|
313 |
+
$data[] = $categories[$id]->getId();
|
314 |
+
}
|
315 |
+
}
|
316 |
+
}
|
317 |
+
if (!empty($data)) {
|
318 |
+
return DS . implode(DS, $data);
|
319 |
+
} else {
|
320 |
+
return '';
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Return the product image version to include in product tagging.
|
326 |
+
*
|
327 |
+
* @param Mage_Core_Model_Store|null $store the store model or null.
|
328 |
+
*
|
329 |
+
* @return string
|
330 |
+
*/
|
331 |
+
public function getProductImageVersion($store = null)
|
332 |
+
{
|
333 |
+
return Mage::getStoreConfig(self::XML_PATH_IMAGE_VERSION, $store);
|
334 |
+
}
|
335 |
+
|
336 |
+
|
337 |
+
}
|
app/code/community/Increasingly/Analytics/Helper/DateFormatter.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Helper class to Format date
|
30 |
+
*/
|
31 |
+
class Increasingly_Analytics_Helper_DateFormatter extends Mage_Core_Helper_Abstract
|
32 |
+
{
|
33 |
+
public function getFormattedDate($date)
|
34 |
+
{
|
35 |
+
// 2016-04-22 08:41:46
|
36 |
+
return date_format(date_create($date), "Y-m-d H:i:s");
|
37 |
+
}
|
38 |
+
}
|
app/code/community/Increasingly/Analytics/Helper/PriceFormatter.php
ADDED
@@ -0,0 +1,170 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Helper class to Format price
|
29 |
+
*/
|
30 |
+
class Increasingly_Analytics_Helper_PriceFormatter extends Mage_Core_Helper_Abstract
|
31 |
+
{
|
32 |
+
public function format($price)
|
33 |
+
{
|
34 |
+
return number_format($price, 2, '.', '');
|
35 |
+
}
|
36 |
+
/**
|
37 |
+
* Formats price into Increasingly format, e.g. 1000.99.
|
38 |
+
*
|
39 |
+
* @param string|int|float $price the price to format.
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
public function getFormattedPrice($price)
|
44 |
+
{
|
45 |
+
return number_format($price, 2, '.', '');
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Gets the unit price for a product model including taxes.
|
50 |
+
*
|
51 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
52 |
+
*
|
53 |
+
* @return float
|
54 |
+
*/
|
55 |
+
public function getProductPriceInclTax($product)
|
56 |
+
{
|
57 |
+
return $this->_getProductPrice($product, false, true);
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get the final price for a product model including taxes.
|
62 |
+
*
|
63 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
64 |
+
*
|
65 |
+
* @return float
|
66 |
+
*/
|
67 |
+
public function getProductFinalPriceInclTax($product)
|
68 |
+
{
|
69 |
+
return $this->_getProductPrice($product, true, true);
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Get unit/final price for a product model.
|
74 |
+
*
|
75 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
76 |
+
* @param bool $finalPrice if final price.
|
77 |
+
* @param bool $inclTax if tax is to be included.
|
78 |
+
*
|
79 |
+
* @return float
|
80 |
+
*/
|
81 |
+
protected function _getProductPrice($product, $finalPrice = false, $inclTax = true)
|
82 |
+
{
|
83 |
+
$price = 0;
|
84 |
+
|
85 |
+
switch ($product->getTypeId()) {
|
86 |
+
case Mage_Catalog_Model_Product_Type::TYPE_BUNDLE:
|
87 |
+
// Get the bundle product "from" price.
|
88 |
+
$price = $product->getPriceModel()
|
89 |
+
->getTotalPrices($product, 'min', $inclTax);
|
90 |
+
break;
|
91 |
+
|
92 |
+
case Mage_Catalog_Model_Product_Type::TYPE_GROUPED:
|
93 |
+
// Get the grouped product "starting at" price.
|
94 |
+
/** @var $tmpProduct Mage_Catalog_Model_Product */
|
95 |
+
$tmpProduct = Mage::getModel('catalog/product')
|
96 |
+
->getCollection()
|
97 |
+
->addAttributeToSelect(
|
98 |
+
Mage::getSingleton('catalog/config')
|
99 |
+
->getProductAttributes()
|
100 |
+
)
|
101 |
+
->addAttributeToFilter('entity_id', $product->getId())
|
102 |
+
->setPage(1, 1)
|
103 |
+
->addMinimalPrice()
|
104 |
+
->addTaxPercents()
|
105 |
+
->load()
|
106 |
+
->getFirstItem();
|
107 |
+
if ($tmpProduct) {
|
108 |
+
$price = $tmpProduct->getMinimalPrice();
|
109 |
+
if ($inclTax) {
|
110 |
+
$price = Mage::helper('tax')
|
111 |
+
->getPrice($tmpProduct, $price, true);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
break;
|
115 |
+
|
116 |
+
default:
|
117 |
+
$price = $finalPrice
|
118 |
+
? $product->getFinalPrice()
|
119 |
+
: $product->getPrice();
|
120 |
+
if ($inclTax) {
|
121 |
+
$price = Mage::helper('tax')
|
122 |
+
->getPrice($product, $price, true);
|
123 |
+
}
|
124 |
+
break;
|
125 |
+
}
|
126 |
+
return $price;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* @param float $price
|
131 |
+
* @param Mage_Core_Model_Store $store
|
132 |
+
* @return float
|
133 |
+
*/
|
134 |
+
public function convertToDefaultCurrency($price, Mage_Core_Model_Store $store)
|
135 |
+
{
|
136 |
+
if (!is_numeric($price)) {
|
137 |
+
Mage::log(
|
138 |
+
sprintf(
|
139 |
+
'price must be a numeric value in %s, got %s.',
|
140 |
+
__CLASS__,
|
141 |
+
$price
|
142 |
+
),
|
143 |
+
Zend_Log::WARN,
|
144 |
+
Increasingly_Analytics_Model_Base::LOG_FILE_NAME
|
145 |
+
);
|
146 |
+
$price = 0;
|
147 |
+
}
|
148 |
+
return Mage::helper('directory')->currencyConvert(
|
149 |
+
$price,
|
150 |
+
$store->getBaseCurrency()->getCode(),
|
151 |
+
$store->getDefaultCurrency()->getCode()
|
152 |
+
);
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Get the final price in base currency for an ordered item including
|
157 |
+
* taxes as discounts.
|
158 |
+
*
|
159 |
+
* @param Mage_Sales_Model_Order_Item $item the item model.
|
160 |
+
*
|
161 |
+
* @return float
|
162 |
+
*/
|
163 |
+
public function getItemFinalPriceInclTax(Mage_Sales_Model_Order_Item $item)
|
164 |
+
{
|
165 |
+
$price = $item->getBaseRowTotal() + $item->getBaseTaxAmount() + $item->getBaseHiddenTaxAmount() - $item->getBaseDiscountAmount();
|
166 |
+
return $price;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
|
app/code/community/Increasingly/Analytics/Helper/ProductFormatter.php
ADDED
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Formats product details to be sent to increasingly
|
29 |
+
*/
|
30 |
+
class Increasingly_Analytics_Helper_ProductFormatter extends Mage_Core_Helper_Abstract
|
31 |
+
{
|
32 |
+
|
33 |
+
public function formatProductInfo($product)
|
34 |
+
{
|
35 |
+
$productData = null;
|
36 |
+
|
37 |
+
try
|
38 |
+
{
|
39 |
+
$priceFormatter = Mage::helper('increasingly_analytics/PriceFormatter');
|
40 |
+
$dateFormatter = Mage::helper('increasingly_analytics/DateFormatter');
|
41 |
+
|
42 |
+
$productData = array(
|
43 |
+
'product_id' => $product->getId(),
|
44 |
+
'product_sku' => $product->getSku(),
|
45 |
+
'product_name' => $product->getName(),
|
46 |
+
'categories' => array(),
|
47 |
+
//'currency' => Mage::app()->getStore()->getDefaultCurrencyCode(),
|
48 |
+
'product_price' => $priceFormatter->format($product->getPrice()),
|
49 |
+
'special_price' => $priceFormatter->format($product->getSpecialPrice()),
|
50 |
+
'product_url' => $product->getProductUrl(),
|
51 |
+
'description' => $product->getShortDescription(),
|
52 |
+
'status' => (int)$product->getStatus(),
|
53 |
+
'product_type' => $product->getTypeId(),
|
54 |
+
'created_at' => $dateFormatter->getFormattedDate($product->getCreatedAt()),
|
55 |
+
'updated_at' => $dateFormatter->getFormattedDate($product->getUpdatedAt())
|
56 |
+
);
|
57 |
+
|
58 |
+
$productDefaultImage = $product->getData('image');
|
59 |
+
if(!empty($productDefaultImage) && $productDefaultImage !== 'no_selection')
|
60 |
+
{
|
61 |
+
$productData['image_url'] = $product->getImageUrl();
|
62 |
+
}
|
63 |
+
else
|
64 |
+
{
|
65 |
+
$productData['image_url'] = '';
|
66 |
+
}
|
67 |
+
$manufacturer = $product->getAttributeText('manufacturer');
|
68 |
+
if(strlen($manufacturer) > 0 && $manufacturer != false)
|
69 |
+
{
|
70 |
+
$productData['manufacturer'] = $manufacturer;
|
71 |
+
}
|
72 |
+
|
73 |
+
$color = $product->getAttributeText('color');
|
74 |
+
if(strlen($color) > 0 && $color != false)
|
75 |
+
{
|
76 |
+
$productData['color'] = $color;
|
77 |
+
}
|
78 |
+
|
79 |
+
$weight = $product->getWeight();
|
80 |
+
if(strlen($weight) > 0 && $weight != false)
|
81 |
+
{
|
82 |
+
$productData['weight'] = $weight;
|
83 |
+
}
|
84 |
+
|
85 |
+
$size = $product->getAttributeText('size');
|
86 |
+
if(strlen($size) > 0 && $size != false)
|
87 |
+
{
|
88 |
+
$productData['size'] = $size;
|
89 |
+
}
|
90 |
+
|
91 |
+
if($productData['product_type'] == "configurable")
|
92 |
+
{
|
93 |
+
$configurableProducts = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($productData['product_id']);
|
94 |
+
$configurable_items = array();
|
95 |
+
foreach($configurableProducts as $key=>$configurableProductList)
|
96 |
+
{
|
97 |
+
foreach($configurableProductList as $itemValue)
|
98 |
+
{
|
99 |
+
$configurable_items[] = $itemValue;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
$productData['associated_products'] = $configurable_items;
|
103 |
+
}
|
104 |
+
|
105 |
+
if($productData['product_type'] == "grouped")
|
106 |
+
{
|
107 |
+
|
108 |
+
$groupedProducts = Mage::getModel('catalog/product_type_grouped')->getChildrenIds($productData['product_id']);
|
109 |
+
$grouped_items = array();
|
110 |
+
|
111 |
+
foreach($groupedProducts as $key=>$groupedProductList)
|
112 |
+
{
|
113 |
+
foreach($groupedProductList as $itemValue)
|
114 |
+
{
|
115 |
+
$grouped_items[] = $itemValue;
|
116 |
+
}
|
117 |
+
}
|
118 |
+
$productData['associated_products'] = $grouped_items;
|
119 |
+
}
|
120 |
+
|
121 |
+
if($productData['product_type'] == "bundle")
|
122 |
+
{
|
123 |
+
$selectionCollection = $product->getTypeInstance(true)->getSelectionsCollection(
|
124 |
+
$product->getTypeInstance(true)->getOptionsIds($product), $product);
|
125 |
+
|
126 |
+
$bundled_items = array();
|
127 |
+
foreach($selectionCollection as $option)
|
128 |
+
{
|
129 |
+
$bundled_items[] = $option->getId();
|
130 |
+
}
|
131 |
+
$productData['associated_products'] = $bundled_items;
|
132 |
+
}
|
133 |
+
|
134 |
+
$relatedProducts = $product->getRelatedProductIds();
|
135 |
+
if(count($relatedProducts) > 0)
|
136 |
+
{
|
137 |
+
$productData['related_products'] = $relatedProducts;
|
138 |
+
}
|
139 |
+
|
140 |
+
$upSellProducts = $product->getUpSellProductIds();
|
141 |
+
if(count($upSellProducts) > 0)
|
142 |
+
{
|
143 |
+
$productData['up_sell_products'] = $upSellProducts;
|
144 |
+
}
|
145 |
+
|
146 |
+
$crossSellProducts = $product->getCrossSellProductIds();
|
147 |
+
if(count($crossSellProducts) > 0)
|
148 |
+
{
|
149 |
+
$productData['cross_sell_products'] = $crossSellProducts;
|
150 |
+
}
|
151 |
+
|
152 |
+
// get stock info
|
153 |
+
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
|
154 |
+
$productData['qty'] = (int)$stock->getQty();
|
155 |
+
|
156 |
+
$categories = $product->getCategoryCollection()
|
157 |
+
->addAttributeToSelect('id')
|
158 |
+
->addAttributeToSelect('name');
|
159 |
+
|
160 |
+
foreach($categories as $category)
|
161 |
+
{
|
162 |
+
$categoryInfo = array();
|
163 |
+
$categoryInfo['id'] = $category->getId();
|
164 |
+
$categoryInfo['name'] = $category->getName();
|
165 |
+
$productData['categories'][] = $categoryInfo;
|
166 |
+
}
|
167 |
+
|
168 |
+
$otherImages = $product->getMediaGalleryImages();
|
169 |
+
|
170 |
+
if($otherImages == '' || count($otherImages) == 0)
|
171 |
+
{
|
172 |
+
$productImage_Data = Mage::getModel('catalog/product')->load($product->getId());
|
173 |
+
$otherImages = $productImage_Data->getMediaGalleryImages();
|
174 |
+
}
|
175 |
+
|
176 |
+
if(count($otherImages) > 1)
|
177 |
+
{
|
178 |
+
foreach($otherImages as $img)
|
179 |
+
{
|
180 |
+
if($img->getFile() != $productDefaultImage)
|
181 |
+
{
|
182 |
+
$productData['other_image_list'][] = $img->getUrl();
|
183 |
+
}
|
184 |
+
}
|
185 |
+
}
|
186 |
+
}
|
187 |
+
catch(Exception $e)
|
188 |
+
{
|
189 |
+
Mage::log($e, null, 'Increasingly_Analytics.log');
|
190 |
+
}
|
191 |
+
|
192 |
+
return $productData;
|
193 |
+
}
|
194 |
+
|
195 |
+
}
|
196 |
+
|
197 |
+
|
app/code/community/Increasingly/Analytics/Model/Base.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Increasingly_Analytics_Model_Base extends Mage_Core_Model_Abstract
|
28 |
+
{
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Log file for plugin related messages.
|
32 |
+
*/
|
33 |
+
const LOG_FILE_NAME = 'increasingly_analytics.log';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Returns a protected/private property value by invoking it's public getter.
|
37 |
+
*
|
38 |
+
* The getter names are assumed to be the property name in camel case with preceding word "get".
|
39 |
+
*
|
40 |
+
* @param string $name the property name.
|
41 |
+
* @return mixed the property value.
|
42 |
+
* @throws IncreasinglyException if public getter does not exist.
|
43 |
+
*/
|
44 |
+
public function __get($name)
|
45 |
+
{
|
46 |
+
$getter = 'get'.str_replace('_', '', $name);
|
47 |
+
if (method_exists($this, $getter)) {
|
48 |
+
return $this->{$getter}();
|
49 |
+
}
|
50 |
+
throw new IncreasinglyException(sprintf('Property `%s.%s` is not defined.', get_class($this), $name));
|
51 |
+
}
|
52 |
+
}
|
app/code/community/Increasingly/Analytics/Model/Bundle.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Increasingly_Analytics_Model_Bundle extends Mage_Core_Model_Abstract
|
28 |
+
{
|
29 |
+
public function _construct()
|
30 |
+
{
|
31 |
+
parent::_construct();
|
32 |
+
$this->_init('increasingly_analytics/bundle');
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
?>
|
app/code/community/Increasingly/Analytics/Model/DataIntegration.php
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Model which gets previous orders details from Magento for exporting it to Increasingly
|
29 |
+
*
|
30 |
+
*/
|
31 |
+
class Increasingly_Analytics_Model_DataIntegration extends Mage_Core_Model_Abstract
|
32 |
+
{
|
33 |
+
private $_totalOrders = 0;
|
34 |
+
private $_totalDataChunks = 0;
|
35 |
+
private $_chunkItems = 200;
|
36 |
+
|
37 |
+
public function _construct()
|
38 |
+
{
|
39 |
+
$this->_totalOrders = Mage::getModel('sales/order')->getCollection()->getSize();
|
40 |
+
$this->_totalDataChunks = (int)ceil($this->_totalOrders / $this->_chunkItems);
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get order details
|
45 |
+
*
|
46 |
+
* @param int
|
47 |
+
* @return Varien_Data_Collection
|
48 |
+
*/
|
49 |
+
public function getOrderDetails($chunkId)
|
50 |
+
{
|
51 |
+
return Mage::getModel('sales/order')
|
52 |
+
->getCollection()
|
53 |
+
->setPageSize($this->_chunkItems)
|
54 |
+
->setCurPage($chunkId + 1);
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Total data chunk size
|
59 |
+
* @return int
|
60 |
+
*/
|
61 |
+
public function getChunks()
|
62 |
+
{
|
63 |
+
return $this->_totalDataChunks;
|
64 |
+
}
|
65 |
+
}
|
app/code/community/Increasingly/Analytics/Model/Meta/Product.php
ADDED
@@ -0,0 +1,509 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Meta data class which holds information about a product.
|
30 |
+
* This is used during the order confirmation API request and the product
|
31 |
+
* history export.
|
32 |
+
*
|
33 |
+
*/
|
34 |
+
class Increasingly_Analytics_Model_Meta_Product extends Increasingly_Analytics_Model_Base
|
35 |
+
{
|
36 |
+
/**
|
37 |
+
* Product "in stock" tagging string.
|
38 |
+
*/
|
39 |
+
const PRODUCT_IN_STOCK = 'InStock';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Product "out of stock" tagging string.
|
43 |
+
*/
|
44 |
+
const PRODUCT_OUT_OF_STOCK = 'OutOfStock';
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Product "can be directly added to cart" tag string.
|
48 |
+
*/
|
49 |
+
const PRODUCT_ADD_TO_CART = 'add-to-cart';
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @var string the absolute url to the product page in the shop frontend.
|
53 |
+
*/
|
54 |
+
protected $_url;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @var string the product's unique identifier.
|
58 |
+
*/
|
59 |
+
protected $_productId;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @var string the name of the product.
|
63 |
+
*/
|
64 |
+
protected $_name;
|
65 |
+
|
66 |
+
/**
|
67 |
+
* @var string the absolute url the one of the product images in frontend.
|
68 |
+
*/
|
69 |
+
protected $_imageUrl;
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @var string the product price including possible discounts and taxes.
|
73 |
+
*/
|
74 |
+
protected $_price;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @var string the product list price without discounts but incl taxes.
|
78 |
+
*/
|
79 |
+
protected $_listPrice;
|
80 |
+
|
81 |
+
/**
|
82 |
+
* @var string the currency code (ISO 4217) the product is sold in.
|
83 |
+
*/
|
84 |
+
protected $_currencyCode;
|
85 |
+
|
86 |
+
/**
|
87 |
+
* @var string the availability of the product, i.e. is in stock or not.
|
88 |
+
*/
|
89 |
+
protected $_availability;
|
90 |
+
|
91 |
+
/**
|
92 |
+
* @var array the tags for the product.
|
93 |
+
*/
|
94 |
+
protected $_tags = array(
|
95 |
+
'tag1' => array(),
|
96 |
+
'tag2' => array(),
|
97 |
+
'tag3' => array(),
|
98 |
+
);
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @var array the categories the product is located in.
|
102 |
+
*/
|
103 |
+
protected $_categories = array();
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @var string the product short description.
|
107 |
+
*/
|
108 |
+
protected $_shortDescription;
|
109 |
+
|
110 |
+
/**
|
111 |
+
* @var string the product description.
|
112 |
+
*/
|
113 |
+
protected $_description;
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @var string the product brand name.
|
117 |
+
*/
|
118 |
+
protected $_brand;
|
119 |
+
|
120 |
+
/**
|
121 |
+
* @var string the product publication date in the shop.
|
122 |
+
*/
|
123 |
+
protected $_datePublished;
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @inheritdoc
|
127 |
+
*/
|
128 |
+
protected function _construct()
|
129 |
+
{
|
130 |
+
$this->_init('increasingly_analytics/meta_product');
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @inheritdoc
|
135 |
+
*/
|
136 |
+
public function getValidationRules()
|
137 |
+
{
|
138 |
+
return array(
|
139 |
+
array(
|
140 |
+
array(
|
141 |
+
'_url',
|
142 |
+
'_productId',
|
143 |
+
'_name',
|
144 |
+
'_imageUrl',
|
145 |
+
'_price',
|
146 |
+
'_listPrice',
|
147 |
+
'_currencyCode',
|
148 |
+
'_availability'
|
149 |
+
),
|
150 |
+
'required'
|
151 |
+
)
|
152 |
+
);
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Loads the product info from a Magento product model.
|
157 |
+
*
|
158 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
159 |
+
* @param Mage_Core_Model_Store|null $store the store to get the product data for.
|
160 |
+
*/
|
161 |
+
public function loadData(Mage_Catalog_Model_Product $product, Mage_Core_Model_Store $store = null)
|
162 |
+
{
|
163 |
+
if (is_null($store)) {
|
164 |
+
$store = Mage::app()->getStore();
|
165 |
+
}
|
166 |
+
|
167 |
+
/** @var Increasingly_Analytics_Helper_Price $priceHelper */
|
168 |
+
$priceHelper = Mage::helper('increasingly_analytics/priceFormatter');
|
169 |
+
|
170 |
+
$this->_url = $this->buildUrl($product, $store);
|
171 |
+
$this->_productId = $product->getId();
|
172 |
+
$this->_name = $product->getName();
|
173 |
+
$this->_imageUrl = $this->buildImageUrl($product, $store);
|
174 |
+
$this->_price = $priceHelper->convertToDefaultCurrency($priceHelper->getProductFinalPriceInclTax($product), $store);
|
175 |
+
$this->_listPrice = $priceHelper->convertToDefaultCurrency($priceHelper->getProductPriceInclTax($product), $store);
|
176 |
+
$this->_currencyCode = $store->getDefaultCurrency()->getCode();
|
177 |
+
$this->_availability = $product->isAvailable()
|
178 |
+
? self::PRODUCT_IN_STOCK
|
179 |
+
: self::PRODUCT_OUT_OF_STOCK;
|
180 |
+
$this->_categories = $this->buildCategories($product);
|
181 |
+
|
182 |
+
// Optional properties.
|
183 |
+
|
184 |
+
if ($product->hasData('short_description')) {
|
185 |
+
$this->_shortDescription = $product->getData('short_description');
|
186 |
+
}
|
187 |
+
if ($product->hasData('description')) {
|
188 |
+
$this->_description = $product->getData('description');
|
189 |
+
}
|
190 |
+
if ($product->hasData('manufacturer')) {
|
191 |
+
$this->_brand = $product->getAttributeText('manufacturer');
|
192 |
+
}
|
193 |
+
if (($tags = $this->buildTags($product, $store)) !== array()) {
|
194 |
+
$this->_tags['tag1'] = $tags;
|
195 |
+
}
|
196 |
+
if ($product->hasData('created_at')) {
|
197 |
+
$this->_datePublished = $product->getData('created_at');
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Builds the "tag1" tags.
|
203 |
+
*
|
204 |
+
* These include any "tag/tag" model names linked to the product, as well
|
205 |
+
* as a special "add-to-cart" tag if the product can be added to the
|
206 |
+
* cart directly without any choices, i.e. it is a non-configurable simple
|
207 |
+
* product.
|
208 |
+
* This special tag can then be used in the store frontend to enable a
|
209 |
+
* "add to cart" button in the product bundling.
|
210 |
+
*
|
211 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
212 |
+
* @param Mage_Core_Model_Store $store the store model.
|
213 |
+
*
|
214 |
+
* @return array
|
215 |
+
*/
|
216 |
+
protected function buildTags(Mage_Catalog_Model_Product $product, Mage_Core_Model_Store $store)
|
217 |
+
{
|
218 |
+
$tags = array();
|
219 |
+
|
220 |
+
if (Mage::helper('core')->isModuleEnabled('Mage_Tag')) {
|
221 |
+
$tagCollection = Mage::getModel('tag/tag')
|
222 |
+
->getCollection()
|
223 |
+
->addPopularity()
|
224 |
+
->addStatusFilter(Mage_Tag_Model_Tag::STATUS_APPROVED)
|
225 |
+
->addProductFilter($product->getId())
|
226 |
+
->setFlag('relation', true)
|
227 |
+
->addStoreFilter($store->getId())
|
228 |
+
->setActiveFilter();
|
229 |
+
foreach ($tagCollection as $tag) {
|
230 |
+
/** @var Mage_Tag_Model_Tag $tag */
|
231 |
+
$tags[] = $tag->getName();
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
if (!$product->canConfigure()) {
|
236 |
+
$tags[] = self::PRODUCT_ADD_TO_CART;
|
237 |
+
}
|
238 |
+
|
239 |
+
return $tags;
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Builds the absolute store front url for the product page.
|
244 |
+
*
|
245 |
+
* The url includes the "___store" GET parameter in order for the Increasingly
|
246 |
+
* crawler to distinguish between stores that do not have separate domains
|
247 |
+
* or paths.
|
248 |
+
*
|
249 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
250 |
+
* @param Mage_Core_Model_Store $store the store model.
|
251 |
+
*
|
252 |
+
* @return string
|
253 |
+
*/
|
254 |
+
protected function buildUrl(Mage_Catalog_Model_Product $product, Mage_Core_Model_Store $store)
|
255 |
+
{
|
256 |
+
// Unset the cached url first, as it won't include the `___store` param
|
257 |
+
// if it's cached. We need to define the specific store view in the url
|
258 |
+
// in case the same domain is used for all sites.
|
259 |
+
$product->unsetData('url');
|
260 |
+
return $product
|
261 |
+
->getUrlInStore(
|
262 |
+
array(
|
263 |
+
'_increasinglyid' => true,
|
264 |
+
'_ignore_category' => true,
|
265 |
+
'_store' => $store->getCode(),
|
266 |
+
)
|
267 |
+
);
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
* Builds the product absolute image url for the store and returns it.
|
272 |
+
* The image version is primarily taken from the store config, but falls
|
273 |
+
* back the the base image if nothing is configured.
|
274 |
+
*
|
275 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
276 |
+
* @param Mage_Core_Model_Store $store the store model.
|
277 |
+
*
|
278 |
+
* @return null|string
|
279 |
+
*/
|
280 |
+
protected function buildImageUrl(Mage_Catalog_Model_Product $product, Mage_Core_Model_Store $store)
|
281 |
+
{
|
282 |
+
$url = null;
|
283 |
+
/** @var Increasingly_Analytics_Helper_Data $helper */
|
284 |
+
$helper = Mage::helper('increasingly_analytics');
|
285 |
+
$imageVersion = $helper->getProductImageVersion($store);
|
286 |
+
$img = $product->getData($imageVersion);
|
287 |
+
$img = $this->isValidImage($img) ? $img : $product->getData('image');
|
288 |
+
if ($this->isValidImage($img)) {
|
289 |
+
// We build the image url manually in order get the correct base
|
290 |
+
// url, even if this product is populated in the backend.
|
291 |
+
$baseUrl = rtrim($store->getBaseUrl('media'), '/');
|
292 |
+
$file = str_replace(DS, '/', $img);
|
293 |
+
$file = ltrim($file, '/');
|
294 |
+
$url = $baseUrl.'/catalog/product/'.$file;
|
295 |
+
}
|
296 |
+
return $url;
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* Return array of categories for the product.
|
301 |
+
* The items in the array are strings combined of the complete category
|
302 |
+
* path to the products own category.
|
303 |
+
*
|
304 |
+
* Structure:
|
305 |
+
* array (
|
306 |
+
* /Electronics/Computers
|
307 |
+
* )
|
308 |
+
*
|
309 |
+
* @param Mage_Catalog_Model_Product $product the product model.
|
310 |
+
*
|
311 |
+
* @return array
|
312 |
+
*/
|
313 |
+
protected function buildCategories(Mage_Catalog_Model_Product $product)
|
314 |
+
{
|
315 |
+
$data = array();
|
316 |
+
|
317 |
+
/** @var Increasingly_Analytics_Helper_Data $helper */
|
318 |
+
$helper = Mage::helper('increasingly_analytics');
|
319 |
+
$categoryCollection = $product->getCategoryCollection();
|
320 |
+
foreach ($categoryCollection as $category) {
|
321 |
+
$categoryString = $helper->buildCategoryString($category);
|
322 |
+
if (!empty($categoryString)) {
|
323 |
+
$data[] = $categoryString;
|
324 |
+
}
|
325 |
+
}
|
326 |
+
|
327 |
+
return $data;
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Checks if the given image file path is valid.
|
332 |
+
*
|
333 |
+
* @param string $image the image file path.
|
334 |
+
*
|
335 |
+
* @return bool
|
336 |
+
*/
|
337 |
+
protected function isValidImage($image)
|
338 |
+
{
|
339 |
+
return (!empty($image) && $image !== 'no_selection');
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Returns the absolute url to the product page in the shop frontend.
|
344 |
+
*
|
345 |
+
* @return string the url.
|
346 |
+
*/
|
347 |
+
public function getUrl()
|
348 |
+
{
|
349 |
+
return $this->_url;
|
350 |
+
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Returns the product's unique identifier.
|
354 |
+
*
|
355 |
+
* @return int|string the ID.
|
356 |
+
*/
|
357 |
+
public function getProductId()
|
358 |
+
{
|
359 |
+
return $this->_productId;
|
360 |
+
}
|
361 |
+
|
362 |
+
/**
|
363 |
+
* Setter for the product's unique identifier.
|
364 |
+
*
|
365 |
+
* @param int|string $productId the ID.
|
366 |
+
*/
|
367 |
+
public function setProductId($productId)
|
368 |
+
{
|
369 |
+
$this->_productId = $productId;
|
370 |
+
}
|
371 |
+
|
372 |
+
/**
|
373 |
+
* Returns the name of the product.
|
374 |
+
*
|
375 |
+
* @return string the name.
|
376 |
+
*/
|
377 |
+
public function getName()
|
378 |
+
{
|
379 |
+
return $this->_name;
|
380 |
+
}
|
381 |
+
|
382 |
+
/**
|
383 |
+
* Returns the absolute url the one of the product images in the frontend.
|
384 |
+
*
|
385 |
+
* @return string the url.
|
386 |
+
*/
|
387 |
+
public function getImageUrl()
|
388 |
+
{
|
389 |
+
return $this->_imageUrl;
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Returns the price of the product including possible discounts and taxes.
|
394 |
+
*
|
395 |
+
* @return float the price.
|
396 |
+
*/
|
397 |
+
public function getPrice()
|
398 |
+
{
|
399 |
+
return $this->_price;
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* Returns the list price of the product without discounts but incl taxes.
|
404 |
+
*
|
405 |
+
* @return float the price.
|
406 |
+
*/
|
407 |
+
public function getListPrice()
|
408 |
+
{
|
409 |
+
return $this->_listPrice;
|
410 |
+
}
|
411 |
+
|
412 |
+
/**
|
413 |
+
* Returns the currency code (ISO 4217) the product is sold in.
|
414 |
+
*
|
415 |
+
* @return string the currency ISO code.
|
416 |
+
*/
|
417 |
+
public function getCurrencyCode()
|
418 |
+
{
|
419 |
+
return $this->_currencyCode;
|
420 |
+
}
|
421 |
+
|
422 |
+
/**
|
423 |
+
* Returns the availability of the product, i.e. if it is in stock or not.
|
424 |
+
*
|
425 |
+
* @return string the availability, either "InStock" or "OutOfStock".
|
426 |
+
*/
|
427 |
+
public function getAvailability()
|
428 |
+
{
|
429 |
+
return $this->_availability;
|
430 |
+
}
|
431 |
+
|
432 |
+
/**
|
433 |
+
* Returns the tags for the product.
|
434 |
+
*
|
435 |
+
* @return array the tags array, e.g. array('tag1' => array("winter", "shoe")).
|
436 |
+
*/
|
437 |
+
public function getTags()
|
438 |
+
{
|
439 |
+
return $this->_tags;
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* Returns the categories the product is located in.
|
444 |
+
*
|
445 |
+
* @return array list of category strings, e.g. array("/shoes/winter").
|
446 |
+
*/
|
447 |
+
public function getCategories()
|
448 |
+
{
|
449 |
+
return $this->_categories;
|
450 |
+
}
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Returns the product short description.
|
454 |
+
*
|
455 |
+
* @return string the short description.
|
456 |
+
*/
|
457 |
+
public function getShortDescription()
|
458 |
+
{
|
459 |
+
return $this->_shortDescription;
|
460 |
+
}
|
461 |
+
|
462 |
+
/**
|
463 |
+
* Returns the product description.
|
464 |
+
*
|
465 |
+
* @return string the description.
|
466 |
+
*/
|
467 |
+
public function getDescription()
|
468 |
+
{
|
469 |
+
return $this->_description;
|
470 |
+
}
|
471 |
+
|
472 |
+
/**
|
473 |
+
* Returns the product brand name.
|
474 |
+
*
|
475 |
+
* @return string the brand name.
|
476 |
+
*/
|
477 |
+
public function getBrand()
|
478 |
+
{
|
479 |
+
return $this->_brand;
|
480 |
+
}
|
481 |
+
|
482 |
+
/**
|
483 |
+
* Returns the product publication date in the shop.
|
484 |
+
*
|
485 |
+
* @return string the date.
|
486 |
+
*/
|
487 |
+
public function getDatePublished()
|
488 |
+
{
|
489 |
+
return $this->_datePublished;
|
490 |
+
}
|
491 |
+
|
492 |
+
/**
|
493 |
+
* Returns the full product description,
|
494 |
+
* i.e. both the "short" and "normal" descriptions concatenated.
|
495 |
+
*
|
496 |
+
* @return string the full descriptions.
|
497 |
+
*/
|
498 |
+
public function getFullDescription()
|
499 |
+
{
|
500 |
+
$descriptions = array();
|
501 |
+
if (!empty($this->_shortDescription)) {
|
502 |
+
$descriptions[] = $this->_shortDescription;
|
503 |
+
}
|
504 |
+
if (!empty($this->_description)) {
|
505 |
+
$descriptions[] = $this->_description;
|
506 |
+
}
|
507 |
+
return implode(' ', $descriptions);
|
508 |
+
}
|
509 |
+
}
|
app/code/community/Increasingly/Analytics/Model/Mysql4/Bundle.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Increasingly_Analytics_Model_Mysql4_Bundle extends Mage_Core_Model_Mysql4_Abstract
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
increasingly_analytics_bundle table initialization
|
31 |
+
*
|
32 |
+
*
|
33 |
+
*/
|
34 |
+
public function _construct()
|
35 |
+
{
|
36 |
+
$this->_init('increasingly_analytics/increasingly_analytics_bundle','id');
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
?>
|
app/code/community/Increasingly/Analytics/Model/Mysql4/Bundle/Collection.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
Increasingly_Analytics_Model_Mysql4_Bundle_Collection stores the bundle and product details in the cart
|
29 |
+
*
|
30 |
+
*
|
31 |
+
*/
|
32 |
+
class Increasingly_Analytics_Model_Mysql4_Bundle_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
33 |
+
{
|
34 |
+
public function _construct()
|
35 |
+
{
|
36 |
+
$this->_init('increasingly_analytics/bundle');
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
?>
|
app/code/community/Increasingly/Analytics/Model/Observer.php
ADDED
@@ -0,0 +1,513 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Catch events and track them to increasingly api
|
29 |
+
*
|
30 |
+
*/
|
31 |
+
class Increasingly_Analytics_Model_Observer
|
32 |
+
{
|
33 |
+
/**
|
34 |
+
* Identify customer after login
|
35 |
+
*
|
36 |
+
* @param Varien_Event_Observer $observer
|
37 |
+
* @return void
|
38 |
+
*/
|
39 |
+
public function customerLogin(Varien_Event_Observer $observer)
|
40 |
+
{
|
41 |
+
try
|
42 |
+
{
|
43 |
+
$helper = Mage::helper('increasingly_analytics');
|
44 |
+
|
45 |
+
if ($helper->isEnabled())
|
46 |
+
{
|
47 |
+
$customer = $observer->getEvent()->getCustomer();
|
48 |
+
$data = array(
|
49 |
+
'customer_email' => $customer->getEmail(),
|
50 |
+
'customer_first_name' => $customer->getFirstname(),
|
51 |
+
'customer_last_name' => $customer->getLastname(),
|
52 |
+
'customer_name' => $customer->getName()
|
53 |
+
);
|
54 |
+
|
55 |
+
$helper->addEvent('track', 'login',$data);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
catch(Exception $e)
|
59 |
+
{
|
60 |
+
Mage::log("Customer login tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Track page views
|
66 |
+
*/
|
67 |
+
public function trackPageView(Varien_Event_Observer $observer)
|
68 |
+
{
|
69 |
+
try
|
70 |
+
{
|
71 |
+
$helper = Mage::helper('increasingly_analytics');
|
72 |
+
$priceFormatter = Mage::helper('increasingly_analytics/PriceFormatter');
|
73 |
+
|
74 |
+
if ($helper->isEnabled())
|
75 |
+
{
|
76 |
+
$action = (string)$observer->getEvent()->getAction()->getFullActionName();
|
77 |
+
|
78 |
+
if ($this->_isRejected($action)) {
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
|
82 |
+
// homepage page
|
83 |
+
if ($action == 'cms_index_index' || $action == 'cms_page_view') {
|
84 |
+
$title = Mage::getSingleton('cms/page')->getTitle();
|
85 |
+
$data = array('page_title' => $title);
|
86 |
+
$helper->addEvent('track', 'home_page_visit', $data);
|
87 |
+
return;
|
88 |
+
}
|
89 |
+
|
90 |
+
// category view page
|
91 |
+
if($action == 'catalog_category_view') {
|
92 |
+
$category = Mage::registry('current_category');
|
93 |
+
$data = array(
|
94 |
+
'category_id' => $category->getId(),
|
95 |
+
'category_name' => $category->getName()
|
96 |
+
);
|
97 |
+
$helper->addEvent('track', 'category_page_visit', $data);
|
98 |
+
return;
|
99 |
+
}
|
100 |
+
// product view page
|
101 |
+
if ($action == 'catalog_product_view') {
|
102 |
+
$product = Mage::registry('current_product');
|
103 |
+
$data = array(
|
104 |
+
'product_id' => $product->getId(),
|
105 |
+
'product_name' => $product->getName(),
|
106 |
+
'product_price' => $priceFormatter->format($product->getFinalPrice()),
|
107 |
+
'product_url' => $product->getProductUrl(),
|
108 |
+
'product_sku' => $product->getSku(),
|
109 |
+
);
|
110 |
+
|
111 |
+
if($product->getImage())
|
112 |
+
$data['product_image_url'] = (string)Mage::helper('catalog/image')->init($product, 'image');
|
113 |
+
|
114 |
+
if(count($product->getCategoryIds())) {
|
115 |
+
$categories = array();
|
116 |
+
$collection = $product->getCategoryCollection()->addAttributeToSelect('*');
|
117 |
+
foreach ($collection as $category) {
|
118 |
+
$categories[] = array(
|
119 |
+
'category_id' => $category->getId(),
|
120 |
+
'category_name' => $category->getName()
|
121 |
+
);
|
122 |
+
}
|
123 |
+
$data['categories'] = $categories;
|
124 |
+
}
|
125 |
+
$helper->addEvent('track', 'product_page_visit', $data);
|
126 |
+
return;
|
127 |
+
}
|
128 |
+
|
129 |
+
// Catalog search page
|
130 |
+
if ($action == 'catalogsearch_result_index') {
|
131 |
+
$query = Mage::helper('catalogsearch')->getQuery();
|
132 |
+
if ($text = $query->getQueryText()) {
|
133 |
+
$resultCount = Mage::app()->getLayout()->getBlock('search.result')->getResultCount();
|
134 |
+
$params = array(
|
135 |
+
'query' => $text,
|
136 |
+
'result_count' => $resultCount
|
137 |
+
);
|
138 |
+
$helper->addEvent('track', 'search_page', $params);
|
139 |
+
return;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
catch(Exception $e)
|
145 |
+
{
|
146 |
+
Mage::log("Page View tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
|
151 |
+
/**
|
152 |
+
* List of events that we don't want to track
|
153 |
+
*
|
154 |
+
* @param string event
|
155 |
+
*/
|
156 |
+
private function _isRejected($event)
|
157 |
+
{
|
158 |
+
return in_array(
|
159 |
+
$event,
|
160 |
+
array('catalogsearch_advanced_result', 'catalogsearch_advanced_index')
|
161 |
+
);
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Adding to cart
|
166 |
+
* "checkout_cart_product_add_after"
|
167 |
+
*/
|
168 |
+
public function addToCart(Varien_Event_Observer $observer)
|
169 |
+
{
|
170 |
+
try
|
171 |
+
{
|
172 |
+
/**
|
173 |
+
* @var Mage_Sales_Model_Quote_Item
|
174 |
+
*/
|
175 |
+
$item = $observer->getQuoteItem();
|
176 |
+
$product = $item->getProduct();
|
177 |
+
$cartProduct = $observer->getProduct();
|
178 |
+
if ($cartProduct->isGrouped()) {
|
179 |
+
$options = Mage::app()->getRequest()->getParam('super_group');
|
180 |
+
if (is_array($options)) {
|
181 |
+
foreach ($options as $productId => $qty) {
|
182 |
+
$this->_addToCart((int)$productId, $cartProduct, (int)$qty);
|
183 |
+
}
|
184 |
+
}
|
185 |
+
} elseif($cartProduct->isConfigurable()) {
|
186 |
+
$this->_addToCart($product->getId(), $cartProduct, (int)$cartProduct->getCartQty());
|
187 |
+
} else {
|
188 |
+
$this->_addToCart($cartProduct->getId(), $cartProduct, (int)$cartProduct->getCartQty());
|
189 |
+
}
|
190 |
+
}
|
191 |
+
catch(Exception $e)
|
192 |
+
{
|
193 |
+
Mage::log("Add to cart tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* Add to cart
|
199 |
+
*/
|
200 |
+
private function _addToCart($productId, $cartProduct, $qty) {
|
201 |
+
|
202 |
+
$helper = Mage::helper('increasingly_analytics');
|
203 |
+
$priceFormatter = Mage::helper('increasingly_analytics/PriceFormatter');
|
204 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
205 |
+
Mage::log($product->getPrice()*0.80, null, 'Increasingly_Analytics.log');
|
206 |
+
$product->setSpecialPrice( ($product->getPrice() * .80) );
|
207 |
+
$product->setData('special_price', 99.99);
|
208 |
+
$product->save();
|
209 |
+
if ($helper->isEnabled()){
|
210 |
+
$data = array(
|
211 |
+
'product_id' => $cartProduct->getId(),
|
212 |
+
'product_name' => $cartProduct->getName(),
|
213 |
+
'product_url' => $cartProduct->getProductUrl(),
|
214 |
+
'product_sku' => $cartProduct->getSku(),
|
215 |
+
'product_type' => $cartProduct->getTypeId(),
|
216 |
+
'qty' => $qty,
|
217 |
+
'product_price' => $priceFormatter->format($cartProduct->getFinalPrice())
|
218 |
+
);
|
219 |
+
|
220 |
+
if ($cartProduct->isGrouped() || $cartProduct->isConfigurable()) {
|
221 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
222 |
+
|
223 |
+
$data['product_price'] = $priceFormatter->format($product->getFinalPrice());
|
224 |
+
$data['option_product_id'] = $product->getId();
|
225 |
+
$data['option_product_sku'] = $product->getSku();
|
226 |
+
$data['option_product_name'] = $product->getName();
|
227 |
+
$data['option_product_price'] = $priceFormatter->format($product->getFinalPrice());
|
228 |
+
}
|
229 |
+
|
230 |
+
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
|
231 |
+
$data['is_logged_in'] = true;
|
232 |
+
}
|
233 |
+
else {
|
234 |
+
$data['is_logged_in'] = false;
|
235 |
+
}
|
236 |
+
$helper->addEvent('track', 'add_to_cart', $data);
|
237 |
+
}
|
238 |
+
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Removing item from shopping cart
|
243 |
+
*
|
244 |
+
* @param Varien_Event_Observer $observer
|
245 |
+
* @return void
|
246 |
+
*/
|
247 |
+
public function removeFromCart(Varien_Event_Observer $observer)
|
248 |
+
{
|
249 |
+
try
|
250 |
+
{
|
251 |
+
$helper = Mage::helper('increasingly_analytics');
|
252 |
+
|
253 |
+
if ($helper->isEnabled())
|
254 |
+
{
|
255 |
+
$item = $observer->getQuoteItem();
|
256 |
+
$product = $item->getProduct();
|
257 |
+
|
258 |
+
$data = array(
|
259 |
+
'product_id' => $product->getId()
|
260 |
+
);
|
261 |
+
|
262 |
+
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
|
263 |
+
$data['is_logged_in'] = true;
|
264 |
+
}
|
265 |
+
else {
|
266 |
+
$data['is_logged_in'] = false;
|
267 |
+
}
|
268 |
+
$helper->deleteBundleOnProductDeleteFromCart($product->getId());
|
269 |
+
$helper->addEvent('track', 'remove_from_cart', $data);
|
270 |
+
}
|
271 |
+
|
272 |
+
}
|
273 |
+
catch(Exception $e)
|
274 |
+
{
|
275 |
+
Mage::log("Remove from cart tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
/**
|
280 |
+
* Empty cart handler to delete all products from bundle
|
281 |
+
*/
|
282 |
+
public function empty_cart(Varien_Event_Observer $observer){
|
283 |
+
$helper = Mage::helper('increasingly_analytics');
|
284 |
+
|
285 |
+
$quote = $observer->getEvent()->getQuote();
|
286 |
+
if($quote->getItemsCount() == 0) {
|
287 |
+
$helper->deleteBundleOnEmptyCart($quote);
|
288 |
+
}
|
289 |
+
}
|
290 |
+
/**
|
291 |
+
* applyCartDiscount to shopping cart
|
292 |
+
*
|
293 |
+
* @param Varien_Event_Observer $observer
|
294 |
+
* @return void
|
295 |
+
*/
|
296 |
+
public function applyCartDiscount(Varien_Event_Observer $observer)
|
297 |
+
{
|
298 |
+
try
|
299 |
+
{
|
300 |
+
$bundle_product_ids = [];
|
301 |
+
$quote_product_ids = [];
|
302 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
303 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
304 |
+
$items = $observer->getEvent()->getQuote()->getAllItems();
|
305 |
+
$eligibleProducts = [];
|
306 |
+
$discount = 0;
|
307 |
+
foreach ($items as $item) {
|
308 |
+
array_push($quote_product_ids, $item->getProductId());
|
309 |
+
}
|
310 |
+
foreach ($userBundleCollection as $bundle) {
|
311 |
+
//First Bundle products
|
312 |
+
$bundle_product_ids = explode(',', $bundle->getProductIds());
|
313 |
+
$productsIds = array_intersect($quote_product_ids, $bundle_product_ids);
|
314 |
+
if(count($productsIds) == count($bundle_product_ids) )
|
315 |
+
$discount += $bundle->getDiscountPrice();
|
316 |
+
}
|
317 |
+
|
318 |
+
if($discount > 0){
|
319 |
+
$quote=$observer->getEvent()->getQuote();
|
320 |
+
$quoteid=$quote->getId();
|
321 |
+
$discountAmount=$discount;
|
322 |
+
if($quoteid) {
|
323 |
+
if($discountAmount>0) {
|
324 |
+
$total=$quote->getBaseSubtotal();
|
325 |
+
$quote->setSubtotal(0);
|
326 |
+
$quote->setBaseSubtotal(0);
|
327 |
+
|
328 |
+
$quote->setSubtotalWithDiscount(0);
|
329 |
+
$quote->setBaseSubtotalWithDiscount(0);
|
330 |
+
|
331 |
+
$quote->setGrandTotal(0);
|
332 |
+
$quote->setBaseGrandTotal(0);
|
333 |
+
|
334 |
+
|
335 |
+
$canAddItems = $quote->isVirtual()? ('billing') : ('shipping');
|
336 |
+
foreach ($quote->getAllAddresses() as $address) {
|
337 |
+
|
338 |
+
$address->setSubtotal(0);
|
339 |
+
$address->setBaseSubtotal(0);
|
340 |
+
|
341 |
+
$address->setGrandTotal(0);
|
342 |
+
$address->setBaseGrandTotal(0);
|
343 |
+
|
344 |
+
$address->collectTotals();
|
345 |
+
|
346 |
+
$quote->setSubtotal((float) $quote->getSubtotal() + $address->getSubtotal());
|
347 |
+
$quote->setBaseSubtotal((float) $quote->getBaseSubtotal() + $address->getBaseSubtotal());
|
348 |
+
|
349 |
+
$quote->setSubtotalWithDiscount(
|
350 |
+
(float) $quote->getSubtotalWithDiscount() + $address->getSubtotalWithDiscount()
|
351 |
+
);
|
352 |
+
$quote->setBaseSubtotalWithDiscount(
|
353 |
+
(float) $quote->getBaseSubtotalWithDiscount() + $address->getBaseSubtotalWithDiscount()
|
354 |
+
);
|
355 |
+
|
356 |
+
$quote->setGrandTotal((float) $quote->getGrandTotal() + $address->getGrandTotal());
|
357 |
+
$quote->setBaseGrandTotal((float) $quote->getBaseGrandTotal() + $address->getBaseGrandTotal());
|
358 |
+
|
359 |
+
$quote ->save();
|
360 |
+
|
361 |
+
$quote->setGrandTotal($quote->getBaseSubtotal()-$discountAmount)
|
362 |
+
->setBaseGrandTotal($quote->getBaseSubtotal()-$discountAmount)
|
363 |
+
->setSubtotalWithDiscount($quote->getBaseSubtotal()-$discountAmount)
|
364 |
+
->setBaseSubtotalWithDiscount($quote->getBaseSubtotal()-$discountAmount)
|
365 |
+
->save();
|
366 |
+
|
367 |
+
|
368 |
+
if($address->getAddressType()==$canAddItems) {
|
369 |
+
//echo $address->setDiscountAmount; exit;
|
370 |
+
$address->setSubtotalWithDiscount((float) $address->getSubtotalWithDiscount()-$discountAmount);
|
371 |
+
$address->setGrandTotal((float) $address->getGrandTotal()-$discountAmount);
|
372 |
+
$address->setBaseSubtotalWithDiscount((float) $address->getBaseSubtotalWithDiscount()-$discountAmount);
|
373 |
+
$address->setBaseGrandTotal((float) $address->getBaseGrandTotal()-$discountAmount);
|
374 |
+
if($address->getDiscountDescription()){
|
375 |
+
$address->setDiscountAmount(-($address->getDiscountAmount()-$discountAmount));
|
376 |
+
$address->setDiscountDescription($address->getDiscountDescription().', Custom Discount');
|
377 |
+
$address->setBaseDiscountAmount(-($address->getBaseDiscountAmount()-$discountAmount));
|
378 |
+
}else {
|
379 |
+
$address->setDiscountAmount(-($discountAmount));
|
380 |
+
$address->setDiscountDescription('Custom Discount');
|
381 |
+
$address->setBaseDiscountAmount(-($discountAmount));
|
382 |
+
}
|
383 |
+
$address->save();
|
384 |
+
}//end: if
|
385 |
+
} //end: foreach
|
386 |
+
//echo $quote->getGrandTotal();
|
387 |
+
|
388 |
+
foreach($quote->getAllItems() as $item){
|
389 |
+
//We apply discount amount based on the ratio between the GrandTotal and the RowTotal
|
390 |
+
$rat=$item->getPriceInclTax()/$total;
|
391 |
+
$ratdisc=$discountAmount*$rat;
|
392 |
+
$item->setDiscountAmount(($item->getDiscountAmount()+$ratdisc) * $item->getQty());
|
393 |
+
$item->setBaseDiscountAmount(($item->getBaseDiscountAmount()+$ratdisc) * $item->getQty())->save();
|
394 |
+
}
|
395 |
+
}
|
396 |
+
}
|
397 |
+
}
|
398 |
+
}
|
399 |
+
catch(Exception $e)
|
400 |
+
{
|
401 |
+
Mage::log("Remove from cart tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
402 |
+
}
|
403 |
+
|
404 |
+
}
|
405 |
+
|
406 |
+
|
407 |
+
/**
|
408 |
+
* Track new order
|
409 |
+
*
|
410 |
+
*/
|
411 |
+
public function trackNewOrder(Varien_Event_Observer $observer)
|
412 |
+
{
|
413 |
+
try
|
414 |
+
{
|
415 |
+
|
416 |
+
$helper = Mage::helper('increasingly_analytics');
|
417 |
+
|
418 |
+
if ($helper->isEnabled())
|
419 |
+
{
|
420 |
+
$data = array();
|
421 |
+
$order = $observer->getOrder();
|
422 |
+
|
423 |
+
if ($order->getId())
|
424 |
+
{
|
425 |
+
$data = $helper->buildOrderDetailsData($order);
|
426 |
+
$helper->addEvent('track', 'order', $data);
|
427 |
+
}
|
428 |
+
}
|
429 |
+
}
|
430 |
+
catch(Exception $e)
|
431 |
+
{
|
432 |
+
Mage::log("New order tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
433 |
+
}
|
434 |
+
}
|
435 |
+
|
436 |
+
|
437 |
+
/**
|
438 |
+
* Send order update information
|
439 |
+
*
|
440 |
+
*/
|
441 |
+
public function updateOrder(Varien_Event_Observer $observer)
|
442 |
+
{
|
443 |
+
try
|
444 |
+
{
|
445 |
+
$helper = Mage::helper('increasingly_analytics');
|
446 |
+
|
447 |
+
if ($helper->isEnabled())
|
448 |
+
{
|
449 |
+
$order = $observer->getOrder();
|
450 |
+
$orderDetails = $helper->buildOrderDetailsData($order);
|
451 |
+
$helper->increasinglyApi($orderDetails,'order','track',$helper->getApiToken(),$helper->getApiSecret());
|
452 |
+
}
|
453 |
+
|
454 |
+
}
|
455 |
+
catch(Exception $e)
|
456 |
+
{
|
457 |
+
Mage::log("Update order tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
458 |
+
}
|
459 |
+
}
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Send product update information
|
463 |
+
*
|
464 |
+
*/
|
465 |
+
public function productAddOrUpdate(Varien_Event_Observer $observer)
|
466 |
+
{
|
467 |
+
try
|
468 |
+
{
|
469 |
+
$helper = Mage::helper('increasingly_analytics');
|
470 |
+
|
471 |
+
if ($helper->isEnabled())
|
472 |
+
{
|
473 |
+
$productId = $observer->getEvent()->getProduct()->getId();
|
474 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
475 |
+
|
476 |
+
$productFormatHelper = Mage::helper('increasingly_analytics/ProductFormatter');
|
477 |
+
|
478 |
+
$formattedProductInfo = $productFormatHelper->formatProductInfo($product);
|
479 |
+
$helper->increasinglyApi($formattedProductInfo,'product_add_or_update','track',$helper->getApiToken(),$helper->getApiSecret());
|
480 |
+
}
|
481 |
+
|
482 |
+
}
|
483 |
+
catch(Exception $e)
|
484 |
+
{
|
485 |
+
Mage::log("Product Add or Update tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
486 |
+
}
|
487 |
+
}
|
488 |
+
|
489 |
+
/**
|
490 |
+
* Send product delete information
|
491 |
+
*
|
492 |
+
*/
|
493 |
+
public function productDelete(Varien_Event_Observer $observer)
|
494 |
+
{
|
495 |
+
try
|
496 |
+
{
|
497 |
+
$helper = Mage::helper('increasingly_analytics');
|
498 |
+
|
499 |
+
if ($helper->isEnabled()){
|
500 |
+
$productId = $observer->getEvent()->getProduct()->getId();
|
501 |
+
|
502 |
+
$productData = array('product_id' => $productId);
|
503 |
+
$helper->deleteBundleOnProductDeleteFromCart($productId);
|
504 |
+
$helper->increasinglyApi($productData,'product_delete','track',$helper->getApiToken(),$helper->getApiSecret());
|
505 |
+
}
|
506 |
+
|
507 |
+
}
|
508 |
+
catch(Exception $e)
|
509 |
+
{
|
510 |
+
Mage::log("Product delete tracking - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
511 |
+
}
|
512 |
+
}
|
513 |
+
}
|
app/code/community/Increasingly/Analytics/Model/Product.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Product model that extends the Magento catalog product model.
|
30 |
+
* Used to define custom product collection in product exports to Increasingly.
|
31 |
+
*
|
32 |
+
*/
|
33 |
+
class Increasingly_Analytics_Model_Product extends Mage_Catalog_Model_Product
|
34 |
+
{
|
35 |
+
/**
|
36 |
+
* @inheritdoc
|
37 |
+
*/
|
38 |
+
protected function _construct()
|
39 |
+
{
|
40 |
+
$this->_init('increasingly_analytics/product');
|
41 |
+
}
|
42 |
+
}
|
app/code/community/Increasingly/Analytics/controllers/AddbundletocartController.php
ADDED
@@ -0,0 +1,245 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Returns product details to increasingly on API call
|
29 |
+
*/
|
30 |
+
|
31 |
+
require_once 'Mage/Checkout/controllers/CartController.php';
|
32 |
+
class Increasingly_Analytics_AddbundletocartController extends Mage_Core_Controller_Front_Action
|
33 |
+
{
|
34 |
+
public $cart;
|
35 |
+
/***Index cart for add to cart
|
36 |
+
*
|
37 |
+
*/
|
38 |
+
public function indexAction ()
|
39 |
+
{
|
40 |
+
try
|
41 |
+
{
|
42 |
+
$this->cart = Mage::getSingleton('checkout/cart');
|
43 |
+
$data = $_POST["jsonData"];
|
44 |
+
$data = json_decode($data,TRUE);
|
45 |
+
$current_page = $data[0]["current_page"];
|
46 |
+
$product = Mage::getModel('catalog/product');
|
47 |
+
$inStockProducts = [];
|
48 |
+
$outOfStockProducts = [];
|
49 |
+
$productErrorStr = "";
|
50 |
+
$productSuccessStr = "";
|
51 |
+
if($current_page == "checkout_cart_index"){
|
52 |
+
$quote = Mage::getModel('checkout/cart')->getQuote();
|
53 |
+
|
54 |
+
//Get all Cart product Ids
|
55 |
+
$cartProductIds =[];
|
56 |
+
foreach ($quote->getAllItems() as $item) {
|
57 |
+
array_push($cartProductIds, $item->getProduct()->getId());
|
58 |
+
}
|
59 |
+
|
60 |
+
//Get all bundle Product Ids
|
61 |
+
$previousCartProducts = [];
|
62 |
+
for ($x = 0; $x < count($data[0]["params"]); $x++) {
|
63 |
+
array_push($previousCartProducts,trim($data[0]["params"][$x]["product_id"]));
|
64 |
+
}
|
65 |
+
|
66 |
+
//Get all Bundle product Ids that are in cart
|
67 |
+
$result = array_intersect($cartProductIds, $previousCartProducts);
|
68 |
+
$productsToAddToCart = array_diff($previousCartProducts,$result);
|
69 |
+
|
70 |
+
//All bundle products are in cart,add all
|
71 |
+
if(count($result) == count($cartProductIds) && count($result) == count($previousCartProducts) && count($cartProductIds) == count($previousCartProducts)){
|
72 |
+
$this->addToCart($data);
|
73 |
+
}else{
|
74 |
+
|
75 |
+
//Not all bundled products are in the cart,add only products from the bundle to cart that doesn't exists in cart and dont add bundles to the database
|
76 |
+
if(count($productsToAddToCart) >= 1){
|
77 |
+
|
78 |
+
//Push the products into instock and out of stock arrays to handle the success and error messages at cart page
|
79 |
+
foreach ($productsToAddToCart as $productId) {
|
80 |
+
$product = Mage::getModel('catalog/product');
|
81 |
+
$product->load($productId);
|
82 |
+
|
83 |
+
//In Stock or Out of stock status of the product
|
84 |
+
$inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getIsInStock();
|
85 |
+
if($inStock){
|
86 |
+
|
87 |
+
//Push all the instock products to the inStockProducts array
|
88 |
+
array_push($inStockProducts, $productId);
|
89 |
+
}
|
90 |
+
else{
|
91 |
+
|
92 |
+
//Push all the out of stock products to the outOfStockProducts array
|
93 |
+
array_push($outOfStockProducts, $productId);
|
94 |
+
//Prepare the error message for the products out of stock
|
95 |
+
$productErrorStr .= $product->getName().", ";
|
96 |
+
}
|
97 |
+
}
|
98 |
+
//Add all the instock products to the cart and prepare the success message
|
99 |
+
foreach ($inStockProducts as $product_id) {
|
100 |
+
$this->addTo($product_id,$data);
|
101 |
+
$productSuccessStr .= $product->getName().", ";
|
102 |
+
}
|
103 |
+
//Trim the success message
|
104 |
+
$productSuccessStr = rtrim(trim($productSuccessStr),',');
|
105 |
+
//Trim the error message
|
106 |
+
$productErrorStr = rtrim(trim($productErrorStr),',');
|
107 |
+
//Save the cart
|
108 |
+
$this->cart->save();
|
109 |
+
//Get teh quote
|
110 |
+
$quote = Mage::getModel('checkout/cart')->getQuote();
|
111 |
+
//Add success message
|
112 |
+
if($productSuccessStr != "")
|
113 |
+
Mage::getSingleton('core/session')->addSuccess($productSuccessStr.' added to your shopping cart');
|
114 |
+
//Add error message
|
115 |
+
if($productErrorStr != "")
|
116 |
+
Mage::getSingleton('core/session')->addNotice($productErrorStr.' is out of stock');
|
117 |
+
//Set cart was updated
|
118 |
+
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
|
119 |
+
//Redirect to cart
|
120 |
+
$this->_redirect('checkout/cart');
|
121 |
+
}
|
122 |
+
if(count($productsToAddToCart)==0){
|
123 |
+
//Add all bundled products to the cart when the cart is empty from the cart page and add bundles
|
124 |
+
$this->addToCart($data);
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
}else{
|
129 |
+
//Add to bundle from all other pages except cart
|
130 |
+
$this->addToCart($data);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
catch(Exception $e)
|
134 |
+
{
|
135 |
+
$this->_redirect('checkout/cart');
|
136 |
+
}
|
137 |
+
|
138 |
+
|
139 |
+
}
|
140 |
+
/**Adds the product to the cart on click of Add to Basket button
|
141 |
+
*
|
142 |
+
*/
|
143 |
+
public function addTo($productId,$data){
|
144 |
+
try{
|
145 |
+
if($data[0]["bundle_id"] != null || $data[0]["bundle_id"] || ""){
|
146 |
+
$bundle_id = $data[0]["bundle_id"];
|
147 |
+
$productIds = [];
|
148 |
+
$discountPrice = $data[0]["discountPrice"];
|
149 |
+
$totalSpecialPrice = $data[0]["totalSpecialPrice"];
|
150 |
+
$product = Mage::getModel('catalog/product');
|
151 |
+
$product->load($productId);
|
152 |
+
$this->cart->addProduct($product,array('qty' => 1));
|
153 |
+
}
|
154 |
+
}
|
155 |
+
catch(Exception $e)
|
156 |
+
{
|
157 |
+
Mage::log("Increasingly AddTo cart controller - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
/**Adds all the bundled products to the cart from all pages
|
162 |
+
*
|
163 |
+
*/
|
164 |
+
public function addToCart($data){
|
165 |
+
try{
|
166 |
+
$this->cart= Mage::getSingleton('checkout/cart');
|
167 |
+
|
168 |
+
if($data[0]["bundle_id"] != null || $data[0]["bundle_id"] || ""){
|
169 |
+
$bundle_id = $data[0]["bundle_id"];
|
170 |
+
$productIds = [];
|
171 |
+
$discountPrice = $data[0]["discountPrice"];
|
172 |
+
$totalSpecialPrice = $data[0]["totalSpecialPrice"];
|
173 |
+
$inStockProducts = [];
|
174 |
+
$outOfStockProducts = [];
|
175 |
+
$productErrorStr = "";
|
176 |
+
$productSuccessStr = "";
|
177 |
+
for ($x = 0; $x < count($data[0]["params"]); $x++) {
|
178 |
+
$productIds[$x] = trim($data[0]["params"][$x]["product_id"]);
|
179 |
+
}
|
180 |
+
//Push the products into instock and out of stock arrays to handle the success and error messages at cart page
|
181 |
+
foreach ($productIds as $productId) {
|
182 |
+
$product = Mage::getModel('catalog/product');
|
183 |
+
$product->load($productId);
|
184 |
+
$inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getIsInStock();
|
185 |
+
if($inStock){
|
186 |
+
array_push($inStockProducts, $productId);
|
187 |
+
}
|
188 |
+
else{
|
189 |
+
array_push($outOfStockProducts, $productId);
|
190 |
+
//Prepare the error message for the products out of stock
|
191 |
+
$productErrorStr .= $product->getName().", ";
|
192 |
+
}
|
193 |
+
}
|
194 |
+
//Add all the instock products to the cart and prepare the success message
|
195 |
+
foreach ($inStockProducts as $product_id) {
|
196 |
+
$product = Mage::getModel('catalog/product');
|
197 |
+
$product->load($product_id);
|
198 |
+
$this->cart->addProduct($product,array('qty' => 1));
|
199 |
+
$productSuccessStr .= $product->getName().", ";
|
200 |
+
}
|
201 |
+
//Trim the success message
|
202 |
+
$productSuccessStr = rtrim(trim($productSuccessStr),',');
|
203 |
+
//Trim the error message
|
204 |
+
$productErrorStr = rtrim(trim($productErrorStr),',');
|
205 |
+
//Save all the products added to the cart
|
206 |
+
$this->cart->save();
|
207 |
+
//Add the bundles to the database if all the products are in stock
|
208 |
+
if(count($outOfStockProducts) == 0){
|
209 |
+
$productIdsStr = implode(',',$productIds);
|
210 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
211 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()
|
212 |
+
->addFieldToFilter('bundle_id', $bundle_id)
|
213 |
+
->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
214 |
+
|
215 |
+
//Check if bundle already exists,add if not already present
|
216 |
+
if(count($userBundleCollection) < 1){
|
217 |
+
$userBundle = Mage::getModel('increasingly_analytics/bundle');
|
218 |
+
$userBundle->setBundleId(intval($bundle_id));
|
219 |
+
$userBundle->setProductIds($productIdsStr);
|
220 |
+
$userBundle->setIncreasinglyVisitorId($cookieValue);
|
221 |
+
$userBundle->setDiscountPrice($discountPrice);
|
222 |
+
$userBundle->setTotalSpecialPrice($totalSpecialPrice);
|
223 |
+
$userBundle->save();
|
224 |
+
}
|
225 |
+
//Set cart was updated flag
|
226 |
+
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
|
227 |
+
|
228 |
+
}
|
229 |
+
if($productSuccessStr != "")
|
230 |
+
Mage::getSingleton('core/session')->addSuccess($productSuccessStr.' added to your shopping cart');
|
231 |
+
//Error message for the out of stock products
|
232 |
+
if($productErrorStr != "")
|
233 |
+
Mage::getSingleton('core/session')->addNotice($productErrorStr.' is out of stock');
|
234 |
+
//Redirect to the cart
|
235 |
+
$this->_redirect('checkout/cart');
|
236 |
+
|
237 |
+
}
|
238 |
+
}
|
239 |
+
catch(Exception $e)
|
240 |
+
{
|
241 |
+
Mage::log("Increasingly addToCart controller - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
242 |
+
}
|
243 |
+
|
244 |
+
}
|
245 |
+
}
|
app/code/community/Increasingly/Analytics/controllers/Adminhtml/DataIntegrationController.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* controller for sending data to increasingly
|
29 |
+
*/
|
30 |
+
class Increasingly_Analytics_Adminhtml_DataIntegrationController extends Mage_Adminhtml_Controller_Action
|
31 |
+
{
|
32 |
+
/**
|
33 |
+
* load increasingly config UI on menu click
|
34 |
+
*/
|
35 |
+
public function indexAction()
|
36 |
+
{
|
37 |
+
$this->loadLayout()->_setActiveMenu('increasingly');
|
38 |
+
$this->renderLayout();
|
39 |
+
}
|
40 |
+
|
41 |
+
public function saveConfigDetailsAction()
|
42 |
+
{
|
43 |
+
$session = Mage::getSingleton('core/session');
|
44 |
+
try
|
45 |
+
{
|
46 |
+
|
47 |
+
$isIncreasinglyEnabled = $this->getRequest()->getPost('increasingly_analytics_settings_enable');
|
48 |
+
$apiKey = $this->getRequest()->getPost('increasingly_analytics_settings_api_key');
|
49 |
+
$apiSecret = $this->getRequest()->getPost('increasingly_analytics_settings_api_secret');
|
50 |
+
|
51 |
+
if ($isIncreasinglyEnabled == 1 && (empty($apiKey) || empty($apiSecret)))
|
52 |
+
{
|
53 |
+
Mage::throwException($this->__('Invalid form data. The api key and secret are missing!'));
|
54 |
+
}
|
55 |
+
|
56 |
+
$helper = Mage::helper('increasingly_analytics');
|
57 |
+
|
58 |
+
$data = array('is_api_enabled' => (boolean)$isIncreasinglyEnabled);
|
59 |
+
|
60 |
+
$result = $helper->increasinglyApi($data,'validate_api','track',$apiKey,$apiSecret);
|
61 |
+
|
62 |
+
if($result != null && $result != '' && $result->status == 'success' && json_decode($result->data)->isValidUser == 'true')
|
63 |
+
{
|
64 |
+
$configDetails = Mage::getModel('core/config');
|
65 |
+
$configDetails->saveConfig('increasingly_analytics/settings/enable', $isIncreasinglyEnabled, 'default', 0);
|
66 |
+
$configDetails->saveConfig('increasingly_analytics/settings/api_key', $apiKey, 'default', 0);
|
67 |
+
$configDetails->saveConfig('increasingly_analytics/settings/api_secret', $apiSecret, 'default', 0);
|
68 |
+
$configDetails=Mage::getModel('core/config');
|
69 |
+
|
70 |
+
$data['store_name'] = Mage::app()->getStore()->getName();
|
71 |
+
$data['store_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
72 |
+
$helper->increasinglyApi($data,'save_api_enable_status','track',$apiKey,$apiSecret);
|
73 |
+
|
74 |
+
$session->addSuccess('The configuration has been saved.');
|
75 |
+
}
|
76 |
+
else
|
77 |
+
{
|
78 |
+
Mage::log('Invalid user - '. $result, null, 'Increasingly_Analytics.log');
|
79 |
+
$session->addWarning('An error occurred while saving this configuration:');
|
80 |
+
}
|
81 |
+
|
82 |
+
}
|
83 |
+
catch (Exception $e)
|
84 |
+
{
|
85 |
+
Mage::log($e->getMessage(), null, 'Increasingly_Analytics.log');
|
86 |
+
$session->addException($e,'An error occurred while saving this configuration:');
|
87 |
+
}
|
88 |
+
|
89 |
+
$this->_redirect('*/*/index');
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Import previous order data
|
94 |
+
* @return void
|
95 |
+
*/
|
96 |
+
public function importOrderAction()
|
97 |
+
{
|
98 |
+
|
99 |
+
try
|
100 |
+
{
|
101 |
+
$helper = Mage::helper('increasingly_analytics');
|
102 |
+
$import = Mage::getSingleton('increasingly_analytics/DataIntegration');
|
103 |
+
$chunkId = (int)$this->getRequest()->getParam('chunk_id');
|
104 |
+
|
105 |
+
$orders = $import->getOrderDetails($chunkId);
|
106 |
+
$orderDetailsForImport = array();
|
107 |
+
|
108 |
+
foreach ($orders as $order)
|
109 |
+
{
|
110 |
+
if ($order->getId())
|
111 |
+
{
|
112 |
+
$orderDetails = $helper->buildOrderDetailsData($order);
|
113 |
+
array_push($orderDetailsForImport, $orderDetails);
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
$result = $helper->increasinglyApi($orderDetailsForImport,'order','import',$helper->getApiToken(),$helper->getApiSecret());
|
118 |
+
|
119 |
+
}
|
120 |
+
catch (Exception $e)
|
121 |
+
{
|
122 |
+
Mage::log("Import previous order data - " . $e->getMessage(), null, 'Increasingly_Analytics.log');
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
app/code/community/Increasingly/Analytics/controllers/ProductsApiController.php
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
/**
|
28 |
+
* Returns product details to increasingly on API call
|
29 |
+
*/
|
30 |
+
|
31 |
+
class Increasingly_Analytics_ProductsApiController extends Mage_Core_Controller_Front_Action
|
32 |
+
{
|
33 |
+
|
34 |
+
public function productsAction()
|
35 |
+
{
|
36 |
+
try
|
37 |
+
{
|
38 |
+
$version = (string)Mage::getConfig()->getModuleConfig("Increasingly_Analytics")->version;
|
39 |
+
|
40 |
+
if(!$this->isRequestAuthorized())
|
41 |
+
{
|
42 |
+
return $this;
|
43 |
+
}
|
44 |
+
|
45 |
+
$products = array();
|
46 |
+
$productFormatHelper = Mage::helper('increasingly_analytics/ProductFormatter');
|
47 |
+
|
48 |
+
$attributes = array(
|
49 |
+
'name',
|
50 |
+
'sku',
|
51 |
+
'image',
|
52 |
+
'manufacturer',
|
53 |
+
'price',
|
54 |
+
'final_price',
|
55 |
+
'special_price',
|
56 |
+
'short_description',
|
57 |
+
'color',
|
58 |
+
'weight',
|
59 |
+
'size'
|
60 |
+
);
|
61 |
+
|
62 |
+
$limit = $this->getRequest()->getParam('limit', 200);
|
63 |
+
$offset = $this->getRequest()->getParam('offset', 1);
|
64 |
+
|
65 |
+
$productsCollection = Mage::getModel('catalog/product')->getCollection();
|
66 |
+
|
67 |
+
$productsCollection->addAttributeToSelect($attributes)->getSelect()->limit($limit, $offset);
|
68 |
+
|
69 |
+
$totalProductCount = Mage::getModel('catalog/product')->getCollection()->count();
|
70 |
+
|
71 |
+
foreach($productsCollection as $product)
|
72 |
+
{
|
73 |
+
$product = $productFormatHelper->formatProductInfo($product);
|
74 |
+
|
75 |
+
if($product !== null)
|
76 |
+
{
|
77 |
+
$products[] = $product;
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
$this->getResponse()
|
82 |
+
->setBody(json_encode(array('products' => $products,'version' => $version, 'total_product_count' => $totalProductCount)))
|
83 |
+
->setHttpResponseCode(200)
|
84 |
+
->setHeader('Content-type', 'application/json', true);
|
85 |
+
|
86 |
+
|
87 |
+
} catch(Exception $e) {
|
88 |
+
|
89 |
+
Mage::log($e->getMessage(), null, 'Increasingly_Analytics.log');
|
90 |
+
$this->getResponse()
|
91 |
+
->setBody(json_encode(array('status' => 'error', 'message' => 'Internal server error', 'version' => $version)))
|
92 |
+
->setHttpResponseCode(500)
|
93 |
+
->setHeader('Content-type', 'application/json', true);
|
94 |
+
}
|
95 |
+
|
96 |
+
return $this;
|
97 |
+
|
98 |
+
}
|
99 |
+
|
100 |
+
private function isRequestAuthorized()
|
101 |
+
{
|
102 |
+
$helper = Mage::helper('increasingly_analytics');
|
103 |
+
|
104 |
+
if ($helper->isEnabled())
|
105 |
+
{
|
106 |
+
$apiKey = $helper->getApiToken();
|
107 |
+
$version = (string)Mage::getConfig()->getModuleConfig("Increasingly_Analytics")->version;
|
108 |
+
|
109 |
+
// Check for api key
|
110 |
+
if(!$apiKey && strlen($apiKey) === 0) {
|
111 |
+
|
112 |
+
$this->getResponse()
|
113 |
+
->setBody(json_encode(array('status' => 'error', 'message' => 'API key is missing', 'version' => $version)))
|
114 |
+
->setHttpResponseCode(403)
|
115 |
+
->setHeader('Content-type', 'application/json', true);
|
116 |
+
return false;
|
117 |
+
}
|
118 |
+
|
119 |
+
$authKey = $this->getRequest()->getHeader('authKey');
|
120 |
+
|
121 |
+
if (!$authKey || strlen($authKey) == 0) {
|
122 |
+
$authKey = $this->getRequest()->getParam('authKey');
|
123 |
+
}
|
124 |
+
|
125 |
+
if (!$authKey) {
|
126 |
+
|
127 |
+
$this->getResponse()
|
128 |
+
->setBody(json_encode(array('status' => 'error', 'message' => 'Error,Authorization header not found', 'version' => $version)))
|
129 |
+
->setHttpResponseCode(500)
|
130 |
+
->setHeader('Content-type', 'application/json', true);
|
131 |
+
return false;
|
132 |
+
}
|
133 |
+
|
134 |
+
if(trim($authKey) !== trim($apiKey)) {
|
135 |
+
|
136 |
+
$this->getResponse()
|
137 |
+
->setBody(json_encode(array('status' => 'error', 'message' => 'Authorization failed', 'version' => $version)))
|
138 |
+
->setHttpResponseCode(401)
|
139 |
+
->setHeader('Content-type', 'application/json', true);
|
140 |
+
return false;
|
141 |
+
}
|
142 |
+
|
143 |
+
return true;
|
144 |
+
}
|
145 |
+
else {
|
146 |
+
|
147 |
+
$this->getResponse()
|
148 |
+
->setBody(json_encode(array('status' => 'error', 'message' => 'Increasingly module is disabled', 'version' => $version)))
|
149 |
+
->setHttpResponseCode(403)
|
150 |
+
->setHeader('Content-type', 'application/json', true);
|
151 |
+
return false;
|
152 |
+
}
|
153 |
+
|
154 |
+
}
|
155 |
+
|
156 |
+
}
|
app/code/community/Increasingly/Analytics/etc/config.xml
ADDED
@@ -0,0 +1,249 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
-->
|
27 |
+
<!--
|
28 |
+
/**
|
29 |
+
* @package Increasingly_Analytics
|
30 |
+
*/
|
31 |
+
-->
|
32 |
+
<config>
|
33 |
+
<modules>
|
34 |
+
<Increasingly_Analytics>
|
35 |
+
<version>1.0.0</version>
|
36 |
+
</Increasingly_Analytics>
|
37 |
+
</modules>
|
38 |
+
<global>
|
39 |
+
<events>
|
40 |
+
<controller_action_layout_generate_blocks_after>
|
41 |
+
<observers>
|
42 |
+
<page_view>
|
43 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
44 |
+
<method>trackPageView</method>
|
45 |
+
<type>singleton</type>
|
46 |
+
</page_view>
|
47 |
+
</observers>
|
48 |
+
</controller_action_layout_generate_blocks_after>
|
49 |
+
<checkout_cart_product_add_after>
|
50 |
+
<observers>
|
51 |
+
<add_to_cart>
|
52 |
+
<type>singleton</type>
|
53 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
54 |
+
<method>addToCart</method>
|
55 |
+
</add_to_cart>
|
56 |
+
</observers>
|
57 |
+
</checkout_cart_product_add_after>
|
58 |
+
<sales_quote_remove_item>
|
59 |
+
<observers>
|
60 |
+
<remove_from_cart>
|
61 |
+
<type>singleton</type>
|
62 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
63 |
+
<method>removeFromCart</method>
|
64 |
+
</remove_from_cart>
|
65 |
+
</observers>
|
66 |
+
</sales_quote_remove_item>
|
67 |
+
<sales_order_place_after>
|
68 |
+
<observers>
|
69 |
+
<place_order>
|
70 |
+
<type>singleton</type>
|
71 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
72 |
+
<method>trackNewOrder</method>
|
73 |
+
</place_order>
|
74 |
+
</observers>
|
75 |
+
</sales_order_place_after>
|
76 |
+
<sales_order_save_after>
|
77 |
+
<observers>
|
78 |
+
<update_order>
|
79 |
+
<type>singleton</type>
|
80 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
81 |
+
<method>updateOrder</method>
|
82 |
+
</update_order>
|
83 |
+
</observers>
|
84 |
+
</sales_order_save_after>
|
85 |
+
<sales_quote_collect_totals_after>
|
86 |
+
<observers>
|
87 |
+
<apply_cart_discount>
|
88 |
+
<type>singleton</type>
|
89 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
90 |
+
<method>applyCartDiscount</method>
|
91 |
+
</apply_cart_discount>
|
92 |
+
</observers>
|
93 |
+
</sales_quote_collect_totals_after>
|
94 |
+
<sales_quote_save_after>
|
95 |
+
<observers>
|
96 |
+
<empty_cart>
|
97 |
+
<type>singleton</type>
|
98 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
99 |
+
<method>empty_cart</method>
|
100 |
+
</empty_cart>
|
101 |
+
</observers>
|
102 |
+
</sales_quote_save_after>
|
103 |
+
<catalog_product_save_commit_after>
|
104 |
+
<observers>
|
105 |
+
<product_update>
|
106 |
+
<type>singleton</type>
|
107 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
108 |
+
<method>productAddOrUpdate</method>
|
109 |
+
</product_update>
|
110 |
+
</observers>
|
111 |
+
</catalog_product_save_commit_after>
|
112 |
+
<catalog_product_delete_commit_after>
|
113 |
+
<observers>
|
114 |
+
<product_delete>
|
115 |
+
<type>singleton</type>
|
116 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
117 |
+
<method>productDelete</method>
|
118 |
+
</product_delete>
|
119 |
+
</observers>
|
120 |
+
</catalog_product_delete_commit_after>
|
121 |
+
</events>
|
122 |
+
<models>
|
123 |
+
<increasingly_analytics>
|
124 |
+
<class>Increasingly_Analytics_Model</class>
|
125 |
+
<resourceModel>increasingly_analytics_mysql4</resourceModel>
|
126 |
+
</increasingly_analytics>
|
127 |
+
<increasingly_analytics_mysql4>
|
128 |
+
<class>Increasingly_Analytics_Model_Mysql4</class>
|
129 |
+
<entities>
|
130 |
+
<increasingly_analytics_bundle>
|
131 |
+
<table>increasingly_analytics_bundle</table>
|
132 |
+
</increasingly_analytics_bundle>
|
133 |
+
</entities>
|
134 |
+
</increasingly_analytics_mysql4>
|
135 |
+
</models>
|
136 |
+
<resources>
|
137 |
+
<increasingly_analytics_setup>
|
138 |
+
<setup>
|
139 |
+
<module>Increasingly_Analytics</module>
|
140 |
+
</setup>
|
141 |
+
<connection>
|
142 |
+
<use>core_setup</use>
|
143 |
+
</connection>
|
144 |
+
</increasingly_analytics_setup>
|
145 |
+
<increasingly_analytics_write>
|
146 |
+
<connection>
|
147 |
+
<use>core_write</use>
|
148 |
+
</connection>
|
149 |
+
</increasingly_analytics_write>
|
150 |
+
<increasingly_analytics_read>
|
151 |
+
<connection>
|
152 |
+
<use>core_read</use>
|
153 |
+
</connection>
|
154 |
+
</increasingly_analytics_read>
|
155 |
+
</resources>
|
156 |
+
<blocks>
|
157 |
+
<increasingly_analytics>
|
158 |
+
<class>Increasingly_Analytics_Block</class>
|
159 |
+
</increasingly_analytics>
|
160 |
+
</blocks>
|
161 |
+
<helpers>
|
162 |
+
<increasingly_analytics>
|
163 |
+
<class>Increasingly_Analytics_Helper</class>
|
164 |
+
</increasingly_analytics>
|
165 |
+
</helpers>
|
166 |
+
</global>
|
167 |
+
<frontend>
|
168 |
+
<layout>
|
169 |
+
<updates>
|
170 |
+
<increasingly_analytics>
|
171 |
+
<file>increasingly_analytics.xml</file>
|
172 |
+
</increasingly_analytics>
|
173 |
+
</updates>
|
174 |
+
</layout>
|
175 |
+
<routers>
|
176 |
+
<increasingly_analytics>
|
177 |
+
<use>standard</use>
|
178 |
+
<args>
|
179 |
+
<module>Increasingly_Analytics</module>
|
180 |
+
<frontName>increasingly</frontName>
|
181 |
+
</args>
|
182 |
+
</increasingly_analytics>
|
183 |
+
</routers>
|
184 |
+
<events>
|
185 |
+
<customer_login>
|
186 |
+
<observers>
|
187 |
+
<increasingly_login>
|
188 |
+
<type>singleton</type>
|
189 |
+
<class>Increasingly_Analytics_Model_Observer</class>
|
190 |
+
<method>customerLogin</method>
|
191 |
+
</increasingly_login>
|
192 |
+
</observers>
|
193 |
+
</customer_login>
|
194 |
+
</events>
|
195 |
+
</frontend>
|
196 |
+
<admin>
|
197 |
+
<routers>
|
198 |
+
<adminhtml>
|
199 |
+
<args>
|
200 |
+
<modules>
|
201 |
+
<Increasingly_Analytics before="Mage_adminhtml">Increasingly_Analytics_Adminhtml</Increasingly_Analytics>
|
202 |
+
</modules>
|
203 |
+
</args>
|
204 |
+
</adminhtml>
|
205 |
+
</routers>
|
206 |
+
</admin>
|
207 |
+
<adminhtml>
|
208 |
+
<acl>
|
209 |
+
<resources>
|
210 |
+
<admin>
|
211 |
+
<children>
|
212 |
+
<system>
|
213 |
+
<children>
|
214 |
+
<config>
|
215 |
+
<children>
|
216 |
+
<increasingly_analytics>
|
217 |
+
<title>Increasingly Configuration</title>
|
218 |
+
</increasingly_analytics>
|
219 |
+
</children>
|
220 |
+
</config>
|
221 |
+
</children>
|
222 |
+
</system>
|
223 |
+
</children>
|
224 |
+
</admin>
|
225 |
+
</resources>
|
226 |
+
</acl>
|
227 |
+
<layout>
|
228 |
+
<updates>
|
229 |
+
<increasingly_analytics>
|
230 |
+
<file>increasingly_analytics.xml</file>
|
231 |
+
</increasingly_analytics>
|
232 |
+
</updates>
|
233 |
+
</layout>
|
234 |
+
<menu>
|
235 |
+
<increasingly>
|
236 |
+
<title>Increasingly</title>
|
237 |
+
<sort_order>70</sort_order>
|
238 |
+
<action>adminhtml/DataIntegration/index</action>
|
239 |
+
</increasingly>
|
240 |
+
</menu>
|
241 |
+
</adminhtml>
|
242 |
+
<default>
|
243 |
+
<increasingly_analytics>
|
244 |
+
<settings>
|
245 |
+
<enable>0</enable>
|
246 |
+
</settings>
|
247 |
+
</increasingly_analytics>
|
248 |
+
</default>
|
249 |
+
</config>
|
app/code/community/Increasingly/Analytics/sql/setup/mysql-install-1.0.0.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
$installer->run("
|
8 |
+
|
9 |
+
CREATE TABLE IF NOT EXISTS {$this->getTable('increasingly_analytics_bundle')} (
|
10 |
+
|
11 |
+
`id` int NOT NULL auto_increment,
|
12 |
+
|
13 |
+
`bundle_id` int NOT NULL default 0,
|
14 |
+
|
15 |
+
`product_ids` varchar(100) NOT NULL,
|
16 |
+
|
17 |
+
`increasingly_visitor_id` varchar(100) NOT NULL,
|
18 |
+
|
19 |
+
`discount_price` decimal(12,4) NULL,
|
20 |
+
|
21 |
+
'total_special_price' decimal(12,4) NOT NULL,
|
22 |
+
|
23 |
+
PRIMARY KEY (`id`)
|
24 |
+
|
25 |
+
);
|
26 |
+
|
27 |
+
");
|
28 |
+
|
29 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/increasingly_analytics.xml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<layout>
|
3 |
+
<adminhtml_dataintegration_index>
|
4 |
+
<reference name="content">
|
5 |
+
<block type="increasingly_analytics/adminhtml_DataIntegration" template="increasingly/dataintegration.phtml" name="increasingly.dataintegration"/>
|
6 |
+
</reference>
|
7 |
+
</adminhtml_dataintegration_index>
|
8 |
+
</layout>
|
app/design/adminhtml/default/default/template/increasingly/dataintegration.phtml
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php $import = $this->getImport(); ?>
|
2 |
+
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
3 |
+
<script type="text/javascript">
|
4 |
+
jQuery.noConflict();
|
5 |
+
|
6 |
+
function import_increasingly()
|
7 |
+
{
|
8 |
+
var total_chunks = <?php echo $import->getChunks(); ?>;
|
9 |
+
var chunk_percentage = 100;
|
10 |
+
|
11 |
+
if(total_chunks > 0)
|
12 |
+
{
|
13 |
+
var chunk_percentage = (100 / total_chunks);
|
14 |
+
}
|
15 |
+
|
16 |
+
// Disable button
|
17 |
+
jQuery('#increasingly_button').addClass('disabled').attr('disabled', 'disabled');
|
18 |
+
|
19 |
+
var sync_chunk = function(chunk_id){
|
20 |
+
progress_percentage = Math.round(chunk_id * chunk_percentage);
|
21 |
+
update_import_progress_msg('Please wait... '+progress_percentage+'% done', true);
|
22 |
+
|
23 |
+
// add form_key for magento controller check
|
24 |
+
data = {'chunk_id': chunk_id, 'form_key': window.FORM_KEY};
|
25 |
+
|
26 |
+
jQuery.post('<?php echo $this->getOrderImportUrl(); ?>', data, function(response) {
|
27 |
+
new_chunk_id = chunk_id + 1;
|
28 |
+
if(new_chunk_id < total_chunks)
|
29 |
+
{
|
30 |
+
setTimeout(function(){
|
31 |
+
sync_chunk(new_chunk_id);
|
32 |
+
}, 150)
|
33 |
+
}
|
34 |
+
else
|
35 |
+
{
|
36 |
+
update_import_progress_msg("<span style='color: green;'>Data import is completed! Data will appear in Increasingly in few minutes.</span>", false);
|
37 |
+
jQuery('#increasingly_button').removeClass('disabled').addClass('success');
|
38 |
+
}
|
39 |
+
|
40 |
+
});
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
var update_import_progress_msg = function(message, show_loader_img){
|
45 |
+
if (show_loader_img)
|
46 |
+
message = '<img src="<?php echo $this->getSkinUrl("increasingly/loader.gif"); ?>" />' + message;
|
47 |
+
jQuery('#increasingly_import_status').html(message);
|
48 |
+
}
|
49 |
+
sync_chunk(0);
|
50 |
+
}
|
51 |
+
|
52 |
+
function loadHtmlFields(selected)
|
53 |
+
{
|
54 |
+
if(selected == 1)
|
55 |
+
{
|
56 |
+
$('row_increasingly_analytics_settings_api_key').show();
|
57 |
+
$('row_increasingly_analytics_settings_api_secret').show();
|
58 |
+
$('row_increasingly_analytics_settings_import').show();
|
59 |
+
}
|
60 |
+
else
|
61 |
+
{
|
62 |
+
$('row_increasingly_analytics_settings_api_key').hide();
|
63 |
+
$('row_increasingly_analytics_settings_api_secret').hide();
|
64 |
+
$('row_increasingly_analytics_settings_import').hide();
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
68 |
+
</script>
|
69 |
+
|
70 |
+
<div class="content-header">
|
71 |
+
<table cellspacing="0">
|
72 |
+
<tr>
|
73 |
+
<td>
|
74 |
+
<h3 class="increasingly-header">Increasingly Settings</h3>
|
75 |
+
</td>
|
76 |
+
<td class="form-buttons">
|
77 |
+
<button id="btnSaveConfigDetails" title="Save Config" type="button" class="scalable save"
|
78 |
+
onclick="data_integration_form.submit()" style=""><span><span><span>Save Config</span></span></span></button>
|
79 |
+
</td>
|
80 |
+
</tr>
|
81 |
+
</table>
|
82 |
+
</div>
|
83 |
+
|
84 |
+
<?php
|
85 |
+
$adminobj= new Mage_Adminhtml_Block_Template();
|
86 |
+
$formkey=$adminobj->getFormKey();
|
87 |
+
?>
|
88 |
+
|
89 |
+
<form id="data_integration_form" name="data_integration_form" method="post" action="<?php echo $this->getUrl('*/*/saveConfigDetails')?>" enctype="multipart/form-data">
|
90 |
+
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
|
91 |
+
|
92 |
+
<table cellspacing="0" class="form-list">
|
93 |
+
<tbody>
|
94 |
+
|
95 |
+
<tr id="row_increasingly_analytics_settings_enable">
|
96 |
+
<td class="label"><label for="increasingly_analytics_settings_enable">Enabled</label></td>
|
97 |
+
<td class="value"><?php echo $this->renderIncreasinglyEnableStatus(Mage::getStoreConfig('increasingly_analytics/settings/enable'))?></td>
|
98 |
+
</tr>
|
99 |
+
|
100 |
+
<?php echo $this->getHtmlFields(Mage::getStoreConfig('increasingly_analytics/settings/enable')) ?>
|
101 |
+
|
102 |
+
</tbody>
|
103 |
+
</table>
|
104 |
+
</form>
|
app/design/frontend/base/default/layout/increasingly_analytics.xml
ADDED
@@ -0,0 +1,226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<layout version="1.0.0">
|
3 |
+
<default>
|
4 |
+
<reference name="head">
|
5 |
+
<block type="increasingly_analytics/track" name="increasingly.analytics" template="increasingly/track.phtml" after="-" />
|
6 |
+
</reference>
|
7 |
+
<!-- Adds Increasingly page type tags to head -->
|
8 |
+
<reference name="head">
|
9 |
+
<block type="increasingly_analytics/pagetype" name="increasingly.pagetype" template="increasingly/pagetype.phtml"/>
|
10 |
+
</reference>
|
11 |
+
<!-- Adds Increasingly embed script to head -->
|
12 |
+
<reference name="head">
|
13 |
+
<block type="increasingly_analytics/embed" name="increasingly.embed" template="increasingly/embed.phtml"/>
|
14 |
+
</reference>
|
15 |
+
|
16 |
+
<!-- Adds Increasingly `add-to-cart` script to head -->
|
17 |
+
<reference name="head">
|
18 |
+
<block type="increasingly_analytics/addtocart" name="increasingly.addtocart" template="increasingly/addtocart.phtml"/>
|
19 |
+
</reference>
|
20 |
+
|
21 |
+
<!--Tag Increasingly shopping cart -->
|
22 |
+
<reference name="after_body_start">
|
23 |
+
<block type="increasingly_analytics/cart" name="increasingly.cart" template="increasingly/cart.phtml"/>
|
24 |
+
</reference>
|
25 |
+
</default>
|
26 |
+
<!-- Tag category -->
|
27 |
+
<catalog_category_default>
|
28 |
+
<update handle="increasingly_analytics_category" />
|
29 |
+
</catalog_category_default>
|
30 |
+
<catalog_category_layered>
|
31 |
+
<update handle="increasingly_analytics_category" />
|
32 |
+
</catalog_category_layered>
|
33 |
+
<increasingly_analytics_category>
|
34 |
+
<reference name="after_body_start">
|
35 |
+
<block type="increasingly_analytics/category" name="increasingly.category" template="increasingly/category.phtml"/>
|
36 |
+
</reference>
|
37 |
+
</increasingly_analytics_category>
|
38 |
+
|
39 |
+
<!-- Tag product -->
|
40 |
+
<catalog_product_view>
|
41 |
+
<reference name="after_body_start">
|
42 |
+
<block type="increasingly_analytics/product" name="increasingly.product" template="increasingly/product.phtml"/>
|
43 |
+
</reference>
|
44 |
+
</catalog_product_view>
|
45 |
+
|
46 |
+
<!-- Tag checkout -->
|
47 |
+
<!-- <checkout_onepage_success>
|
48 |
+
<reference name="after_body_start">
|
49 |
+
<block type="increasingly_analytics/order" name="increasingly.order" template="increasingly/order.phtml"/>
|
50 |
+
</reference>
|
51 |
+
</checkout_onepage_success> -->
|
52 |
+
|
53 |
+
<!-- All pages -->
|
54 |
+
<default>
|
55 |
+
<!-- Adds 1 content placeholder first in page content section -->
|
56 |
+
<reference name="content">
|
57 |
+
<block type="increasingly_analytics/element" name="increasingly.page.top" before="-"
|
58 |
+
template="increasingly/element.phtml">
|
59 |
+
<action method="setData">
|
60 |
+
<name>div_id</name>
|
61 |
+
<value>increasingly-page-top</value>
|
62 |
+
</action>
|
63 |
+
</block>
|
64 |
+
</reference>
|
65 |
+
<!-- Adds 1 content placeholder to left sidebar -->
|
66 |
+
<reference name="left">
|
67 |
+
<block type="increasingly_analytics/element" name="increasingly.column.left" before="-"
|
68 |
+
template="increasingly/element.phtml">
|
69 |
+
<action method="setData">
|
70 |
+
<name>div_id</name>
|
71 |
+
<value>increasingly-column-left</value>
|
72 |
+
</action>
|
73 |
+
</block>
|
74 |
+
</reference>
|
75 |
+
<!-- Adds 1 content placeholder to right sidebar -->
|
76 |
+
<reference name="right">
|
77 |
+
<block type="increasingly_analytics/element" name="increasingly.column.right" after="-"
|
78 |
+
template="increasingly/element.phtml">
|
79 |
+
<action method="setData">
|
80 |
+
<name>div_id</name>
|
81 |
+
<value>increasingly-column-right</value>
|
82 |
+
</action>
|
83 |
+
</block>
|
84 |
+
</reference>
|
85 |
+
</default>
|
86 |
+
|
87 |
+
|
88 |
+
<!-- Custom handle for displaying 1 content placeholder last in page content section -->
|
89 |
+
<increasingly_analytics_page_default_footer>
|
90 |
+
<reference name="content">
|
91 |
+
<block type="increasingly_analytics/element" name="increasingly.page.footer" after="-"
|
92 |
+
template="increasingly/element.phtml">
|
93 |
+
<action method="setData">
|
94 |
+
<name>div_id</name>
|
95 |
+
<value>increasingly-page-footer</value>
|
96 |
+
</action>
|
97 |
+
</block>
|
98 |
+
</reference>
|
99 |
+
</increasingly_analytics_page_default_footer>
|
100 |
+
|
101 |
+
<!-- Home page -->
|
102 |
+
<cms_index_index>
|
103 |
+
<!-- Add 4 content placeholders after the home page content -->
|
104 |
+
<reference name="content">
|
105 |
+
<block type="increasingly_analytics/element" name="increasingly.page.home1" after="-"
|
106 |
+
template="increasingly/element.phtml">
|
107 |
+
<action method="setData">
|
108 |
+
<name>div_id</name>
|
109 |
+
<value>frontpage-increasingly-1</value>
|
110 |
+
</action>
|
111 |
+
</block>
|
112 |
+
</reference>
|
113 |
+
</cms_index_index>
|
114 |
+
<!-- Shopping cart checkout page -->
|
115 |
+
<checkout_cart_index>
|
116 |
+
<!-- Adds 3 content placeholders after the cart content -->
|
117 |
+
<reference name="content">
|
118 |
+
<block type="increasingly_analytics/element" name="increasingly.page.cart1" after="checkout.cart"
|
119 |
+
template="increasingly/element.phtml">
|
120 |
+
<action method="setData">
|
121 |
+
<name>div_id</name>
|
122 |
+
<value>increasingly-page-cart1</value>
|
123 |
+
</action>
|
124 |
+
</block>
|
125 |
+
</reference>
|
126 |
+
</checkout_cart_index>
|
127 |
+
|
128 |
+
<sales_quote_collect_totals_after>
|
129 |
+
<observers>
|
130 |
+
<class>Custom_Module_Model_Observer</class>
|
131 |
+
<method>collectTotals</method>
|
132 |
+
</observers>
|
133 |
+
</sales_quote_collect_totals_after>
|
134 |
+
|
135 |
+
<!-- Product page -->
|
136 |
+
<catalog_product_view>
|
137 |
+
<!-- Adds 3 content placeholders after the product info -->
|
138 |
+
<reference name="content">
|
139 |
+
<block type="increasingly_analytics/element" name="increasingly.page.product1" after="product.info"
|
140 |
+
template="increasingly/element.phtml">
|
141 |
+
<action method="setData">
|
142 |
+
<name>div_id</name>
|
143 |
+
<value>increasingly-page-product1</value>
|
144 |
+
</action>
|
145 |
+
</block>
|
146 |
+
</reference>
|
147 |
+
<reference name="product.info.addtocart">
|
148 |
+
<block type="increasingly_analytics/element" name="increasingly.catalog.product1" after="product.info.addtocart" template="increasingly/element.phtml">
|
149 |
+
<action method="setData">
|
150 |
+
<name>div_id</name>
|
151 |
+
<value>increasingly-catalog-product1</value>
|
152 |
+
</action>
|
153 |
+
</block>
|
154 |
+
</reference>
|
155 |
+
</catalog_product_view>
|
156 |
+
|
157 |
+
<MY_HANDLE_catalog_product_view>
|
158 |
+
<reference name="content">
|
159 |
+
<!-- <remove name="product.info.addto"/> -->
|
160 |
+
<remove name="product.info.availability"/>
|
161 |
+
<remove name="product.info.sharing"/>
|
162 |
+
<remove name="product.info.addtocartqty"/>
|
163 |
+
<remove name="product.tierprices" />
|
164 |
+
<remove name="product.info.upsell" />
|
165 |
+
<remove name="product.clone_prices" />
|
166 |
+
<remove name="product.tag.list" />
|
167 |
+
</reference>
|
168 |
+
</MY_HANDLE_catalog_product_view>
|
169 |
+
<!-- Category page -->
|
170 |
+
<catalog_category_default>
|
171 |
+
<update handle="increasingly_analytics_catalog_category" />
|
172 |
+
</catalog_category_default>
|
173 |
+
<catalog_category_layered>
|
174 |
+
<update handle="increasingly_analytics_catalog_category" />
|
175 |
+
</catalog_category_layered>
|
176 |
+
<increasingly_analytics_catalog_category>
|
177 |
+
<!-- Adds 2 content placeholders; 1 before and 1 after the products -->
|
178 |
+
<reference name="content">
|
179 |
+
<block type="increasingly_analytics/element" name="increasingly.page.category1" after="category.products"
|
180 |
+
template="increasingly/element.phtml">
|
181 |
+
<action method="setData">
|
182 |
+
<name>div_id</name>
|
183 |
+
<value>increasingly-page-category1</value>
|
184 |
+
</action>
|
185 |
+
</block>
|
186 |
+
<!-- <block type="increasingly_analytics/element" name="increasingly.page.category2" after="category.products"
|
187 |
+
template="increasingly/element.phtml">
|
188 |
+
<action method="setData">
|
189 |
+
<name>div_id</name>
|
190 |
+
<value>increasingly-page-category2</value>
|
191 |
+
</action>
|
192 |
+
</block> -->
|
193 |
+
</reference>
|
194 |
+
</increasingly_analytics_catalog_category>
|
195 |
+
|
196 |
+
|
197 |
+
<!-- 404 Not found page -->
|
198 |
+
<cms_index_noroute>
|
199 |
+
<reference name="content">
|
200 |
+
<block type="increasingly_analytics/element" name="increasingly.page.notfound1" after="-"
|
201 |
+
template="increasingly/element.phtml">
|
202 |
+
<action method="setData">
|
203 |
+
<name>div_id</name>
|
204 |
+
<value>notfound-increasingly-1</value>
|
205 |
+
</action>
|
206 |
+
</block>
|
207 |
+
</reference>
|
208 |
+
</cms_index_noroute>
|
209 |
+
<!-- Order confirmation page -->
|
210 |
+
<checkout_onepage_success>
|
211 |
+
<reference name="content">
|
212 |
+
<block type="increasingly_analytics/element" name="increasingly.page.orderconfirmation1" after="-" template="increasingly/element.phtml">
|
213 |
+
<action method="setData">
|
214 |
+
<name>div_id</name>
|
215 |
+
<value>thankyou-increasingly-1</value>
|
216 |
+
</action>
|
217 |
+
</block>
|
218 |
+
<block type="increasingly_analytics/element" name="increasingly.page.orderconfirmation2" after="increasingly.page.orderconfirmation1" template="increasingly/element.phtml">
|
219 |
+
<action method="setData">
|
220 |
+
<name>div_id</name>
|
221 |
+
<value>thankyou-increasingly-2</value>
|
222 |
+
</action>
|
223 |
+
</block>
|
224 |
+
</reference>
|
225 |
+
</checkout_onepage_success>
|
226 |
+
</layout>
|
app/design/frontend/base/default/template/increasingly/addtocart.phtml
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
$formAction = Mage::getUrl('checkout/cart/add');
|
31 |
+
$formKey = Mage::getSingleton('core/session')->getFormKey();
|
32 |
+
?>
|
33 |
+
|
34 |
+
<!-- Increasingly `add-to-cart` Script -->
|
35 |
+
<script type="text/javascript">
|
36 |
+
if (typeof Increasingly === "undefined") {
|
37 |
+
var Increasingly = {};
|
38 |
+
}
|
39 |
+
Increasingly.addProductToCart = function (productId) {
|
40 |
+
var form = document.createElement("form");
|
41 |
+
form.setAttribute("method", "post");
|
42 |
+
form.setAttribute("action", "<?php echo $formAction; ?>");
|
43 |
+
|
44 |
+
var hiddenFields = {
|
45 |
+
"product": productId,
|
46 |
+
"form_key": "<?php echo $formKey; ?>"
|
47 |
+
};
|
48 |
+
|
49 |
+
for(var key in hiddenFields) {
|
50 |
+
if(hiddenFields.hasOwnProperty(key)) {
|
51 |
+
var hiddenField = document.createElement("input");
|
52 |
+
hiddenField.setAttribute("type", "hidden");
|
53 |
+
hiddenField.setAttribute("name", key);
|
54 |
+
hiddenField.setAttribute("value", hiddenFields[key]);
|
55 |
+
form.appendChild(hiddenField);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
document.body.appendChild(form);
|
60 |
+
form.submit();
|
61 |
+
};
|
62 |
+
</script>
|
app/design/frontend/base/default/template/increasingly/cart.phtml
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
/**
|
31 |
+
* @var $this Increasingly_Analytics_Block_Cart
|
32 |
+
* @var $increasinglyHelper Increasingly_Analytics_Helper_Data
|
33 |
+
* @var $increasinglyPriceHelper Increasingly_Analytics_Helper_Price
|
34 |
+
*/
|
35 |
+
$items = $this->getItems();
|
36 |
+
$currency = Mage::app()->getStore()->getCurrentCurrencyCode();
|
37 |
+
$increasinglyHelper = Mage::helper('increasingly_analytics');
|
38 |
+
$increasinglyPriceHelper = Mage::helper('increasingly_analytics/priceFormatter');
|
39 |
+
$cookieValue = Mage::getModel('core/cookie')->get('ivid');
|
40 |
+
if(Mage::getModel('increasingly_analytics/bundle2')){
|
41 |
+
$userBundleCollection = Mage::getModel('increasingly_analytics/bundle')->getCollection()
|
42 |
+
->addFieldToFilter('increasingly_visitor_id',$cookieValue);
|
43 |
+
$userBundelDetails = [];
|
44 |
+
|
45 |
+
foreach($userBundleCollection as $bundle){
|
46 |
+
$cart_bundle_details["id"] = $bundle->getId();
|
47 |
+
$cart_bundle_details["products"] = $bundle->getProductIds();
|
48 |
+
array_push($userBundelDetails, $cart_bundle_details);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
?>
|
52 |
+
|
53 |
+
<!-- Increasingly Cart Tagging -->
|
54 |
+
<div class="increasingly_cart" style="display:none">
|
55 |
+
<?php foreach ($items as $item): ?>
|
56 |
+
<div class="line_item">
|
57 |
+
<span class="product_id"><?php echo (int)$this->getProductId($item); ?></span>
|
58 |
+
<span class="quantity"><?php echo (int)$item->getQty(); ?></span>
|
59 |
+
<span class="name"><?php echo $increasinglyHelper->escapeHtml($this->getProductName($item)); ?></span>
|
60 |
+
<span class="unit_price"><?php echo $increasinglyPriceHelper->getFormattedPrice($item->getPriceInclTax()); ?></span>
|
61 |
+
<span class="price_currency_code"><?php echo strtoupper($currency); ?></span>
|
62 |
+
</div>
|
63 |
+
<?php endforeach; ?>
|
64 |
+
<div class="cart_bundle_details"><?php echo json_encode($userBundelDetails)?></div>
|
65 |
+
</div>
|
66 |
+
|
67 |
+
|
app/design/frontend/base/default/template/increasingly/category.phtml
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
/**
|
31 |
+
* @var $this Increasingly_Analytics_Block_Category
|
32 |
+
* @var $increasinglyHelper Increasingly_Analytics_Helper_Data
|
33 |
+
*/
|
34 |
+
$increasinglyHelper = Mage::helper('increasingly_analytics');
|
35 |
+
?>
|
36 |
+
|
37 |
+
<!-- Increasingly Category Tagging -->
|
38 |
+
<div class="increasingly_category" style="display:none"><?php echo $increasinglyHelper->escapeHtml($this->getCategory()); ?></div>
|
app/design/frontend/base/default/template/increasingly/element.phtml
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
/**
|
31 |
+
* @var $this Increasingly_Analytics_Block_Element
|
32 |
+
* @var $increasinglyHelper Increasingly_Analytics_Helper_Data
|
33 |
+
*/
|
34 |
+
$increasinglyHelper = Mage::helper('increasingly_analytics');
|
35 |
+
$id = $increasinglyHelper->escapeHtml(($this->getElementId()));
|
36 |
+
|
37 |
+
?>
|
38 |
+
|
39 |
+
<div class="increasingly_element" id="<?php echo $increasinglyHelper->escapeHtml($this->getElementId()); ?>"></div>
|
40 |
+
|
app/design/frontend/base/default/template/increasingly/embed.phtml
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package frontend_base_default
|
23 |
+
* @author Nosto Solutions Ltd <magento@nosto.com>
|
24 |
+
* @copyright Copyright (c) 2013-2015 Nosto Solutions Ltd (http://www.nosto.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
<!-- Increasingly Analytics Tagging Script -->
|
29 |
+
|
30 |
+
<!--<script type="text/javascript">
|
31 |
+
// var b = "increasinglyjs";
|
32 |
+
// increasinglyjs.init('<?php echo $this->getAccountName(); ?>', {
|
33 |
+
// host: '<?php echo $this->getServerAddress() ?>'
|
34 |
+
// });
|
35 |
+
</script>-->
|
app/design/frontend/base/default/template/increasingly/pagetype.phtml
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category design
|
22 |
+
* @package frontend_base_default
|
23 |
+
* @author Increasingly_Analytics Solutions Ltd <magento@nosto.com>
|
24 |
+
* @copyright Copyright (c) 2013-2015 Nosto Solutions Ltd (http://www.nosto.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
/**
|
31 |
+
* Magento
|
32 |
+
*
|
33 |
+
* NOTICE OF LICENSE
|
34 |
+
*
|
35 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
36 |
+
* that is bundled with this package in the file LICENSE.txt.
|
37 |
+
* It is also available through the world-wide-web at this URL:
|
38 |
+
* http://opensource.org/licenses/osl-3.0.php
|
39 |
+
* If you did not receive a copy of the license and are unable to
|
40 |
+
* obtain it through the world-wide-web, please send an email
|
41 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
42 |
+
*
|
43 |
+
* DISCLAIMER
|
44 |
+
*
|
45 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
46 |
+
* versions in the future. If you wish to customize Magento for your
|
47 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
48 |
+
*
|
49 |
+
* @category Increasingly
|
50 |
+
* @package Increasingly_Analytics
|
51 |
+
* @author Increasingly Pvt Ltd
|
52 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
53 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
54 |
+
*/
|
55 |
+
/**
|
56 |
+
* @var $this Increasingly_Analytics_Block_Meta
|
57 |
+
* @var $helper Increasingly_Analytics__Helper_Data
|
58 |
+
*/
|
59 |
+
$helper = Mage::helper('increasingly_analytics');
|
60 |
+
?>
|
61 |
+
|
62 |
+
<!-- Increasingly Page Tags -->
|
63 |
+
<div name="increasingly-page-type" content="<?php echo $this->getCurrentPageType(); ?>"></div>
|
64 |
+
<div id="increasingly-api-key" content="<?php echo $helper->getApiToken(); ?>"></div>
|
65 |
+
<div id="increasingly-form-key" content="<?php echo $this->getFormKey(); ?>"></div>
|
app/design/frontend/base/default/template/increasingly/product.phtml
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
|
29 |
+
<?php
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var $this Increasingly_Analytics_Block_Product
|
33 |
+
* @var $helper Increasingly_Analytics_Helper_Data
|
34 |
+
* @var $priceHelper Increasingly_Analytics_Helper_Price
|
35 |
+
* @var $dateHelper Increasingly_Analytics_Helper_Date
|
36 |
+
*/
|
37 |
+
$product = $this->getMetaProduct();
|
38 |
+
$helper = Mage::helper('increasingly_analytics');
|
39 |
+
$priceHelper = Mage::helper('increasingly_analytics/priceFormatter');
|
40 |
+
$dateHelper = Mage::helper('increasingly_analytics/dateFormatter');
|
41 |
+
|
42 |
+
?>
|
43 |
+
<!-- Increasingly Product Tagging -->
|
44 |
+
<div class="increasingly_product" style="display:none">
|
45 |
+
|
46 |
+
<!-- <span class="url"><?php echo $product->getUrl(); ?></span> -->
|
47 |
+
<span class="product_id"><?php echo $product->getProductId(); ?></span>
|
48 |
+
<!-- <span class="name"><?php echo $helper->escapeHtml($product->getName()); ?></span>
|
49 |
+
<span class="image_url"><?php echo $product->getImageUrl(); ?></span>
|
50 |
+
<span class="price"><?php echo $priceHelper->getFormattedPrice($product->getPrice()); ?></span>
|
51 |
+
<span class="price_currency_code"><?php echo $product->getCurrencyCode(); ?></span>
|
52 |
+
<span class="availability"><?php echo $product->getAvailability(); ?></span>
|
53 |
+
<?php foreach ($product->getCategories() as $category): ?>
|
54 |
+
<span class="category"><?php echo $helper->escapeHtml($category); ?></span>
|
55 |
+
<?php endforeach; ?>
|
56 |
+
<?php if ($product->getFullDescription()): ?>
|
57 |
+
<span class="description"><?php echo $helper->escapeHtml($product->getFullDescription()); ?></span>
|
58 |
+
<?php endif; ?>
|
59 |
+
<?php if ($product->getListPrice()): ?>
|
60 |
+
<span class="list_price"><?php echo $priceHelper->getFormattedPrice($product->getListPrice()); ?></span>
|
61 |
+
<?php endif; ?>
|
62 |
+
<?php if ($product->getBrand()): ?>
|
63 |
+
<span class="brand"><?php echo $helper->escapeHtml($product->getBrand()); ?></span>
|
64 |
+
<?php endif; ?>
|
65 |
+
<?php foreach ($product->getTags() as $type => $tags): ?>
|
66 |
+
<?php foreach ($tags as $tag): ?>
|
67 |
+
<span class="<?php echo $helper->quoteEscape($type); ?>"><?php echo $helper->escapeHtml($tag); ?></span>
|
68 |
+
<?php endforeach; ?>
|
69 |
+
<?php endforeach; ?>
|
70 |
+
<?php if ($product->getDatePublished()): ?>
|
71 |
+
<span class="date_published"><?php echo $dateHelper->getFormattedDate($product->getDatePublished()); ?></span>
|
72 |
+
<?php endif; ?> -->
|
73 |
+
</div>
|
74 |
+
<?php if ($this->getCurrentCategory()): ?>
|
75 |
+
<div class="increasingly_category" style="display:none"><?php echo $helper->escapeHtml($this->getCurrentCategory()); ?></div>
|
76 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/increasingly/track.phtml
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
20 |
+
*
|
21 |
+
* @category Increasingly
|
22 |
+
* @package Increasingly_Analytics
|
23 |
+
* @author Increasingly Pvt Ltd
|
24 |
+
* @copyright Copyright (c) 2015-2016 Increasingly Ltd (http://www.increasingly.co)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
<?php $helper = Mage::helper('increasingly_analytics'); ?>
|
29 |
+
<?php $events = $this->getTrackingEvents(); ?>
|
30 |
+
|
31 |
+
<script type="text/javascript">
|
32 |
+
$(document).on("click", "#btnaddtobasket", function () {
|
33 |
+
var tmpl = mageTemplate('#mage-template');
|
34 |
+
var data = {
|
35 |
+
data: {
|
36 |
+
name: 'John',
|
37 |
+
location: 'New York'
|
38 |
+
}
|
39 |
+
};
|
40 |
+
$('#target').after(
|
41 |
+
tmpl(data)
|
42 |
+
);
|
43 |
+
});
|
44 |
+
window.increasingly=window.increasingly||[],window.increasingly.queue=[],window.increasingly.methods=["identify","track"],
|
45 |
+
window.increasingly.filter=function(e){return function(){a=Array.prototype.slice.call(arguments);a.unshift(e);window.increasingly.queue.push(a);}};
|
46 |
+
|
47 |
+
for(var i=0;window.increasingly.methods.length>i;i++)
|
48 |
+
{
|
49 |
+
var mthd=window.increasingly.methods[i];
|
50 |
+
window.increasingly[mthd]=window.increasingly.filter(mthd);
|
51 |
+
}
|
52 |
+
|
53 |
+
window.increasingly.load=function(){var t=document;var n=t.getElementsByTagName("script")[0];var r=t.createElement("script");
|
54 |
+
r.type="text/javascript";r.async=true;r.src="http://www.increasingly.co/js/track.js";n.parentNode.insertBefore(r,n);};
|
55 |
+
|
56 |
+
window.increasingly.loadJs=function(){var t=document;var n=t.getElementsByTagName("script")[0];var r=t.createElement("script");
|
57 |
+
r.type="text/javascript";r.async=true;r.src="http://www.increasingly.co/js/increasingly.js";n.parentNode.insertBefore(r,n);};
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
increasingly.load();
|
63 |
+
increasingly.loadJs();
|
64 |
+
<?php foreach ($events as $trackEvent) : ?>
|
65 |
+
|
66 |
+
<?php if($trackEvent['method'] == 'track') : ?>
|
67 |
+
increasingly.track("<?php echo $trackEvent['event_type']; ?>", "<?php echo base64_encode(json_encode($trackEvent)); ?>");
|
68 |
+
<?php endif; ?>
|
69 |
+
|
70 |
+
<?php endforeach; ?>
|
71 |
+
</script>
|
app/etc/modules/Increasingly_Analytics.xml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Increasingly_Analytics>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
<depends>
|
8 |
+
<Mage_Checkout/>
|
9 |
+
</depends>
|
10 |
+
</Increasingly_Analytics>
|
11 |
+
</modules>
|
12 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Increasingly_Analytics</name>
|
4 |
+
<version>1.0.1</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="https://opensource.org/licenses/osl-3.0.php">Open Software License (OSL)</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Increase basket size using personalised smart bundling
|
10 |
+
</summary>
|
11 |
+
<description>Increasingly - Smart product bundling for Magento
|
12 |
+

|
13 |
+
Increasingly is a predictive selling technology. We increase your basket size.
|
14 |
+

|
15 |
+
Overview
|
16 |
+

|
17 |
+
Our smart product bundling platform drives up your basket size +12% by using cutting edge machine learning.
|
18 |
+

|
19 |
+
Amazon & several other large online retailers have long used product bundles as a way to drive up Average Order Value. They are able to do this because of their scale & technical resources. Increasingly delivers the power of bundling straight into your store, helping you drive up basket size.
|
20 |
+

|
21 |
+
It’s simple & easy to integrate yet delivers powerful results. 
|
22 |
+

|
23 |
+
Key Features
|
24 |
+

|
25 |
+
Personalised bundles: Our powerful algorithms drive personalised bundling experiences for your customers based on their behaviour, intent & propensity to purchase.
|
26 |
+

|
27 |
+
Dynamic Discounting: You can set discounts on bundles or allow our system to determine instances for discounting based on the customer's likelihood to buy.
|
28 |
+

|
29 |
+
Products together optimisation: Bundles are constantly tested on page to make sure that only the best performing bundles are shown.
|
30 |
+

|
31 |
+
Stock responsive: As your catalogue changes, so do your bundles. Out-of-stock bundles are automatically & instantly eliminated, giving your customers the best experience possible.
|
32 |
+

|
33 |
+
Mobile ready: Works on any device, any screen size & can also be integrated into a mobile app.
|
34 |
+

|
35 |
+
Brand and Category filtering: Full control within the dashboard. Don’t want to run bundles on a category, SKU or a brand? Increasingly has filtering built in to protect any filtering you may require.
|
36 |
+

|
37 |
+
Why Increasingly?
|
38 |
+

|
39 |
+
We are 100% focussed on helping retailers grow basket size using smart product bundling. ALL we do is bundling & so we spend ALL our time working on it – that’s what makes our results so amazing.
|
40 |
+

|
41 |
+
We only charge you a percentage of the uplift we deliver to you, so the solution pays for itself while delivering you new revenue.
|
42 |
+

|
43 |
+
It's free to try & we have a 14-day trial where you can test it for no-risk to you. It’s easy to setup and customise.
|
44 |
+

|
45 |
+
We have a dashboard which provides you with in depth analytics and insights on what's sells together & allows you to administer and manage your bundles.
|
46 |
+
</description>
|
47 |
+
<notes>dddd</notes>
|
48 |
+
<authors><author><name>Increasingly</name><user>Increasingly</user><email>renu@increasingly.co</email></author><author><name>Increasingly</name><user>Increasingly</user><email>shree@increasingly.co</email></author></authors>
|
49 |
+
<date>2016-06-09</date>
|
50 |
+
<time>16:51:30</time>
|
51 |
+
<contents><target name="magecommunity"><dir name="Increasingly"><dir name="Analytics"><dir name="Block"><file name="Addtocart.php" hash="3429b60b501c7681a3c79fd46138b787"/><dir name="Adminhtml"><file name="DataIntegration.php" hash="b7c543b33f563ef458d403df94c62a4c"/></dir><file name="Cart.php" hash="56c9f503b7c55d835cbd93c675dcc338"/><file name="Category.php" hash="3b87f305e0957dd1fdace455c1f0fa7c"/><file name="Element.php" hash="8d533705e7a3c1ada7d775a6d9282f43"/><file name="Embed.php" hash="5ba08a6642ed22d8bb1a84ab0501f8dc"/><file name="Pagetype.php" hash="5dc81c7c184031629399c7c5a982036e"/><file name="Product.php" hash="2da759eb9bd2bf13e5a8a92087981206"/><file name="Track.php" hash="aa6a9d870f14c4e3721675658dfb276e"/></dir><dir name="Helper"><file name="Data.php" hash="6d6fe43c72cf7baf91de7145c98df1a3"/><file name="DateFormatter.php" hash="d8f963bd1f9fe390e038a2065fd5c4c4"/><file name="PriceFormatter.php" hash="9bc46d3afb4612131a29b9a1c2b82fad"/><file name="ProductFormatter.php" hash="24324a2207485f281bdeba654c08a34c"/></dir><dir name="Model"><file name="Base.php" hash="957cc5bb083e9b49b5468c986a1e846a"/><file name="Bundle.php" hash="767a26eaefaed893d163737d64930933"/><file name="DataIntegration.php" hash="ff9dc202ea17e49ceaba09c6190492cd"/><dir name="Meta"><file name="Product.php" hash="6a037e5325193fae3147fc1a9891606c"/></dir><dir name="Mysql4"><dir name="Bundle"><file name="Collection.php" hash="021c49a92767b78e238477a3dc8da783"/></dir><file name="Bundle.php" hash="13baace5753c59b86a032f5b5e379830"/></dir><file name="Observer.php" hash="efd64c4e950498032cd7481a5c5d0817"/><file name="Product.php" hash="f473c25a470a2509b00a4a15ed8b857f"/></dir><dir name="controllers"><file name="AddbundletocartController.php" hash="a8d13fcbd249ebb8112f32c6e6edb5ad"/><dir name="Adminhtml"><file name="DataIntegrationController.php" hash="21110e0a5908740f13716967e652908e"/></dir><file name="ProductsApiController.php" hash="58c7e54788361cc25bdc1b49a2d86e09"/></dir><dir name="etc"><file name="config.xml" hash="222b073dbe641b013cd241760a380037"/></dir><dir name="sql"><dir name="setup"><file name="mysql-install-1.0.0.php" hash="130ffdfffab451f5d41fd6eb758841ee"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="increasingly"><file name="dataintegration.phtml" hash="8a730e566c21b2155d6f3e4ca73a1b6d"/></dir></dir><dir name="layout"><file name="increasingly_analytics.xml" hash="d859a26dba5142f02e514f28f507891c"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="increasingly"><file name="addtocart.phtml" hash="e3af2445ac014887b3072cf85dd81d4f"/><file name="cart.phtml" hash="9db284236bf7ffafc1d5aa8d5f46ba8d"/><file name="category.phtml" hash="75e77b9d1cbbd1e0129c0c10737461e6"/><file name="element.phtml" hash="c5f1cbbc02801009247409890172ca4e"/><file name="embed.phtml" hash="52cde76a239e3084ce3a1254b004a742"/><file name="pagetype.phtml" hash="9cbb3b6bd97f865da70c5ca860121a31"/><file name="product.phtml" hash="14d24b0ced5abc85619aa3538b21f2f7"/><file name="track.phtml" hash="b878cc208fe87e800d52bb6a97355d60"/></dir></dir><dir name="layout"><file name="increasingly_analytics.xml" hash="78766218deed3d60d4ab0fdee7729b91"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Increasingly_Analytics.xml" hash="d285a9ae62b5b0624b727e341fe8e005"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="increasingly"><file name="loader.gif" hash="a51c5608d01acf32df728f299767f82b"/></dir></dir></dir></dir></target></contents>
|
52 |
+
<compatible/>
|
53 |
+
<dependencies><required><php><min>5.2.0</min><max>5.6.0</max></php></required></dependencies>
|
54 |
+
</package>
|
skin/adminhtml/default/default/increasingly/loader.gif
ADDED
Binary file
|