2016-03-29 17:01:26 +02:00
|
|
|
<?php
|
2017-08-22 11:30:56 +02:00
|
|
|
include_once(_PS_MODULE_DIR_.'/ant_alert/ant_alert.php');
|
|
|
|
require_once(PS_ADMIN_DIR . '/helpers/HelperFormBootstrap.php');
|
|
|
|
|
2016-03-29 17:01:26 +02:00
|
|
|
class AdminAntAlert extends AdminTab {
|
2017-08-22 11:30:56 +02:00
|
|
|
|
|
|
|
protected $_html;
|
|
|
|
public $module_name;
|
|
|
|
public $config_tab;
|
|
|
|
public $controller;
|
|
|
|
public $helperForm;
|
|
|
|
public $_object;
|
|
|
|
|
|
|
|
public function __construct($config_tab = true)
|
|
|
|
{
|
|
|
|
parent::__construct();
|
|
|
|
$this->_object = false;
|
|
|
|
$this->controller = 'AdminModules';
|
|
|
|
$this->module_name = 'ant_alert';
|
|
|
|
$this->config_tab = (bool)$config_tab;
|
|
|
|
if ($config_tab) {
|
|
|
|
$this->controller = 'AdminAntAlert';
|
|
|
|
}
|
|
|
|
$this->helperForm = new HelperFormBootstrap();
|
|
|
|
$this->helperForm->_select2 = true;
|
|
|
|
$this->helperForm->_inputSwitch = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function _postProcess()
|
|
|
|
{
|
|
|
|
if (Tools::isSubmit('newAlert')) {
|
|
|
|
|
|
|
|
} elseif (Tools::isSubmit('addAlert')) {
|
|
|
|
$this->_addOrUpdateAlert(false);
|
|
|
|
} elseif (Tools::isSubmit('editAlert')) {
|
|
|
|
$this->_addOrUpdateAlert(true);
|
|
|
|
} elseif (Tools::isSubmit('loadAlert') && Tools::getValue('id')) {
|
|
|
|
$this->_object = new AntAlert((int)Tools::getValue('id'));
|
|
|
|
} elseif (Tools::isSubmit('deleteAlert') && Tools::getValue('id')) {
|
|
|
|
$deleted_alert = new AntAlert((int)Tools::getValue('id'));
|
|
|
|
$res = $deleted_alert->delete();
|
|
|
|
if ($res) {
|
|
|
|
$this->_html .= HelperFormBootstrap::displaySuccess($this->l('Alert deleted : #') . (int)Tools::getValue('id'));
|
|
|
|
} else {
|
2017-08-22 11:43:58 +02:00
|
|
|
$this->_html .= HelperFormBootstrap::displayErrors($this->l('Alert cannot be deleted : #') . (int)Tools::getValue('id'));
|
2017-08-22 11:30:56 +02:00
|
|
|
}
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function _addOrUpdateAlert($edit = false)
|
|
|
|
{
|
|
|
|
if ($edit) {
|
|
|
|
$alert = new AntAlert((int)Tools::getValue('id_alert'));
|
|
|
|
} else {
|
|
|
|
$alert = new AntAlert();
|
2017-08-22 11:43:58 +02:00
|
|
|
$alert->date_last_sent = date("Y-m-d H:i:s");
|
2017-09-18 11:14:40 +02:00
|
|
|
$alert->date_last_check = date("Y-m-d H:i:s");
|
2017-08-22 11:30:56 +02:00
|
|
|
}
|
|
|
|
|
2017-08-22 11:43:58 +02:00
|
|
|
$alert->id_contact = (int)Tools::getValue('id_contact');
|
|
|
|
$alert->limit = (int)Tools::getValue('limit');
|
|
|
|
$alert->hours = (int)Tools::getValue('hours');
|
2017-08-22 11:30:56 +02:00
|
|
|
$alert->enabled = (int)Tools::getValue('enabled');
|
|
|
|
|
|
|
|
if ($alert->save()) {
|
|
|
|
if ($edit) {
|
|
|
|
$this->_html .= HelperFormBootstrap::displaySuccess($this->l('Alert has been updated'));
|
|
|
|
} else {
|
|
|
|
$this->_html .= HelperFormBootstrap::displaySuccess($this->l('Alert has been created'));
|
|
|
|
}
|
|
|
|
} else {
|
2017-08-22 11:43:58 +02:00
|
|
|
$this->_html .= HelperFormBootstrap::displayErrors($this->l('Error occured while updating alert'));
|
2017-08-22 11:30:56 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function display()
|
|
|
|
{
|
|
|
|
parent::displayForm();
|
|
|
|
|
|
|
|
$this->_html = '';
|
|
|
|
|
|
|
|
$this->_postProcess();
|
|
|
|
|
|
|
|
$this->_addCss();
|
|
|
|
$this->_html .= $this->helperForm->renderStyle();
|
|
|
|
|
|
|
|
$this->_displayForm();
|
|
|
|
$this->_displayList();
|
|
|
|
|
|
|
|
$this->_html .='<div class="clearfix"></div>';
|
|
|
|
$this->_addJs();
|
|
|
|
$this->_html .= $this->helperForm->renderScript();
|
|
|
|
echo $this->_html;
|
2016-03-29 17:01:26 +02:00
|
|
|
}
|
2017-08-22 11:30:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
protected function _addJs()
|
|
|
|
{
|
|
|
|
$this->helperForm->_js .= '<script type="text/javascript"></script>';
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function _addCss()
|
|
|
|
{
|
|
|
|
$this->helperForm->_css .='
|
|
|
|
.table tr th {
|
|
|
|
background: #565485;
|
|
|
|
background: rgba(86,84,133,0.9);
|
|
|
|
color: #fff;
|
|
|
|
font-size: 12px;
|
|
|
|
}
|
|
|
|
.table tr:nth-child(even) {
|
|
|
|
background: #F1F1F1;
|
|
|
|
}
|
|
|
|
.table .input-group-btn .btn {
|
|
|
|
padding: 4px 5px;
|
|
|
|
color: #504d8b;
|
|
|
|
|
|
|
|
}
|
|
|
|
.table .input-group-btn .btn .anticon{
|
|
|
|
font-size: 12px;
|
|
|
|
}
|
|
|
|
.bg-grey{
|
|
|
|
background: #EFEFEF;
|
|
|
|
border-radius:4px;
|
|
|
|
}
|
|
|
|
.bg-grey .div-title {
|
|
|
|
border-bottom: 2px solid #504D8B;
|
|
|
|
}
|
|
|
|
';
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function _displayList()
|
|
|
|
{
|
|
|
|
global $cookie, $currentIndex;
|
|
|
|
|
|
|
|
$id_lang = (int)$cookie->id_lang;
|
|
|
|
$contacts = Contact::getContacts($cookie->id_lang);
|
|
|
|
|
|
|
|
$alerts = AntAlert::getAlerts(false);
|
|
|
|
$_current_index = ($this->config_tab ? $currentIndex . '&token=' . Tools::getAdminTokenLite($this->controller) : $_SERVER['REQUEST_URI']);
|
|
|
|
|
|
|
|
$this->_html .='
|
|
|
|
<div class="col-md-12">
|
|
|
|
<div class="panel">
|
|
|
|
<div class="panel-title">
|
|
|
|
<h2><span class="text-rose anticon anticon-list"></span> '.$this->l('Liste des Alertes').'</h2>
|
|
|
|
<div class="clearfix"></div>
|
|
|
|
</div>
|
|
|
|
<div class="panel-content">
|
|
|
|
<table class="table table-custombordered" style="width: 100%;">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th class="text-left">'.$this->l('ID').'</th>
|
|
|
|
<th class="text-left">'.$this->l('Contact').'</th>
|
2017-08-22 12:33:13 +02:00
|
|
|
<th class="text-left">'.$this->l('Limite par heures').'</th>
|
|
|
|
<th class="text-left">'.$this->l('Dernier envoi').'</th>
|
2017-08-22 11:30:56 +02:00
|
|
|
<th class="text-center">'.$this->l('Active').'</th>
|
|
|
|
<th class="text-center">'.$this->l('Action').'</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>';
|
|
|
|
foreach ($alerts as $alert)
|
|
|
|
{
|
|
|
|
$current_contact = $this->_search($contacts,'id_contact',(int)$alert['id_contact']);
|
|
|
|
$this->_html .='
|
|
|
|
<tr>
|
|
|
|
<td valign="middle" align="left">#'.$alert['id_alert'].'</td>
|
|
|
|
<td valign="middle" align="left"><b>'.$current_contact['name'].'</b></td>
|
|
|
|
<td valign="middle" align="left"><b>'.$alert['limit'].' <i class="glyphicon glyphicon-envelope"></i> / '.$alert['hours'].'h</b></td>
|
|
|
|
<td valign="middle" align="left"><i class="glyphicon glyphicon-time"></i> '.date('d/m/Y H:i',strtotime($alert['date_last_sent'])).'</td>
|
|
|
|
<td align="center">'.((int)$alert['enabled']?'<span class="anticon anticon-checkmark text-green-light"></span>':'<span class="anticon anticon-cross text-rose"></span>').'</td>
|
|
|
|
<td valign="middle" align="center">
|
|
|
|
<div class="input-group-btn" role="group" aria-label="...">
|
|
|
|
<a href="'.$_current_index.'&loadAlert=1&id='.$alert['id_alert'].'" class="btn btn-default"><span class="anticon anticon-pencil2"></span></a>
|
|
|
|
<a href="'.$_current_index.'&deleteAlert=1&id='.$alert['id_alert'].'" class="btn btn-default"><span class="anticon anticon-bin"></span></a>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
</tr>';
|
|
|
|
}
|
|
|
|
$this->_html .='
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private function _displayForm()
|
|
|
|
{
|
|
|
|
global $cookie, $currentIndex;
|
|
|
|
if (Validate::isLoadedObject($this->_object)){
|
|
|
|
$alert = $this->_object;
|
|
|
|
}
|
|
|
|
$contacts = Contact::getContacts($cookie->id_lang);
|
|
|
|
$alreadyUsedContacts = AntAlert::getAlreadyUsedContacts();
|
|
|
|
foreach($contacts as $contact) {
|
|
|
|
$id_contacts[(int)$contact['id_contact']] = array(
|
|
|
|
'label' => $contact['name'],
|
|
|
|
'value' => (int) $contact['id_contact']
|
|
|
|
);
|
2017-08-22 11:43:58 +02:00
|
|
|
if(isset($alert) && $alert->id_contact==$contact['id_contact']) {
|
2017-08-22 11:30:56 +02:00
|
|
|
$id_contacts[(int)$contact['id_contact']]['selected'] = true;
|
|
|
|
}elseif(in_array($contact['id_contact'], $alreadyUsedContacts)){
|
|
|
|
$id_contacts[(int)$contact['id_contact']]['disabled'] = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->helperForm->_forms = array(
|
|
|
|
array(
|
|
|
|
'action' => $currentIndex . '&token=' . Tools::getAdminTokenLite('AdminAntAlert'),
|
2017-08-22 12:33:13 +02:00
|
|
|
'title' => '<span class="text-rose glyphicon glyphicon-tags"></span> '.$this->l('Alerte'),
|
2017-08-22 11:30:56 +02:00
|
|
|
'class' => 'form-horizontal',
|
|
|
|
'class_div' => 'col-md-12',
|
|
|
|
'sections' => array(
|
|
|
|
array(
|
|
|
|
'class' => 'col-md-6',
|
|
|
|
'inputs' => array(
|
|
|
|
array(
|
|
|
|
'type' => 'select2',
|
|
|
|
'name' => 'id_contact',
|
|
|
|
// 'label-class' => 'col-md-5',
|
|
|
|
// 'input-class' => 'col-md-6',
|
|
|
|
'label' => $this->l('Contact'),
|
|
|
|
'options' => $id_contacts,
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'type' => 'simpleText',
|
|
|
|
'name' => 'limit',
|
|
|
|
'label-class' => 'col-md-3',
|
|
|
|
'input-class' => 'col-md-6',
|
|
|
|
'label' => $this->l('Limit'),
|
|
|
|
'default' => (isset($alert)?$alert->limit:'')
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'type' => 'simpleText',
|
|
|
|
'name' => 'hours',
|
|
|
|
'label-class' => 'col-md-3',
|
|
|
|
'input-class' => 'col-md-6',
|
|
|
|
'label' => $this->l('Hours'),
|
|
|
|
'default' => (isset($alert)?$alert->hours:'')
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'type' => 'switch',
|
|
|
|
'label' => $this->l('Active'),
|
|
|
|
'label-class' => 'col-md-3',
|
|
|
|
'input-class' => 'col-md-6',
|
|
|
|
'class-group' => 'switch',
|
|
|
|
'name' => 'enabled',
|
|
|
|
'title' => ' ',
|
|
|
|
'default' => (isset($alert)?($alert->enabled==0?0:1):1),
|
|
|
|
'checked' => (isset($alert)?($alert->enabled==0?0:1):1),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'actions' => array(),
|
|
|
|
'actions-class' => 'text-right',
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'class' => 'col-md-6 bg-grey',
|
|
|
|
'title' => '<span class="anticon anticon-info"></span> Informations',
|
|
|
|
'inputs' => array(),
|
|
|
|
'info_html' => '
|
2017-08-22 12:42:08 +02:00
|
|
|
<p>La limite des messages est par heure et par type de contact.</p>
|
2017-08-22 11:30:56 +02:00
|
|
|
<br>
|
|
|
|
Par exemple :</p>
|
|
|
|
<ul>
|
2017-08-22 12:33:13 +02:00
|
|
|
<li style="font-size:13px;">Limite <b>50</b> en <b>1</b> heure pour le contact "Retour/Echange" </li>
|
2017-08-22 11:30:56 +02:00
|
|
|
</ul>
|
2017-08-22 12:33:13 +02:00
|
|
|
<p>Ici un mail d\'alerte se déclenche après 1h si 50 messages ou plus, concernant les Retour/Echange, ont été envoyés.</p>
|
2017-08-22 11:30:56 +02:00
|
|
|
<p>Une seule alerte par type de contact possible !</p>
|
|
|
|
<p></p>'
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'actions' => array(),
|
|
|
|
'actions-class' => 'text-right',
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($alert)) {
|
2017-08-22 12:33:13 +02:00
|
|
|
$this->helperForm->_forms[0]['sections'][0]['title'] = "Editer une alerte";
|
2017-08-22 11:30:56 +02:00
|
|
|
$this->helperForm->_forms[0]['sections'][0]['inputs'][] = array(
|
|
|
|
'type' => 'hidden',
|
|
|
|
'name' => 'id_alert',
|
|
|
|
'value' => $alert->id,
|
|
|
|
'class' => 'large'
|
|
|
|
);
|
|
|
|
$this->helperForm->_forms[0]['sections'][0]['actions'] = array(
|
|
|
|
array(
|
|
|
|
'type' => 'submit',
|
|
|
|
'class' => 'btn-default',
|
|
|
|
'name' => 'newAlert',
|
2017-08-22 12:33:13 +02:00
|
|
|
'value' => $this->l('Nouvelle Alerte')
|
2017-08-22 11:30:56 +02:00
|
|
|
),
|
|
|
|
array(
|
|
|
|
'type' => 'submit',
|
|
|
|
'class' => 'btn-primary',
|
|
|
|
'name' => 'editAlert',
|
2017-08-22 12:33:13 +02:00
|
|
|
'value' => $this->l('Editer l\'alerte')
|
2017-08-22 11:30:56 +02:00
|
|
|
),
|
|
|
|
);
|
|
|
|
} else {
|
2017-08-22 12:33:13 +02:00
|
|
|
$this->helperForm->_forms[0]['sections'][0]['title'] = "Ajouter une alerte";
|
2017-08-22 11:30:56 +02:00
|
|
|
$this->helperForm->_forms[0]['sections'][0]['actions'] = array(
|
|
|
|
array(
|
|
|
|
'type' => 'submit',
|
|
|
|
'class' => 'btn-primary',
|
|
|
|
'name' => 'addAlert',
|
2017-08-22 12:33:13 +02:00
|
|
|
'value' => $this->l('Ajouter l\'alerte')
|
2017-08-22 11:30:56 +02:00
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->helperForm->renderForm();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _search($array, $key, $value)
|
|
|
|
{
|
|
|
|
$results = array();
|
|
|
|
|
|
|
|
if (is_array($array)) {
|
|
|
|
if (isset($array[$key]) && $array[$key] == $value) {
|
|
|
|
return $array;
|
|
|
|
}
|
|
|
|
foreach ($array as $subarray) {
|
|
|
|
$results = array_merge($results, $this->_search($subarray, $key, $value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $results;
|
|
|
|
}
|
|
|
|
|
2016-03-29 17:01:26 +02:00
|
|
|
}
|