Version Notes
- Added language, isNewCustomer and customer group into custom variables
Download this release
Release Info
Developer | Maxime Pruvost |
Extension | cartsguru |
Version | 1.2.16 |
Comparing to | |
See all releases |
Code changes from version 1.2.15 to 1.2.16
- app/code/local/Cartsguru/Helper/Data.php +42 -3
- app/code/local/Cartsguru/Model/Webservice.php +25 -7
- app/code/local/Cartsguru/etc/config.xml +1 -1
- app/code/local/Cartsguru/sql/cartsguru_setup/upgrade-1.2.14-1.2.15.php +6 -0
- app/code/local/Cartsguru/sql/cartsguru_setup/upgrade-1.2.15-1.2.16.php +6 -0
- js/cartsguru/checkout.js +1 -0
- package.xml +5 -5
app/code/local/Cartsguru/Helper/Data.php
CHANGED
@@ -4,7 +4,46 @@
|
|
4 |
* Class of Magento core helper abstraction
|
5 |
* Class Cartsguru_Helper_Data
|
6 |
*/
|
7 |
-
class Cartsguru_Helper_Data extends Mage_Core_Helper_Abstract
|
8 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
* Class of Magento core helper abstraction
|
5 |
* Class Cartsguru_Helper_Data
|
6 |
*/
|
7 |
+
class Cartsguru_Helper_Data extends Mage_Core_Helper_Abstract
|
8 |
+
{
|
9 |
+
// Get customer language from browser
|
10 |
+
public function getBrowserLanguage()
|
11 |
+
{
|
12 |
+
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
13 |
+
foreach (explode(",", strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $accept) {
|
14 |
+
if (preg_match("!([a-z-]+)(;q=([0-9\\.]+))?!", trim($accept), $found)) {
|
15 |
+
$langs[] = $found[1];
|
16 |
+
$quality[] = (isset($found[3]) ? (float) $found[3] : 1.0);
|
17 |
+
}
|
18 |
+
}
|
19 |
+
// Order the codes by quality
|
20 |
+
array_multisort($quality, SORT_NUMERIC, SORT_DESC, $langs);
|
21 |
+
// get list of stores and use the store code for the key
|
22 |
+
$stores = Mage::app()->getStores(false, true);
|
23 |
+
// iterate through languages found in the accept-language header
|
24 |
+
foreach ($langs as $lang) {
|
25 |
+
$lang = substr($lang, 0, 2);
|
26 |
+
return $lang;
|
27 |
+
}
|
28 |
+
}
|
29 |
+
return null;
|
30 |
+
}
|
31 |
|
32 |
+
// Get customer group name
|
33 |
+
public function getCustomerGroupName()
|
34 |
+
{
|
35 |
+
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
|
36 |
+
$groupName = Mage::getSingleton('customer/group')->load($groupId)->getData('customer_group_code');
|
37 |
+
return strtolower($groupName);
|
38 |
+
}
|
39 |
+
|
40 |
+
// Check if customer has orders
|
41 |
+
public function isNewCustomer($email)
|
42 |
+
{
|
43 |
+
if ($email && $email !== '') {
|
44 |
+
$orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('customer_email', $email);
|
45 |
+
return $orders->count() === 0;
|
46 |
+
}
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
}
|
app/code/local/Cartsguru/Model/Webservice.php
CHANGED
@@ -17,7 +17,7 @@ class Cartsguru_Model_Webservice
|
|
17 |
const QUOTES_CACHE_TAG = 'cartsguru_carts';
|
18 |
const QUOTES_CACHE_TTL = 1800; // 30min in seconds
|
19 |
|
20 |
-
const _CARTSGURU_VERSION_ = '1.2.
|
21 |
|
22 |
protected function getStoreFromAdmin(){
|
23 |
$store_id = null;
|
@@ -219,6 +219,7 @@ class Cartsguru_Model_Webservice
|
|
219 |
*/
|
220 |
public function getOrderData($order, $store = null)
|
221 |
{
|
|
|
222 |
//Order must have a status
|
223 |
if (!$order->getStatus()){
|
224 |
return null;
|
@@ -234,6 +235,13 @@ class Cartsguru_Model_Webservice
|
|
234 |
//Items details
|
235 |
$items = $this->getItemsData($order);
|
236 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
return array(
|
238 |
'siteId' => $this->getStoreConfig('siteid', $store), // SiteId is part of plugin configuration
|
239 |
'id' => $order->getIncrementId(), // Order reference, the same display to the buyer
|
@@ -252,7 +260,8 @@ class Cartsguru_Model_Webservice
|
|
252 |
'email' => $this->notEmpty($email), // Email of the buye
|
253 |
'phoneNumber' => $this->notEmpty($address->getTelephone()), // Landline phone number of buyer (internationnal format)
|
254 |
'countryCode' => $this->notEmpty($address->getCountryId()), // Country code of buyer
|
255 |
-
'items' => $items
|
|
|
256 |
);
|
257 |
}
|
258 |
|
@@ -270,7 +279,7 @@ class Cartsguru_Model_Webservice
|
|
270 |
}
|
271 |
|
272 |
//Get data, stop if none
|
273 |
-
$orderData = $this->getOrderData($order
|
274 |
if (empty($orderData)) {
|
275 |
return;
|
276 |
}
|
@@ -302,6 +311,7 @@ class Cartsguru_Model_Webservice
|
|
302 |
*/
|
303 |
public function getAbadonnedCartData($quote, $store = null)
|
304 |
{
|
|
|
305 |
//Customer data
|
306 |
$gender = $this->genderMapping($quote->getCustomerGender());
|
307 |
|
@@ -326,7 +336,7 @@ class Cartsguru_Model_Webservice
|
|
326 |
}
|
327 |
}
|
328 |
|
329 |
-
if ($address){
|
330 |
if (!$phone){
|
331 |
$phone = $address->getTelephone();
|
332 |
}
|
@@ -335,7 +345,7 @@ class Cartsguru_Model_Webservice
|
|
335 |
}
|
336 |
}
|
337 |
|
338 |
-
if ($customer){
|
339 |
$customerAddress = $customer->getDefaultBillingAddress();
|
340 |
|
341 |
if ($customerAddress && !$phone){
|
@@ -346,6 +356,13 @@ class Cartsguru_Model_Webservice
|
|
346 |
}
|
347 |
}
|
348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
//Recover link
|
350 |
$recoverUrl = ($quote->getData('cartsguru_token')) ?
|
351 |
Mage::getBaseUrl() . 'cartsguru/recovercart?cart_id=' . $quote->getId() . '&cart_token=' . $quote->getData('cartsguru_token') :
|
@@ -375,7 +392,8 @@ class Cartsguru_Model_Webservice
|
|
375 |
'phoneNumber' => $this->notEmpty($phone), // Landline phone number of buyer (internationnal format)
|
376 |
'countryCode' => $this->notEmpty($country), // Country code of the buyer
|
377 |
'recoverUrl' => $recoverUrl, // Direct link to recover the cart
|
378 |
-
'items' => $items
|
|
|
379 |
);
|
380 |
}
|
381 |
|
@@ -466,7 +484,7 @@ class Cartsguru_Model_Webservice
|
|
466 |
|
467 |
return array(
|
468 |
'siteId' => $this->getStoreConfig('siteid', $store), // SiteId is part of plugin configuration
|
469 |
-
'accountId' => $customer->
|
470 |
'civility' => $gender, // Use string in this list : 'mister','madam','miss'
|
471 |
'lastname' => $this->notEmpty($lastname), // Lastname of the buyer
|
472 |
'firstname' => $this->notEmpty($firstname), // Firstname of the buyer
|
17 |
const QUOTES_CACHE_TAG = 'cartsguru_carts';
|
18 |
const QUOTES_CACHE_TTL = 1800; // 30min in seconds
|
19 |
|
20 |
+
const _CARTSGURU_VERSION_ = '1.2.16';
|
21 |
|
22 |
protected function getStoreFromAdmin(){
|
23 |
$store_id = null;
|
219 |
*/
|
220 |
public function getOrderData($order, $store = null)
|
221 |
{
|
222 |
+
$helper = Mage::helper('cartsguru');
|
223 |
//Order must have a status
|
224 |
if (!$order->getStatus()){
|
225 |
return null;
|
235 |
//Items details
|
236 |
$items = $this->getItemsData($order);
|
237 |
|
238 |
+
// Custom fields
|
239 |
+
$custom = array(
|
240 |
+
'language' => $helper->getBrowserLanguage(),
|
241 |
+
'customerGroup' => $helper->getCustomerGroupName(),
|
242 |
+
'isNewCustomer' => $helper->isNewCustomer($email)
|
243 |
+
);
|
244 |
+
|
245 |
return array(
|
246 |
'siteId' => $this->getStoreConfig('siteid', $store), // SiteId is part of plugin configuration
|
247 |
'id' => $order->getIncrementId(), // Order reference, the same display to the buyer
|
260 |
'email' => $this->notEmpty($email), // Email of the buye
|
261 |
'phoneNumber' => $this->notEmpty($address->getTelephone()), // Landline phone number of buyer (internationnal format)
|
262 |
'countryCode' => $this->notEmpty($address->getCountryId()), // Country code of buyer
|
263 |
+
'items' => $items, // Details
|
264 |
+
'custom' => $custom // Custom fields array
|
265 |
);
|
266 |
}
|
267 |
|
279 |
}
|
280 |
|
281 |
//Get data, stop if none
|
282 |
+
$orderData = $this->getOrderData($order, $store);
|
283 |
if (empty($orderData)) {
|
284 |
return;
|
285 |
}
|
311 |
*/
|
312 |
public function getAbadonnedCartData($quote, $store = null)
|
313 |
{
|
314 |
+
$helper = Mage::helper('cartsguru');
|
315 |
//Customer data
|
316 |
$gender = $this->genderMapping($quote->getCustomerGender());
|
317 |
|
336 |
}
|
337 |
}
|
338 |
|
339 |
+
if ($address) {
|
340 |
if (!$phone){
|
341 |
$phone = $address->getTelephone();
|
342 |
}
|
345 |
}
|
346 |
}
|
347 |
|
348 |
+
if ($customer) {
|
349 |
$customerAddress = $customer->getDefaultBillingAddress();
|
350 |
|
351 |
if ($customerAddress && !$phone){
|
356 |
}
|
357 |
}
|
358 |
|
359 |
+
// Custom fields
|
360 |
+
$custom = array(
|
361 |
+
'language' => $helper->getBrowserLanguage(),
|
362 |
+
'customerGroup' => $helper->getCustomerGroupName(),
|
363 |
+
'isNewCustomer' => $helper->isNewCustomer($email)
|
364 |
+
);
|
365 |
+
|
366 |
//Recover link
|
367 |
$recoverUrl = ($quote->getData('cartsguru_token')) ?
|
368 |
Mage::getBaseUrl() . 'cartsguru/recovercart?cart_id=' . $quote->getId() . '&cart_token=' . $quote->getData('cartsguru_token') :
|
392 |
'phoneNumber' => $this->notEmpty($phone), // Landline phone number of buyer (internationnal format)
|
393 |
'countryCode' => $this->notEmpty($country), // Country code of the buyer
|
394 |
'recoverUrl' => $recoverUrl, // Direct link to recover the cart
|
395 |
+
'items' => $items, // Details
|
396 |
+
'custom' => $custom // Custom fields array
|
397 |
);
|
398 |
}
|
399 |
|
484 |
|
485 |
return array(
|
486 |
'siteId' => $this->getStoreConfig('siteid', $store), // SiteId is part of plugin configuration
|
487 |
+
'accountId' => $customer->getEmail(), // Account id of the customer
|
488 |
'civility' => $gender, // Use string in this list : 'mister','madam','miss'
|
489 |
'lastname' => $this->notEmpty($lastname), // Lastname of the buyer
|
490 |
'firstname' => $this->notEmpty($firstname), // Firstname of the buyer
|
app/code/local/Cartsguru/etc/config.xml
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<!-- plugin name -->
|
4 |
<modules>
|
5 |
<Cartsguru>
|
6 |
-
<version>1.2.
|
7 |
</Cartsguru>
|
8 |
</modules>
|
9 |
<global>
|
3 |
<!-- plugin name -->
|
4 |
<modules>
|
5 |
<Cartsguru>
|
6 |
+
<version>1.2.16</version>
|
7 |
</Cartsguru>
|
8 |
</modules>
|
9 |
<global>
|
app/code/local/Cartsguru/sql/cartsguru_setup/upgrade-1.2.14-1.2.15.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
$installer->endSetup();
|
app/code/local/Cartsguru/sql/cartsguru_setup/upgrade-1.2.15-1.2.16.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
3 |
+
$installer = $this;
|
4 |
+
|
5 |
+
$installer->startSetup();
|
6 |
+
$installer->endSetup();
|
js/cartsguru/checkout.js
CHANGED
@@ -38,6 +38,7 @@
|
|
38 |
var data = [];
|
39 |
for (var item in fields) {
|
40 |
if (fields.hasOwnProperty(item)) {
|
|
|
41 |
if (item === 'email' && fields[item].value === '') {
|
42 |
return false;
|
43 |
}
|
38 |
var data = [];
|
39 |
for (var item in fields) {
|
40 |
if (fields.hasOwnProperty(item)) {
|
41 |
+
// Only if email is set
|
42 |
if (item === 'email' && fields[item].value === '') {
|
43 |
return false;
|
44 |
}
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>cartsguru</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
@@ -16,11 +16,11 @@ Effortlessly reduce the number of abandoned shopping carts by automating telepho
|
|
16 |

|
17 |
- SMS Callback & Push SMS
|
18 |
Send to your prospective customers having abandoned a cart, an SMS suggesting a free call back from your customer relations service, a straightforward SMS reminder or an SMS offering a personalized discount</description>
|
19 |
-
<notes>-
|
20 |
<authors><author><name>Maxime Pruvost</name><user>cgmaximepruvost</user><email>maxime@carts.guru</email></author></authors>
|
21 |
-
<date>2016-11-
|
22 |
-
<time>15:
|
23 |
-
<contents><target name="magelocal"><dir name="Cartsguru"><dir name="Helper"><file name="Data.php" hash="
|
24 |
<compatible/>
|
25 |
<dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
|
26 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>cartsguru</name>
|
4 |
+
<version>1.2.16</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
16 |

|
17 |
- SMS Callback & Push SMS
|
18 |
Send to your prospective customers having abandoned a cart, an SMS suggesting a free call back from your customer relations service, a straightforward SMS reminder or an SMS offering a personalized discount</description>
|
19 |
+
<notes>- Added language, isNewCustomer and customer group into custom variables</notes>
|
20 |
<authors><author><name>Maxime Pruvost</name><user>cgmaximepruvost</user><email>maxime@carts.guru</email></author></authors>
|
21 |
+
<date>2016-11-24</date>
|
22 |
+
<time>15:01:31</time>
|
23 |
+
<contents><target name="magelocal"><dir name="Cartsguru"><dir name="Helper"><file name="Data.php" hash="059fae47f93dda68f37c47d924e0d8a6"/><file name="Tools.php" hash="612133db113c08e7de7ab94a86d23e34"/></dir><dir name="Model"><file name="Observer.php" hash="93ad478de9ac40d76c65dd1054d9f5a5"/><file name="Webservice.php" hash="5cdbe8864004c0d68959f5964ce4b063"/></dir><dir name="controllers"><file name="IndexController.php" hash="108acaab218e2a5e79a12677f83ebc29"/><file name="RecovercartController.php" hash="fab55c8774843ed11e939ee6df1ce0ed"/><file name="SaveaccountController.php" hash="6b490eca17f516a4f95bba9d4c45d30b"/></dir><dir name="etc"><file name="config.xml" hash="aca22c0f5af04c740491c83adbe50b74"/><file name="system.xml" hash="cb0fbf86d2be47dbd719739ee79c4cba"/></dir><dir name="sql"><dir name="cartsguru_setup"><file name="install-1.0.0.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.0.0-1.0.1.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.0.1-1.0.2.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.0.2-1.1.0.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.0-1.1.1.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.1-1.1.2.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.2-1.1.3.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.3-1.1.4 .php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.4-1.1.5.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.1.5-1.2.0.php" hash="066c5cfb9870c04737cba2d2edb30a40"/><file name="upgrade-1.2.0-1.2.1.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.1-1.2.2.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.10-1.2.11.php" hash="84cb92331d31afda4f06aca50dbd597e"/><file name="upgrade-1.2.11-1.2.12.php" hash="84cb92331d31afda4f06aca50dbd597e"/><file name="upgrade-1.2.12-1.2.13.php" hash="84cb92331d31afda4f06aca50dbd597e"/><file name="upgrade-1.2.13-1.2.14.php" hash="84cb92331d31afda4f06aca50dbd597e"/><file name="upgrade-1.2.14-1.2.15.php" hash="c96e44a4737e1d8b0f4915c55a67c048"/><file name="upgrade-1.2.15-1.2.16.php" hash="c96e44a4737e1d8b0f4915c55a67c048"/><file name="upgrade-1.2.2-1.2.3.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.3-1.2.4.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.4-1.2.5.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.5-1.2.6.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.6-1.2.7.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.7-1.2.8.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.8-1.2.9.php" hash="381716ae5001678f8bcc6680bad68015"/><file name="upgrade-1.2.9-1.2.10.php" hash="84cb92331d31afda4f06aca50dbd597e"/></dir></dir></dir></target><target name="magelocale"><dir name="fr_FR"><file name="CartsGuru.csv" hash="b6d51893c33ddef1d53372d3a23b036c"/></dir><dir name="en_US"><file name="CartsGuru.csv" hash="921cb4133db47471456759443bb269f5"/></dir></target><target name="mageetc"><dir name="modules"><file name="Cartsguru.xml" hash="32bfa7d63b1a5b6b8f7977bf31af4e28"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="cartsguru.xml" hash="105f906b9b304bb96b888a9afbefca66"/></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="cartsguru"><file name="checkout.js" hash="1be2d62171ffbafe51f66dc1abc1a332"/></dir></dir></target></contents>
|
24 |
<compatible/>
|
25 |
<dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
|
26 |
</package>
|