bebeboutik/modules/contactform/contactform.php
Alexandre Simonet f4f1b00946 Fix var
2016-02-25 14:15:51 +01:00

217 lines
6.8 KiB
PHP

<?php
if (!defined('_PS_VERSION_'))
exit;
class Contactform extends Module {
const TYPE_PRESS = 1;
const TYPE_PROVIDER = 2;
private $assets_module_dir;
public function __construct() {
$this->name = 'contactform';
$this->tab = 'advertising_marketing';
$this->version = '1.0';
$this->author = 'Antadis';
$this->need_instance = 0;
parent::__construct();
$this->displayName = $this->l('Formulaire de contact pour les fournisseurs et la presse');
$this->description = $this->l('Intégration de formulaire de contact');
$this->assets_module_dir = dirname(__FILE__);
}
public function installDB() {
return Db::getInstance()->Execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'contactform` (
`id_contactform` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`brand` VARCHAR(255) NULL,
`compagny` VARCHAR(255) NOT NULL,
`lastname` VARCHAR(128) NOT NULL,
`firstname` VARCHAR(128) NOT NULL,
`function` VARCHAR(255) NOT NULL,
`email1` VARCHAR(255) NOT NULL,
`email2` VARCHAR(255) NULL,
`phone1` VARCHAR(255) NOT NULL,
`phone2` VARCHAR(255) NULL,
`purpose` VARCHAR(255) NULL,
`content` TEXT(65535) NOT NULL,
`date_add` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`type` INT(11) NOT NULL,
PRIMARY KEY (`id_contactform`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;
')
&& Db::getInstance()->Execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'contactform_email` (
`id_contactform_email` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) NULL,
`type` INT(11) NOT NULL,
PRIMARY KEY (`id_contactform_email`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;
');
}
public function uninstallDB() {
return Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'contactform`;')
&& Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'contactform_email`;');
}
public function install() {
if(!parent::install() || !$this->installDB()) {
return FALSE;
}
return TRUE;
}
public function uninstall() {
if (!parent::uninstall() || !$this->uninstallDB() ) {
return FALSE;
}
return TRUE;
}
public function getContent() {
$content = "<style>
h2 {
font-size: 1.4em;
margin: 0 0 .83em 0;
color: #268CCD;
}
form.module {
padding: 20px;
background: #F4E6C9;
display: inline-block;
}
form.module label, form.module input, form.module textarea {
display: block;
margin: 10px 0;
}
form.module label {
float: none;
width: auto;
padding: 0.2em 0.5em 0 0;
text-align: left;
font-weight: bold;
}
form.module input[type=submit] {
border: none;
color: black;
font-weight: bold;
background: #D6C195;
padding: 10px 20px;
cursor: pointer;
}
.form-inline {
display: inline-block;
margin: 20px;
}
</style>
<div class='form-inline'>
<h2>Formulaire de contact pour les fournisseurs</h2>
<form method='post' class='module'>
<p class='bold'>{{ error_provider }}</p>
<label for='email'>Emails destinataire (Une adresse email par ligne):</label>
<textarea name='emails' id='email' cols='50' rows='10'>{{ emails_provider }}</textarea>
<input type='submit' value='Modifier' name='update_mail'>
<input type='hidden' name='type' value='".Contactform::TYPE_PROVIDER."'>
</form>
</div>
<div class='form-inline'>
<h2>Formulaire de contact pour la presse</h2>
<form method='post' class='module'>
<p class='bold'>{{ error_press }}</p>
<label for='email'>Emails destinataire (Une adresse email par ligne):</label>
<textarea name='emails' id='email' cols='50' rows='10'>{{ emails_press }}</textarea>
<input type='submit' value='Modifier' name='update_mail'>
<input type='hidden' name='type' value='".Contactform::TYPE_PRESS."'>
</form>
</div>";
if (Tools::isSubmit('update_mail')) {
if (empty($_POST['emails'])) {
if ($_POST['type'] == Contactform::TYPE_PROVIDER) {
$content = str_replace('{{ error_provider }}', $this->l("Aucune adresse email n'a été renseignée"), $content);
$content = str_replace('{{ error_press }}', "", $content);
} else {
$content = str_replace('{{ error_press }}', $this->l("Aucune adresse email n'a été renseignée"), $content);
$content = str_replace('{{ error_provider }}', "", $content);
}
$contentEmails = Db::getInstance()->ExecuteS('SELECT `email`, `type` FROM `'._DB_PREFIX_.'contactform_email`');
$contentEmailProvider = '';
$contentEmailPress = '';
foreach ($contentEmails as $k => $row) {
if ($row['type'] == Contactform::TYPE_PROVIDER) {
$contentEmailProvider .= $row['email']."\n";
}
if ($row['type'] == Contactform::TYPE_PRESS) {
$contentEmailPress .= $row['email']."\n";
}
}
$content = str_replace('{{ emails_provider }}', $contentEmailProvider, $content);
$content = str_replace('{{ emails_press }}', $contentEmailPress, $content);
return $content;
}
$emails = explode("\n", trim($_POST['emails']));
foreach ($emails as $k => $email) {
$email = trim($email);
if (Validate::isEmail($email)) {
$emails[$k] = $email;
} else {
array_splice($emails, $k);
}
}
$emails = array_unique($emails);
Db::getInstance()->executeS('DELETE FROM `'._DB_PREFIX_.'contactform_email` WHERE `type` = '.pSQL($_POST['type']));
foreach ($emails as $k => $email) {
Db::getInstance()->autoExecute(_DB_PREFIX_.'contactform_email', [
'email' => pSQL($email),
'type' => pSQL($_POST['type'])
], 'INSERT');
}
if ($_POST['type'] == Contactform::TYPE_PROVIDER) {
$content = str_replace('{{ error_provider }}', $this->l("Modification effectuée"), $content);
$content = str_replace('{{ error_press }}', "", $content);
} else {
$content = str_replace('{{ error_press }}', $this->l("Modification effectuée"), $content);
$content = str_replace('{{ error_provider }}',"", $content);
}
} else {
$content = str_replace('{{ error_provider }}', "", $content);
$content = str_replace('{{ error_press }}', "", $content);
}
$contentEmails = Db::getInstance()->ExecuteS('SELECT `email`, `type` FROM `'._DB_PREFIX_.'contactform_email`');
$contentEmailProvider = '';
$contentEmailPress = '';
foreach ($contentEmails as $k => $row) {
if ($row['type'] == Contactform::TYPE_PROVIDER) {
$contentEmailProvider .= $row['email']."\n";
}
if ($row['type'] == Contactform::TYPE_PRESS) {
$contentEmailPress .= $row['email']."\n";
}
}
$content = str_replace('{{ emails_provider }}', $contentEmailProvider, $content);
$content = str_replace('{{ emails_press }}', $contentEmailPress, $content);
return $content;
}
}