mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-04-20 16:37:48 +02:00
Merge remote-tracking branch 'RaspbianFrance/master'
This commit is contained in:
commit
cd38351c4c
18 changed files with 570 additions and 31 deletions
|
@ -85,6 +85,7 @@
|
||||||
'date' => htmlspecialchars($sended['at']),
|
'date' => htmlspecialchars($sended['at']),
|
||||||
'text' => htmlspecialchars($sended['content']),
|
'text' => htmlspecialchars($sended['content']),
|
||||||
'type' => 'sended',
|
'type' => 'sended',
|
||||||
|
'status' => ($sended['delivered'] ? 'delivered' : ($sended['failed'] ? 'failed' : '')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -132,22 +132,41 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$smsStops = $db->getFromTableWhere('sms_stop');
|
||||||
|
|
||||||
foreach ($numbers as $number)
|
foreach ($numbers as $number)
|
||||||
{
|
{
|
||||||
|
//Si les SMS STOP sont activés, on passe au numéro suivant si le numéro actuelle fait parti des SMS STOP
|
||||||
|
if (RASPISMS_SETTINGS_SMS_STOP)
|
||||||
|
{
|
||||||
|
foreach ($smsStops as $smsStop)
|
||||||
|
{
|
||||||
|
if (!($number == $smsStop['number']))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Un SMS destiné au " . $number . " a été bloqué par SMS STOP\n";
|
||||||
|
continue(2); //On passe au numéro suivant !
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
echo " Envoi d'un SMS au " . $number . "\n";
|
echo " Envoi d'un SMS au " . $number . "\n";
|
||||||
//On ajoute le SMS aux SMS envoyés
|
//On ajoute le SMS aux SMS envoyés
|
||||||
//Pour plus de précision, on remet la date à jour en réinstanciant l'objet DateTime (et on reformatte la date, bien entendu)
|
//Pour plus de précision, on remet la date à jour en réinstanciant l'objet DateTime (et on reformatte la date, bien entendu)
|
||||||
$now = new DateTime();
|
$now = new DateTime();
|
||||||
$now = $now->format('Y-m-d H:i:s');
|
$now = $now->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
//On peut maintenant ajouter le SMS
|
//On peut maintenant ajouter le SMS
|
||||||
if (!$db->insertIntoTable('sendeds', ['at' => $now, 'target' => $number, 'content' => $scheduled['content']]))
|
if (!$db->insertIntoTable('sendeds', ['at' => $now, 'target' => $number, 'content' => $scheduled['content'], 'before_delivered' => ceil(mb_strlen($scheduled['content'])/160)]))
|
||||||
{
|
{
|
||||||
echo 'Impossible d\'inserer le sms pour le numero ' . $number . "\n";
|
echo 'Impossible d\'inserer le sms pour le numero ' . $number . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$id_sended = $db->lastId();
|
$id_sended = $db->lastId();
|
||||||
|
|
||||||
//Commande qui envoie le SMS
|
//Commande qui envoie le SMS
|
||||||
$commande_send_sms = 'gammu-smsd-inject TEXT ' . escapeshellarg($number) . ' -len ' . mb_strlen($text_sms) . ' -text ' . $text_sms;
|
$commande_send_sms = 'gammu-smsd-inject TEXT ' . escapeshellarg($number) . ' -report -len ' . mb_strlen($text_sms) . ' -text ' . $text_sms;
|
||||||
//Commande qui s'assure de passer le SMS dans ceux envoyés, et de lui donner le bon statut
|
//Commande qui s'assure de passer le SMS dans ceux envoyés, et de lui donner le bon statut
|
||||||
|
|
||||||
//On va liée les deux commandes pour envoyer le SMS puis le passer en echec
|
//On va liée les deux commandes pour envoyer le SMS puis le passer en echec
|
||||||
|
@ -183,6 +202,8 @@
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo "Analyse du SMS " . $dir . "\n";
|
||||||
|
|
||||||
//On récupère la date du SMS à la seconde près grâce au nom du fichier (Cf. parseSMS.sh)
|
//On récupère la date du SMS à la seconde près grâce au nom du fichier (Cf. parseSMS.sh)
|
||||||
//Il faut mettre la date au format Y-m-d H:i:s
|
//Il faut mettre la date au format Y-m-d H:i:s
|
||||||
$date = substr($dir, 0, 4) . '-' . substr($dir, 4, 2) . '-' . substr($dir, 6, 2) . ' ' . substr($dir, 8, 2) . ':' . substr($dir, 10, 2) . ':' . substr($dir, 12, 2);
|
$date = substr($dir, 0, 4) . '-' . substr($dir, 4, 2) . '-' . substr($dir, 6, 2) . ' ' . substr($dir, 8, 2) . ':' . substr($dir, 10, 2) . ':' . substr($dir, 12, 2);
|
||||||
|
@ -217,6 +238,54 @@
|
||||||
$number = internalTools::parsePhone($number);
|
$number = internalTools::parsePhone($number);
|
||||||
$text = $content_file[1];
|
$text = $content_file[1];
|
||||||
|
|
||||||
|
//On gère les SMS STOP
|
||||||
|
if (trim($text) == 'STOP')
|
||||||
|
{
|
||||||
|
echo 'STOP SMS detected ' . $number . "\n";
|
||||||
|
$this->wlog('STOP SMS detected ' . $number);
|
||||||
|
$db->insertIntoTable('sms_stop', ['number' => $number]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//On gère les accusés de reception
|
||||||
|
if (trim($text) == 'Delivered' || trim($text) == 'Failed')
|
||||||
|
{
|
||||||
|
echo 'Delivered or Failed SMS for ' . $number . "\n";
|
||||||
|
$this->wlog('Delivered or Failed SMS for ' . $number);
|
||||||
|
|
||||||
|
//On récupère les SMS pas encore validé, uniquement sur les dernières 12h
|
||||||
|
$now = new DateTime();
|
||||||
|
$interval = new DateInterval('P12H');
|
||||||
|
$sinceDate = $now->sub($interval)->format('Y-m-d H:i:s');
|
||||||
|
|
||||||
|
if (!$sendeds = $db->getFromTableWhere('sendeds', ['target' => $number, 'delivered' => false, 'failed' => false, '>at' => $sinceDate], 'at', false, 1))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sended = $sendeds[0];
|
||||||
|
|
||||||
|
//On gère les echecs
|
||||||
|
if (trim($text) == 'Failed')
|
||||||
|
{
|
||||||
|
$db->updateTableWhere('sendeds', ['before_delivered' => 0, 'failed' => true], ['id' => $sended['id']]);
|
||||||
|
echo "Sended SMS id " . $sended['id'] . " pass to failed status\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//On gère le cas des messages de plus de 160 caractères, lesquels impliquent plusieurs accusés
|
||||||
|
if ($sended['before_delivered'] > 1)
|
||||||
|
{
|
||||||
|
$db->updateTableWhere('sendeds', ['before_delivered' => $sended['before_delivered'] - 1], ['id' => $sended['id']]);
|
||||||
|
echo "Sended SMS id " . $sended['id'] . " before_delivered decrement\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Si tout est bon, que nous avons assez d'accusés, nous validons !
|
||||||
|
$db->updateTableWhere('sendeds', ['before_delivered' => 0, 'delivered' => true], ['id' => $sended['id']]);
|
||||||
|
echo "Sended SMS id " . $sended['id'] . " to delivered status\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!$number)
|
if (!$number)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
/**
|
/**
|
||||||
* Cette fonction permet de mettre à jour l'activation ou la désactivation du transfer des SMS
|
* Cette fonction permet de mettre à jour l'activation ou la désactivation du transfer des SMS
|
||||||
* @param $csrf : Le jeton CSRF
|
* @param $csrf : Le jeton CSRF
|
||||||
* @param string $_POST['transfer'] : Le nouveau transfer de l'utilisateur
|
* @param string $_POST['transfer'] : Le nouveau transfer
|
||||||
* @return void;
|
* @return void;
|
||||||
*/
|
*/
|
||||||
public function changeTransfer($csrf)
|
public function changeTransfer($csrf)
|
||||||
|
@ -66,4 +66,84 @@
|
||||||
header('Location: ' . $this->generateUrl('settings'));
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette fonction permet de mettre à jour l'activation ou la désactivation de SMS-STOP
|
||||||
|
* @param $csrf : Le jeton CSRF
|
||||||
|
* @param string $_POST['stop'] : Le nouveau stop
|
||||||
|
* @return void;
|
||||||
|
*/
|
||||||
|
public function changeSmsStop($csrf)
|
||||||
|
{
|
||||||
|
//On vérifie que le jeton csrf est bon
|
||||||
|
if (!internalTools::verifyCSRF($csrf))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Creation de l'object de base de données
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
if (!isset($_POST['sms_stop']))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Vous devez renseigner un valeur';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$stop = (int)$_POST['sms_stop'];
|
||||||
|
|
||||||
|
if (!$db->updateTableWhere('settings', ['value' => $stop], ['name' => 'sms_stop']))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Impossible de mettre les données à jour.';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette fonction permet de mettre à jour l'activation ou la désactivation de la detection d'URL dans les discussions
|
||||||
|
* @param $csrf : Le jeton CSRF
|
||||||
|
* @param string $_POST['detect_url'] : Le nouveau stop
|
||||||
|
* @return void;
|
||||||
|
*/
|
||||||
|
public function changeDetectionUrl($csrf)
|
||||||
|
{
|
||||||
|
//On vérifie que le jeton csrf est bon
|
||||||
|
if (!internalTools::verifyCSRF($csrf))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Creation de l'object de base de données
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
if (!isset($_POST['detect_url']))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Vous devez renseigner un valeur';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$detectUrl = (int)$_POST['detect_url'];
|
||||||
|
|
||||||
|
if (!$db->updateTableWhere('settings', ['value' => $detectUrl], ['name' => 'detect_url']))
|
||||||
|
{
|
||||||
|
$_SESSION['errormessage'] = 'Impossible de mettre les données à jour.';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
|
||||||
|
header('Location: ' . $this->generateUrl('settings'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
49
controllers/smsstop.php
Executable file
49
controllers/smsstop.php
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Page des SMS STOP
|
||||||
|
*/
|
||||||
|
class smsstop extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Cette fonction est appelée avant toute les autres :
|
||||||
|
* Elle vérifie que l'utilisateur est bien connecté
|
||||||
|
* @return void;
|
||||||
|
*/
|
||||||
|
public function before()
|
||||||
|
{
|
||||||
|
internalTools::verifyConnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette fonction est alias de showAll()
|
||||||
|
*/
|
||||||
|
public function byDefault()
|
||||||
|
{
|
||||||
|
$this->showAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette fonction retourne tous les numéros sous sms stop, sous forme d'un tableau permettant l'administration de ces numéros
|
||||||
|
* @param int $page : La page à consulter. Par défaut 0
|
||||||
|
* @return void;
|
||||||
|
*/
|
||||||
|
public function showAll($page = 0)
|
||||||
|
{
|
||||||
|
//Creation de l'object de base de données
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$page = (int)($page < 0 ? $page = 0 : $page);
|
||||||
|
$limit = 25;
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
//Récupération des sms-stop, par paquets de $limit, en ignorant les $offset premiers
|
||||||
|
$smsStops = $db->getFromTableWhere('sms_stop', [], false, true, $limit, $offset);
|
||||||
|
|
||||||
|
$this->render('smsstop/default', array(
|
||||||
|
'smsStops' => $smsStops,
|
||||||
|
'page' => $page,
|
||||||
|
'limit' => $limit,
|
||||||
|
'nbResults' => count($smsStops),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,9 @@ CREATE TABLE IF NOT EXISTS sendeds
|
||||||
at DATETIME NOT NULL,
|
at DATETIME NOT NULL,
|
||||||
target VARCHAR(12) NOT NULL,
|
target VARCHAR(12) NOT NULL,
|
||||||
content VARCHAR(1000) NOT NULL,
|
content VARCHAR(1000) NOT NULL,
|
||||||
|
before_delivered INT NOT NULL,
|
||||||
|
delivered BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
failed BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -135,6 +138,16 @@ CREATE TABLE IF NOT EXISTS transfers
|
||||||
FOREIGN KEY (id_received) REFERENCES receiveds (id) ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (id_received) REFERENCES receiveds (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS sms_stop
|
||||||
|
(
|
||||||
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
|
number VARCHAR(12) NOT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE (number)
|
||||||
|
);
|
||||||
|
|
||||||
#On insert les données par défaut dans les settings
|
#On insert les données par défaut dans les settings
|
||||||
INSERT INTO settings (name, value)
|
INSERT INTO settings (name, value)
|
||||||
VALUES ('transfer', '1');
|
VALUES ('transfer', '1'),
|
||||||
|
('sms_stop', '1'),
|
||||||
|
('detect_url', '1');
|
||||||
|
|
|
@ -8,6 +8,16 @@
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.small-text
|
||||||
|
{
|
||||||
|
font-size: 0.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.italic
|
||||||
|
{
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
/** POPUPS ALERT **/
|
/** POPUPS ALERT **/
|
||||||
.popup-alerts-container
|
.popup-alerts-container
|
||||||
{
|
{
|
||||||
|
|
10
js/Autolinker.min.js
vendored
Normal file
10
js/Autolinker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
205
mvc/Model.php
205
mvc/Model.php
|
@ -131,9 +131,11 @@
|
||||||
foreach ($fields as $field)
|
foreach ($fields as $field)
|
||||||
{
|
{
|
||||||
$fieldInfo = array();
|
$fieldInfo = array();
|
||||||
|
$fieldInfo['NAME'] = $field['Field'];
|
||||||
$fieldInfo['NULL'] = $field['Null'] == 'NO' ? false : true;
|
$fieldInfo['NULL'] = $field['Null'] == 'NO' ? false : true;
|
||||||
$fieldInfo['AUTO_INCREMENT'] = $field['Extra'] == 'auto_increment' ? true : false;
|
$fieldInfo['AUTO_INCREMENT'] = $field['Extra'] == 'auto_increment' ? true : false;
|
||||||
$fieldInfo['PRIMARY'] = $field['Key'] == 'PRI' ? true : false;
|
$fieldInfo['PRIMARY'] = $field['Key'] == 'PRI' ? true : false;
|
||||||
|
$fieldInfo['FOREIGN'] = $field['Key'] == 'MUL' ? true : false;
|
||||||
$fieldInfo['UNIQUE'] = $field['Key'] == 'UNI' ? true : false;
|
$fieldInfo['UNIQUE'] = $field['Key'] == 'UNI' ? true : false;
|
||||||
$fieldInfo['TYPE'] = mb_convert_case(preg_replace('#[^a-z]#ui', '', $field['Type']), MB_CASE_UPPER);
|
$fieldInfo['TYPE'] = mb_convert_case(preg_replace('#[^a-z]#ui', '', $field['Type']), MB_CASE_UPPER);
|
||||||
$fieldInfo['SIZE'] = filter_var($field['Type'], FILTER_SANITIZE_NUMBER_INT);
|
$fieldInfo['SIZE'] = filter_var($field['Type'], FILTER_SANITIZE_NUMBER_INT);
|
||||||
|
@ -145,6 +147,53 @@
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette finction retourne la table et le champs référent pour un champ avec une foreign key
|
||||||
|
* @param string $table : Le nom de la table qui contient le champ
|
||||||
|
* @param string $field : Le nom du champ
|
||||||
|
* @return mixed : False en cas d'erreur, un tableau avec 'table' en index pour la table et 'field' pour le champ
|
||||||
|
*/
|
||||||
|
public function getReferenceForForeign ($table, $field)
|
||||||
|
{
|
||||||
|
if (!$this->fieldExist($field, $table))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = 'SELECT referenced_table_name as table_name, referenced_column_name as field_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name = :table AND column_name = :field AND referenced_table_name IS NOT NULL';
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
'table' => $table,
|
||||||
|
'field' => $field,
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->runQuery($query, $params, self::FETCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cette fonction retourne les valeurs possibles pour un champ muni d'une clef étrangère
|
||||||
|
* @param string $table : Le nom de la table qui contient le champ
|
||||||
|
* @param string $field : Le nom du champ
|
||||||
|
* @return mixed : Retourne les valeurs possible sous forme d'un tableau
|
||||||
|
*/
|
||||||
|
public function getPossibleValuesForForeign ($table, $field)
|
||||||
|
{
|
||||||
|
if (!$this->fieldExist($field, $table))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//On recupère le champs référence pour la foreign key
|
||||||
|
if (!$reference = $this->getReferenceForForeign($table, $field))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//On recupère les valeurs possible de la table
|
||||||
|
$query = 'SELECT DISTINCT ' . $reference['field_name'] . ' as possible_value FROM ' . $reference['table_name'];
|
||||||
|
return $this->runQuery($query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cette fonction permet de compter le nombre de ligne d'une table
|
* Cette fonction permet de compter le nombre de ligne d'une table
|
||||||
* @param string $table : Le nom de la table à compter
|
* @param string $table : Le nom de la table à compter
|
||||||
|
@ -246,8 +295,8 @@
|
||||||
/**
|
/**
|
||||||
* Cette fonction permet de récupérer des lignes en fonction de restrictions
|
* Cette fonction permet de récupérer des lignes en fonction de restrictions
|
||||||
* @param string $table : Le nom de la table dans laquelle on veux recuperer la ligne
|
* @param string $table : Le nom de la table dans laquelle on veux recuperer la ligne
|
||||||
* @param array $restrictions : Les restrictions que l'on veux appliquer
|
* @param array $restrictions : Les restrictions sous la forme "label" => "valeur". Un operateur '<, >, <=, >=, !' peux précder le label pour modifier l'opérateur par défaut (=)
|
||||||
* @param string $order_by : Le nom de la colonne par laquelle on veux trier les résultats. Si non fourni, tri automatique
|
* @param mixed $order_by : Le nom de la colonne par laquelle on veux trier les résultats ou son numero. Si non fourni, tri automatique
|
||||||
* @param string $desc : L'ordre de tri (asc ou desc). Si non défini, ordre par défaut (ASC)
|
* @param string $desc : L'ordre de tri (asc ou desc). Si non défini, ordre par défaut (ASC)
|
||||||
* @param string $limit : Le nombre maximum de résultats à récupérer (par défaut pas le limite)
|
* @param string $limit : Le nombre maximum de résultats à récupérer (par défaut pas le limite)
|
||||||
* @param string $offset : Le nombre de résultats à ignorer (par défaut pas de résultats ignorés)
|
* @param string $offset : Le nombre de résultats à ignorer (par défaut pas de résultats ignorés)
|
||||||
|
@ -266,27 +315,66 @@
|
||||||
//On gère les restrictions
|
//On gère les restrictions
|
||||||
$wheres = array();
|
$wheres = array();
|
||||||
$params = array();
|
$params = array();
|
||||||
|
$i = 0;
|
||||||
foreach ($restrictions as $label => $value)
|
foreach ($restrictions as $label => $value)
|
||||||
{
|
{
|
||||||
|
//Pour chaque restriction, on essaye de detecter un "! ou < ou > ou <= ou >="
|
||||||
|
$first_char = mb_substr($label, 0, 1);
|
||||||
|
$second_char = mb_substr($label, 1, 1);
|
||||||
|
|
||||||
|
switch(true)
|
||||||
|
{
|
||||||
|
//Important de traiter <= & >= avant < & >
|
||||||
|
case ('<=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '<=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '>=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('!' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '!=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('<' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '<';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
$trueLabel = $label;
|
||||||
|
$operator = '=';
|
||||||
|
}
|
||||||
|
|
||||||
//Si le champs pour la restriction n'existe pas on retourne false
|
//Si le champs pour la restriction n'existe pas on retourne false
|
||||||
if (!array_key_exists($label, $fields))
|
if (!array_key_exists($trueLabel, $fields))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//On ajoute la restriction au WHERE
|
//On ajoute la restriction au WHERE
|
||||||
$params['where_' . $label] = $value;
|
$params['where_' . $trueLabel . $i] = $value;
|
||||||
$wheres[] = $label . ' = :where_' . $label . ' ';
|
$wheres[] = $trueLabel . ' ' . $operator . ' :where_' . $trueLabel . $i . ' ';
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "SELECT " . $this->getColumnsForTable($table) . " FROM " . $table . " WHERE 1 " . (count($wheres) ? 'AND ' : '') . implode('AND ', $wheres);
|
$query = "SELECT * FROM " . $table . " WHERE 1 " . (count($wheres) ? 'AND ' : '') . implode('AND ', $wheres);
|
||||||
|
|
||||||
if ($order_by)
|
if ($order_by)
|
||||||
{
|
{
|
||||||
if ($this->fieldExist($order_by, $table))
|
//Si le champs existe ou si c'est un numeric inférieur ou egale au nombre de champs dispo
|
||||||
|
if (array_key_exists($order_by, $fields) || (is_numeric($order_by) && $order_by <= count($fields)))
|
||||||
{
|
{
|
||||||
$query .= ' ORDER BY '. $order_by;
|
$query .= ' ORDER BY ' . $order_by;
|
||||||
if ($desc)
|
if ($desc)
|
||||||
{
|
{
|
||||||
$query .= ' DESC';
|
$query .= ' DESC';
|
||||||
|
@ -307,9 +395,11 @@
|
||||||
|
|
||||||
if ($limit !== false)
|
if ($limit !== false)
|
||||||
{
|
{
|
||||||
|
$limit = (int)$limit;
|
||||||
$req->bindParam(':limit', $limit, PDO::PARAM_INT);
|
$req->bindParam(':limit', $limit, PDO::PARAM_INT);
|
||||||
if ($offset !== false)
|
if ($offset !== false)
|
||||||
{
|
{
|
||||||
|
$offset = (int)$offset;
|
||||||
$req->bindParam(':offset', $offset, PDO::PARAM_INT);
|
$req->bindParam(':offset', $offset, PDO::PARAM_INT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -322,6 +412,7 @@
|
||||||
|
|
||||||
$req->setFetchMode(PDO::FETCH_ASSOC);
|
$req->setFetchMode(PDO::FETCH_ASSOC);
|
||||||
$req->execute();
|
$req->execute();
|
||||||
|
|
||||||
return $req->fetchAll();
|
return $req->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +421,7 @@
|
||||||
* @param string $table : Le nom de la table dans laquelle on veux insérer des données
|
* @param string $table : Le nom de la table dans laquelle on veux insérer des données
|
||||||
* @param string $primary : La clef primaire qui sert à identifier la ligne a modifier
|
* @param string $primary : La clef primaire qui sert à identifier la ligne a modifier
|
||||||
* @param array $datas : Les données à insérer au format "champ" => "valeur"
|
* @param array $datas : Les données à insérer au format "champ" => "valeur"
|
||||||
* @param array $restrictions : Un tableau des restrictions à appliquer sous forme "champ" => "valeur". Par défaut un tableau vide
|
* @param array $restrictions : Les restrictions pour la mise à jour sous la forme "label" => "valeur". Un operateur '<, >, <=, >=, !' peux précder le label pour modifier l'opérateur par défaut (=)
|
||||||
* @return mixed : False en cas d'erreur, sinon le nombre de lignes modifiées
|
* @return mixed : False en cas d'erreur, sinon le nombre de lignes modifiées
|
||||||
*/
|
*/
|
||||||
public function updateTableWhere ($table, $datas, $restrictions = array())
|
public function updateTableWhere ($table, $datas, $restrictions = array())
|
||||||
|
@ -365,17 +456,56 @@
|
||||||
|
|
||||||
//On gère les restrictions
|
//On gère les restrictions
|
||||||
$wheres = array();
|
$wheres = array();
|
||||||
|
$i = 0;
|
||||||
foreach ($restrictions as $label => $value)
|
foreach ($restrictions as $label => $value)
|
||||||
{
|
{
|
||||||
|
//Pour chaque restriction, on essaye de detecter un "! ou < ou > ou <= ou >="
|
||||||
|
$first_char = mb_substr($label, 0, 1);
|
||||||
|
$second_char = mb_substr($label, 1, 1);
|
||||||
|
|
||||||
|
switch(true)
|
||||||
|
{
|
||||||
|
//Important de traiter <= & >= avant < & >
|
||||||
|
case ('<=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '<=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '>=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('!' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '!=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('<' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '<';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
$trueLabel = $label;
|
||||||
|
$operator = '=';
|
||||||
|
}
|
||||||
|
|
||||||
//Si le champs pour la restriction n'existe pas on retourne false
|
//Si le champs pour la restriction n'existe pas on retourne false
|
||||||
if (!array_key_exists($label, $fields))
|
if (!array_key_exists($trueLabel, $fields))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//On ajoute la restriction au WHERE
|
//On ajoute la restriction au WHERE
|
||||||
$params['where_' . $label] = $value;
|
$params['where_' . $trueLabel . $i] = $value;
|
||||||
$wheres[] = $label . ' = :where_' . $label . ' ';
|
$wheres[] = $trueLabel . ' ' . $operator . ' :where_' . $trueLabel . $i . ' ';
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//On fabrique la requete
|
//On fabrique la requete
|
||||||
|
@ -388,7 +518,7 @@
|
||||||
/**
|
/**
|
||||||
* Cette fonction permet de supprimer des lignes d'une table en fonctions de restrictions
|
* Cette fonction permet de supprimer des lignes d'une table en fonctions de restrictions
|
||||||
* @param string $table : Le nom de la table dans laquelle on veux supprimer la ligne
|
* @param string $table : Le nom de la table dans laquelle on veux supprimer la ligne
|
||||||
* @param array $restrictions : Les restrictions pour la suppression sous la forme "label" => "valeur"
|
* @param array $restrictions : Les restrictions pour la suppression sous la forme "label" => "valeur". Un operateur '<, >, <=, >=, !' peux précder le label pour modifier l'opérateur par défaut (=)
|
||||||
* @return mixed : False en cas d'erreur, sinon le nombre de lignes supprimées
|
* @return mixed : False en cas d'erreur, sinon le nombre de lignes supprimées
|
||||||
*/
|
*/
|
||||||
public function deleteFromTableWhere($table, $restrictions = array())
|
public function deleteFromTableWhere($table, $restrictions = array())
|
||||||
|
@ -403,22 +533,59 @@
|
||||||
//On gère les restrictions
|
//On gère les restrictions
|
||||||
$wheres = array();
|
$wheres = array();
|
||||||
$params = array();
|
$params = array();
|
||||||
|
$i = 0;
|
||||||
foreach ($restrictions as $label => $value)
|
foreach ($restrictions as $label => $value)
|
||||||
{
|
{
|
||||||
|
//Pour chaque restriction, on essaye de detecter un "! ou < ou > ou <= ou >="
|
||||||
|
$first_char = mb_substr($label, 0, 1);
|
||||||
|
$second_char = mb_substr($label, 1, 1);
|
||||||
|
|
||||||
|
switch(true)
|
||||||
|
{
|
||||||
|
//Important de traiter <= & >= avant < & >
|
||||||
|
case ('<=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '<=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>=' == $first_char . $second_char) :
|
||||||
|
$trueLabel = mb_substr($label, 2);
|
||||||
|
$operator = '>=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('!' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '!=';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('<' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '<';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ('>' == $first_char) :
|
||||||
|
$trueLabel = mb_substr($label, 1);
|
||||||
|
$operator = '>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
$trueLabel = $label;
|
||||||
|
$operator = '=';
|
||||||
|
}
|
||||||
|
|
||||||
//Si le champs pour la restriction n'existe pas on retourne false
|
//Si le champs pour la restriction n'existe pas on retourne false
|
||||||
if (!array_key_exists($label, $fields))
|
if (!array_key_exists($trueLabel, $fields))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//On ajoute la restriction au WHERE
|
//On ajoute la restriction au WHERE
|
||||||
$params['where_' . $label] = $value;
|
$params['where_' . $trueLabel . $i] = $value;
|
||||||
$wheres[] = $label . ' = :where_' . $label . ' ';
|
$wheres[] = $trueLabel . ' ' . $operator . ' :where_' . $trueLabel . $i . ' ';
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "DELETE FROM " . $table . " WHERE 1 AND " . implode('AND ', $wheres);
|
$query = "DELETE FROM " . $table . " WHERE 1 AND " . implode('AND ', $wheres);
|
||||||
|
|
||||||
return $this->runQuery($query, $params, self::ROWCOUNT);
|
return $this->runQuery($query, $params, self::ROWCOUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Numéro de téléphone du contact</label>
|
<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
|
||||||
<div class="form-group input-group">
|
<div class="form-group input-group">
|
||||||
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
|
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
|
||||||
<input name="phone" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required>
|
<input name="phone" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required>
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Numéro de téléphone du contact</label>
|
<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
|
||||||
<div class="form-group input-group">
|
<div class="form-group input-group">
|
||||||
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
|
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
|
||||||
<input name="contacts[<?php secho($contact['id']); ?>][phone]" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required value="<?php secho($contact['number']); ?>">
|
<input name="contacts[<?php secho($contact['id']); ?>][phone]" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required value="<?php secho($contact['number']); ?>">
|
||||||
|
|
|
@ -65,6 +65,11 @@
|
||||||
|
|
||||||
$.each(data.messages, function(key, message) {
|
$.each(data.messages, function(key, message) {
|
||||||
|
|
||||||
|
<?php if (RASPISMS_SETTINGS_DETECT_URL) { ?>
|
||||||
|
//On ajoute la detection de lien dans le texte du message
|
||||||
|
message.text = Autolinker.link(message.text, {newWindow:true});
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
switch (message.type)
|
switch (message.type)
|
||||||
{
|
{
|
||||||
case 'received' :
|
case 'received' :
|
||||||
|
@ -81,7 +86,7 @@
|
||||||
'<div class="clearfix message-container">' +
|
'<div class="clearfix message-container">' +
|
||||||
'<div class="discussion-message message-sended">' +
|
'<div class="discussion-message message-sended">' +
|
||||||
'<div class="discussion-message-text">' + message.text + '</div>' +
|
'<div class="discussion-message-text">' + message.text + '</div>' +
|
||||||
'<div class="discussion-message-date">' + message.date + '</div>' +
|
'<div class="discussion-message-date">' + message.date + (message.status ? (message.status == 'delivered' ? ' <span class="fa fa-check-circle fa-fw text-success"></span>' : '<span class="fa fa-times-circle fa-fw text-danger"></span>' ) : '' ) + '</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
<script src="<?php echo HTTP_PWD; ?>js/bootstrap.min.js"></script>
|
<script src="<?php echo HTTP_PWD; ?>js/bootstrap.min.js"></script>
|
||||||
<script src="<?php echo HTTP_PWD; ?>js/plugins/morris/raphael.min.js"></script>
|
<script src="<?php echo HTTP_PWD; ?>js/plugins/morris/raphael.min.js"></script>
|
||||||
<script src="<?php echo HTTP_PWD; ?>js/plugins/morris/morris.min.js"></script>
|
<script src="<?php echo HTTP_PWD; ?>js/plugins/morris/morris.min.js"></script>
|
||||||
|
<script src="<?php echo HTTP_PWD; ?>js/Autolinker.min.js"></script>
|
||||||
<!-- Magic Suggest JS and CSS -->
|
<!-- Magic Suggest JS and CSS -->
|
||||||
<script src="<?php echo HTTP_PWD; ?>js/magicsuggest.min.js"></script>
|
<script src="<?php echo HTTP_PWD; ?>js/magicsuggest.min.js"></script>
|
||||||
<link href="<?php echo HTTP_PWD; ?>css/magicsuggest.css" rel="stylesheet">
|
<link href="<?php echo HTTP_PWD; ?>css/magicsuggest.css" rel="stylesheet">
|
||||||
|
|
|
@ -60,6 +60,9 @@
|
||||||
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
|
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
|
||||||
<a href="<?php echo $this->generateUrl('receiveds'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
|
<a href="<?php echo $this->generateUrl('receiveds'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li <?php echo $page == 'smsstop' ? 'class="active"' : ''; ?>>
|
||||||
|
<a href="<?php echo $this->generateUrl('smsstop'); ?>"><i class="fa fa-fw fa-ban"></i> SMS STOP</a>
|
||||||
|
</li>
|
||||||
<li <?php echo $page == 'events' ? 'class="active"' : ''; ?>>
|
<li <?php echo $page == 'events' ? 'class="active"' : ''; ?>>
|
||||||
<a href="<?php echo $this->generateUrl('events'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
|
<a href="<?php echo $this->generateUrl('events'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
<input name="date" class="form-control form-datetime" type="text" value="<?php secho($now); ?>" readonly>
|
<input name="date" class="form-control form-datetime" type="text" value="<?php secho($now); ?>" readonly>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Numéros cibles</label>
|
<label>Numéros cibles <span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
|
||||||
<input class="add-numbers form-control" name="numbers[]"/>
|
<input class="add-numbers form-control" name="numbers[]"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
<input name="scheduleds[<?php secho($scheduled['id']); ?>][date]" class="form-control form-datetime" type="text" value="<?php secho($scheduled['at']); ?>" readonly>
|
<input name="scheduleds[<?php secho($scheduled['id']); ?>][date]" class="form-control form-datetime" type="text" value="<?php secho($scheduled['at']); ?>" readonly>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Numéros cibles</label>
|
<label>Numéros cibles <span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
|
||||||
<input class="add-numbers form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][numbers][]" value="<?php secho($numbers); ?>"/>
|
<input class="add-numbers form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][numbers][]" value="<?php secho($numbers); ?>"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
<th>Numéro</th>
|
<th>Numéro</th>
|
||||||
<th>Message</th>
|
<th>Message</th>
|
||||||
<th>Date</th>
|
<th>Date</th>
|
||||||
|
<th>Delivré</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -54,6 +55,7 @@
|
||||||
<td><?php secho($send['target']); ?></td>
|
<td><?php secho($send['target']); ?></td>
|
||||||
<td><?php secho($send['content']); ?></td>
|
<td><?php secho($send['content']); ?></td>
|
||||||
<td><?php secho($send['at']); ?></td>
|
<td><?php secho($send['at']); ?></td>
|
||||||
|
<td><?php secho($send['delivered'] ? 'Oui' : 'Non'); ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,8 +54,46 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h4 class="panel-title"><i class="fa fa-link fa-fw"></i> Détection des URL dans les discussions</h4>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<form action="<?php echo $this->generateUrl('settings', 'changeDetectionUrl', [$_SESSION['csrf']]); ?>" method="POST">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Détection activé : </label>
|
||||||
|
<select name="detect_url" class="form-control">
|
||||||
|
<option value="0">Non</option>
|
||||||
|
<option value="1" <?php echo RASPISMS_SETTINGS_DETECT_URL ? 'selected' : ''; ?>>Oui</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
<button class="btn btn-success">Mettre à jour les données</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h4 class="panel-title"><i class="fa fa-ban fa-fw"></i> Activation de SMS-STOP</h4>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<form action="<?php echo $this->generateUrl('settings', 'changeSmsStop', [$_SESSION['csrf']]); ?>" method="POST">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>SMS STOP activé : </label>
|
||||||
|
<select name="sms_stop" class="form-control">
|
||||||
|
<option value="0">Non</option>
|
||||||
|
<option value="1" <?php echo RASPISMS_SETTINGS_SMS_STOP ? 'selected' : ''; ?>>Oui</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
<button class="btn btn-success">Mettre à jour les données</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
91
templates/smsstop/default.php
Executable file
91
templates/smsstop/default.php
Executable file
|
@ -0,0 +1,91 @@
|
||||||
|
<?php
|
||||||
|
//Template dashboard
|
||||||
|
$incs = new internalIncs();
|
||||||
|
$incs->head('SMS STOP - Show All');
|
||||||
|
?>
|
||||||
|
<div id="wrapper">
|
||||||
|
<?php
|
||||||
|
$incs->nav('smsstop');
|
||||||
|
?>
|
||||||
|
<div id="page-wrapper">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<!-- Page Heading -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h1 class="page-header">
|
||||||
|
Dashboard <small>SMS STOP</small>
|
||||||
|
</h1>
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-dashboard"></i> <a href="<?php echo $this->generateUrl('dashboard'); ?>">Dashboard</a>
|
||||||
|
</li>
|
||||||
|
<li class="active">
|
||||||
|
<i class="fa fa-ban"></i> SMS STOP
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><i class="fa fa-ban fa-fw"></i> Liste SMS STOP</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="table-events">
|
||||||
|
<table class="table table-bordered table-hover table-striped" id="table-sms-stop">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>Numéro</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
foreach ($smsStops as $smsStop)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php secho($smsStop['id']); ?></td>
|
||||||
|
<td><?php secho($smsStop['number']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<nav>
|
||||||
|
<ul class="pager">
|
||||||
|
<?php
|
||||||
|
if ($page)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<li><a href="<?php echo $this->generateUrl('smsstop', 'showAll', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
$numero_page = 'Page : ' . ($page + 1);
|
||||||
|
secho($numero_page);
|
||||||
|
|
||||||
|
if ($limit == $nbResults)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<li><a href="<?php echo $this->generateUrl('smsstop', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$incs->footer();
|
Loading…
Add table
Add a link
Reference in a new issue