diff --git a/mails/fr/ant_alert.html b/mails/fr/ant_alert.html new file mode 100644 index 00000000..0bf964fc --- /dev/null +++ b/mails/fr/ant_alert.html @@ -0,0 +1,15 @@ + + + + + Message Alert Problèmes techniques + + + + + + + +
Vous avez reçu {limit} messages ou plus concernant des problèmes techniques en {hours}.
 
+ + \ No newline at end of file diff --git a/mails/fr/ant_alert.txt b/mails/fr/ant_alert.txt new file mode 100644 index 00000000..375036ba --- /dev/null +++ b/mails/fr/ant_alert.txt @@ -0,0 +1 @@ +Vous avez reçu {limit} messages ou plus concernant des problèmes techniques en {hours} \ No newline at end of file diff --git a/modules/ant_alert/AdminAntAlert.php b/modules/ant_alert/AdminAntAlert.php new file mode 100644 index 00000000..51c0c10e --- /dev/null +++ b/modules/ant_alert/AdminAntAlert.php @@ -0,0 +1,38 @@ + +
+ '.$this->l('Configuration Alert').' +

'.$this->l('Last send : ').Configuration::get('ANT_ALTER_DATESEND').'

+

+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
'; + } +} \ No newline at end of file diff --git a/modules/ant_alert/ant_alert.php b/modules/ant_alert/ant_alert.php new file mode 100644 index 00000000..f9db49e7 --- /dev/null +++ b/modules/ant_alert/ant_alert.php @@ -0,0 +1,99 @@ +name = 'ant_alert'; + $this->tab = 'administration'; + $this->author = 'Antadis'; + $this->version = '1.0'; + $this->need_instance = 0; + + parent::__construct(); + + $this->displayName = $this->l('Alert for message'); + $this->description = $this->l('Alert for message of technical error'); + } + + public function install() + { + + + $hooks = array( + 'ant_alert' => array('Ant Alert', 'Called when a message of technical error is sent'), + ); + foreach($hooks as $k => $v) { + if(count(Db::getInstance()->ExecuteS(' + SELECT `id_hook` + FROM `'._DB_PREFIX_.'hook` + WHERE `name` = "'.$k.'" + LIMIT 1 + ')) == 0) { + Db::getInstance()->ExecuteS(' + INSERT INTO `'._DB_PREFIX_.'hook` + VALUES (DEFAULT, "'.$k.'", "'.$v[0].'", "'.$v[1].'", 0, 0) + '); + } + } + + if(!parent::install() + || !$this->registerHook('ant_alert')) { + return FALSE; + } + + # Set default configuration values + Configuration::updateValue('ANT_ALTER_LIMIT', 10); + Configuration::updateValue('ANT_ALTER_HOURS', 24); + Configuration::updateValue('ANT_ALTER_DATESEND', date('Y-m-d H:i:s')); + + return true; + } + + public function uninstall() { + + if(parent::uninstall() == false) { + return false; + } + + Configuration::deleteByName('ANT_ALTER_LIMIT'); + Configuration::deleteByName('ANT_ALTER_HOURS'); + Configuration::deleteByName('ANT_ALTER_DATESEND'); + + return true; + } + + public function hookAnt_Alert($params) { + global $cookie; + + $date = new Datetime(Configuration::get('ANT_ALTER_DATESEND')); + $now = new Datetime; + + $dteDiff = $date->diff($now); + if ((int)$dteDiff->format("%H") > (int)Configuration::get('ANT_ALTER_HOURS')) { + $open_messages = Db::getInstance()->getRow(' + SELECT COUNT(*) as total + FROM '._DB_PREFIX_.'customer_thread ct + WHERE ct.status = "open" + GROUP BY ct.id_contact HAVING COUNT(*) > 0 AND ct.id_contact = 4' + ); + if ((int)$open_messages['total'] >= (int)Configuration::get('ANT_ALTER_LIMIT')) { + $to = array(''); + $data = array( + '{limit}' => (int)Configuration::get('ANT_ALTER_LIMIT'), + '{hours}' => (int)Configuration::get('ANT_ALTER_HOURS'), + ); + foreach ($to as $email) { + if(Mail::Send((int)$cookie->id_lang, 'ant_alert', 'Alert error', $data, $to)) { + Configuration::updateValue('ANT_ALTER_DATESEND', date('Y-m-d H:i:s')); + } + } + } + } + + } + +} diff --git a/modules/paypal/express_checkout/process.php b/modules/paypal/express_checkout/process.php index b8bddd97..a0e03c50 100755 --- a/modules/paypal/express_checkout/process.php +++ b/modules/paypal/express_checkout/process.php @@ -157,6 +157,10 @@ class PaypalExpressCheckout extends Paypal $cart = Context::getContext()->cart; $customer = Context::getContext()->customer; + // LOGO IMG Paypal + global $cookie; + $fields['LOGOIMG'] = 'https://static.bebeboutik.com/img/logo_'.$cookie->id_lang.'.png'; + //ANTADIS if($customer->secure_key != $cart->secure_key){ mail('thibault@antadis.com', "bbb paypal", print_r($cart, true)); diff --git a/override/controllers/ContactController.php b/override/controllers/ContactController.php index 8ddce25d..530213c6 100755 --- a/override/controllers/ContactController.php +++ b/override/controllers/ContactController.php @@ -1,6 +1,200 @@ isLogged()) + { + self::$smarty->assign('isLogged', 1); + $customer = new Customer((int)(self::$cookie->id_customer)); + if (!Validate::isLoadedObject($customer)) + die(Tools::displayError('Customer not found')); + $products = array(); + $orders = array(); + $getOrders = Db::getInstance()->ExecuteS(' + SELECT id_order + FROM '._DB_PREFIX_.'orders + WHERE id_customer = '.(int)$customer->id.' ORDER BY date_add'); + foreach ($getOrders as $row) + { + $order = new Order($row['id_order']); + $date = explode(' ', $order->date_add); + $orders[$row['id_order']] = Tools::displayDate($date[0], self::$cookie->id_lang); + $tmp = $order->getProducts(); + foreach ($tmp as $key => $val) + $products[$val['product_id']] = $val['product_name']; + } + + $orderList = ''; + foreach ($orders as $key => $val) + $orderList .= ''; + $orderedProductList = ''; + + foreach ($products as $key => $val) + $orderedProductList .= ''; + self::$smarty->assign('orderList', $orderList); + self::$smarty->assign('orderedProductList', $orderedProductList); + } + + if (Tools::isSubmit('submitMessage')) + { + $fileAttachment = NULL; + if (isset($_FILES['fileUpload']['name']) AND !empty($_FILES['fileUpload']['name']) AND !empty($_FILES['fileUpload']['tmp_name'])) + { + $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg'); + $filename = uniqid().substr($_FILES['fileUpload']['name'], -5); + $fileAttachment['content'] = file_get_contents($_FILES['fileUpload']['tmp_name']); + $fileAttachment['name'] = $_FILES['fileUpload']['name']; + $fileAttachment['mime'] = $_FILES['fileUpload']['type']; + } + $message = Tools::htmlentitiesUTF8(Tools::getValue('message')); + if (!($from = trim(Tools::getValue('from'))) OR !Validate::isEmail($from)) + $this->errors[] = Tools::displayError('Invalid e-mail address'); + elseif (!($message = nl2br2($message))) + $this->errors[] = Tools::displayError('Message cannot be blank'); + elseif (!Validate::isCleanHtml($message)) + $this->errors[] = Tools::displayError('Invalid message'); + elseif (!($id_contact = (int)(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact((int)($id_contact), (int)(self::$cookie->id_lang))))) + $this->errors[] = Tools::displayError('Please select a subject on the list.'); + elseif (!empty($_FILES['fileUpload']['name']) AND $_FILES['fileUpload']['error'] != 0) + $this->errors[] = Tools::displayError('An error occurred during the file upload'); + elseif (!empty($_FILES['fileUpload']['name']) AND !in_array(substr($_FILES['fileUpload']['name'], -4), $extension) AND !in_array(substr($_FILES['fileUpload']['name'], -5), $extension)) + $this->errors[] = Tools::displayError('Bad file extension'); + else + { + if ((int)(self::$cookie->id_customer)) + $customer = new Customer((int)(self::$cookie->id_customer)); + else + { + $customer = new Customer(); + $customer->getByEmail($from); + } + + $contact = new Contact($id_contact, self::$cookie->id_lang); + + if (!(( + $id_customer_thread = (int)Tools::getValue('id_customer_thread') + AND (int)Db::getInstance()->getValue(' + SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm + WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND token = \''.pSQL(Tools::getValue('token')).'\'') + ) OR ( + $id_customer_thread = (int)Db::getInstance()->getValue(' + SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm + WHERE cm.email = \''.pSQL($from).'\' AND cm.id_order = '.(int)(Tools::getValue('id_order')).'') + ))) + { + $fields = Db::getInstance()->ExecuteS(' + SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email + FROM '._DB_PREFIX_.'customer_thread cm + WHERE email = \''.pSQL($from).'\' AND ('. + ($customer->id ? 'id_customer = '.(int)($customer->id).' OR ' : '').' + id_order = '.(int)(Tools::getValue('id_order')).')'); + $score = 0; + foreach ($fields as $key => $row) + { + $tmp = 0; + if ((int)$row['id_customer'] AND $row['id_customer'] != $customer->id AND $row['email'] != $from) + continue; + if ($row['id_order'] != 0 AND Tools::getValue('id_order') != $row['id_order']) + continue; + if ($row['email'] == $from) + $tmp += 4; + if ($row['id_contact'] == $id_contact) + $tmp++; + if (Tools::getValue('id_product') != 0 AND $row['id_product'] == Tools::getValue('id_product')) + $tmp += 2; + if ($tmp >= 5 AND $tmp >= $score) + { + $score = $tmp; + $id_customer_thread = $row['id_customer_thread']; + } + } + } + $old_message = Db::getInstance()->getValue(' + SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm + WHERE cm.id_customer_thread = '.(int)($id_customer_thread).' + ORDER BY date_add DESC'); + if ($old_message == htmlentities($message, ENT_COMPAT, 'UTF-8')) + { + self::$smarty->assign('alreadySent', 1); + $contact->email = ''; + $contact->customer_service = 0; + } + + if (!empty($contact->email)) + { + if (/*Mail::Send((int)(self::$cookie->id_lang), 'contact', Mail::l('Message from contact form'), array('{email}' => $from, '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, ((int)(self::$cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : ''), $fileAttachment) + AND*/ Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from)) + self::$smarty->assign('confirmation', 1); + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + + if ($contact->customer_service) + { + if ((int)$id_customer_thread) + { + $ct = new CustomerThread($id_customer_thread); + $ct->status = 'open'; + $ct->id_lang = (int)self::$cookie->id_lang; + $ct->id_contact = (int)($id_contact); + if ($id_order = (int)Tools::getValue('id_order')) + $ct->id_order = $id_order; + if ($id_product = (int)Tools::getValue('id_product')) + $ct->id_product = $id_product; + $ct->update(); + } + else + { + $ct = new CustomerThread(); + if (isset($customer->id)) + $ct->id_customer = (int)($customer->id); + if ($id_order = (int)Tools::getValue('id_order')) + $ct->id_order = $id_order; + if ($id_product = (int)Tools::getValue('id_product')) + $ct->id_product = $id_product; + $ct->id_contact = (int)($id_contact); + $ct->id_lang = (int)self::$cookie->id_lang; + $ct->email = $from; + $ct->status = 'open'; + $ct->token = Tools::passwdGen(12); + $ct->add(); + } + + Module::hookExec('ant_alert', array()); + + if ($ct->id) + { + $cm = new CustomerMessage(); + $cm->id_customer_thread = $ct->id; + $cm->message = htmlentities($message, ENT_COMPAT, 'UTF-8'); + if (isset($filename) AND rename($_FILES['fileUpload']['tmp_name'], _PS_MODULE_DIR_.'../upload/'.$filename)) + $cm->file_name = $filename; + $cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']); + $cm->user_agent = $_SERVER['HTTP_USER_AGENT']; + if ($cm->add()) + { + + if (empty($contact->email)) + Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from); + + self::$smarty->assign('confirmation', 1); + } + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + if (count($this->errors) > 1) + array_unique($this->errors); + } + } + } + + public function setMedia() { parent::setMedia(); global $css_files;