save cartsguru module

This commit is contained in:
Srv Privilege de marque 2017-05-31 16:44:07 +02:00
parent a196359377
commit 1d15109dca
61 changed files with 4346 additions and 958 deletions

View File

@ -24,227 +24,226 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
if ((bool)Configuration::get('PS_MOBILE_DEVICE')) if ((bool)Configuration::get('PS_MOBILE_DEVICE') && !class_exists('Mobile_Detect')) {
require_once(_PS_MODULE_DIR_ . '/mobile_theme/Mobile_Detect.php'); require_once(_PS_MODULE_DIR_ . '/mobile_theme/Mobile_Detect.php');
}
// Retro 1.3, 'class_exists' cause problem with autoload... // Retro 1.3, 'class_exists' cause problem with autoload...
if (version_compare(_PS_VERSION_, '1.4', '<')) if (version_compare(_PS_VERSION_, '1.4', '<')) {
{ // Not exist for 1.3
// Not exist for 1.3 class Shop extends ObjectModel
class Shop extends ObjectModel {
{ public $id = 1;
public $id = 1; public $id_shop_group = 1;
public $id_shop_group = 1;
public function __construct() public function __construct()
{ {
} }
public static function getShops() public static function getShops()
{ {
return array( return array(
array('id_shop' => 1, 'name' => 'Default shop') array('id_shop' => 1, 'name' => 'Default shop')
); );
} }
public static function getCurrentShop() public static function getCurrentShop()
{ {
return 1; return 1;
} }
} }
class Logger
{
public static function AddLog($message, $severity = 2)
{
$fp = fopen(dirname(__FILE__).'/../logs.txt', 'a+');
fwrite($fp, '['.(int)$severity.'] '.Tools::safeOutput($message));
fclose($fp);
}
}
class Logger
{
public static function AddLog($message, $severity = 2)
{
$fp = fopen(dirname(__FILE__).'/../logs.txt', 'a+');
fwrite($fp, '['.(int)$severity.'] '.Tools::safeOutput($message));
fclose($fp);
}
}
} }
// Not exist for 1.3 and 1.4 // Not exist for 1.3 and 1.4
class Context class Context
{ {
/** /**
* @var Context * @var Context
*/ */
protected static $instance; protected static $instance;
/** /**
* @var Cart * @var Cart
*/ */
public $cart; public $cart;
/** /**
* @var Customer * @var Customer
*/ */
public $customer; public $customer;
/** /**
* @var Cookie * @var Cookie
*/ */
public $cookie; public $cookie;
/** /**
* @var Link * @var Link
*/ */
public $link; public $link;
/** /**
* @var Country * @var Country
*/ */
public $country; public $country;
/** /**
* @var Employee * @var Employee
*/ */
public $employee; public $employee;
/** /**
* @var Controller * @var Controller
*/ */
public $controller; public $controller;
/** /**
* @var Language * @var Language
*/ */
public $language; public $language;
/** /**
* @var Currency * @var Currency
*/ */
public $currency; public $currency;
/** /**
* @var AdminTab * @var AdminTab
*/ */
public $tab; public $tab;
/** /**
* @var Shop * @var Shop
*/ */
public $shop; public $shop;
/** /**
* @var Smarty * @var Smarty
*/ */
public $smarty; public $smarty;
/** /**
* @ var Mobile Detect * @ var Mobile Detect
*/ */
public $mobile_detect; public $mobile_detect;
/** /**
* @var boolean|string mobile device of the customer * @var boolean|string mobile device of the customer
*/ */
protected $mobile_device; protected $mobile_device;
public function __construct() public function __construct()
{ {
global $cookie, $cart, $smarty, $link; global $cookie, $cart, $smarty, $link;
$this->tab = null; $this->tab = null;
$this->cookie = $cookie; $this->cookie = $cookie;
$this->cart = $cart; $this->cart = $cart;
$this->smarty = $smarty; $this->smarty = $smarty;
$this->link = $link; $this->link = $link;
$this->controller = new ControllerBackwardModule(); $this->controller = new ControllerBackwardModule();
if (is_object($cookie)) if (is_object($cookie)) {
{ $this->currency = new Currency((int)$cookie->id_currency);
$this->currency = new Currency((int)$cookie->id_currency); $this->language = new Language((int)$cookie->id_lang);
$this->language = new Language((int)$cookie->id_lang); $this->country = new Country((int)$cookie->id_country);
$this->country = new Country((int)$cookie->id_country); $this->customer = new CustomerBackwardModule((int)$cookie->id_customer);
$this->customer = new CustomerBackwardModule((int)$cookie->id_customer); $this->employee = new Employee((int)$cookie->id_employee);
$this->employee = new Employee((int)$cookie->id_employee); } else {
} $this->currency = null;
else $this->language = null;
{ $this->country = null;
$this->currency = null; $this->customer = null;
$this->language = null; $this->employee = null;
$this->country = null; }
$this->customer = null;
$this->employee = null;
}
$this->shop = new ShopBackwardModule(); $this->shop = new ShopBackwardModule();
if ((bool)Configuration::get('PS_MOBILE_DEVICE')) if ((bool)Configuration::get('PS_MOBILE_DEVICE')) {
$this->mobile_detect = new Mobile_Detect(); $this->mobile_detect = new Mobile_Detect();
} }
}
public function getMobileDevice() public function getMobileDevice()
{ {
if (is_null($this->mobile_device)) if (is_null($this->mobile_device)) {
{ $this->mobile_device = false;
$this->mobile_device = false; if ($this->checkMobileContext()) {
if ($this->checkMobileContext()) switch ((int)Configuration::get('PS_MOBILE_DEVICE')) {
{ case 0: // Only for mobile device
switch ((int)Configuration::get('PS_MOBILE_DEVICE')) if ($this->mobile_detect->isMobile() && !$this->mobile_detect->isTablet()) {
{ $this->mobile_device = true;
case 0: // Only for mobile device }
if ($this->mobile_detect->isMobile() && !$this->mobile_detect->isTablet()) break;
$this->mobile_device = true; case 1: // Only for touchpads
break; if ($this->mobile_detect->isTablet() && !$this->mobile_detect->isMobile()) {
case 1: // Only for touchpads $this->mobile_device = true;
if ($this->mobile_detect->isTablet() && !$this->mobile_detect->isMobile()) }
$this->mobile_device = true; break;
break; case 2: // For touchpad or mobile devices
case 2: // For touchpad or mobile devices if ($this->mobile_detect->isMobile() || $this->mobile_detect->isTablet()) {
if ($this->mobile_detect->isMobile() || $this->mobile_detect->isTablet()) $this->mobile_device = true;
$this->mobile_device = true; }
break; break;
} }
} }
} }
return $this->mobile_device; return $this->mobile_device;
} }
protected function checkMobileContext() protected function checkMobileContext()
{ {
return isset($_SERVER['HTTP_USER_AGENT']) return isset($_SERVER['HTTP_USER_AGENT'])
&& (bool)Configuration::get('PS_MOBILE_DEVICE') && (bool)Configuration::get('PS_MOBILE_DEVICE')
&& !Context::getContext()->cookie->no_mobile; && !Context::getContext()->cookie->no_mobile;
} }
/** /**
* Get a singleton context * Get a singleton context
* *
* @return Context * @return Context
*/ */
public static function getContext() public static function getContext()
{ {
if (!isset(self::$instance)) if (!isset(self::$instance)) {
self::$instance = new Context(); self::$instance = new Context();
return self::$instance; }
} return self::$instance;
}
/** /**
* Clone current context * Clone current context
* *
* @return Context * @return Context
*/ */
public function cloneContext() public function cloneContext()
{ {
return clone $this; return clone $this;
} }
/** /**
* @return int Shop context type (Shop::CONTEXT_ALL, etc.) * @return int Shop context type (Shop::CONTEXT_ALL, etc.)
*/ */
public static function shop() public static function shop()
{ {
if (!self::$instance->shop->getContextType()) if (!self::$instance->shop->getContextType()) {
return ShopBackwardModule::CONTEXT_ALL; return ShopBackwardModule::CONTEXT_ALL;
return self::$instance->shop->getContextType(); }
} return self::$instance->shop->getContextType();
}
} }
/** /**
@ -252,37 +251,37 @@ class Context
*/ */
class ShopBackwardModule extends Shop class ShopBackwardModule extends Shop
{ {
const CONTEXT_ALL = 1; const CONTEXT_ALL = 1;
public $id = 1; public $id = 1;
public $id_shop_group = 1; public $id_shop_group = 1;
public function getContextType() public function getContextType()
{ {
return ShopBackwardModule::CONTEXT_ALL; return ShopBackwardModule::CONTEXT_ALL;
} }
// Simulate shop for 1.3 / 1.4 // Simulate shop for 1.3 / 1.4
public function getID() public function getID()
{ {
return 1; return 1;
} }
/** /**
* Get shop theme name * Get shop theme name
* *
* @return string * @return string
*/ */
public function getTheme() public function getTheme()
{ {
return _THEME_NAME_; return _THEME_NAME_;
} }
public function isFeatureActive() public function isFeatureActive()
{ {
return false; return false;
} }
} }
/** /**
@ -291,33 +290,33 @@ class ShopBackwardModule extends Shop
*/ */
class ControllerBackwardModule class ControllerBackwardModule
{ {
/** /**
* @param $js_uri * @param $js_uri
* @return void * @return void
*/ */
public function addJS($js_uri) public function addJS($js_uri)
{ {
Tools::addJS($js_uri); Tools::addJS($js_uri);
} }
/** /**
* @param $css_uri * @param $css_uri
* @param string $css_media_type * @param string $css_media_type
* @return void * @return void
*/ */
public function addCSS($css_uri, $css_media_type = 'all') public function addCSS($css_uri, $css_media_type = 'all')
{ {
Tools::addCSS($css_uri, $css_media_type); Tools::addCSS($css_uri, $css_media_type);
} }
public function addJquery()
{
if (_PS_VERSION_ < '1.5')
$this->addJS(_PS_JS_DIR_.'jquery/jquery-1.4.4.min.js');
elseif (_PS_VERSION_ >= '1.5')
$this->addJS(_PS_JS_DIR_.'jquery/jquery-1.7.2.min.js');
}
public function addJquery()
{
if (_PS_VERSION_ < '1.5') {
$this->addJS(_PS_JS_DIR_.'jquery/jquery-1.4.4.min.js');
} elseif (_PS_VERSION_ >= '1.5') {
$this->addJS(_PS_JS_DIR_.'jquery/jquery-1.7.2.min.js');
}
}
} }
/** /**
@ -326,22 +325,24 @@ class ControllerBackwardModule
*/ */
class CustomerBackwardModule extends Customer class CustomerBackwardModule extends Customer
{ {
public $logged = false; public $logged = false;
/** /**
* Check customer informations and return customer validity * Check customer informations and return customer validity
* *
* @since 1.5.0 * @since 1.5.0
* @param boolean $with_guest * @param boolean $with_guest
* @return boolean customer validity * @return boolean customer validity
*/ */
public function isLogged($with_guest = false) public function isLogged($with_guest = false)
{ {
if (!$with_guest && $this->is_guest == 1) if (!$with_guest && $this->is_guest == 1) {
return false; return false;
}
/* Customer is valid only if it can be load and if object password is the same as database one */ /* Customer is valid only if it can be load and if object password is the same as database one */
if ($this->logged == 1 && $this->id && Validate::isUnsignedId($this->id) && Customer::checkPassword($this->id, $this->passwd)) if ($this->logged == 1 && $this->id && Validate::isUnsignedId($this->id) && Customer::checkPassword($this->id, $this->passwd)) {
return true; return true;
return false; }
} return false;
}
} }

View File

@ -29,20 +29,21 @@
*/ */
class BWDisplay extends FrontController class BWDisplay extends FrontController
{ {
// Assign template, on 1.4 create it else assign for 1.5 // Assign template, on 1.4 create it else assign for 1.5
public function setTemplate($template) public function setTemplate($template)
{ {
if (_PS_VERSION_ >= '1.5') if (_PS_VERSION_ >= '1.5') {
parent::setTemplate($template); parent::setTemplate($template);
else } else {
$this->template = $template; $this->template = $template;
} }
}
// Overload displayContent for 1.4 // Overload displayContent for 1.4
public function displayContent() public function displayContent()
{ {
parent::displayContent(); parent::displayContent();
echo Context::getContext()->smarty->fetch($this->template); echo Context::getContext()->smarty->fetch($this->template);
} }
} }

View File

@ -30,25 +30,25 @@
*/ */
// Get out if the context is already defined // Get out if the context is already defined
if (!in_array('Context', get_declared_classes())) if (!in_array('Context', get_declared_classes())) {
require_once(dirname(__FILE__).'/Context.php'); require_once(dirname(__FILE__).'/Context.php');
}
// Get out if the Display (BWDisplay to avoid any conflict)) is already defined // Get out if the Display (BWDisplay to avoid any conflict)) is already defined
if (!in_array('BWDisplay', get_declared_classes())) if (!in_array('BWDisplay', get_declared_classes())) {
require_once(dirname(__FILE__).'/Display.php'); require_once(dirname(__FILE__).'/Display.php');
}
// If not under an object we don't have to set the context // If not under an object we don't have to set the context
if (!isset($this)) if (!isset($this)) {
return; return;
else if (isset($this->context)) } elseif (isset($this->context)) {
{ // If we are under an 1.5 version and backoffice, we have to set some backward variable
// If we are under an 1.5 version and backoffice, we have to set some backward variable if (_PS_VERSION_ >= '1.5' && isset($this->context->employee->id) && $this->context->employee->id && isset(AdminController::$currentIndex) && !empty(AdminController::$currentIndex)) {
if (_PS_VERSION_ >= '1.5' && isset($this->context->employee->id) && $this->context->employee->id && isset(AdminController::$currentIndex) && !empty(AdminController::$currentIndex)) global $currentIndex;
{ $currentIndex = AdminController::$currentIndex;
global $currentIndex; }
$currentIndex = AdminController::$currentIndex; return;
}
return;
} }
$this->context = Context::getContext(); $this->context = Context::getContext();

View File

@ -2,20 +2,10 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.0.0
* @license Commercial license * @license Commercial license
* *
*************************************
** CARTS GURU *
** V 1.0.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

File diff suppressed because it is too large Load Diff

View File

@ -2,25 +2,13 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
abstract class CartGuruMapperAbstract abstract class CartsGuruMapperAbstract
{ {
public $id_lang; public $id_lang;
public $id_shop_group; public $id_shop_group;

View File

@ -2,27 +2,16 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruAccountMapper extends CartGuruMapperAbstract class CartsGuruAccountMapper extends CartsGuruMapperAbstract
{ {
/** /**
* (non-PHPdoc) * (non-PHPdoc)
* @see CartGuruMapperAbstract::mappObject() * @see CartsGuruMapperAbstract::mappObject()
*/ */
public function mappObject($customer, $params) public function mappObject($customer, $params)
{ {
@ -39,7 +28,7 @@ class CartGuruAccountMapper extends CartGuruMapperAbstract
$country_iso_code = $address['country_iso_code']; $country_iso_code = $address['country_iso_code'];
} }
return array( return array(
'accountId' => (string) $customer->id, // Account id of the customer 'accountId' => $this->notEmpty($customer->email), // Account id of the customer
'civility' => $gender, // Use string in this list : 'mister','madam' 'civility' => $gender, // Use string in this list : 'mister','madam'
'lastname' => $this->notEmpty($lastname), // Lastname of the buyer 'lastname' => $this->notEmpty($lastname), // Lastname of the buyer
'firstname' => $this->notEmpty($firstname), // Firstname of the buyer 'firstname' => $this->notEmpty($firstname), // Firstname of the buyer

View File

@ -2,38 +2,32 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruCartMapper extends CartGuruMapperAbstract class CartsGuruCartMapper extends CartsGuruMapperAbstract
{ {
/** /**
* (non-PHPdoc) * (non-PHPdoc)
* @see CartGuruMapperAbstract::mappObject() * @see CartsGuruMapperAbstract::mappObject()
*/ */
public function mappObject($cart, $params) public function mappObject($cart, $params)
{ {
$account_mapped = null;
// Check if we have customer data
if (array_key_exists('customer', $params)) {
$account_mapped = $params['customer'];
}
$customerGroups = Customer::getGroupsStatic((int) $cart->id_customer); $customerGroups = Customer::getGroupsStatic((int) $cart->id_customer);
if (defined(_CARTSGURU_ONLY_GROUP_) && !in_array(_CARTSGURU_ONLY_GROUP_, $customerGroups)) { if (defined('CARTSGURU_ONLY_GROUP') && !in_array(CARTSGURU_ONLY_GROUP, $customerGroups)) {
return null; return null;
} }
$cart_items = $cart->getProducts(); $cart_items = $cart->getProducts();
$items = array(); $items = array();
$product_mapper = new CartGuruProductMapper($this->id_lang, $this->id_shop_group, $this->id_shop); $product_mapper = new CartsGuruProductMapper($this->id_lang, $this->id_shop_group, $this->id_shop);
foreach ($cart_items as $cart_item) { foreach ($cart_items as $cart_item) {
$params = array('id_product_attribute' => (int)$cart_item['id_product_attribute']); $params = array('id_product_attribute' => (int)$cart_item['id_product_attribute']);
$product = new Product($cart_item['id_product'], false, $this->id_lang); $product = new Product($cart_item['id_product'], false, $this->id_lang);
@ -43,9 +37,12 @@ class CartGuruCartMapper extends CartGuruMapperAbstract
$product_mapped['totalATI'] = (float) $cart_item['total_wt']; $product_mapped['totalATI'] = (float) $cart_item['total_wt'];
$items[] = $product_mapped; $items[] = $product_mapped;
} }
$customer = new Customer((int) $cart->id_customer);
$account_mapper = new CartGuruAccountMapper($this->id_lang, $this->id_shop_group, $this->id_shop); if (!$account_mapped) {
$account_mapped = $account_mapper->create($customer); $customer = new Customer((int) $cart->id_customer);
$account_mapper = new CartsGuruAccountMapper($this->id_lang, $this->id_shop_group, $this->id_shop);
$account_mapped = $account_mapper->create($customer);
}
$currency = new Currency((int)$cart->id_currency); $currency = new Currency((int)$cart->id_currency);
@ -67,10 +64,32 @@ class CartGuruCartMapper extends CartGuruMapperAbstract
return null; return null;
} }
// Add Custom fields
$cart_mapped['custom'] = $this->getCustomFields($cart, $cart_mapped, $customerGroups);
return $cart_mapped; return $cart_mapped;
} }
public function getCartRecoverUrl($cart, $step = 1) /**
* Get custom fields of cart, can be overrided for custom use
*
* @param $cart
* @param $cart_mapped
* @param $customerGroups
* @return array
*/
protected function getCustomFields($cart, $cart_mapped, $customerGroups)
{
$context = Context::getContext();
return array(
'language' => $context->language->iso_code,
'customerGroup' => implode(',', CartsGuruHelper::getGroupNames($customerGroups, $context->language)),
'isNewCustomer' => CartsGuruHelper::isNewCustomer($cart_mapped['email'])
);
}
private function getCartRecoverUrl($cart, $step = 1)
{ {
$order_process = Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order'; $order_process = Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order';
$url = ''; $url = '';

View File

@ -0,0 +1,49 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
class CartsGuruHelper
{
/**
* Check count of orders to know if it's a new customer
*
* @param string $email Customer email
* @param boolean $excludeOne Exclude current order, so still a new customer just after first order
*
* @return boolean Returns if it's a new customer
*/
public static function isNewCustomer($email, $excludeOne = false)
{
$isMultiStoreSupported = version_compare(_PS_VERSION_, '1.5.0', '>=');
$sql = "SELECT o.id_order AS id FROM " . _DB_PREFIX_ . "orders o JOIN " . _DB_PREFIX_ . "customer c ON o.id_customer = c.id_customer WHERE c.email = '" . pSQL($email) . "'";
// Need filter on the good shop
if ($isMultiStoreSupported) {
$id_shop = (int)Context::getContext()->shop->id;
$sql .= ' and o.id_shop = ' . (int)$id_shop;
}
$orders = Db::getInstance()->ExecuteS($sql);
return $excludeOne ? count($orders) <= 1 : count($orders) === 0;
}
public static function getGroupNames($customerGroups, $language)
{
$customerGroupNames = array();
foreach ($customerGroups as $id) {
$group = new Group((int)$id);
if ($group) {
array_push($customerGroupNames, $group->name[(int)$language->id]);
}
}
return $customerGroupNames;
}
}

View File

@ -0,0 +1,167 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
class CartsGuruImageManager
{
/**
* Max execution time for image generation
*
* @var int
*/
const MAX_EXECUTION_TIME = 7200;
const THUMB_SIZE = 120;
public static function sortImageByWidth($i, $j)
{
return $i['width'] > $j['width'];
}
public static function findProductThumbnailName()
{
$imageTypes = ImageType::getImagesTypes('products');
$filtered = array();
foreach ($imageTypes as $imageType) {
if ($imageType['height'] >= self::THUMB_SIZE && $imageType['width'] >= self::THUMB_SIZE) {
$filtered[] = $imageType;
}
}
if (empty($filtered)) {
return null;
}
usort($filtered, array(
"CartsGuruImageManager",
"sortImageByWidth"
));
return $filtered[0]['name'];
}
public static function initProductThumbnail()
{
$imageType = self::findProductThumbnailName();
if ($imageType == null) {
self::insertCartsGuruImageType();
Configuration::updateValue('CARTSG_IMAGE_GENERATE', 0);
Configuration::updateValue('CARTSG_IMAGE_TYPE', 'cartsguru');
} else {
Configuration::updateValue('CARTSG_IMAGE_GENERATE', 1);
Configuration::updateValue('CARTSG_IMAGE_TYPE', $imageType);
}
}
public static function insertCartsGuruImageType()
{
$image_type = new ImageType();
$image_type->name = 'cartsguru';
$image_type->width = 120;
$image_type->height = 120;
$image_type->products = 1;
$image_type->categories = 0;
$image_type->manufacturers = 0;
$image_type->suppliers = 0;
$image_type->scenes = 0;
$image_type->stores = 0;
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$image_type->store = 0;
}
$image_type->add();
}
public static function deleteCartsGuruImageType()
{
$image_type = self::getCartsGuruImageType();
if ($image_type) {
self::deleteProductImageCG();
$imageType = new ImageType((int)$image_type['id_image_type']);
if (Validate::isLoadedObject($imageType)) {
$imageType->delete();
}
}
return true;
}
public static function getCartsGuruImageType()
{
return ImageType::getByNameNType('cartsguru', 'products');
}
public static function deleteProductImageCG()
{
$image_type = self::getCartsGuruImageType();
if (!$image_type) {
return;
}
$productsImages = Image::getAllImages();
foreach ($productsImages as $image) {
$imageObj = new Image($image['id_image']);
$imageObj->id_product = $image['id_product'];
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$img_folder = _PS_PROD_IMG_DIR_ . $image['id_product'] . '-' . $image['id_image'];
} else {
$img_folder = _PS_PROD_IMG_DIR_ . $imageObj->getImgFolder();
}
if (file_exists($img_folder)) {
$toDel = scandir($img_folder);
foreach ($toDel as $d) {
if (preg_match('/^[0-9]+\-' . $image_type['name'] . '\.jpg$/', $d)) {
if (file_exists($img_folder . $d)) {
unlink($img_folder . $d);
}
}
}
}
}
}
public static function generateProductImageCG()
{
$start_time = time();
ini_set('max_execution_time', self::MAX_EXECUTION_TIME); // ini_set may be disabled, we need the real value
$max_execution_time = (int)ini_get('max_execution_time');
$errors = array();
$img_cg_type = self::getCartsGuruImageType();
foreach (Image::getAllImages() as $image) {
$imageObj = new Image($image['id_image']);
$existing_img = '';
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$existing_img = _PS_PROD_IMG_DIR_ . $image['id_product'] . '-' . $image['id_image'] . '.jpg';
} else {
$existing_img = _PS_PROD_IMG_DIR_ . $imageObj->getExistingImgPath() . '.jpg';
}
if (file_exists($existing_img) && filesize($existing_img)) {
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$to_img_file_cg = _PS_PROD_IMG_DIR_ . $image['id_product'] . '-' . $image['id_image'] . '-' . Tools::stripslashes($img_cg_type['name']) . '.jpg';
} else {
$to_img_file_cg = _PS_PROD_IMG_DIR_ . $imageObj->getExistingImgPath() . '-' . Tools::stripslashes($img_cg_type['name']) . '.jpg';
}
if (!file_exists($to_img_file_cg)) {
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
if (!imageResize($existing_img, $to_img_file_cg, (int)$img_cg_type['width'], (int)$img_cg_type['height'])) {
$errors[] = sprintf('Original image is corrupt (%s) for product ID %2$d or bad permission on folder', $existing_img, (int)$imageObj->id_product);
}
} else {
if (!ImageManager::resize($existing_img, $to_img_file_cg, (int)$img_cg_type['width'], (int)$img_cg_type['height'])) {
$errors[] = sprintf(Tools::displayError('Original image is corrupt (%s) for product ID %2$d or bad permission on folder'), $existing_img, (int)$imageObj->id_product);
}
}
}
} else {
$errors[] = sprintf('Original image is missing or empty (%1$s) for product ID %2$d', $existing_img, (int)$imageObj->id_product);
}
if (time() - $start_time > $max_execution_time - 4) {
$errors[] = 'timeout';
return $errors;
}
}
if (!empty($errors)) {
return $errors;
}
Configuration::updateValue('CARTSG_IMAGE_GENERATE', 1);
return true;
}
}

View File

@ -2,37 +2,26 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruOrderMapper extends CartGuruMapperAbstract class CartsGuruOrderMapper extends CartsGuruMapperAbstract
{ {
/** /**
* @see CartGuruMapperAbstract::mappObject() * @see CartsGuruMapperAbstract::mappObject()
*/ */
public function mappObject($order, $params) public function mappObject($order, $params)
{ {
$customerGroups = Customer::getGroupsStatic((int) $order->id_customer); $customerGroups = Customer::getGroupsStatic((int) $order->id_customer);
if (defined(_CARTSGURU_ONLY_GROUP_) && !in_array(_CARTSGURU_ONLY_GROUP_, $customerGroups)) { if (defined('CARTSGURU_ONLY_GROUP') && !in_array(CARTSGURU_ONLY_GROUP, $customerGroups)) {
return null; return null;
} }
$order_items = $order->getProducts(); $order_items = $order->getProducts();
$items = array(); $items = array();
$product_mapper = new CartGuruProductMapper($this->id_lang, $this->id_shop_group, $this->id_shop); $product_mapper = new CartsGuruProductMapper($this->id_lang, $this->id_shop_group, $this->id_shop);
foreach ($order_items as $order_item) { foreach ($order_items as $order_item) {
$pmap_params = array('id_product_attribute' => $order_item['product_attribute_id']); $pmap_params = array('id_product_attribute' => $order_item['product_attribute_id']);
$product = new Product($order_item['product_id'], false, $this->id_lang); $product = new Product($order_item['product_id'], false, $this->id_lang);
@ -51,7 +40,7 @@ class CartGuruOrderMapper extends CartGuruMapperAbstract
} }
$customer = new Customer((int) $order->id_customer); $customer = new Customer((int) $order->id_customer);
$account_mapper = new CartGuruAccountMapper($this->id_lang, $this->id_shop_group, $this->id_shop); $account_mapper = new CartsGuruAccountMapper($this->id_lang, $this->id_shop_group, $this->id_shop);
$account_mapped = $account_mapper->create($customer, $params); $account_mapped = $account_mapper->create($customer, $params);
$status_cg_name = 'Undefined'; $status_cg_name = 'Undefined';
$order_state_id = 0; $order_state_id = 0;
@ -82,10 +71,38 @@ class CartGuruOrderMapper extends CartGuruMapperAbstract
'currency' => (string) $currency->iso_code, 'currency' => (string) $currency->iso_code,
'items' => $items 'items' => $items
); );
if (!empty($order->source)) {
$order_mapped['source'] = $order->source;
}
$order_mapped = array_merge($order_mapped, $account_mapped); $order_mapped = array_merge($order_mapped, $account_mapped);
// Add Custom fields
$order_mapped['custom'] = $this->getCustomFields($order, $order_mapped, $customerGroups);
return $order_mapped; return $order_mapped;
} }
/**
* Get custom fields of order, can be overrided for custom use
*
* @param $order
* @param $order_mapped
* @param $customerGroups
* @return array
*/
protected function getCustomFields($order, $order_mapped, $customerGroups)
{
$context = Context::getContext();
return array(
'language' => $context->language->iso_code,
'customerGroup' => implode(',', CartsGuruHelper::getGroupNames($customerGroups, $context->language)),
'isNewCustomer' => CartsGuruHelper::isNewCustomer($order_mapped['email'], true)
);
}
/** /**
* This method map prestashop status to api status * This method map prestashop status to api status
* priority * priority

View File

@ -2,27 +2,28 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruProductMapper extends CartGuruMapperAbstract class CartsGuruProductMapper extends CartsGuruMapperAbstract
{ {
public function getImageSizeName()
{
if (defined('CARTSGURU_IMAGE_SIZE')) {
return CARTSGURU_IMAGE_SIZE;
}
//since plug
$type = Configuration::get('CARTSG_IMAGE_TYPE');
return $type ? $type : 'cartsguru';
}
/** /**
* (non-PHPdoc) * (non-PHPdoc)
* @see CartGuruMapperAbstract::mappObject() * @see CartsGuruMapperAbstract::mappObject()
*/ */
public function mappObject($product, $params) public function mappObject($product, $params)
{ {
@ -50,7 +51,7 @@ class CartGuruProductMapper extends CartGuruMapperAbstract
$best_image = $this->getBestImageProduct($product->id, $id_product_attribute); $best_image = $this->getBestImageProduct($product->id, $id_product_attribute);
if ($best_image && (int)$best_image['id_image']) { if ($best_image && (int)$best_image['id_image']) {
$ids = $product->id.'-'.$best_image['id_image']; $ids = $product->id.'-'.$best_image['id_image'];
$image_cover_url = $this->link->getImageLink($product->link_rewrite, $ids, 'cartsguru'); $image_cover_url = $this->link->getImageLink($product->link_rewrite, $ids, $this->getImageSizeName());
} }
return (array( return (array(
'id' => (string) $product->id, // SKU or product id 'id' => (string) $product->id, // SKU or product id

View File

@ -2,25 +2,13 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruRAPI implements Iterator, ArrayAccess class CartsGuruRAPI implements Iterator, ArrayAccess
{ {
private $site_id; private $site_id;
private $auth_key; private $auth_key;
@ -29,6 +17,8 @@ class CartGuruRAPI implements Iterator, ArrayAccess
public $handle; // cURL resource handle. public $handle; // cURL resource handle.
public $isOldCurl; // Test result for curl version
// Populated after execution: // Populated after execution:
public $response; // Response body. public $response; // Response body.
public $headers; // Parsed reponse header object. public $headers; // Parsed reponse header object.
@ -45,13 +35,19 @@ class CartGuruRAPI implements Iterator, ArrayAccess
const API_PATH_CARTS = '/carts'; const API_PATH_CARTS = '/carts';
const API_PATH_SUBSCRIBE = '/customers';
const API_PATH_PROGRESS = '/prestashop/setup-progress';
const API_PATH_REGISTER = '/sites/:siteId/register-plugin'; const API_PATH_REGISTER = '/sites/:siteId/register-plugin';
const API_PATH_STATISTICS = '/sites/:siteId/stats/summary';
const API_PATH_IMPORT_ORDERS = '/import/orders'; const API_PATH_IMPORT_ORDERS = '/import/orders';
const API_PATH_IMPORT_CARTS = '/import/carts'; const API_PATH_IMPORT_CARTS = '/import/carts';
public function __construct($site_id, $auth_key, $options = array()) public function __construct($site_id = null, $auth_key = '', $options = array())
{ {
$this->site_id = $site_id; $this->site_id = $site_id;
$this->auth_key = $auth_key; $this->auth_key = $auth_key;
@ -78,6 +74,9 @@ class CartGuruRAPI implements Iterator, ArrayAccess
if (array_key_exists('decoders', $options)) { if (array_key_exists('decoders', $options)) {
$this->options['decoders'] = array_merge($default_options['decoders'], $options['decoders']); $this->options['decoders'] = array_merge($default_options['decoders'], $options['decoders']);
} }
$info = curl_version();
$this->isOldCurl = version_compare($info["version"], '7.35.0', '<');
} }
public function setOption($key, $value) public function setOption($key, $value)
@ -140,12 +139,12 @@ class CartGuruRAPI implements Iterator, ArrayAccess
public function offsetSet($key, $value) public function offsetSet($key, $value)
{ {
throw new CartGuruRAPIException("Decoded response data is immutable."); throw new CartsGuruRAPIException("Decoded response data is immutable.");
} }
public function offsetUnset($key) public function offsetUnset($key)
{ {
throw new CartGuruRAPIException("Decoded response data is immutable."); throw new CartsGuruRAPIException("Decoded response data is immutable.");
} }
// Request methods: // Request methods:
@ -175,7 +174,7 @@ class CartGuruRAPI implements Iterator, ArrayAccess
* @param array $parameters override parameter * @param array $parameters override parameter
* @param array $headers * @param array $headers
* @param string $sync * @param string $sync
* @return CartGuruRAPI with initialization (result) * @return CartsGuruRAPI with initialization (result)
*/ */
public function execute($path, $method = 'GET', $parameters = array(), $headers = array(), $sync = true) public function execute($path, $method = 'GET', $parameters = array(), $headers = array(), $sync = true)
{ {
@ -187,7 +186,8 @@ class CartGuruRAPI implements Iterator, ArrayAccess
CURLOPT_HEADER => true, CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => $client->options['user_agent'], CURLOPT_USERAGENT => $client->options['user_agent'],
CURLOPT_SSL_VERIFYPEER => false CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => $client->isOldCurl ? 0 : 2
); );
if (! $sync) { if (! $sync) {
/* /*
@ -285,7 +285,7 @@ class CartGuruRAPI implements Iterator, ArrayAccess
break; break;
} }
list ($key, $value) = explode(':', $line, 2); list($key, $value) = explode(':', $line, 2);
$key = trim(Tools::strtolower(str_replace('-', '_', $key))); $key = trim(Tools::strtolower(str_replace('-', '_', $key)));
$value = trim($value); $value = trim($value);
if (empty($headers[$key])) { if (empty($headers[$key])) {
@ -307,7 +307,7 @@ class CartGuruRAPI implements Iterator, ArrayAccess
public function getResponseFormat() public function getResponseFormat()
{ {
if (! $this->response) { if (! $this->response) {
throw new CartGuruRAPIException("A response must exist before it can be decoded."); throw new CartsGuruRAPIException("A response must exist before it can be decoded.");
} }
// User-defined format. // User-defined format.
@ -322,7 +322,7 @@ class CartGuruRAPI implements Iterator, ArrayAccess
} }
} }
throw new CartGuruRAPIException("Response format could not be determined."); throw new CartsGuruRAPIException("Response format could not be determined.");
} }
public function decodeResponse() public function decodeResponse()
@ -330,7 +330,7 @@ class CartGuruRAPI implements Iterator, ArrayAccess
if (empty($this->decoded_response)) { if (empty($this->decoded_response)) {
$format = $this->getResponseFormat(); $format = $this->getResponseFormat();
if (! array_key_exists($format, $this->options['decoders'])) { if (! array_key_exists($format, $this->options['decoders'])) {
throw new CartGuruRAPIException($format.' is not a supported ' . 'format'); throw new CartsGuruRAPIException($format.' is not a supported ' . 'format');
} }
$this->decoded_response = call_user_func($this->options['decoders'][$format], $this->response); $this->decoded_response = call_user_func($this->options['decoders'][$format], $this->response);
@ -344,14 +344,45 @@ class CartGuruRAPI implements Iterator, ArrayAccess
* *
* @return bool * @return bool
*/ */
public function checkAccess() public function checkAccess($adminUrl)
{ {
$fields = array( $fields = array(
'plugin' => 'prestashop', 'plugin' => 'prestashop',
'pluginVersion' => _CARTSGURU_VERSION_, 'pluginVersion' => _CARTSGURU_VERSION_,
'storeVersion' => _PS_VERSION_ 'storeVersion' => _PS_VERSION_,
'adminUrl' => $adminUrl
); );
$result = $this->post(self::API_PATH_REGISTER, $fields); $result = $this->post(self::API_PATH_REGISTER, $fields);
return $result; return $result;
} }
public function getDashboardStatistics($fields)
{
return $this->post(self::API_PATH_STATISTICS, $fields);
}
public function subscribe($data)
{
$fields = array(
'country' => CountryCore::getIsoById($data['country']),
//'state' => $data['state'],
'title' => $data['title'],
'website' => $data['website'],
'phoneNumber' => $data['phoneNumber'],
//user creation
'email' => $data['email'],
'lastname' => $data['lastname'],
'firstname' => $data['firstname'],
'password' => $data['password'],
'plugin' => 'prestashop',
'pluginVersion' => _CARTSGURU_VERSION_,
'storeVersion' => _PS_VERSION_,
'adminUrl' => $data['adminUrl']
);
$result = $this->post(self::API_PATH_SUBSCRIBE, $fields);
return $result;
}
} }

View File

@ -2,22 +2,11 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
class CartGuruRAPIException extends Exception class CartsGuruRAPIException extends Exception
{ {
} }

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

View File

@ -0,0 +1,83 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
class CartsGuruAdminModuleFrontController extends ModuleFrontController
{
public function display()
{
$saved_auth_key = Configuration::get('CARTSG_API_AUTH_KEY');
$cartsguru_auth_key = Tools::getValue('cartsguru_auth_key');
$cartsguru_admin_action = Tools::getValue('cartsguru_admin_action');
$cartsguru_admin_data = Tools::getValue('cartsguru_admin_data');
//Check key
if (empty($saved_auth_key) || empty($cartsguru_auth_key) || $saved_auth_key !== $cartsguru_auth_key) {
die;
}
//Get data
$data = !empty($cartsguru_admin_data) ? Tools::jsonDecode(stripcslashes($cartsguru_admin_data), true) : null;
header('Content-Type: application/json; charset=utf-8');
switch ($cartsguru_admin_action) {
case 'toggleFeatures':
$this->toggleFeatures($data);
break;
case 'displayConfig':
$this->displayConfig();
break;
}
exit;
}
private function toggleFeatures($data)
{
if (!is_array($data)) {
return;
}
// Enable facebook
if ($data['facebook'] && $data['catalogId'] && $data['pixel']) {
Configuration::updateValue('CARTSG_FEATURE_FB', true);
Configuration::updateValue('CARTSG_FB_PIXEL', $data['pixel']);
Configuration::updateValue('CARTSG_FB_CATALOGID', $data['catalogId']);
// return catalogUrl
$catalogUrl = version_compare(_PS_VERSION_, '1.5.0', '<') ? _PS_BASE_URL_.__PS_BASE_URI__ . 'index.php?fc=module&module=cartsguru&controller=catalog' : $this->context->link->getModuleLink('cartsguru', 'catalog');
echo Tools::jsonEncode(array('catalogUrl' => $catalogUrl));
} elseif ($data['facebook'] == false) {
Configuration::updateValue('CARTSG_FEATURE_FB', false);
echo Tools::jsonEncode(array('CARTSG_FEATURE_FB' => false));
}
}
private function displayConfig()
{
$curl_version = null;
try {
$info = curl_version();
$curl_version = $info["version"];
} catch (Exception $e) {
$curl_version = 'No curl';
}
$result = array(
'CARTSG_API_SUCCESS' => Configuration::get('CARTSG_API_SUCCESS'),
'CARTSG_SITE_ID' => Configuration::get('CARTSG_SITE_ID'),
'CARTSG_IMAGE_TYPE' => Configuration::get('CARTSG_IMAGE_TYPE'),
'CARTSG_FEATURE_FB' => Configuration::get('CARTSG_FEATURE_FB'),
'CARTSG_FB_PIXEL' => Configuration::get('CARTSG_FB_PIXEL'),
'CARTSG_FB_CATALOGID' => Configuration::get('CARTSG_FB_CATALOGID'),
'PLUGIN_VERSION'=> _CARTSGURU_VERSION_,
'CURL_VERSION' => $curl_version
);
echo Tools::jsonEncode($result);
}
}

View File

@ -0,0 +1,78 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
class CartsGuruCatalogModuleFrontController extends ModuleFrontController
{
public function display()
{
// Get input values
$offset = Tools::getValue('cartsguru_catalog_offset') ? Tools::getValue('cartsguru_catalog_offset') : 0;
$limit = Tools::getValue('cartsguru_catalog_limit') ? Tools::getValue('cartsguru_catalog_limit') : 50;
$currency = new Currency((int)$this->context->currency->id);
$lang = Configuration::get('PS_LANG_DEFAULT');
$link = new Link();
$processed_products = array();
$isMultiStoreSupported = version_compare(_PS_VERSION_, '1.5.0', '>=');
$sql = 'SELECT p.id_product AS id FROM ' . _DB_PREFIX_ . 'product p JOIN ' . _DB_PREFIX_ . 'product_shop s ON p.id_product = s.id_product';
$sqlTotal = 'SELECT count(p.id_product) as count FROM ' . _DB_PREFIX_ . 'product p JOIN ' . _DB_PREFIX_ . 'product_shop s ON p.id_product = s.id_product';
// Need filter on the good shop
if ($isMultiStoreSupported) {
$id_shop = (int)Context::getContext()->shop->id;
$sql .= ' WHERE id_shop = ' . $id_shop;
$sqlTotal .= ' WHERE id_shop = ' . $id_shop;
}
// Set limit and offset
$sql .= ' LIMIT ' . pSQL($limit) . ' OFFSET ' . pSQL($offset);
if ($results = Db::getInstance()->ExecuteS($sql)) {
foreach ($results as $row) {
$product = new Product($row['id'], false, $lang);
$image_link = '';
$image = Image::getImages((int)($this->context->language->id), $product->id);
if (is_array($image) && count($image) > 0) {
$image_link = Tools::getProtocol() . $link->getImageLink($product->getLink(), $image[0]['id_image'], ImageType::getFormatedName('large'));
}
$short_description = strip_tags($product->description_short);
$description = strip_tags($product->description);
$description = trim($short_description) === '' ? $description : $short_description;
if (trim($description) === '') {
continue;
}
$data = array(
'id' => $product->id,
'title' => $product->name,
'description' => $description,
'price' => Tools::ps_round($product->getPrice(), 2) . ' ' . $currency->iso_code,
'link' => $link->getproductLink($product->id),
'image_link' => $image_link,
'availability' => $product->available_for_order == '1' ? 'in stock' : 'out of stock'
);
$processed_products[] = $data;
}
// Get total
$total = Db::getInstance()->getRow($sqlTotal);
header('Content-Type: application/json');
echo Tools::jsonEncode(
array(
'url' => Tools::getShopDomainSsl(true, true),
'store_name' => Configuration::get('PS_SHOP_NAME'),
'products' => $processed_products,
'total' => isset($total['count']) ? $total['count'] : 0
)
);
}
exit;
}
}

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,63 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
class CartsGuruTrackingModuleFrontController extends ModuleFrontController
{
public function display()
{
$fields = array('email', 'homePhoneNumber', 'firstname', 'lastname', 'mobilePhoneNumber', 'countryCode');
$customerData = array();
foreach ($fields as $field) {
$value = Tools::getValue($field);
if ($value) {
$customerData[$field] = $value;
}
}
// If no email do not proceed
if (!$customerData['email']) {
die;
}
// Process country
if (array_key_exists('countryCode', $customerData)) {
$customerData['countryCode'] = CountryCore::getIsoById($customerData['countryCode']);
}
// Set account id
$customerData['accountId'] = $customerData['email'];
$cart = $this->context->cart;
$cartsguru = Module::getInstanceByName('cartsguru');
if (isset($cart) && (int) $cart->id) {
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$cartsguru->callCG(
CartsGuruRAPI::API_PATH_CARTS,
'cart',
$cart,
0,
0,
false,
array('customer' => $customerData)
);
} else {
$cartsguru->callCG(
CartsGuruRAPI::API_PATH_CARTS,
'cart',
$cart,
(int) $cart->id_shop_group,
(int) $cart->id_shop,
false,
array('customer' => $customerData)
);
}
die('success');
}
die;
}
}

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,67 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
include(dirname(__FILE__).'/../../../config/config.inc.php');
include(dirname(__FILE__).'/../../../init.php');
include_once(dirname(__FILE__).'/./../cartsguru.php');
$saved_auth_key = Configuration::get('CARTSG_API_AUTH_KEY');
$cartsguru_auth_key = Tools::getValue('cartsguru_auth_key');
$cartsguru_admin_action = Tools::getValue('cartsguru_admin_action');
$cartsguru_admin_data = Tools::getValue('cartsguru_admin_data');
//Check key
if (empty($saved_auth_key) || empty($cartsguru_auth_key) || $saved_auth_key !== $cartsguru_auth_key) {
die;
}
//Get data
$data = !empty($cartsguru_admin_data) ? Tools::jsonDecode(stripcslashes($cartsguru_admin_data), true) : null;
header('Content-Type: application/json; charset=utf-8');
switch ($cartsguru_admin_action) {
case 'toggleFeatures':
// Enable facebook
if ($data['facebook'] && $data['catalogId'] && $data['pixel']) {
Configuration::updateValue('CARTSG_FEATURE_FB', true);
Configuration::updateValue('CARTSG_FB_PIXEL', $data['pixel']);
Configuration::updateValue('CARTSG_FB_CATALOGID', $data['catalogId']);
// return catalogUrl
$catalogUrl = _PS_BASE_URL_.__PS_BASE_URI__ . 'modules/cartsguru/controllers14/catalog.php';
echo Tools::jsonEncode(array('catalogUrl' => $catalogUrl));
} elseif ($data['facebook'] == false) {
Configuration::updateValue('CARTSG_FEATURE_FB', false);
echo Tools::jsonEncode(array('CARTSG_FEATURE_FB' => false));
}
break;
case 'displayConfig':
$curl_version = null;
try {
$info = curl_version();
$curl_version = $info["version"];
} catch (Exception $e) {
$curl_version = 'No curl';
}
$result = array(
'CARTSG_API_SUCCESS' => Configuration::get('CARTSG_API_SUCCESS'),
'CARTSG_SITE_ID' => Configuration::get('CARTSG_SITE_ID'),
'CARTSG_IMAGE_TYPE' => Configuration::get('CARTSG_IMAGE_TYPE'),
'CARTSG_FEATURE_FB' => Configuration::get('CARTSG_FEATURE_FB'),
'CARTSG_FB_PIXEL' => Configuration::get('CARTSG_FB_PIXEL'),
'CARTSG_FB_CATALOGID' => Configuration::get('CARTSG_FB_CATALOGID'),
'PLUGIN_VERSION'=> _CARTSGURU_VERSION_,
'CURL_VERSION' => $curl_version
);
echo Tools::jsonEncode($result);
break;
}
exit;

View File

@ -0,0 +1,84 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
include(dirname(__FILE__).'/../../../config/config.inc.php');
include(dirname(__FILE__).'/../../../init.php');
if (!class_exists('Context')) {
include(dirname(__FILE__).'/../backward_compatibility/Context.php');
}
// Get input values
$offset = Tools::getValue('cartsguru_catalog_offset') ? Tools::getValue('cartsguru_catalog_offset') : 0;
$limit = Tools::getValue('cartsguru_catalog_limit') ? Tools::getValue('cartsguru_catalog_limit') : 50;
$context = Context::getContext();
$currency = new Currency((int)$context->currency->id);
$lang = Configuration::get('PS_LANG_DEFAULT');
$link = new Link();
$processed_products = array();
$isMultiStoreSupported = version_compare(_PS_VERSION_, '1.5.0', '>=');
$sql = 'SELECT p.id_product AS id FROM ' . _DB_PREFIX_ . 'product p';
$sqlTotal = 'SELECT count(p.id_product) as count FROM ' . _DB_PREFIX_ . 'product p';
// Need filter on the good shop
if ($isMultiStoreSupported) {
$id_shop = (int)Context::getContext()->shop->id;
$sql .= ' JOIN ' . _DB_PREFIX_ . 'product_shop s ON p.id_product = s.id_product WHERE id_shop = ' . $id_shop;
$sqlTotal .= ' JOIN ' . _DB_PREFIX_ . 'product_shop s ON p.id_product = s.id_product WHERE id_shop = ' . $id_shop;
}
// Set limit and offset
$sql .= ' LIMIT ' . pSQL($limit) . ' OFFSET ' . pSQL($offset);
$results = Db::getInstance()->ExecuteS($sql);
if ($results) {
foreach ($results as $row) {
$product = new Product($row['id'], false, $lang);
$image_link = '';
$image = Image::getImages((int)($context->language->id), $product->id);
if (is_array($image) && count($image) > 0) {
$imageObj = new Image($image[0]['id_image']);
$image_type = ImageType::getByNameNType('large', 'products');
$image_link = $link->getImageLink($product->getLink(), $image[0]['id_image'], $image_type['name']);
}
$short_description = strip_tags($product->description_short);
$description = strip_tags($product->description);
$description = trim($short_description) === '' ? $description : $short_description;
if (trim($description) === '') {
continue;
}
$data = array(
'id' => $product->id,
'title' => $product->name,
'description' => $description,
'price' => Tools::ps_round($product->getPrice(), 2) . ' ' . $currency->iso_code,
'link' => $link->getproductLink($product->id),
'image_link' => $image_link,
'availability' => $product->available_for_order == '1' ? 'in stock' : 'out of stock'
);
$processed_products[] = $data;
}
// Get total
$total = Db::getInstance()->getRow($sqlTotal);
header('Content-Type: application/json');
echo Tools::jsonEncode(
array(
'url' => Tools::getShopDomainSsl(true, true),
'store_name' => Configuration::get('PS_SHOP_NAME'),
'products' => $processed_products,
'total' => isset($total['count']) ? $total['count'] : 0
)
);
}
exit;

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,67 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
include(dirname(__FILE__).'/../../../config/config.inc.php');
include(dirname(__FILE__).'/../../../init.php');
if (!class_exists('CountryCore')) {
include(dirname(__FILE__).'/../../../classes/Country.php');
}
if (!class_exists('Context')) {
include(dirname(__FILE__).'/../backward_compatibility/Context.php');
}
$context = Context::getContext();
$fields = array('email', 'homePhoneNumber', 'firstname', 'lastname', 'mobilePhoneNumber', 'countryCode');
$customerData = array();
foreach ($fields as $field) {
$value = Tools::getValue($field);
if ($value) {
$customerData[$field] = $value;
}
}
// If no email do not proceed
if (!array_key_exists('email', $customerData)) {
die;
}
// If no email do not proceed
if (array_key_exists('countryCode', $customerData)) {
$customerData['countryCode'] = CountryCore::getIsoById($customerData['countryCode']);
}
// Set account id
$customerData['accountId'] = $customerData['email'];
$cartsguru = Module::getInstanceByName('cartsguru');
if (isset($context->cart) && (int) $context->cart->id) {
if (version_compare(_PS_VERSION_, '1.5.0', '<')) {
$cartsguru->callCG(
CartsGuruRAPI::API_PATH_CARTS,
'cart',
$context->cart,
0,
0,
false,
array('customer' => $customerData)
);
} else {
$cartsguru->callCG(
CartsGuruRAPI::API_PATH_CARTS,
'cart',
$context->cart,
(int) $context->cart->id_shop_group,
(int) $context->cart->id_shop,
false,
array('customer' => $customerData)
);
}
die('success');
}
die;

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

View File

@ -1,29 +1,104 @@
<?php <?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
global $_MODULE; global $_MODULE;
$_MODULE = array(); $_MODULE = array();
/* cartsguru.php */
//Module Title
$_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru'; $_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>cartsguru_dfc39a358ca340a9846a2a8c162de1b9'] = 'The first targeted and automated follow-up solution for abandoned carts through phone and text message !'; //Module description
$_MODULE['<{cartsguru}prestashop>cartsguru_502a5a0f558857bb13531cafc2d8d246'] = 'Your multichannel solution for easily recovering your abandoned shopping carts. Use Email & SMS Retargeting, Automatic Calls and Social Media!';
//Error cURL lib not available, plugin can not be used
$_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'cURL librairy is not available.'; $_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'cURL librairy is not available.';
$_MODULE['<{cartsguru}prestashop>cartsguru_aade6fe424276a463381d738d31d04dd'] = 'The module is not configured'; //Module not configured warning (in modules list)
$_MODULE['<{cartsguru}prestashop>cartsguru_62ce11347fffa067e1ebb94e019ce31c'] = 'Your store is properly linked with Carts Guru'; $_MODULE['<{cartsguru}prestashop>cartsguru_543c108a7f01cd8df3d8ea24d60fd6e0'] = 'The module is not configured';
$_MODULE['<{cartsguru}prestashop>cartsguru_83e4eef9715a6044ffd2165cc3bf9152'] = 'Product images for Cart Guru were successfully regenerated'; //Confirmation message when save configuration (site id & auth key)
$_MODULE['<{cartsguru}prestashop>cartsguru_d4f225ec09e4b0eba6558753f4bd8edd'] = 'Only part of the images have been regenerated. The server timed out before finishing.'; $_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'Settings updated';
$_MODULE['<{cartsguru}prestashop>cartsguru_632cd307bc981033384b4f42b7a52d34'] = 'Use \"Product image generation\" form with option erase to false and click to the button generate.'; //Product image success
$_MODULE['<{cartsguru}prestashop>cartsguru_60a5980f8b948d9ad23af03206a11620'] = 'Impossible to connect with this credential.'; $_MODULE['<{cartsguru}prestashop>cartsguru_854de6c1f642b597dcba56164d31cb97'] = 'Image product for Cart Guru were successfully generated.';
$_MODULE['<{cartsguru}prestashop>cartsguru_d63e8b98064ce2cd9f753412cc53cde1'] = 'Field \'%1$s\' is required'; //Product image error
$_MODULE['<{cartsguru}prestashop>cartsguru_f76cf338d1c364144e7bc74edc5ae195'] = 'Auth key'; $_MODULE['<{cartsguru}prestashop>cartsguru_497295a4b41a60552bb2b03cd16164ef'] = 'Only part of the images have been generated. The server timed out before finishing it.';
$_MODULE['<{cartsguru}prestashop>cartsguru_305fe996f5b22c6230470bcfabe112ad'] = 'Site ID'; //Sign up error
$_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'Settings updated '; $_MODULE['<{cartsguru}prestashop>cartsguru_52b766c02af601d61d77774a0fa83b22'] = 'An error occurs during the registration. Please contact us on https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_54eebac864cda3659a446e61c111b28e'] = 'To resume the operation, select no for \"Erase previous images\", and click \"Generate\".'; $_MODULE['<{cartsguru}prestashop>cartsguru_a33c92bc6fb01f41a3bc7b00f8f75074'] = 'Your country is not supported for now. Please contact us on https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_112afb3cda4a3d63415b4156737b6894'] = 'Carts Guru authentification'; $_MODULE['<{cartsguru}prestashop>cartsguru_c713f366e44b2fcc505883744aef81b6'] = 'This email is already associated to an existing account';
$_MODULE['<{cartsguru}prestashop>cartsguru_eea26af48ce417a70acc5eb96a8f3592'] = 'The multistore option is enabled. If you want configure the module, you must select store.'; //Sign in error
$_MODULE['<{cartsguru}prestashop>cartsguru_414dfa338951d9eca8a2acd2b361300f'] = 'Provided by Carts Guru'; $_MODULE['<{cartsguru}prestashop>cartsguru_481d6b8c4898d64f0983a567e344d68d'] = 'It was not possible to connect with your current credentials.';
$_MODULE['<{cartsguru}prestashop>cartsguru_c9cc8cce247e49bae79f15173ce97354'] = 'Save';
$_MODULE['<{cartsguru}prestashop>cartsguru_d795a8d004d37e375541d838c0c84f15'] = 'Product images generation for Carts Guru'; /* dashboard_zone_one.tpl */
$_MODULE['<{cartsguru}prestashop>cartsguru_fb6df7abfeaae40427dac2b8a4a423dc'] = 'The operation is required only if you not see your product images in Carts Guru'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_917043f2ee73dd34f4cdf8a8adc3e870'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>cartsguru_d379cadd41b68efe7c945b4d85c72085'] = 'Erase previous images'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_63a6a88c066880c5ac42394a22803ca6'] = 'Refresh';
$_MODULE['<{cartsguru}prestashop>cartsguru_62275efff59edb02173db8524943db89'] = 'Select \"No\" if your server timed out and you need to resume the regeneration.'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_8d11e11ef5eb59e689f2bd5f02403f9e'] = 'Processed Carts';
$_MODULE['<{cartsguru}prestashop>cartsguru_93cba07454f06a4a960172bbd6e2a435'] = 'Yes'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Orders';
$_MODULE['<{cartsguru}prestashop>cartsguru_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_910a58229f2e6842d4e993569c0ee687'] = 'Revenue Recovered';
$_MODULE['<{cartsguru}prestashop>cartsguru_32b919d18cfaca89383f6000dcc9c031'] = 'Generate';
/* welcome.tpl - main view */
$_MODULE['<{cartsguru}prestashop>welcome_46c46a775b80eef48f58efed3051d5d5'] = 'The best way to recover your abandoned carts';
$_MODULE['<{cartsguru}prestashop>welcome_44791981f8a25f9c63c43ba4d979b898'] = 'Carts Guru is the all-in-one solution to recover your abandoned carts and turn them into sales. Use Emails, SMS, Automatic Calls, Facebook & Instagram to convert more than 20% of your lost customers into sales.';
$_MODULE['<{cartsguru}prestashop>welcome_9a7342bdc64a7abd154cd3227c40cd11'] = 'Enjoy all features during your 14-Days / $5,000 Revenue Free Trial';
$_MODULE['<{cartsguru}prestashop>welcome_7edaed702d94d2c7807d20d662c7067a'] = 'I have an account';
$_MODULE['<{cartsguru}prestashop>welcome_103ccf94ed36e31ecea1decd3c88dd18'] = 'Try it now for free';
/* welcome.tpl - main view - top list */
$_MODULE['<{cartsguru}prestashop>welcome_4cde30a43458a349110b69a71661f24d'] = 'Performance-based pricing';
$_MODULE['<{cartsguru}prestashop>welcome_b22939c7405d616e5a13e9e2e117004b'] = 'see details here';
$_MODULE['<{cartsguru}prestashop>welcome_7a3a7be24b5992655610b1ecf407c434'] = 'Run unlimited campaigns, with unlimited actions';
$_MODULE['<{cartsguru}prestashop>welcome_b97da5945c83ba339a75eebc78e53d24'] = 'Easy-to-use, incredibly intuitive solution';
$_MODULE['<{cartsguru}prestashop>welcome_a389c7d8e2f7b3442deccd1310e3146a'] = 'Risk Free. No credit cards required. Cancel any time';
/* welcome.tpl - main view - features */
$_MODULE['<{cartsguru}prestashop>welcome_98f770b0af18ca763421bac22b4b6805'] = 'Features';
$_MODULE['<{cartsguru}prestashop>welcome_d59048f21fd887ad520398ce677be586'] = 'Learn more';
$_MODULE['<{cartsguru}prestashop>welcome_08fa955704ed60bd92121421efe1dba5'] = 'Automatic calls';
$_MODULE['<{cartsguru}prestashop>welcome_e0b30405b5e360a6a9d3935e1b5ee99d'] = 'Save this for your most important products and customers. Contact your customer automatically.';
$_MODULE['<{cartsguru}prestashop>welcome_d311128c6b9f34f85e6b0e29bcbcd165'] = 'Conversion rate';
$_MODULE['<{cartsguru}prestashop>welcome_71241798130f714cbd2786df3da2cf0b'] = 'Average cart value';
$_MODULE['<{cartsguru}prestashop>welcome_16b8986716da520abefdaec42d79cde7'] = 'Email retargeting';
$_MODULE['<{cartsguru}prestashop>welcome_f2cd56fb5b2b77bfe56ab4791a053317'] = 'Customize campaigns with your brand. Launch them at the perfect moment with automation.';
$_MODULE['<{cartsguru}prestashop>welcome_9194d247411aa51baae262692c740a71'] = 'Open rate';
$_MODULE['<{cartsguru}prestashop>welcome_4c51ca7dfcba263c58e914182e78704b'] = 'Click rate';
$_MODULE['<{cartsguru}prestashop>welcome_fb82b0e1a9cdd45d75c0316b489dc2f4'] = 'SMS retargeting';
$_MODULE['<{cartsguru}prestashop>welcome_b0efdff12e68896d7eeaef2e138ffa80'] = 'With an outstanding 97% open rate. Add SMS Marketing to your mix.';
$_MODULE['<{cartsguru}prestashop>welcome_4551ffc5f55de732e0512bec68dfffde'] = 'Unsubscription';
$_MODULE['<{cartsguru}prestashop>welcome_6a4e2a43c2d0e44b33c2f7dba1fd72ab'] = 'Facebook & Instagram';
$_MODULE['<{cartsguru}prestashop>welcome_4514e9f52d04fc7a152f8068f814613c'] = 'Reach your buyers where they are! Use dynamic retargeting to recover buyers with CPC ads.';
$_MODULE['<{cartsguru}prestashop>welcome_e7b031d00b6b531d99eb2a32094b8b74'] = 'Click through rate';
$_MODULE['<{cartsguru}prestashop>welcome_fcfebe7da3976f7fff336462ed1ce2b1'] = 'Prone to convert';
/* welcome.tpl - subscribe form */
$_MODULE['<{cartsguru}prestashop>welcome_0557fa923dcee4d0f86b1409f5c2167f'] = 'Back';
$_MODULE['<{cartsguru}prestashop>welcome_e79d694c8ca35f005a9dde7bcfdd15b0'] = 'Youre one step away from your free trial';
$_MODULE['<{cartsguru}prestashop>welcome_20db0bfeecd8fe60533206a2b5e9891a'] = 'First Name';
$_MODULE['<{cartsguru}prestashop>welcome_8d3f5eff9c40ee315d452392bed5309b'] = 'Last Name';
$_MODULE['<{cartsguru}prestashop>welcome_1f8261d17452a959e013666c5df45e07'] = 'Phone Number';
$_MODULE['<{cartsguru}prestashop>welcome_3a0853edb6b77ac1bced734358cab8c2'] = 'Email Address';
$_MODULE['<{cartsguru}prestashop>welcome_59716c97497eb9694541f7c3d37b1a4d'] = 'Country';
$_MODULE['<{cartsguru}prestashop>welcome_dc647eb65e6711e155375218212b3964'] = 'Password';
$_MODULE['<{cartsguru}prestashop>welcome_0606da1bfc8cff393a415f647ec06e8f'] = 'Website URL';
/* welcome.tpl - success view */
$_MODULE['<{cartsguru}prestashop>welcome_51dfd5a9635ce9e8c30311df73a40d03'] = 'You successfuly installed Carts Guru';
$_MODULE['<{cartsguru}prestashop>welcome_7474c8f58df1491cc0fc42341f868345'] = 'Edit my settings';
$_MODULE['<{cartsguru}prestashop>welcome_ad84b784ad8d81a7c82b3209e15f1553'] = 'Access to Carts Guru platform';
/* welcome.tpl - multistore view */
$_MODULE['<{cartsguru}prestashop>welcome_94fdcdc729c564170e5de6e0abbd5e39'] = 'The multistore option is enabled. If you want to set the module, please select a store.';
/* welcome.tpl - connect store view */
$_MODULE['<{cartsguru}prestashop>welcome_2f3f00178ef7de520b79a3ccd70f9447'] = 'Plug Carts Guru into your PrestaShop store';
$_MODULE['<{cartsguru}prestashop>welcome_b250a007769c7ffe655c74cfb8176b8c'] = 'Site ID';
$_MODULE['<{cartsguru}prestashop>welcome_e8ceedcb9972298e932cc156f9dcee42'] = 'Auth Key';
$_MODULE['<{cartsguru}prestashop>welcome_b6e06824a3667995a0291dc280c4cfb4'] = 'Connect it now';
$_MODULE['<{cartsguru}prestashop>welcome_0e458e0073e1ec08092620c539801c95'] = 'Don\'t know this information?';
$_MODULE['<{cartsguru}prestashop>welcome_faabe822494cb7cad1e540ca367eba60'] = 'Access it here';
/* welcome.tpl - footer */
$_MODULE['<{cartsguru}prestashop>welcome_36ce9091bb449adc40d7c4600889e0a5'] = 'Access Carts Guru\'s website';

View File

@ -0,0 +1,104 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
global $_MODULE;
$_MODULE = array();
/* cartsguru.php */
//Module Title
$_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru';
//Module description
$_MODULE['<{cartsguru}prestashop>cartsguru_502a5a0f558857bb13531cafc2d8d246'] = 'Tu solución multicanal para recuperar carritos de compra abandonados de manera fácil. Usa el Retargeting con Correos, SMS, Llamadas y Redes Sociales.';
//Error cURL lib not available, plugin can not be used
$_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'La librería cURL no está disponible.';
//Module not configured warning (in modules list)
$_MODULE['<{cartsguru}prestashop>cartsguru_543c108a7f01cd8df3d8ea24d60fd6e0'] = 'El módulo no está configurado.';
//Confirmation message when save configuration (site id & auth key)
$_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'La configuración ha sido actualizada.';
//Product image success
$_MODULE['<{cartsguru}prestashop>cartsguru_854de6c1f642b597dcba56164d31cb97'] = 'La imagen de producto para Carts Guru ha sido generada correctamente.';
//Product image error
$_MODULE['<{cartsguru}prestashop>cartsguru_497295a4b41a60552bb2b03cd16164ef'] = 'Solamente parte de las imágenes han sido generadas. El servidor se ha interrumpido antes de terminarlo.';
//Sign up error
$_MODULE['<{cartsguru}prestashop>cartsguru_52b766c02af601d61d77774a0fa83b22'] = 'Ocurrió un error durante el registro. Por favor, contáctanos a través de https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_a33c92bc6fb01f41a3bc7b00f8f75074'] = 'Aún no somos compatibles con tu país. Por favor, contáctanos a través de https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_7880b2798d342da5b5bbe66398101c4b'] = 'Ya existe una cuenta asociada a este correo';
//Sign in error
$_MODULE['<{cartsguru}prestashop>cartsguru_481d6b8c4898d64f0983a567e344d68d'] = 'Não foi possível conectá-lo com suas credenciais atuais.';
/* dashboard_zone_one.tpl */
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_917043f2ee73dd34f4cdf8a8adc3e870'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_63a6a88c066880c5ac42394a22803ca6'] = 'Refresh';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_8d11e11ef5eb59e689f2bd5f02403f9e'] = 'Carritos procesados';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_910a58229f2e6842d4e993569c0ee687'] = 'Valor recuperado';
/* welcome.tpl - main view */
$_MODULE['<{cartsguru}prestashop>welcome_46c46a775b80eef48f58efed3051d5d5'] = 'La mejor forma de recuperar tus carritos abandonados';
$_MODULE['<{cartsguru}prestashop>welcome_44791981f8a25f9c63c43ba4d979b898'] = 'Carts Guru es la solución integral para recuperar tus carritos abandonados y convertirlos en ventas. Utiliza correos, SMS, llamadas, Facebook e Instagram para convertir a más del 20% de tus clientes perdidos.';
$_MODULE['<{cartsguru}prestashop>welcome_9a7342bdc64a7abd154cd3227c40cd11'] = 'Todas las funciones durante tu prueba gratuita de 14 días / 5.000€ recuperados';
$_MODULE['<{cartsguru}prestashop>welcome_7edaed702d94d2c7807d20d662c7067a'] = 'TENGO CUENTA';
$_MODULE['<{cartsguru}prestashop>welcome_103ccf94ed36e31ecea1decd3c88dd18'] = 'PRUÉBALO YA GRATIS';
/* welcome.tpl - main view - top list */
$_MODULE['<{cartsguru}prestashop>welcome_4cde30a43458a349110b69a71661f24d'] = 'Precios basados en el rendimiento';
$_MODULE['<{cartsguru}prestashop>welcome_b22939c7405d616e5a13e9e2e117004b'] = 'más información';
$_MODULE['<{cartsguru}prestashop>welcome_7a3a7be24b5992655610b1ecf407c434'] = 'Lleva a cabo campañas y acciones ilimitadas';
$_MODULE['<{cartsguru}prestashop>welcome_b97da5945c83ba339a75eebc78e53d24'] = 'Fácil de usar, solución altamente intuitiva';
$_MODULE['<{cartsguru}prestashop>welcome_a389c7d8e2f7b3442deccd1310e3146a'] = 'Sin riesgos, sin tarjeta. Cancela cuando quieras';
/* welcome.tpl - main view - features */
$_MODULE['<{cartsguru}prestashop>welcome_98f770b0af18ca763421bac22b4b6805'] = 'FUNCIONES';
$_MODULE['<{cartsguru}prestashop>welcome_d59048f21fd887ad520398ce677be586'] = 'MÁS INFORMACIÓN';
$_MODULE['<{cartsguru}prestashop>welcome_08fa955704ed60bd92121421efe1dba5'] = 'Llamadas automáticas';
$_MODULE['<{cartsguru}prestashop>welcome_e0b30405b5e360a6a9d3935e1b5ee99d'] = 'Para tus productos y clientes más importantes. Ponte en contacto de forma automática con el cliente.';
$_MODULE['<{cartsguru}prestashop>welcome_d311128c6b9f34f85e6b0e29bcbcd165'] = 'TASA DE CONVERSIÓN';
$_MODULE['<{cartsguru}prestashop>welcome_71241798130f714cbd2786df3da2cf0b'] = 'VALOR MEDIO DEL CARRITO';
$_MODULE['<{cartsguru}prestashop>welcome_16b8986716da520abefdaec42d79cde7'] = 'Retargeting por email';
$_MODULE['<{cartsguru}prestashop>welcome_f2cd56fb5b2b77bfe56ab4791a053317'] = 'Personaliza campañas con tu marca. Lánzalas en el momento más adecuado de forma automática.';
$_MODULE['<{cartsguru}prestashop>welcome_9194d247411aa51baae262692c740a71'] = 'TASA DE APERTURA';
$_MODULE['<{cartsguru}prestashop>welcome_4c51ca7dfcba263c58e914182e78704b'] = 'PORCENTAJE DE CLICS';
$_MODULE['<{cartsguru}prestashop>welcome_fb82b0e1a9cdd45d75c0316b489dc2f4'] = 'Retargeting por SMS';
$_MODULE['<{cartsguru}prestashop>welcome_b0efdff12e68896d7eeaef2e138ffa80'] = 'Añade Marketing por SMS, con una excelente tasa de apertura del 97%';
$_MODULE['<{cartsguru}prestashop>welcome_4551ffc5f55de732e0512bec68dfffde'] = 'BAJA VOLUNTARIA';
$_MODULE['<{cartsguru}prestashop>welcome_6a4e2a43c2d0e44b33c2f7dba1fd72ab'] = 'Facebook & Instagram';
$_MODULE['<{cartsguru}prestashop>welcome_4514e9f52d04fc7a152f8068f814613c'] = '¡Llega a tus compradores allá donde estén! Usa retargeting dinámico para recuperar compradores.';
$_MODULE['<{cartsguru}prestashop>welcome_e7b031d00b6b531d99eb2a32094b8b74'] = 'TASA DE CLICS';
$_MODULE['<{cartsguru}prestashop>welcome_fcfebe7da3976f7fff336462ed1ce2b1'] = 'PROBABILIDAD DE CONVERSIÓN';
/* welcome.tpl - subscribe form */
$_MODULE['<{cartsguru}prestashop>welcome_0557fa923dcee4d0f86b1409f5c2167f'] = 'Volver';
$_MODULE['<{cartsguru}prestashop>welcome_e79d694c8ca35f005a9dde7bcfdd15b0'] = 'Estás a solo un paso de tu prueba gratuita';
$_MODULE['<{cartsguru}prestashop>welcome_20db0bfeecd8fe60533206a2b5e9891a'] = 'Nombre';
$_MODULE['<{cartsguru}prestashop>welcome_8d3f5eff9c40ee315d452392bed5309b'] = 'Apellido';
$_MODULE['<{cartsguru}prestashop>welcome_1f8261d17452a959e013666c5df45e07'] = 'Número de teléfono';
$_MODULE['<{cartsguru}prestashop>welcome_3a0853edb6b77ac1bced734358cab8c2'] = 'Correo electrónico';
$_MODULE['<{cartsguru}prestashop>welcome_59716c97497eb9694541f7c3d37b1a4d'] = 'País';
$_MODULE['<{cartsguru}prestashop>welcome_dc647eb65e6711e155375218212b3964'] = 'Contraseña';
$_MODULE['<{cartsguru}prestashop>welcome_0606da1bfc8cff393a415f647ec06e8f'] = 'URL del sitio web';
/* welcome.tpl - success view */
$_MODULE['<{cartsguru}prestashop>welcome_51dfd5a9635ce9e8c30311df73a40d03'] = 'Has instalado Carts Guru con éxito';
$_MODULE['<{cartsguru}prestashop>welcome_7474c8f58df1491cc0fc42341f868345'] = 'Editar mis ajustes';
$_MODULE['<{cartsguru}prestashop>welcome_ad84b784ad8d81a7c82b3209e15f1553'] = 'Accede a Carts Guru';
/* welcome.tpl - multistore view */
$_MODULE['<{cartsguru}prestashop>welcome_94fdcdc729c564170e5de6e0abbd5e39'] = 'La opción de tiendas múltiples está activada. Si quieres configurar tu módulo, por favor, selecciona tu tienda.';
/* welcome.tpl - connect store view */
$_MODULE['<{cartsguru}prestashop>welcome_2f3f00178ef7de520b79a3ccd70f9447'] = 'Conecta Carts Guru a tu tienda PrestaShop';
$_MODULE['<{cartsguru}prestashop>welcome_b250a007769c7ffe655c74cfb8176b8c'] = 'ID de la web';
$_MODULE['<{cartsguru}prestashop>welcome_e8ceedcb9972298e932cc156f9dcee42'] = 'Código de autorización';
$_MODULE['<{cartsguru}prestashop>welcome_b6e06824a3667995a0291dc280c4cfb4'] = 'CONÉCTALO AHORA';
$_MODULE['<{cartsguru}prestashop>welcome_0e458e0073e1ec08092620c539801c95'] = '¿No conoces esta información?';
$_MODULE['<{cartsguru}prestashop>welcome_faabe822494cb7cad1e540ca367eba60'] = 'Encuéntrala aquí';
/* welcome.tpl - footer */
$_MODULE['<{cartsguru}prestashop>welcome_36ce9091bb449adc40d7c4600889e0a5'] = 'VISITA LA WEB DE CARTS GURU';

View File

@ -1,41 +1,94 @@
<?php <?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
global $_MODULE; global $_MODULE;
$_MODULE = array(); $_MODULE = array();
/* cartsguru.php */
$_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru'; $_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>cartsguru_dfc39a358ca340a9846a2a8c162de1b9'] = 'La première solution de ciblage et de relance automatisée des paniers abandonnés et des échecs de paiement par téléphone et SMS'; $_MODULE['<{cartsguru}prestashop>cartsguru_502a5a0f558857bb13531cafc2d8d246'] = 'La première solution de ciblage et de relance automatisée des paniers abandonnés et des échecs de paiement par relances par e-mail, SMS, appels automatiques, Facebook et Instagram';
$_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'La librairie cURL n\'est pas disponible'; $_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'La librairie cURL n\'est pas disponible';
$_MODULE['<{cartsguru}prestashop>cartsguru_543c108a7f01cd8df3d8ea24d60fd6e0'] = 'Le module n\'est pas configuré'; $_MODULE['<{cartsguru}prestashop>cartsguru_543c108a7f01cd8df3d8ea24d60fd6e0'] = 'Le module n\'est pas configuré';
$_MODULE['<{cartsguru}prestashop>cartsguru_62ce11347fffa067e1ebb94e019ce31c'] = 'Votre boutique est connectée à Carts Guru.'; $_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'Les paramètres ont été mis à jour';
$_MODULE['<{cartsguru}prestashop>cartsguru_83e4eef9715a6044ffd2165cc3bf9152'] = 'Les images produits pour Carts Guru ont été générées avec succès.'; $_MODULE['<{cartsguru}prestashop>cartsguru_854de6c1f642b597dcba56164d31cb97'] = 'Les images produits pour Carts Guru ont été générées avec succès.';
$_MODULE['<{cartsguru}prestashop>cartsguru_d4f225ec09e4b0eba6558753f4bd8edd'] = 'Seulement une partit des images ont été régénérées. Le serveur a mis trop de temps pour finaliser le processus.'; $_MODULE['<{cartsguru}prestashop>cartsguru_497295a4b41a60552bb2b03cd16164ef'] = 'Seulement une partie des images ont été générées. Le serveur a mis trop de temps pour finaliser le processus.';
$_MODULE['<{cartsguru}prestashop>cartsguru_632cd307bc981033384b4f42b7a52d34'] = 'Relancer la génération avec l\'option supprimer à non et cliquer sur le bouton générer'; $_MODULE['<{cartsguru}prestashop>cartsguru_52b766c02af601d61d77774a0fa83b22'] = 'Une erreur est survenue. Veuillez nous contacter via https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_60a5980f8b948d9ad23af03206a11620'] = 'Impossible de se connecter avec ces identifiants'; $_MODULE['<{cartsguru}prestashop>cartsguru_a33c92bc6fb01f41a3bc7b00f8f75074'] = 'Votre pays n\'est pas supporté actuellement. Veuillez nous contacter via https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_d63e8b98064ce2cd9f753412cc53cde1'] = 'Champs \'%1$s\' est requis'; $_MODULE['<{cartsguru}prestashop>cartsguru_7880b2798d342da5b5bbe66398101c4b'] = 'Cet e-mail est déjà associé à un compte existant';
$_MODULE['<{cartsguru}prestashop>cartsguru_f76cf338d1c364144e7bc74edc5ae195'] = 'Clef d\'authentification'; $_MODULE['<{cartsguru}prestashop>cartsguru_481d6b8c4898d64f0983a567e344d68d'] = 'Impossible de se connecter avec ces identifiants';
$_MODULE['<{cartsguru}prestashop>cartsguru_305fe996f5b22c6230470bcfabe112ad'] = 'Identifiant du site';
$_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'Configuration modifiée'; /* dashboard_zone_one.tpl */
$_MODULE['<{cartsguru}prestashop>cartsguru_54eebac864cda3659a446e61c111b28e'] = 'Pour continuer l\'opération, sélectionnez non pour \"Effacer les images précédentes\" et cliquer sur \"Générer\".'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_917043f2ee73dd34f4cdf8a8adc3e870'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>cartsguru_112afb3cda4a3d63415b4156737b6894'] = 'Carts Guru identification'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_63a6a88c066880c5ac42394a22803ca6'] = 'Rafraîchir';
$_MODULE['<{cartsguru}prestashop>cartsguru_eea26af48ce417a70acc5eb96a8f3592'] = 'L\'option multi-boutique est activée. Si vous voulez configurer le module, vous devez sélectionner une boutique.'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_8d11e11ef5eb59e689f2bd5f02403f9e'] = 'Paniers traités';
$_MODULE['<{cartsguru}prestashop>cartsguru_414dfa338951d9eca8a2acd2b361300f'] = 'Fournit par Carts Guru'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Commandes';
$_MODULE['<{cartsguru}prestashop>cartsguru_c9cc8cce247e49bae79f15173ce97354'] = 'Sauvegarder'; $_MODULE['<{cartsguru}prestashop>dashboard_zone_one_910a58229f2e6842d4e993569c0ee687'] = 'Chiffre d\'affaires';
$_MODULE['<{cartsguru}prestashop>cartsguru_d795a8d004d37e375541d838c0c84f15'] = 'Génération des images produits pour Carts Guru';
$_MODULE['<{cartsguru}prestashop>cartsguru_fb6df7abfeaae40427dac2b8a4a423dc'] = 'L\'opération est nécessaire si vous ne visualisez pas vos images produits sur votre interface Carts Guru'; /* welcome.tpl - main view */
$_MODULE['<{cartsguru}prestashop>cartsguru_d379cadd41b68efe7c945b4d85c72085'] = 'Effacer les images précédentes'; $_MODULE['<{cartsguru}prestashop>welcome_46c46a775b80eef48f58efed3051d5d5'] = 'Solution de relance multicanal pour convertir vos paniers abandonnés en vente';
$_MODULE['<{cartsguru}prestashop>cartsguru_62275efff59edb02173db8524943db89'] = 'Sélectionnez \"Non\" si le serveur a mis trop de temps pour finaliser le processus et que vous voulez continuer l\'opération.'; $_MODULE['<{cartsguru}prestashop>welcome_44791981f8a25f9c63c43ba4d979b898'] = 'Carts Guru est la solution ultime pour réengager vos visiteurs ayant abandonné leurs achats.
$_MODULE['<{cartsguru}prestashop>cartsguru_93cba07454f06a4a960172bbd6e2a435'] = 'Oui'; Combinez les relances par e-mail, SMS, appels automatiques, Facebook et Instagram pour convertir plus de 20 % de vos clients perdus en acheteurs.';
$_MODULE['<{cartsguru}prestashop>cartsguru_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non'; $_MODULE['<{cartsguru}prestashop>welcome_9a7342bdc64a7abd154cd3227c40cd11'] = 'Profitez de toutes les fonctionnalités gratuitement pendant 14 jours/jusquà 5 000 € de revenus générés';
$_MODULE['<{cartsguru}prestashop>cartsguru_32b919d18cfaca89383f6000dcc9c031'] = 'Générer'; $_MODULE['<{cartsguru}prestashop>welcome_7edaed702d94d2c7807d20d662c7067a'] = 'J\'ai un compte';
$_MODULE['<{cartsguru}prestashop>cg_conf_form14_112afb3cda4a3d63415b4156737b6894'] = 'Carts Guru identification'; $_MODULE['<{cartsguru}prestashop>welcome_103ccf94ed36e31ecea1decd3c88dd18'] = 'J\'essaie gratuitement';
$_MODULE['<{cartsguru}prestashop>cg_conf_form14_f76cf338d1c364144e7bc74edc5ae195'] = 'Clef d\'authentification'; /* welcome.tpl - main view - top list */
$_MODULE['<{cartsguru}prestashop>cg_conf_form14_305fe996f5b22c6230470bcfabe112ad'] = 'Identifiant du site'; $_MODULE['<{cartsguru}prestashop>welcome_4cde30a43458a349110b69a71661f24d'] = 'Ne payez que les ventes générées par Carts Guru.';
$_MODULE['<{cartsguru}prestashop>cg_conf_form14_c9cc8cce247e49bae79f15173ce97354'] = 'Sauvegarder'; $_MODULE['<{cartsguru}prestashop>welcome_b22939c7405d616e5a13e9e2e117004b'] = 'Voir les détails ici';
$_MODULE['<{cartsguru}prestashop>cg_conf_form14_19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis'; $_MODULE['<{cartsguru}prestashop>welcome_7a3a7be24b5992655610b1ecf407c434'] = 'Créez des campagnes et des actions illimitées';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_d795a8d004d37e375541d838c0c84f15'] = 'Génération des images produits pour Carts Guru'; $_MODULE['<{cartsguru}prestashop>welcome_b97da5945c83ba339a75eebc78e53d24'] = 'Solution simple et intuitive';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_fb6df7abfeaae40427dac2b8a4a423dc'] = 'L\'opération est nécessaire si vous ne visualisez pas vos images produits sur votre interface Carts Guru'; $_MODULE['<{cartsguru}prestashop>welcome_a389c7d8e2f7b3442deccd1310e3146a'] = 'Sans risque, sans carte de crédit. Annulez à tout moment';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_d379cadd41b68efe7c945b4d85c72085'] = 'Effacer les images précédentes';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_93cba07454f06a4a960172bbd6e2a435'] = 'Oui'; /* welcome.tpl - main view - features */
$_MODULE['<{cartsguru}prestashop>cg_img_form14_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non'; $_MODULE['<{cartsguru}prestashop>welcome_98f770b0af18ca763421bac22b4b6805'] = 'Fonctionnalités';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_62275efff59edb02173db8524943db89'] = 'Sélectionnez \"Non\" si le serveur a mis trop de temps pour finaliser le processus et que vous voulez continuer l\'opération.'; $_MODULE['<{cartsguru}prestashop>welcome_d59048f21fd887ad520398ce677be586'] = 'En savoir plus';
$_MODULE['<{cartsguru}prestashop>cg_img_form14_c9cc8cce247e49bae79f15173ce97354'] = 'Sauvegarder'; $_MODULE['<{cartsguru}prestashop>welcome_08fa955704ed60bd92121421efe1dba5'] = 'Appels automatiques';
$_MODULE['<{cartsguru}prestashop>welcome_e0b30405b5e360a6a9d3935e1b5ee99d'] = 'Automatisez la mise en relation téléphonique entre vous et vos prospects sans effort. Levez les freins à lachat sur les produits à forte valeur ajoutée.';
$_MODULE['<{cartsguru}prestashop>welcome_d311128c6b9f34f85e6b0e29bcbcd165'] = 'Taux de conversion';
$_MODULE['<{cartsguru}prestashop>welcome_71241798130f714cbd2786df3da2cf0b'] = 'De valeur moyenne sur le panier';
$_MODULE['<{cartsguru}prestashop>welcome_16b8986716da520abefdaec42d79cde7'] = 'E-mail retargeting';
$_MODULE['<{cartsguru}prestashop>welcome_f2cd56fb5b2b77bfe56ab4791a053317'] = 'Relancez vos clients avec des e-mails personnalisés';
$_MODULE['<{cartsguru}prestashop>welcome_9194d247411aa51baae262692c740a71'] = 'Taux d\'ouverture';
$_MODULE['<{cartsguru}prestashop>welcome_4c51ca7dfcba263c58e914182e78704b'] = 'Taux de clics';
$_MODULE['<{cartsguru}prestashop>welcome_fb82b0e1a9cdd45d75c0316b489dc2f4'] = 'SMS retargeting';
$_MODULE['<{cartsguru}prestashop>welcome_b0efdff12e68896d7eeaef2e138ffa80'] = 'Avec un taux douverture exceptionnel de 97 %. Le canal ultime pour convertir vos paniers abandonnés.';
$_MODULE['<{cartsguru}prestashop>welcome_4551ffc5f55de732e0512bec68dfffde'] = 'De désinscription';
$_MODULE['<{cartsguru}prestashop>welcome_6a4e2a43c2d0e44b33c2f7dba1fd72ab'] = 'Facebook & Instagram';
$_MODULE['<{cartsguru}prestashop>welcome_4514e9f52d04fc7a152f8068f814613c'] = 'Touchez vos prospects là où ils passent le plus de temps ! Utilisez le dynamic Ads sur Facebook & instagram pour conquérir de nouveaux clients et transformer vos paniers abandonnés en ventes.';
$_MODULE['<{cartsguru}prestashop>welcome_e7b031d00b6b531d99eb2a32094b8b74'] = 'Taux de clics';
$_MODULE['<{cartsguru}prestashop>welcome_fcfebe7da3976f7fff336462ed1ce2b1'] = 'Enclins à la conversion';
/* welcome.tpl - subscribe form */
$_MODULE['<{cartsguru}prestashop>welcome_0557fa923dcee4d0f86b1409f5c2167f'] = 'Retour';
$_MODULE['<{cartsguru}prestashop>welcome_e79d694c8ca35f005a9dde7bcfdd15b0'] = 'Dernière étape avant votre offre d\'essai gratuite';
$_MODULE['<{cartsguru}prestashop>welcome_20db0bfeecd8fe60533206a2b5e9891a'] = 'Prénom';
$_MODULE['<{cartsguru}prestashop>welcome_8d3f5eff9c40ee315d452392bed5309b'] = 'Nom';
$_MODULE['<{cartsguru}prestashop>welcome_1f8261d17452a959e013666c5df45e07'] = 'Téléphone';
$_MODULE['<{cartsguru}prestashop>welcome_3a0853edb6b77ac1bced734358cab8c2'] = 'Adresse e-mail';
$_MODULE['<{cartsguru}prestashop>welcome_59716c97497eb9694541f7c3d37b1a4d'] = 'Pays';
$_MODULE['<{cartsguru}prestashop>welcome_dc647eb65e6711e155375218212b3964'] = 'Mot de passe';
$_MODULE['<{cartsguru}prestashop>welcome_0606da1bfc8cff393a415f647ec06e8f'] = 'Site web';
/* welcome.tpl - success view */
$_MODULE['<{cartsguru}prestashop>welcome_51dfd5a9635ce9e8c30311df73a40d03'] = 'Le plugin Carts Guru a été installé avec succès.';
$_MODULE['<{cartsguru}prestashop>welcome_7474c8f58df1491cc0fc42341f868345'] = 'Modifier mes paramètres';
$_MODULE['<{cartsguru}prestashop>welcome_ad84b784ad8d81a7c82b3209e15f1553'] = 'Accéder à Carts Guru';
/* welcome.tpl - multistore view */
$_MODULE['<{cartsguru}prestashop>welcome_94fdcdc729c564170e5de6e0abbd5e39'] = 'L\'option multi-boutiques est activée. Veuillez sélectionner une boutique pour configurer le plugin.';
/* welcome.tpl - connect store view */
$_MODULE['<{cartsguru}prestashop>welcome_2f3f00178ef7de520b79a3ccd70f9447'] = 'Connectez Carts Guru à votre boutique';
$_MODULE['<{cartsguru}prestashop>welcome_b250a007769c7ffe655c74cfb8176b8c'] = 'Identifiant du site';
$_MODULE['<{cartsguru}prestashop>welcome_e8ceedcb9972298e932cc156f9dcee42'] = 'Clef d\'authentification';
$_MODULE['<{cartsguru}prestashop>welcome_b6e06824a3667995a0291dc280c4cfb4'] = 'Démarrer';
$_MODULE['<{cartsguru}prestashop>welcome_0e458e0073e1ec08092620c539801c95'] = 'Vous n\'avez pas cette information ?';
$_MODULE['<{cartsguru}prestashop>welcome_faabe822494cb7cad1e540ca367eba60'] = 'Accédez ici';
/* welcome.tpl - footer */
$_MODULE['<{cartsguru}prestashop>welcome_36ce9091bb449adc40d7c4600889e0a5'] = 'Accèder au site Carts Guru';

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

View File

@ -0,0 +1,104 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
global $_MODULE;
$_MODULE = array();
/* cartsguru.php */
//Module Title
$_MODULE['<{cartsguru}prestashop>cartsguru_2052043f39909e620bd65573706463f6'] = 'Carts Guru';
//Module description
$_MODULE['<{cartsguru}prestashop>cartsguru_502a5a0f558857bb13531cafc2d8d246'] = 'Sua solução multicanal para recuperar carrinhos de compra abandonados de maneira fácil. Use o retargeting com Emails, SMS, Ligações e Redes Sociais!';
//Error cURL lib not available, plugin can not be used
$_MODULE['<{cartsguru}prestashop>cartsguru_a12b6c219f12145e967c09ea898a7fbd'] = 'A livraria cURL não está disponível.';
//Module not configured warning (in modules list)
$_MODULE['<{cartsguru}prestashop>cartsguru_543c108a7f01cd8df3d8ea24d60fd6e0'] = 'O módulo não está configurado';
//Confirmation message when save configuration (site id & auth key)
$_MODULE['<{cartsguru}prestashop>cartsguru_c888438d14855d7d96a2724ee9c306bd'] = 'A configuração foi atualizada.';
//Product image success
$_MODULE['<{cartsguru}prestashop>cartsguru_854de6c1f642b597dcba56164d31cb97'] = 'A imagem do produto para o Carts Guru foi gerada com sucesso.';
//Product image error
$_MODULE['<{cartsguru}prestashop>cartsguru_497295a4b41a60552bb2b03cd16164ef'] = 'Somente parte das imagens foram geradas. O servidor foi interrompido antes de terminá-lo.';
//Sign up error
$_MODULE['<{cartsguru}prestashop>cartsguru_52b766c02af601d61d77774a0fa83b22'] = 'Ocorreu um erro durante seu registro. Por favor, entre em contato conosco através do https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_a33c92bc6fb01f41a3bc7b00f8f75074'] = 'Ainda não somos compatíveis com seu país. Por favor, entre em contato através do https://carts.guru?platform=prestashop';
$_MODULE['<{cartsguru}prestashop>cartsguru_7880b2798d342da5b5bbe66398101c4b'] = 'Este email já está associado a uma conta';
//Sign in error
$_MODULE['<{cartsguru}prestashop>cartsguru_481d6b8c4898d64f0983a567e344d68d'] = 'Não foi possível conectá-lo com suas credenciais atuais.';
/* dashboard_zone_one.tpl */
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_917043f2ee73dd34f4cdf8a8adc3e870'] = 'Carts Guru';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_63a6a88c066880c5ac42394a22803ca6'] = 'Refresh';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_8d11e11ef5eb59e689f2bd5f02403f9e'] = 'Carrinhos Processados';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos';
$_MODULE['<{cartsguru}prestashop>dashboard_zone_one_910a58229f2e6842d4e993569c0ee687'] = 'Valor Recuperado';
/* welcome.tpl - main view */
$_MODULE['<{cartsguru}prestashop>welcome_46c46a775b80eef48f58efed3051d5d5'] = 'A melhor maneira de recuperar carrinhos abandonados';
$_MODULE['<{cartsguru}prestashop>welcome_44791981f8a25f9c63c43ba4d979b898'] = 'Carts Guru é a solução multifuncional para recuperar seus carrinhos abandonados. Use Emails, SMS, Ligações Automáticas, Facebook e Instagram para converter mais de 20% dos seus clientes perdidos em vendas.';
$_MODULE['<{cartsguru}prestashop>welcome_9a7342bdc64a7abd154cd3227c40cd11'] = 'Todas as funcionalidades durante seu Teste Grátis de 14 dias / US$5.000 recuperados';
$_MODULE['<{cartsguru}prestashop>welcome_7edaed702d94d2c7807d20d662c7067a'] = 'TENHO UMA CONTA';
$_MODULE['<{cartsguru}prestashop>welcome_103ccf94ed36e31ecea1decd3c88dd18'] = 'EXPERIMENTE AGORA GRÁTIS';
/* welcome.tpl - main view - top list */
$_MODULE['<{cartsguru}prestashop>welcome_4cde30a43458a349110b69a71661f24d'] = 'Preços com base no desempenho';
$_MODULE['<{cartsguru}prestashop>welcome_b22939c7405d616e5a13e9e2e117004b'] = 'mais detalhes';
$_MODULE['<{cartsguru}prestashop>welcome_7a3a7be24b5992655610b1ecf407c434'] = 'Crie campanhas ilimitadas, com ações ilimitadas';
$_MODULE['<{cartsguru}prestashop>welcome_b97da5945c83ba339a75eebc78e53d24'] = 'Solução fácil de usar e incrivelmente intuitiva';
$_MODULE['<{cartsguru}prestashop>welcome_a389c7d8e2f7b3442deccd1310e3146a'] = 'Sem riscos, sem de cartão. Cancele quando quiser';
/* welcome.tpl - main view - features */
$_MODULE['<{cartsguru}prestashop>welcome_98f770b0af18ca763421bac22b4b6805'] = 'FUNCIONALIDADES';
$_MODULE['<{cartsguru}prestashop>welcome_d59048f21fd887ad520398ce677be586'] = 'SAIBA MAIS';
$_MODULE['<{cartsguru}prestashop>welcome_08fa955704ed60bd92121421efe1dba5'] = 'Ligações Automáticas';
$_MODULE['<{cartsguru}prestashop>welcome_e0b30405b5e360a6a9d3935e1b5ee99d'] = 'Guarde-as para os produtos e clientes mais importantes. Entre em contato automaticamente.';
$_MODULE['<{cartsguru}prestashop>welcome_d311128c6b9f34f85e6b0e29bcbcd165'] = 'TAXA DE CONVERSÃO';
$_MODULE['<{cartsguru}prestashop>welcome_71241798130f714cbd2786df3da2cf0b'] = 'VALOR MÉDIO DO CARRINHO';
$_MODULE['<{cartsguru}prestashop>welcome_16b8986716da520abefdaec42d79cde7'] = 'Retargeting com email';
$_MODULE['<{cartsguru}prestashop>welcome_f2cd56fb5b2b77bfe56ab4791a053317'] = 'Personalize as campanhas com sua marca. Programe os emails para o momento ideal.';
$_MODULE['<{cartsguru}prestashop>welcome_9194d247411aa51baae262692c740a71'] = 'TAXA DE ABERTURA';
$_MODULE['<{cartsguru}prestashop>welcome_4c51ca7dfcba263c58e914182e78704b'] = 'TAXA DE CLIQUES';
$_MODULE['<{cartsguru}prestashop>welcome_fb82b0e1a9cdd45d75c0316b489dc2f4'] = 'Retargeting com SMS';
$_MODULE['<{cartsguru}prestashop>welcome_b0efdff12e68896d7eeaef2e138ffa80'] = 'Com uma incrível abertura de 97%. Coloque o Marketing com SMS no seu mix.';
$_MODULE['<{cartsguru}prestashop>welcome_4551ffc5f55de732e0512bec68dfffde'] = 'DESCADASTRAM-SE';
$_MODULE['<{cartsguru}prestashop>welcome_6a4e2a43c2d0e44b33c2f7dba1fd72ab'] = 'Facebook e Instagram';
$_MODULE['<{cartsguru}prestashop>welcome_4514e9f52d04fc7a152f8068f814613c'] = 'Esteja onde seus compradores mais estão. Use o retargeting dinâmico para recuperá-los.';
$_MODULE['<{cartsguru}prestashop>welcome_e7b031d00b6b531d99eb2a32094b8b74'] = 'TAXA DE CLIQUES';
$_MODULE['<{cartsguru}prestashop>welcome_fcfebe7da3976f7fff336462ed1ce2b1'] = 'PROPENSO À CONVERSÃO';
/* welcome.tpl - subscribe form */
$_MODULE['<{cartsguru}prestashop>welcome_0557fa923dcee4d0f86b1409f5c2167f'] = 'Voltar';
$_MODULE['<{cartsguru}prestashop>welcome_e79d694c8ca35f005a9dde7bcfdd15b0'] = 'Você está a um passo do seu teste grátis';
$_MODULE['<{cartsguru}prestashop>welcome_20db0bfeecd8fe60533206a2b5e9891a'] = 'Nome';
$_MODULE['<{cartsguru}prestashop>welcome_8d3f5eff9c40ee315d452392bed5309b'] = 'Sobrenome';
$_MODULE['<{cartsguru}prestashop>welcome_1f8261d17452a959e013666c5df45e07'] = 'Número de telefone';
$_MODULE['<{cartsguru}prestashop>welcome_3a0853edb6b77ac1bced734358cab8c2'] = 'Endereço de email';
$_MODULE['<{cartsguru}prestashop>welcome_59716c97497eb9694541f7c3d37b1a4d'] = 'País';
$_MODULE['<{cartsguru}prestashop>welcome_dc647eb65e6711e155375218212b3964'] = 'Senha';
$_MODULE['<{cartsguru}prestashop>welcome_0606da1bfc8cff393a415f647ec06e8f'] = 'URL do site';
/* welcome.tpl - success view */
$_MODULE['<{cartsguru}prestashop>welcome_51dfd5a9635ce9e8c30311df73a40d03'] = 'Carts Guru instalado com sucesso!';
$_MODULE['<{cartsguru}prestashop>welcome_7474c8f58df1491cc0fc42341f868345'] = 'EDITAR MINHAS DEFINIÇÕES';
$_MODULE['<{cartsguru}prestashop>welcome_ad84b784ad8d81a7c82b3209e15f1553'] = 'ACESSAR O CARTS GURU';
/* welcome.tpl - multistore view */
$_MODULE['<{cartsguru}prestashop>welcome_94fdcdc729c564170e5de6e0abbd5e39'] = 'A opção de múltiplas lojas está ativada. Se quiser configurar o módulo, por favor, selecione a loja.';
/* welcome.tpl - connect store view */
$_MODULE['<{cartsguru}prestashop>welcome_2f3f00178ef7de520b79a3ccd70f9447'] = 'Conecte o Carts Guru a sua loja PrestaShop';
$_MODULE['<{cartsguru}prestashop>welcome_b250a007769c7ffe655c74cfb8176b8c'] = 'ID do site';
$_MODULE['<{cartsguru}prestashop>welcome_e8ceedcb9972298e932cc156f9dcee42'] = 'Código de autorização';
$_MODULE['<{cartsguru}prestashop>welcome_b6e06824a3667995a0291dc280c4cfb4'] = 'CONECTE AGORA';
$_MODULE['<{cartsguru}prestashop>welcome_0e458e0073e1ec08092620c539801c95'] = 'Não sabe onde encontrar isso?';
$_MODULE['<{cartsguru}prestashop>welcome_faabe822494cb7cad1e540ca367eba60'] = 'Encontre-o aqui';
/* welcome.tpl - footer */
$_MODULE['<{cartsguru}prestashop>welcome_36ce9091bb449adc40d7c4600889e0a5'] = 'ACESSE O SITE DO CARTS GURU';

View File

@ -0,0 +1,23 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
if (!defined('_PS_VERSION_')) {
exit();
}
// Upgrade module to 1.2.0
function upgrade_module_1_2_0($module)
{
if ($module->registerHeaderAndOrderConfirmationHooks()) {
// Register the new version in API
$module->registerPluginAfterUpdate();
return true;
}
return false;
}

View File

@ -0,0 +1,28 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
if (!defined('_PS_VERSION_')) {
exit();
}
// Upgrade module to 1.2.1
function upgrade_module_1_2_1($module)
{
//New image configuration
Configuration::updateValue('CARTSG_IMAGE_TYPE', 'cartsguru');
$module->registerHook('backOfficeHeader');
if ($module->registerDashboarHooks()) {
// Register the new version in API
$module->registerPluginAfterUpdate();
return true;
}
return false;
}

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="1186px" height="554px" viewBox="0 0 1186 554" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
<title>0C3FE253-A9E3-4012-9305-5AC28D53E237</title>
<desc>Created with sketchtool.</desc>
<defs>
<polygon id="path-1" points="0 0.22265625 1442 0.22265625 1440 270.398438 0 553.867187"></polygon>
<rect id="path-3" x="0" y="0" width="1080" height="748"></rect>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="prestashop_home_hover" transform="translate(-254.000000, -149.000000)">
<g id="graph" transform="translate(254.000000, 149.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<use id="Mask" fill="#F7F7F7" xlink:href="#path-1"></use>
<g opacity="0.5" mask="url(#mask-2)">
<g transform="translate(487.000000, 317.000000) scale(-1, 1) rotate(-15.000000) translate(-487.000000, -317.000000) translate(-53.000000, -57.000000)">
<mask id="mask-4" fill="white">
<use xlink:href="#path-3"></use>
</mask>
<g id="Mask" stroke="none" fill="none"></g>
<g id="graph" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" mask="url(#mask-4)">
<g transform="translate(718.000000, 509.500000) rotate(-21.000000) translate(-718.000000, -509.500000) translate(-640.000000, 21.000000)" id="Shape" stroke-width="2">
<path d="M13.9647431,760.236193 C13.9647431,760.236193 263.655898,556.651142 459.178033,569.659792 C576.858647,577.487992 543.883387,566.180772 660.160374,582.828863 C714.407372,590.593867 757.762165,477.043648 811.041889,465.70564 C855.601212,456.223002 994.31299,509.012713 1039.85618,514.646878 C1180.52076,532.045219 1177.5957,419.630907 1319.88955,419.434837 C1390.39936,419.337612 1441.86566,494.913527 1510.4011,487.140421 C1566.09653,480.822443 1595.71038,444.855827 1667.95897,426.626216 C1718.82631,413.79095 1817.07019,453.435897 1859.18727,451.381217 C1914.34513,448.689716 1922.50806,360.999618 1965.05652,343.961008 C2010.316,325.835104 2036.57177,404.998606 2124.64848,426.626216 C2187.43669,442.042795 2228.71093,227.741974 2293.66763,220.288089 C2343.99908,214.514568 2418.86909,375.100424 2465.58197,391.353135 C2546.95579,419.664935 2527.51573,299.694652 2527.51573,299.694652 L2611.4695,906.701797 C2611.4695,906.701797 21.5967529,972.714053 13.9647431,976.839617 C6.33107419,980.96518 -6.38949514,760.236193 3.78762398,760.236193 L13.9647431,760.236193 L13.9647431,760.236193 Z" stroke-opacity="0.6" stroke="#F7AE30" fill-opacity="0.6" fill="#FFE0AA"></path>
<path d="M187.481979,636.845621 C192.466013,635.568562 444.901373,505.197471 567.428313,512.219635 C625.84637,515.566523 842.062866,597.24188 923.469864,551.251187 C1004.87686,505.260495 1124.49534,399.805313 1232.48496,426.633493 C1340.47458,453.461674 1609.30881,500.878691 1675.76205,466.386501 C1742.2186,431.892653 1907.11149,276.650432 2010.00757,298.245989 C2070.49623,310.941941 2149.56219,389.588845 2250.90698,353.817938 C2352.25012,318.045372 2370.5238,-23.0387189 2431.99632,1.23534441 C2493.46719,25.5077492 2649.6347,825.9216 2649.6347,825.9216 L332.02063,825.9216 L187.481979,636.845621 L187.481979,636.845621 Z" stroke-opacity="0.8" stroke="#5FB96E" fill-opacity="0.8" fill="#B5E3BC"></path>
<path d="M147.657645,757.587359 C152.671543,756.1544 426.715446,657.296801 540.344457,714.606876 C653.973469,771.915292 747.364381,738.98045 882.714757,681.670375 C1018.06679,624.361959 1071.7248,561.313413 1143.57851,564.177673 C1215.43056,567.043592 1285.99015,656.585297 1376.22374,635.094226 C1466.45898,613.603156 1520.70266,531.821654 1678.82629,551.284358 C1836.95158,570.745403 1864.89469,612.173513 1966.82681,596.412621 C2068.75728,580.653387 2165.75017,289.795842 2249.30243,286.958119 C2332.85136,284.122054 2456.98932,428.791225 2533.85693,454.579515 C2610.72289,480.369463 2715.99485,426.643445 2715.99485,426.643445 L2704.29962,945.349793 C2704.29962,945.349793 201.129828,941.052573 204.471321,945.349793 C207.814473,949.64867 147.657645,757.587359 147.657645,757.587359 L147.657645,757.587359 Z" stroke-opacity="0.6" stroke="#E97171" fill="#FFDDDD"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,17 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

View File

@ -0,0 +1,36 @@
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
(function ($) {
// On ready
$(document).ready(function ($) {
// Switch active view
function switchView(view, backToView){
if (!view){
view = window.cg_backto;
window.cg_backto = null;
}
$('#cartsguru-welcome').removeClass();
switch(view){
case 'view-try-it':
case 'view-have-account':
case 'view-success':
case 'view-no-store-selected':
$('#cartsguru-welcome').addClass(view);
}
window.cg_backto = backToView;
}
//Declare global functions
window.cg_switchView = switchView;
});
})(jQuery);

View File

@ -0,0 +1,17 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,10 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<link rel="stylesheet" href="{$path|escape:'urlpathinfo':'UTF-8'}/css/admin.css" type="text/css" />
<script type="text/javascript" src="{$path|escape:'urlpathinfo':'UTF-8'}/js/admin.js"></script>

View File

@ -1,21 +1,11 @@
{* {*
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.0.0
* @license Commercial license * @license Commercial license
* *}
*************************************
** CARTS GURU *
** V 1.0.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.5,1.6
* + Cloud compatible & tested
*}
{if $ps_version < "1.6"} {if $ps_version < "1.6"}
<div class="warn"> <div class="warn">
{else} {else}
@ -36,4 +26,4 @@
</div></div> </div></div>
{else} {else}
</div> </div>
{/if} {/if}

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

View File

@ -0,0 +1,233 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<div id="cartsguru-welcome" class="{$activeView|escape:'htmlall':'UTF-8'}">
<div class="header">
<div class="inner-section">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12 text-center">
<img class="logo" src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}logo_black.png" />
</div>
</div>
<div class="success-message text-center">
<img src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}success.png" />
<h1>{l s='You successfuly installed Carts Guru' mod='cartsguru'}</h1>
</div>
<div class="no-selected-store-message text-center">
<h1>{l s='The multistore option is enabled. If you want configure the module, please select store.' mod='cartsguru'}</h1>
</div>
<form action="{$formUrl|escape:'htmlall':'UTF-8'}" method="post" class="view-try-it-form form form-big-padding">
<div class="form-title text-center">{l s='You are one step away from your free-trial' mod='cartsguru'}</div>
<button type="button" class="close-form-btn back-btn" onclick="cg_switchView()">
&lt; {l s='Back' mod='cartsguru'}
</button>
<div class="row">
<div class="col-md-6">
<input class="input full-width" name="firstname" placeholder="{l s='First name' mod='cartsguru'}" required value="{$firstname|escape:'htmlall':'UTF-8'}" />
</div>
<div class="col-md-6">
<input class="input full-width" name="lastname" placeholder="{l s='Last name' mod='cartsguru'}" required value="{$lastname|escape:'htmlall':'UTF-8'}"/>
</div>
</div>
<div class="row">
<div class="col-md-6">
<input class="input full-width" name="phoneNumber" placeholder="{l s='Phone number' mod='cartsguru'}" required value="{$phoneNumber|escape:'htmlall':'UTF-8'}" />
</div>
<div class="col-md-6">
<input class="input full-width" type="email" name="email" placeholder="{l s='Email adress' mod='cartsguru'}" required value="{$email|escape:'htmlall':'UTF-8'}" />
</div>
</div>
<div class="row">
<div class="col-md-6">
<select class="input full-width" name="country" required placeholder="{l s='Country' mod='cartsguru'}">
{foreach from=$countries key=id_country item=countryName}
<option value="{$id_country|escape:'htmlall':'UTF-8'}" {if $id_country eq $country}selected="selected"{/if}>{$countryName|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
</div>
<div class="col-md-6">
<input class="input full-width" type="password" name="password" placeholder="{l s='Password' mod='cartsguru'}" required />
</div>
</div>
<div class="row">
<div class="col-md-12">
<input class="input full-width" name="website" placeholder="{l s='Website Url' mod='cartsguru'}" required value="{$website|escape:'htmlall':'UTF-8'}" />
</div>
</div>
<div class="row">
<div class="col-md-12 text-center">
<button class="btn-full" name="submitSubscribe">{l s='Connect it now' mod='cartsguru'}</button>
</div>
</div>
</form>
<div class="row header-text">
<div class="col-lg-12">
<h1>{l s='The best way to recover your abandoned carts' mod='cartsguru'}</h1>
<h2>{l s='Carts Guru is the all-in-one solution to recover your abandoned carts and turn them into sales. Use Emails, SMS, Automatic Calls, Facebook & Instagram to convert more than 20% of your lost customers into sales.' mod='cartsguru'} </h2>
</div>
</div>
<form action="{$formUrl|escape:'htmlall':'UTF-8'}" method="post" class="have-account-form form">
<div class="form-title">{l s='Plug Carts Guru into your PrestaShop store' mod='cartsguru'}</div>
<button type="button" class="close-form-btn" onclick="cg_switchView()">
X
</button>
<div class="row">
<div class="col-md-4">
<input class="input full-width" name="siteid" placeholder="{l s='Site ID' mod='cartsguru'}" required value="{$siteid|escape:'htmlall':'UTF-8'}"/>
</div>
<div class="col-md-4">
<input class="input full-width" name="authkey" placeholder="{l s='Auth Key' mod='cartsguru'}" required value="{$authkey|escape:'htmlall':'UTF-8'}"/>
</div>
<div class="col-md-4">
<button class="btn-full full-width" name="submitConnect">{l s='Connect it now' mod='cartsguru'}</button>
</div>
</div>
<div class="sub-text row">
<div class="col-sm-12">
<span>{l s='Don t know this information?' mod='cartsguru'}</span>
<a class="link" target="_blank" href="https://my.carts.guru">{l s='Access it here' mod='cartsguru'}</a>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="triangle-slice"></div>
<div class="footer">
<div class="inner-section">
<div class="container-fluid">
<div class="success-buttons">
<button class="btn-not-full" onclick="cg_switchView('view-have-account', 'view-success')">{l s='Edit my settings' mod='cartsguru'}</button>
<button class="btn-full" onclick="location.href='https://my.carts.guru?authid={$siteid|escape:'htmlall':'UTF-8'}&authkey={$authkey|escape:'htmlall':'UTF-8'}'">{l s='Access to Carts Guru platform' mod='cartsguru'}</button>
</div>
<div class="try-buttons">
<div class="button-title">{l s='Enjoy all features during your 14-Days / $5,000 Revenue Free Trial' mod='cartsguru'}</div>
<button class="btn-not-full" onclick="cg_switchView('view-have-account')">{l s='I have an account' mod='cartsguru'}</button>
<form action="{$formUrl|escape:'htmlall':'UTF-8'}" class="form-inline" method="post">
<button class="btn-full" name="submitHasNoAccount">{l s='Try it now for free' mod='cartsguru'}</button>
</form>
</div>
<div class="row">
<div class="list">
<div class="col-lg-6">
<div class="list-item">
<img src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}checkmark.png" />
<span>{l s='Performance-based pricing.' mod='cartsguru'}</span>
(<a class="link" target="_blank" href="https://carts.guru?platform=prestashop">{l s='see details here' mod='cartsguru'}</a>)
</div>
<div class="list-item">
<img src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}checkmark.png" />
<span>{l s='Easy-to-use, incredibly intuitive solution' mod='cartsguru'}</span>
</div>
</div>
<div class="col-lg-6">
<div class="list-item">
<img src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}checkmark.png" />
<span>{l s='Run unlimited campaigns, with unlimited actions' mod='cartsguru'}</span>
</div>
<div class="list-item">
<img src="{$imagesUrl|escape:'urlpathinfo':'UTF-8'}checkmark.png" />
<span>{l s='Risk Free. No credit cards required. Cancel any time' mod='cartsguru'}</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 text-center text-bold features-title">{l s='Features' mod='cartsguru'}</div>
</div>
<div class="row">
<div clas="col-sm-12">
<div class="channel-block-list text-center">
<article class="channel-block">
<div class="channel-title">{l s='Email retargeting' mod='cartsguru'}</div>
<div class="channel-picture email"></div>
<div class="channel-link">{l s='Learn more' mod='cartsguru'}</div>
<div class="channel-info">
<div class="channel-block-info-triangle"></div>
<p class="no-margin">{l s='Customize campaigns with your brand. Launch them at the perfect moment with automation.' mod='cartsguru'}</p>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">52%</div>
<div class="channel-ef-t">{l s='Open rate' mod='cartsguru'}</div>
</div>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">14%</div>
<div class="channel-ef-t">{l s='Click rate' mod='cartsguru'}</div>
</div>
</div>
</article>
<article class="channel-block">
<div class="channel-title">{l s='SMS retargeting' mod='cartsguru'}</div>
<div class="channel-picture sms"></div>
<div class="channel-link">{l s='Learn more' mod='cartsguru'}</div>
<div class="channel-info">
<div class="channel-block-info-triangle"></div>
<p class="no-margin">{l s='With an outstanding 97% open rate. Add SMS Marketing to your mix.' mod='cartsguru'}</p>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">20%</div>
<div class="channel-ef-t">{l s='Conversion rate' mod='cartsguru'}</div>
</div>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">1%</div>
<div class="channel-ef-t">{l s='Unsubscription' mod='cartsguru'}</div>
</div>
</div>
</article>
<article class="channel-block">
<div class="channel-title">{l s='Automatic calls' mod='cartsguru'}</div>
<div class="channel-picture call"></div>
<div class="channel-link">{l s='Learn more' mod='cartsguru'}</div>
<div class="channel-info">
<div class="channel-block-info-triangle"></div>
<p class="no-margin">{l s='Save this for your most important products and customers. Contact your customer automatically.' mod='cartsguru'}</p>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">45%</div>
<div class="channel-ef-t">{l s='Conversion rate' mod='cartsguru'}</div>
</div>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">+20%</div>
<div class="channel-ef-t">{l s='Average cart value' mod='cartsguru'}</div>
</div>
</div>
</article>
<article class="channel-block">
<div class="channel-title">{l s='Facebook & Instagram' mod='cartsguru'}</div>
<div class="channel-picture fb"></div>
<div class="channel-link">{l s='Learn more' mod='cartsguru'}</div>
<div class="channel-info">
<div class="channel-block-info-triangle"></div>
<p class="no-margin">{l s='Reach your buyers where they are! Use dynamic retargeting to recover buyers with CPC ads.' mod='cartsguru'}</p>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">+34%</div>
<div class="channel-ef-t">{l s='Click through rate' mod='cartsguru'}</div>
</div>
<div class="col-xs-6 channel-ef-el">
<div class="channel-ef">+70%</div>
<div class="channel-ef-t">{l s='Prone to convert' mod='cartsguru'}</div>
</div>
</div>
</article>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 text-center">
<a class="text-bold features-title" target="_blank" href="https://carts.guru?platform=prestashop">
{l s='Access Carts Guru website' mod='cartsguru'}
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,26 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<title>{$store_name|escape:'htmlall':'UTF-8'}</title>
<link rel="self" href="{$url|escape:'htmlall':'UTF-8'}"/>
{foreach from=$products item=product}
<entry>
<g:id>{$product.id|escape:'htmlall':'UTF-8'}</g:id>
<g:availability>{$product.availability|escape:'htmlall':'UTF-8'}</g:availability>
<g:description><![CDATA[{$product.description|escape:'htmlall':'UTF-8'}]]></g:description>
<g:image_link>{$product.image_link|escape:'htmlall':'UTF-8'}</g:image_link>
<g:link>{$product.link|escape:'htmlall':'UTF-8'}</g:link>
<g:title><![CDATA[{$product.title|escape:'htmlall':'UTF-8'}]]></g:title>
<g:price>{$product.price|escape:'htmlall':'UTF-8'}</g:price>
<g:mpn>{$product.id|escape:'htmlall':'UTF-8'}</g:mpn>
<g:condition>new</g:condition>
</entry>
{/foreach}
</feed>

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,40 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<section id="cartsguru" class="panel widget">
<div class="panel-heading">
<i class="icon-time"></i>{l s='Carts Guru Dashboard' mod='cartsguru'}
<span class="panel-heading-action">
<a class="list-toolbar-btn" href="#" onclick="refreshDashboard('cartsguru'); return false;" title="{l s='Refresh' mod='cartsguru'}">
<i class="process-icon-refresh"></i>
</a>
</span>
</div>
<section id="dash_cg_main" class="">
<ul class="data_list_large">
<li>
<span class="data_label size_l"> {l s='Processed Carts' mod='cartsguru'}</span>
<span class="data_value size_xxl">
<span id="cg_processed_carts"></span>
</span>
</li>
<li>
<span class="data_label size_l"> {l s='Orders' mod='cartsguru'}</span>
<span class="data_value size_xxl">
<span id="cg_sales"></span>
</span>
</li>
<li>
<span class="data_label size_l">{l s='Revenue Recovered' mod='cartsguru'}</span>
<span class="data_value size_xxl">
<span id="cg_turnover"></span>
</span>
</li>
</ul>
</section>
</section>

View File

@ -0,0 +1,16 @@
<?php
/**
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,19 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<script>
{if isset($order) && $order}
fbq('track', 'Purchase', {
content_ids: ['{$order.products|escape:'htmlall':'UTF-8'}'],
content_type: 'product',
value: {$order.total|escape:'htmlall':'UTF-8'},
currency: '{$currency_iso|escape:'htmlall':'UTF-8'}',
product_catalog_id: {$catalogId|escape:'htmlall':'UTF-8'}
});
{/if}
</script>

View File

@ -0,0 +1,46 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<script>
{literal}
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
{/literal}
{if isset($pixel) && $pixel}
fbq('init', '{$pixel|escape:'htmlall':'UTF-8'}'); fbq('track', 'PageView');
{if isset($track_product_view) && $track_product_view}
fbq('track', 'ViewContent', {
content_ids: ['{$track_product_view.id|escape:'htmlall':'UTF-8'}'],
content_type: 'product',
value: {$track_product_view.value|escape:'htmlall':'UTF-8'},
currency: '{$currency_iso|escape:'htmlall':'UTF-8'}',
product_catalog_id: '{$catalogId|escape:'htmlall':'UTF-8'}'
});
{/if}
(function($){
$(document).ajaxComplete(function(event, xhr, params) {
if (xhr.responseJSON && xhr.responseJSON.productTotal && xhr.responseJSON.products) {
var products = [];
for (var i = 0; i < xhr.responseJSON.products.length; i++) {
products.push(xhr.responseJSON.products[i].id);
}
fbq('track', 'AddToCart', {
content_ids: products,
content_type: 'product',
value: parseFloat(xhr.responseJSON.productTotal.replace(',', '.')),
currency: '{$currency_iso|escape:'htmlall':'UTF-8'}',
product_catalog_id: '{$catalogId|escape:'htmlall':'UTF-8'}'
});
}
});
})(jQuery);
{/if}
</script>

View File

@ -0,0 +1,100 @@
{*
* Carts Guru
*
* @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016
* @license Commercial license
*}
<script>
(function($){
$(document).ready(function() {
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
var fieldNames = {
email: ['guest_email', 'email'],
homePhoneNumber: ['phone'],
mobilePhoneNumber: ['phone_mobile'],
firstname: ['firstname', 'customer_firstname'],
lastname: ['lastname', 'customer_lastname'],
countryCode: ['id_country']
};
var fields = {
email: [],
homePhoneNumber: [],
mobilePhoneNumber: [],
firstname: [],
lastname: [],
countryCode: []
};
function setupTracking () {
for (var item in fieldNames) {
if (fieldNames.hasOwnProperty(item)) {
for (var i = 0; i < fieldNames[item].length; i++) {
//Get by name
var els = document.getElementsByName(fieldNames[item][i]);
for (var j = 0; j < els.length; j++) {
fields[item].push(els[j]);
}
//Get by ID
var el = document.getElementById(fieldNames[item][i]);
if (el && el.name !== fieldNames[item][i]){
fields[item].push(el);
}
}
}
}
if (fields.email.length > 0 && fields.firstname.length > 0) {
for (var item in fields) {
if (fields.hasOwnProperty(item)) {
for (var i = 0; i < fields[item].length; i++) {
$(fields[item][i]).bind('blur', trackData);
}
}
}
}
}
function collectData () {
var data = {};
for (var item in fields) {
if (fields.hasOwnProperty(item)) {
for (var i = 0; i < fields[item].length; i++) {
data[item] = $(fields[item][i]).val();
if (data[item] && data[item].trim){
data[item].trim();
}
if (data[item] !== ''){
break;
}
}
}
}
return data;
}
function trackData () {
var data = collectData();
if (data.email) {
$(document).ready(function() {
$.ajax({
url: "{$trackingUrl|escape:'javascript':'UTF-8'}",
type: "POST",
data: data
});
});
}
}
setupTracking();
});
})(jQuery);
</script>

View File

@ -2,20 +2,9 @@
/** /**
* Carts Guru * Carts Guru
* *
* @category advertising_marketing
* @author LINKT IT * @author LINKT IT
* @copyright Copyright (c) LINKT IT 2016 * @copyright Copyright (c) LINKT IT 2016
* @version 1.1.0
* @license Commercial license * @license Commercial license
*
*************************************
** CARTS GURU *
** V 1.1.0 *
*************************************
* +
* + Languages: EN, FR
* + PS version: 1.4,1.5,1.6
* + Cloud compatible & tested
*/ */
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
@ -24,4 +13,4 @@ header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false); header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache'); header('Pragma: no-cache');
header('Location: ../'); header('Location: ../');
exit; exit;