Fix all phpstan and php-cs-fixer errors

This commit is contained in:
osaajani 2019-10-30 00:17:10 +01:00
parent 117c18ddca
commit 485a0cb6fd
39 changed files with 994 additions and 1142 deletions

View File

@ -4,7 +4,7 @@ namespace controllers\publics;
/** /**
* Page des smsapis * Page des smsapis
*/ */
class SMSAPI extends \descartes\Controller class SmsAPI extends \descartes\Controller
{ {
//On défini les constantes qui servent pour les retours d'API //On défini les constantes qui servent pour les retours d'API
const API_ERROR_NO = 0; const API_ERROR_NO = 0;
@ -28,16 +28,16 @@ namespace controllers\publics;
$this->internal_user = new \controllers\internals\User($this->bdd); $this->internal_user = new \controllers\internals\User($this->bdd);
$this->internalContact = new \controllers\internals\Contact($this->bdd); $this->internalContact = new \controllers\internals\Contact($this->bdd);
\controllers\internals\Tool::verify_connect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction permet d'envoyer un SMS, en passant simplement des arguments à l'URL (ou pas $_GET) * Cette fonction permet d'envoyer un Sms, en passant simplement des arguments à l'URL (ou pas $_GET)
* @param string text = Le contenu du SMS * @param string text = Le contenu du Sms
* @param mixed numbers = Les numéros auxquels envoyer les SMS. Soit un seul numéro, et il s'agit d'un string. Soit plusieurs numéros, et il s'agit d'un tableau * @param mixed numbers = Les numéros auxquels envoyer les Sms. Soit un seul numéro, et il s'agit d'un string. Soit plusieurs numéros, et il s'agit d'un tableau
* @param mixed contacts = Les noms des contacts auxquels envoyer les SMS. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau * @param mixed contacts = Les noms des contacts auxquels envoyer les Sms. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau
* @param mixed groupes = Les noms des groupes auxquels envoyer les SMS. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau * @param mixed groupes = Les noms des groupes auxquels envoyer les Sms. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau
* @param optionnal string date = La date à laquelle doit être envoyé le SMS. Au format 'Y-m-d H:i'. Si non fourni, le SMS sera envoyé dans 2 minutes * @param optionnal string date = La date à laquelle doit être envoyé le Sms. Au format 'Y-m-d H:i'. Si non fourni, le Sms sera envoyé dans 2 minutes
*/ */
public function api() public function api()
{ {
@ -122,7 +122,7 @@ namespace controllers\publics;
return false; return false;
} }
//On assigne les variable POST (après avoir vidé $_POST) en prévision de la création du SMS //On assigne les variable POST (après avoir vidé $_POST) en prévision de la création du Sms
if (!$this->internalScheduled->create(['at' => $date, 'content' => $text], $numbers, $contacts, $groupes)) { if (!$this->internalScheduled->create(['at' => $date, 'content' => $text], $numbers, $contacts, $groupes)) {
echo json_encode(array( echo json_encode(array(
'error' => self::API_ERROR_CREATION_FAILED, 'error' => self::API_ERROR_CREATION_FAILED,

View File

@ -7,6 +7,7 @@ namespace controllers\internals;
class Command extends \descartes\InternalController class Command extends \descartes\InternalController
{ {
private $model_command; private $model_command;
private $internal_event;
public function __construct(\PDO $bdd) public function __construct(\PDO $bdd)
{ {
@ -23,9 +24,7 @@ namespace controllers\internals;
*/ */
public function list($nb_entry = false, $page = false) public function list($nb_entry = false, $page = false)
{ {
//Recupération des commandes return $this->model_command->list($nb_entry, $nb_entry * $page);
$model_command = new \models\Command($this->bdd);
return $model_command->list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -36,8 +35,7 @@ namespace controllers\internals;
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des commandes //Recupération des commandes
$modelCommand = new \models\Command($this->bdd); return $this->model_command->get_by_ids($ids);
return $modelCommand->get_by_ids($ids);
} }
/** /**
@ -46,8 +44,7 @@ namespace controllers\internals;
*/ */
public function count() public function count()
{ {
$modelCommand = new \models\Command($this->bdd); return $this->model_command->count();
return $modelCommand->count();
} }
/** /**
@ -57,8 +54,7 @@ namespace controllers\internals;
*/ */
public function delete($id) public function delete($id)
{ {
$modelCommand = new \models\Command($this->bdd); return $this->model_command->delete_by_id($id);
return $modelCommand->delete_by_id($id);
} }
/** /**
@ -74,15 +70,13 @@ namespace controllers\internals;
'admin' => $admin, 'admin' => $admin,
]; ];
$modelCommand = new \models\Command($this->bdd); $result = $this->model_command->insert($command);
$result = $modelCommand->insert($command);
if (!$result) { if (!$result) {
return false; return false;
} }
$internalEvent = new \controllers\internals\Event($this->bdd); $this->internal_event->create('COMMAND_ADD', 'Ajout commande : ' . $name . ' => ' . $script);
$internalEvent->create('COMMAND_ADD', 'Ajout commande : ' . $name . ' => ' . $script);
return $result; return $result;
} }
@ -92,15 +86,13 @@ namespace controllers\internals;
*/ */
public function update($id, $name, $script, $admin) public function update($id, $name, $script, $admin)
{ {
$modelCommand = new \models\Command($this->bdd);
$command = [ $command = [
'name' => $name, 'name' => $name,
'script' => $script, 'script' => $script,
'admin' => $admin, 'admin' => $admin,
]; ];
$result = $modelCommand->update($id, $command); $result = $this->model_command->update($id, $command);
return $result; return $result;
} }

View File

@ -3,66 +3,8 @@ namespace controllers\internals;
class Console extends \descartes\InternalController class Console extends \descartes\InternalController
{ {
/** /**
* Cette fonction retourne l'aide de la console * Cette fonction envoie tous les Sms programmés qui doivent l'être
*/
public function help()
{
//On définit les commandes disponibles
$commands = array(
'sendScheduled' => array(
'description' => 'Cette commande permet d\'envoyer les SMS programmés qui doivent l\'êtres.',
'requireds' => array(),
'optionals' => array(),
),
'parseReceivedSMS' => array(
'description' => 'Cette commande permet d\'enregistrer un SMS, et de l\'analyser pour voir s\'il contient une commande. Pour cela, il analyse le dossier PWD_RECEIVEDS',
'requireds' => array(
),
'optionals' => array(),
),
'sendTransfers' => array(
'description' => 'Cette commande permet d\'envoyer par mails les sms à transférés.',
'requireds' => [],
'optionals' => [],
),
);
$message = "Vous êtes ici dans l'aide de la console.\n";
$message .= "Voici la liste des commandes disponibles : \n";
//On écrit les texte pour la liste des commandes dispos
foreach ($commands as $name => $value) {
$requireds = isset($value['requireds']) ? $value['requireds'] : array();
$optionals = isset($value['optionals']) ? $value['optionals'] : array();
$message .= ' ' . $name . ' : ' . $value['description'] . "\n";
$message .= " Arguments obligatoires : \n";
if (!count($requireds)) {
$message .= " Pas d'argument\n";
} else {
foreach ($requireds as $argument => $desc) {
$message .= ' - ' . $argument . ' : ' . $desc . "\n";
}
}
$message .= " Arguments optionnels : \n";
if (!count($optionals)) {
$message .= " Pas d'argument\n";
} else {
foreach ($optionals as $argument => $desc) {
$message .= ' - ' . $argument . ' : ' . $desc . "\n";
}
}
}
echo $message;
}
/**
* Cette fonction envoie tous les SMS programmés qui doivent l'être
*/ */
public function sendScheduled() public function sendScheduled()
{ {
@ -73,31 +15,31 @@ class Console extends \descartes\InternalController
$now = new \DateTime(); $now = new \DateTime();
$now = $now->format('Y-m-d H:i:s'); $now = $now->format('Y-m-d H:i:s');
echo "Début de l'envoi des SMS programmés\n"; echo "Début de l'envoi des Sms programmés\n";
$scheduleds = $db->getScheduledNotInProgressBefore($now); $scheduleds = $db->getScheduledNotInProgressBefore($now);
$ids_scheduleds = array(); $ids_scheduleds = array();
//On passe en cours de progression tous les SMS //On passe en cours de progression tous les Sms
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled) {
$ids_scheduleds[] = $scheduled['id']; $ids_scheduleds[] = $scheduled['id'];
} }
echo count($ids_scheduleds) . " SMS à envoyer ont été trouvés et ajoutés à la liste des SMS en cours d'envoi.\n"; echo count($ids_scheduleds) . " Sms à envoyer ont été trouvés et ajoutés à la liste des Sms en cours d'envoi.\n";
$db->updateProgressScheduledIn($ids_scheduleds, true); $db->updateProgressScheduledIn($ids_scheduleds, true);
//Pour chaque SMS à envoyer //Pour chaque Sms à envoyer
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled) {
$id_scheduled = $scheduled['id']; $id_scheduled = $scheduled['id'];
$text_sms = escapeshellarg($scheduled['content']); $text_sms = escapeshellarg($scheduled['content']);
$flash = $scheduled['flash']; $flash = $scheduled['flash'];
//On initialise les numéros auxquelles envoyer le SMS //On initialise les numéros auxquelles envoyer le Sms
$numbers = array(); $numbers = array();
//On récupère les numéros pour le SMS et on les ajoute //On récupère les numéros pour le Sms et on les ajoute
$target_numbers = $db->getNumbersForScheduled($id_scheduled); $target_numbers = $db->getNumbersForScheduled($id_scheduled);
foreach ($target_numbers as $target_number) { foreach ($target_numbers as $target_number) {
$numbers[] = $target_number['number']; $numbers[] = $target_number['number'];
@ -109,11 +51,11 @@ class Console extends \descartes\InternalController
$numbers[] = $contact['number']; $numbers[] = $contact['number'];
} }
//On récupère les groupes //On récupère les groups
$groupes = $db->getGroupeForScheduled($id_scheduled); $groups = $db->getGroupForScheduled($id_scheduled);
foreach ($groupes as $groupe) { foreach ($groups as $group) {
//On récupère les contacts du groupe et on les ajoute aux numéros //On récupère les contacts du group et on les ajoute aux numéros
$contacts = $db->getContactForGroupe($groupe['id']); $contacts = $db->getContactForGroup($group['id']);
foreach ($contacts as $contact) { foreach ($contacts as $contact) {
$numbers[] = $contact['number']; $numbers[] = $contact['number'];
} }
@ -122,48 +64,48 @@ class Console extends \descartes\InternalController
$smsStops = $db->getFromTableWhere('smsstop'); $smsStops = $db->getFromTableWhere('smsstop');
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 //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_SMSSTOPS) { if (RASPISms_SETTINGS_SmsSTOPS) {
foreach ($smsStops as $smsStop) { foreach ($smsStops as $smsStop) {
if (!($number == $smsStop['number'])) { if (!($number == $smsStop['number'])) {
continue; continue;
} }
echo "Un SMS destiné au " . $number . " a été bloqué par SMS STOP\n"; echo "Un Sms destiné au " . $number . " a été bloqué par Sms STOP\n";
continue(2); //On passe au numéro suivant ! 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'], 'before_delivered' => ceil(mb_strlen($scheduled['content'])/160)])) { 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) . ' -report -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;
if (RASPISMS_SETTINGS_SMS_FLASH && $flash) { if (RASPISms_SETTINGS_Sms_FLASH && $flash) {
$commande_send_sms .= ' -flash'; $commande_send_sms .= ' -flash';
} }
//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
$commande = '(' . $commande_send_sms . ') >/dev/null 2>/dev/null &'; $commande = '(' . $commande_send_sms . ') >/dev/null 2>/dev/null &';
exec($commande); //On execute la commande d'envoie d'un SMS exec($commande); //On execute la commande d'envoie d'un Sms
} }
} }
echo "Tous les SMS sont en cours d'envoi.\n"; echo "Tous les Sms sont en cours d'envoi.\n";
//Tous les SMS ont été envoyés. //Tous les Sms ont été envoyés.
$db->deleteScheduledIn($ids_scheduleds); $db->deleteScheduledIn($ids_scheduleds);
//On dors 2 secondes //On dors 2 secondes
@ -172,9 +114,9 @@ class Console extends \descartes\InternalController
} }
/** /**
* Cette fonction reçoit un SMS, et l'enregistre, en essayant dde trouver une commande au passage. * Cette fonction reçoit un Sms, et l'enregistre, en essayant dde trouver une commande au passage.
*/ */
public function parseReceivedSMS() public function parseReceivedSms()
{ {
//On créer l'objet de base de données //On créer l'objet de base de données
global $db; global $db;
@ -186,9 +128,9 @@ class Console extends \descartes\InternalController
continue; continue;
} }
echo "Analyse du SMS " . $dir . "\n"; 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);
@ -197,13 +139,13 @@ class Console extends \descartes\InternalController
//Si on peux pas ouvrir le fichier, on quitte en logant une erreur //Si on peux pas ouvrir le fichier, on quitte en logant une erreur
if ($content_file == false) { if ($content_file == false) {
$this->wlog('Unable to read file "' . $dir); error_log('Unable to read file "' . $dir);
die(4); die(4);
} }
//On supprime le fichier. Si on n'y arrive pas, alors on log //On supprime le fichier. Si on n'y arrive pas, alors on log
if (!unlink(PWD_RECEIVEDS . $dir)) { if (!unlink(PWD_RECEIVEDS . $dir)) {
$this->wlog('Unable to delete file "' . $dir); error_log('Unable to delete file "' . $dir);
die(8); die(8);
} }
@ -211,28 +153,28 @@ class Console extends \descartes\InternalController
//Si on a pas passé de numéro ou de message, alors on lève une erreur //Si on a pas passé de numéro ou de message, alors on lève une erreur
if (!isset($content_file[0], $content_file[1])) { if (!isset($content_file[0], $content_file[1])) {
$this->wlog('Missing params in file "' . $dir); error_log('Missing params in file "' . $dir);
die(5); die(5);
} }
$number = $content_file[0]; $number = $content_file[0];
$number = internalTool::parse_phone($number); $number = \controllers\internals\Tool::parse_phone($number);
$text = $content_file[1]; $text = $content_file[1];
//On gère les SMS STOP //On gère les Sms STOP
if (trim($text) == 'STOP') { if (trim($text) == 'STOP') {
echo 'STOP SMS detected ' . $number . "\n"; echo 'STOP Sms detected ' . $number . "\n";
$this->wlog('STOP SMS detected ' . $number); error_log('STOP Sms detected ' . $number);
$db->insertIntoTable('smsstop', ['number' => $number]); $db->insertIntoTable('smsstop', ['number' => $number]);
continue; continue;
} }
//On gère les accusés de reception //On gère les accusés de reception
if (trim($text) == 'Delivered' || trim($text) == 'Failed') { if (trim($text) == 'Delivered' || trim($text) == 'Failed') {
echo 'Delivered or Failed SMS for ' . $number . "\n"; echo 'Delivered or Failed Sms for ' . $number . "\n";
$this->wlog('Delivered or Failed SMS for ' . $number); error_log('Delivered or Failed Sms for ' . $number);
//On récupère les SMS pas encore validé, uniquement sur les dernières 12h //On récupère les Sms pas encore validé, uniquement sur les dernières 12h
$now = new \DateTime(); $now = new \DateTime();
$interval = new \DateInterval('PT12H'); $interval = new \DateInterval('PT12H');
$sinceDate = $now->sub($interval)->format('Y-m-d H:i:s'); $sinceDate = $now->sub($interval)->format('Y-m-d H:i:s');
@ -246,30 +188,30 @@ class Console extends \descartes\InternalController
//On gère les echecs //On gère les echecs
if (trim($text) == 'Failed') { if (trim($text) == 'Failed') {
$db->updateTableWhere('sendeds', ['before_delivered' => 0, 'failed' => true], ['id' => $sended['id']]); $db->updateTableWhere('sendeds', ['before_delivered' => 0, 'failed' => true], ['id' => $sended['id']]);
echo "Sended SMS id " . $sended['id'] . " pass to failed status\n"; echo "Sended Sms id " . $sended['id'] . " pass to failed status\n";
continue; continue;
} }
//On gère le cas des messages de plus de 160 caractères, lesquels impliquent plusieurs accusés //On gère le cas des messages de plus de 160 caractères, lesquels impliquent plusieurs accusés
if ($sended['before_delivered'] > 1) { if ($sended['before_delivered'] > 1) {
$db->updateTableWhere('sendeds', ['before_delivered' => $sended['before_delivered'] - 1], ['id' => $sended['id']]); $db->updateTableWhere('sendeds', ['before_delivered' => $sended['before_delivered'] - 1], ['id' => $sended['id']]);
echo "Sended SMS id " . $sended['id'] . " before_delivered decrement\n"; echo "Sended Sms id " . $sended['id'] . " before_delivered decrement\n";
continue; continue;
} }
//Si tout est bon, que nous avons assez d'accusés, nous validons ! //Si tout est bon, que nous avons assez d'accusés, nous validons !
$db->updateTableWhere('sendeds', ['before_delivered' => 0, 'delivered' => true], ['id' => $sended['id']]); $db->updateTableWhere('sendeds', ['before_delivered' => 0, 'delivered' => true], ['id' => $sended['id']]);
echo "Sended SMS id " . $sended['id'] . " to delivered status\n"; echo "Sended Sms id " . $sended['id'] . " to delivered status\n";
continue; continue;
} }
if (!$number) { if (!$number) {
$this->wlog('Invalid phone number in file "' . $dir); error_log('Invalid phone number in file "' . $dir);
die(6); die(6);
} }
//On va vérifier si on a reçu une commande, et des identifiants //On va vérifier si on a reçu une commande, et des identifiants
$flags = internalTool::parse_for_flag($text); $flags = \controllers\internals\Tool::parse_for_flag($text);
//On créer le tableau qui permettra de stocker les commandes trouvées //On créer le tableau qui permettra de stocker les commandes trouvées
@ -279,21 +221,21 @@ class Console extends \descartes\InternalController
if (array_key_exists('LOGIN', $flags) && array_key_exists('PASSWORD', $flags)) { if (array_key_exists('LOGIN', $flags) && array_key_exists('PASSWORD', $flags)) {
//Si on a bien un utilisateur avec les identifiants reçus //Si on a bien un utilisateur avec les identifiants reçus
$user = $db->getUserFromEmail($flags['LOGIN']); $user = $db->getUserFromEmail($flags['LOGIN']);
$this->wlog('We found ' . count($user) . ' users'); error_log('We found ' . count($user) . ' users');
if ($user && $user['password'] == sha1($flags['PASSWORD'])) { if ($user && $user['password'] == sha1($flags['PASSWORD'])) {
$this->wlog('Password is valid'); error_log('Password is valid');
//On va passer en revue toutes les commandes, pour voir si on en trouve dans ce message //On va passer en revue toutes les commandes, pour voir si on en trouve dans ce message
$commands = $db->getFromTableWhere('commands'); $commands = $db->getFromTableWhere('commands');
$this->wlog('We found ' . count($commands) . ' commands'); error_log('We found ' . count($commands) . ' commands');
foreach ($commands as $command) { foreach ($commands as $command) {
$command_name = mb_strtoupper($command['name']); $command_name = mb_strtoupper($command['name']);
if (array_key_exists($command_name, $flags)) { if (array_key_exists($command_name, $flags)) {
$this->wlog('We found command ' . $command_name); error_log('We found command ' . $command_name);
//Si la commande ne nécessite pas d'être admin, ou si on est admin //Si la commande ne nécessite pas d'être admin, ou si on est admin
if (!$command['admin'] || $user['admin']) { if (!$command['admin'] || $user['admin']) {
$this->wlog('And the count is ok'); error_log('And the count is ok');
$found_commands[$command_name] = PWD_SCRIPTS . $command['script'] . escapeshellcmd($flags[$command_name]); $found_commands[$command_name] = PWD_SCRIPTS . $command['script'] . escapeshellcmd($flags[$command_name]);
} }
} }
@ -301,22 +243,22 @@ class Console extends \descartes\InternalController
} }
} }
//On va supprimer le mot de passe du SMS pour pouvoir l'enregistrer sans danger //On va supprimer le mot de passe du Sms pour pouvoir l'enregistrer sans danger
if (isset($flags['PASSWORD'])) { if (isset($flags['PASSWORD'])) {
$text = str_replace($flags['PASSWORD'], '*****', $text); $text = str_replace($flags['PASSWORD'], '*****', $text);
} }
//On map les données et on créer le SMS reçu //On map les données et on créer le Sms reçu
$send_by = $number; $send_by = $number;
$content = $text; $content = $text;
$is_command = count($found_commands); $is_command = count($found_commands);
if (!$db->insertIntoTable('receiveds', ['at' => $date, 'send_by' => $send_by, 'content' => $content, 'is_command' => $is_command])) { if (!$db->insertIntoTable('receiveds', ['at' => $date, 'send_by' => $send_by, 'content' => $content, 'is_command' => $is_command])) {
echo "Erreur lors de l'enregistrement du SMS\n"; echo "Erreur lors de l'enregistrement du Sms\n";
$this->wlog('Unable to process the SMS in file "' . $dir); error_log('Unable to process the Sms in file "' . $dir);
die(7); die(7);
} }
//On insert le SMS dans le tableau des sms à envoyer par mail //On insert le Sms dans le tableau des sms à envoyer par mail
$db->insertIntoTable('transfers', ['id_received' => $db->lastId(), 'progress' => false]); $db->insertIntoTable('transfers', ['id_received' => $db->lastId(), 'progress' => false]);
//Chaque commande sera executée. //Chaque commande sera executée.
@ -336,8 +278,8 @@ class Console extends \descartes\InternalController
*/ */
public function sendTransfers() public function sendTransfers()
{ {
if (!RASPISMS_SETTINGS_TRANSFER) { if (!RASPISms_SETTINGS_TRANSFER) {
echo "Le transfer de SMS est désactivé ! \n"; echo "Le transfer de Sms est désactivé ! \n";
return false; return false;
} }
@ -359,10 +301,10 @@ class Console extends \descartes\InternalController
foreach ($users as $user) { foreach ($users as $user) {
foreach ($receiveds as $received) { foreach ($receiveds as $received) {
echo "Transfer d'un SMS du " . $received['send_by'] . " à l'email " . $user['email']; echo "Transfer d'un Sms du " . $received['send_by'] . " à l'email " . $user['email'];
$to = $user['email']; $to = $user['email'];
$subject = '[RaspiSMS] - Transfert d\'un SMS du ' . $received['send_by']; $subject = '[RaspiSms] - Transfert d\'un Sms du ' . $received['send_by'];
$message = "Le numéro " . $received['send_by'] . " vous a envoyé un SMS : \n" . $received['content']; $message = "Le numéro " . $received['send_by'] . " vous a envoyé un Sms : \n" . $received['content'];
$ok = mail($to, $subject, $message); $ok = mail($to, $subject, $message);

View File

@ -6,6 +6,14 @@ namespace controllers\internals;
*/ */
class Contact extends \descartes\InternalController class Contact extends \descartes\InternalController
{ {
private $model_contact;
private $internal_event;
public function __construct(\PDO $bdd)
{
$this->model_contact = new \models\Contact($bdd);
$this->internal_event = new \controllers\internals\Event($bdd);
}
/** /**
* Cette fonction retourne une liste des contactes sous forme d'un tableau * Cette fonction retourne une liste des contactes sous forme d'un tableau
@ -16,8 +24,7 @@ namespace controllers\internals;
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des contactes //Recupération des contactes
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->get_list($nb_entry, $nb_entry * $page);
return $modelContact->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -28,8 +35,7 @@ namespace controllers\internals;
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des contactes //Recupération des contactes
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->get_by_ids($ids);
return $modelContact->get_by_ids($ids);
} }
/** /**
@ -40,8 +46,7 @@ namespace controllers\internals;
public function get_by_number($number) public function get_by_number($number)
{ {
//Recupération des contactes //Recupération des contactes
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->get_by_number($number);
return $modelContact->get_by_number($number);
} }
/** /**
@ -52,8 +57,7 @@ namespace controllers\internals;
public function get_by_name($name) public function get_by_name($name)
{ {
//Recupération des contactes //Recupération des contactes
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->get_by_name($name);
return $modelContact->get_by_name($name);
} }
@ -63,8 +67,7 @@ namespace controllers\internals;
*/ */
public function count() public function count()
{ {
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->count();
return $modelContact->count();
} }
/** /**
@ -74,8 +77,7 @@ namespace controllers\internals;
*/ */
public function delete($id) public function delete($id)
{ {
$modelContact = new \models\Contact($this->bdd); return $this->model_contact->delete_by_id($id);
return $modelContact->delete_by_id($id);
} }
/** /**
@ -90,15 +92,12 @@ namespace controllers\internals;
'name' => $name, 'name' => $name,
]; ];
$modelContact = new \models\Contact($this->bdd); $result = $this->model_contact->insert($contact);
$result = $modelContact->insert($contact);
if (!$result) { if (!$result) {
return $result; return $result;
} }
$internalEvent = new \controllers\internals\Event($this->bdd); $this->internal_event->create('CONTACT_ADD', 'Ajout contact : ' . $name . ' (' . \controllers\internals\Tool::phone_add_space($number) . ')');
$internalEvent->create('CONTACT_ADD', 'Ajout contact : ' . $name . ' (' . \controllers\internals\Tool::phone_add_space($number) . ')');
return $result; return $result;
} }
@ -109,13 +108,11 @@ namespace controllers\internals;
*/ */
public function update($id, $number, $name) public function update($id, $number, $name)
{ {
$modelContact = new \models\Contact($this->bdd);
$contact = [ $contact = [
'number' => $number, 'number' => $number,
'name' => $name, 'name' => $name,
]; ];
return $modelContact->update($id, $contact); return $this->model_contact->update($id, $contact);
} }
} }

View File

@ -6,6 +6,12 @@
*/ */
class Event extends \descartes\InternalController class Event extends \descartes\InternalController
{ {
private $model_event;
public function __construct(\PDO $bdd)
{
$this->model_event = new \models\Event($bdd);
}
/** /**
* Cette fonction retourne une liste des events sous forme d'un tableau * Cette fonction retourne une liste des events sous forme d'un tableau
@ -17,8 +23,7 @@
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des events //Recupération des events
$modelEvent = new \models\Event($this->bdd); return $this->model_event->get_list($nb_entry, $nb_entry * $page);
return $modelEvent->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -28,8 +33,7 @@
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
{ {
$modelEvent = new \models\Event($this->bdd); return $this->model_event->get_lasts_by_date($nb_entry);
return $modelEvent->get_lasts_by_date($nb_entry);
} }
/** /**
@ -39,8 +43,7 @@
*/ */
public function delete($id) public function delete($id)
{ {
$modelEvent = new \models\Event($this->bdd); return $this->model_event->delete_by_id($id);
return $modelEvent->delete_by_id($id);
} }
/** /**
@ -50,13 +53,11 @@
*/ */
public function create($type, $text) public function create($type, $text)
{ {
$modelEvent = new \models\Event($this->bdd);
$event = [ $event = [
'type' => $type, 'type' => $type,
'text' => $text, 'text' => $text,
]; ];
return $modelEvent->insert($event); return $this->model_event->insert($event);
} }
} }

138
controllers/internals/Group.php Executable file
View File

@ -0,0 +1,138 @@
<?php
namespace controllers\internals;
/**
* Classe des groups
*/
class Group extends \descartes\InternalController
{
private $model_group;
private $internal_event;
public function __construct(\PDO $bdd)
{
$this->model_group = new \models\Group($bdd);
$this->internal_event = new \controllers\internals\Event($bdd);
}
/**
* Cette fonction retourne une liste des groups sous forme d'un tableau
* @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page
* @param mixed(int|bool) $page : Le numéro de page en cours
* @return array : La liste des groups
*/
public function get_list($nb_entry = false, $page = false)
{
//Recupération des groups
return $this->model_group->get_list($nb_entry, $nb_entry * $page);
}
/**
* Cette fonction retourne une liste des groups sous forme d'un tableau
* @param array int $ids : Les ids des entrées à retourner
* @return array : La liste des groups
*/
public function get_by_ids($ids)
{
//Recupération des groups
return $this->model_group->get_by_ids($ids);
}
/**
* Cette fonction retourne un group par son name
* @param string $name : Le name du group
* @return array : Le group
*/
public function get_by_name($name)
{
//Recupération des groups
return $this->model_group->get_by_name($name);
}
/**
* Cette fonction permet de compter le nombre de group
* @return int : Le nombre d'entrées dans la table
*/
public function count()
{
return $this->model_group->count();
}
/**
* Cette fonction va supprimer une liste de group
* @param array $ids : Les id des groups à supprimer
* @return int : Le nombre de groups supprimées;
*/
public function delete($ids)
{
return $this->model_group->delete_by_ids($ids);
}
/**
* Cette fonction insert une nouvelle group
* @param array $name : le nom du group
* @param array $contacts_ids : Un tableau des ids des contact du group
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle group insérée
*/
public function create($name, $contacts_ids)
{
$group = [
'name' => $name,
];
$id_group = $this->model_group->insert($group);
if (!$id_group) {
return false;
}
foreach ($contacts_ids as $contact_id) {
$this->model_group->insert_group_contact($id_group, $contact_id);
}
$this->internal_event->create('GROUP_ADD', 'Ajout group : ' . $name);
return $id_group;
}
/**
* Cette fonction met à jour un group
* @param int $id : L'id du group à update
* @param string $name : Le nom du group à update
* @param string $contacts_ids : Les ids des contact du group
* @return bool : True if all update ok, false else
*/
public function update($id, $name, $contacts_ids)
{
$group = [
'name' => $name,
];
$result = $this->model_group->update($id, $group);
$this->model_group->delete_group_contact($id);
$nb_contact_insert = 0;
foreach ($contacts_ids as $contact_id) {
if ($this->model_group->insert_group_contact($id, $contact_id)) {
$nb_contact_insert ++;
}
}
if (!$result && $nb_contact_insert != count($contacts_ids)) {
return false;
}
return true;
}
/**
* Cette fonction retourne les contact pour un group
* @param string $id : L'id du group
* @return array : Un tableau avec les contact
*/
public function get_contact($id)
{
//Recupération des groups
return $this->model_group->get_contact($id);
}
}

View File

@ -1,141 +0,0 @@
<?php
namespace controllers\internals;
/**
* Classe des groupes
*/
class Groupe extends \descartes\InternalController
{
/**
* Cette fonction retourne une liste des groupes sous forme d'un tableau
* @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page
* @param mixed(int|bool) $page : Le numéro de page en cours
* @return array : La liste des groupes
*/
public function get_list($nb_entry = false, $page = false)
{
//Recupération des groupes
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->get_list($nb_entry, $nb_entry * $page);
}
/**
* Cette fonction retourne une liste des groupes sous forme d'un tableau
* @param array int $ids : Les ids des entrées à retourner
* @return array : La liste des groupes
*/
public function get_by_ids($ids)
{
//Recupération des groupes
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->get_by_ids($ids);
}
/**
* Cette fonction retourne un groupe par son name
* @param string $name : Le name du groupe
* @return array : Le groupe
*/
public function get_by_name($name)
{
//Recupération des groupes
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->get_by_name($name);
}
/**
* Cette fonction permet de compter le nombre de groupe
* @return int : Le nombre d'entrées dans la table
*/
public function count()
{
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->count();
}
/**
* Cette fonction va supprimer une liste de groupe
* @param array $ids : Les id des groupes à supprimer
* @return int : Le nombre de groupes supprimées;
*/
public function delete($ids)
{
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->delete_by_ids($ids);
}
/**
* Cette fonction insert une nouvelle groupe
* @param array $name : le nom du groupe
* @param array $contacts_ids : Un tableau des ids des contact du groupe
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle groupe insérée
*/
public function create($name, $contacts_ids)
{
$modelGroupe = new \models\Groupe($this->bdd);
$groupe = [
'name' => $name,
];
$id_groupe = $modelGroupe->insert($groupe);
if (!$id_groupe) {
return false;
}
foreach ($contacts_ids as $contact_id) {
$modelGroupe->insert_groupe_contact($id_groupe, $contact_id);
}
$internalEvent = new \controllers\internals\Event($this->bdd);
$internalEvent->create('GROUP_ADD', 'Ajout groupe : ' . $name);
return $id_groupe;
}
/**
* Cette fonction met à jour un groupe
* @param int $id : L'id du groupe à update
* @param string $name : Le nom du groupe à update
* @param string $contacts_ids : Les ids des contact du groupe
* @return bool : True if all update ok, false else
*/
public function update($id, $name, $contacts_ids)
{
$modelGroupe = new \models\Groupe($this->bdd);
$groupe = [
'name' => $name,
];
$result = $modelGroupe->update($id, $groupe);
$modelGroupe->delete_groupe_contact($id);
$nb_contact_insert = 0;
foreach ($contacts_ids as $contact_id) {
if ($modelGroupe->insert_groupe_contact($id, $contact_id)) {
$nb_contact_insert ++;
}
}
if (!$result && $nb_contact_insert != count($contacts_ids)) {
return false;
}
return $true;
}
/**
* Cette fonction retourne les contact pour un groupe
* @param string $id : L'id du groupe
* @return array : Un tableau avec les contact
*/
public function get_contact($id)
{
//Recupération des groupes
$modelGroupe = new \models\Groupe($this->bdd);
return $modelGroupe->get_contact($id);
}
}

View File

@ -6,6 +6,13 @@ namespace controllers\internals;
*/ */
class Received extends \descartes\InternalController class Received extends \descartes\InternalController
{ {
private $model_received;
public function __construct(\PDO $bdd)
{
$this->model_received = new \models\Received($bdd);
}
/** /**
* Cette fonction retourne une liste des receivedes sous forme d'un tableau * Cette fonction retourne une liste des receivedes sous forme d'un tableau
@ -16,8 +23,7 @@ class Received extends \descartes\InternalController
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des receivedes //Recupération des receivedes
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_list($nb_entry, $nb_entry * $page);
return $modelReceived->get_list($nb_entry, $nb_entry * $page);
} }
@ -29,8 +35,7 @@ class Received extends \descartes\InternalController
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des receivedes //Recupération des receivedes
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_by_ids($ids);
return $modelReceived->get_by_ids($ids);
} }
/** /**
@ -40,8 +45,7 @@ class Received extends \descartes\InternalController
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_lasts_by_date($nb_entry);
return $modelReceived->get_lasts_by_date($nb_entry);
} }
/** /**
@ -51,31 +55,28 @@ class Received extends \descartes\InternalController
*/ */
public function get_by_origin($origin) public function get_by_origin($origin)
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_by_origin($origin);
return $modelReceived->get_by_origin($origin);
} }
/** /**
* Récupère les SMS reçus depuis une date * Récupère les Sms reçus depuis une date
* @param $date : La date depuis laquelle on veux les SMS (au format 2014-10-25 20:10:05) * @param $date : La date depuis laquelle on veux les Sms (au format 2014-10-25 20:10:05)
* @return array : Tableau avec tous les SMS depuis la date * @return array : Tableau avec tous les Sms depuis la date
*/ */
public function get_since_by_date($date) public function get_since_by_date($date)
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_since_by_date($date);
return $modelReceived->get_since_by_date($date, $number);
} }
/** /**
* Récupère les SMS reçus depuis une date pour un numero * Récupère les Sms reçus depuis une date pour un numero
* @param $date : La date depuis laquelle on veux les SMS (au format 2014-10-25 20:10:05) * @param $date : La date depuis laquelle on veux les Sms (au format 2014-10-25 20:10:05)
* @param $number : Le numéro * @param $number : Le numéro
* @return array : Tableau avec tous les SMS depuis la date * @return array : Tableau avec tous les Sms depuis la date
*/ */
public function get_since_for_number_by_date($date, $number) public function get_since_for_number_by_date($date, $number)
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_since_for_number_by_date($date, $number);
return $modelReceived->get_since_for_number_by_date($date, $number);
} }
/** /**
@ -85,8 +86,7 @@ class Received extends \descartes\InternalController
*/ */
public function delete($id) public function delete($id)
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->delete_by_id($id);
return $modelReceived->delete_by_id($id);
} }
/** /**
@ -103,8 +103,7 @@ class Received extends \descartes\InternalController
'is_command' => $is_command, 'is_command' => $is_command,
]; ];
$modelReceived = new \models\Received($this->bdd); return $this->model_received->create($received);
return $modelReceived->create($received);
} }
/** /**
@ -113,8 +112,6 @@ class Received extends \descartes\InternalController
*/ */
public function update($id, $at, $origin, $content, $is_command) public function update($id, $at, $origin, $content, $is_command)
{ {
$modelReceived = new \models\Received($this->bdd);
$received = [ $received = [
'at' => $at, 'at' => $at,
'origin' => $origin, 'origin' => $origin,
@ -122,7 +119,7 @@ class Received extends \descartes\InternalController
'is_command' => $is_command, 'is_command' => $is_command,
]; ];
return $modelReceived->update($id, $received); return $this->model_received->update($id, $received);
} }
/** /**
@ -131,8 +128,7 @@ class Received extends \descartes\InternalController
*/ */
public function count() public function count()
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->count();
return $modelReceived->count();
} }
/** /**
@ -141,9 +137,7 @@ class Received extends \descartes\InternalController
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
{ {
$modelReceived = new \models\Received($this->bdd); $counts_by_day = $this->model_received->count_by_day_since($date);
$counts_by_day = $modelReceived->count_by_day_since($date);
$return = []; $return = [];
foreach ($counts_by_day as $count_by_day) { foreach ($counts_by_day as $count_by_day) {
@ -159,7 +153,6 @@ class Received extends \descartes\InternalController
*/ */
public function get_discussions() public function get_discussions()
{ {
$modelReceived = new \models\Received($this->bdd); return $this->model_received->get_discussions();
return $modelReceived->get_discussions();
} }
} }

View File

@ -6,7 +6,15 @@ namespace controllers\internals;
*/ */
class Scheduled extends \descartes\InternalController class Scheduled extends \descartes\InternalController
{ {
private $model_scheduled;
private $internal_event;
public function __construct(\PDO $bdd)
{
$this->model_scheduled = new \models\Scheduled($bdd);
$this->internal_event = new \controllers\internals\Event($bdd);
}
/** /**
* Cette fonction retourne une liste des scheduledes sous forme d'un tableau * Cette fonction retourne une liste des scheduledes sous forme d'un tableau
* @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page * @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page
@ -16,8 +24,7 @@ namespace controllers\internals;
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des scheduledes //Recupération des scheduledes
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_list($nb_entry, $nb_entry * $page);
return $modelScheduled->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -28,8 +35,7 @@ namespace controllers\internals;
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des scheduledes //Recupération des scheduledes
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_by_ids($ids);
return $modelScheduled->get_by_ids($ids);
} }
/** /**
@ -40,8 +46,7 @@ namespace controllers\internals;
*/ */
public function get_before_date_for_number($date, $number) public function get_before_date_for_number($date, $number)
{ {
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_before_date_for_number($date, $number);
return $modelScheduled->get_before_date_for_number($date, $number);
} }
/** /**
@ -50,8 +55,7 @@ namespace controllers\internals;
*/ */
public function count() public function count()
{ {
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->count();
return $modelScheduled->count();
} }
/** /**
@ -61,8 +65,7 @@ namespace controllers\internals;
*/ */
public function delete($id) public function delete($id)
{ {
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->delete_by_id($id);
return $modelScheduled->delete_by_id($id);
} }
/** /**
@ -70,30 +73,28 @@ namespace controllers\internals;
* @param array $scheduled : Le scheduled à créer avec at, content, flash, progress * @param array $scheduled : Le scheduled à créer avec at, content, flash, progress
* @param array $numbers : Les numéros auxquels envoyer le scheduled * @param array $numbers : Les numéros auxquels envoyer le scheduled
* @param array $contacts_ids : Les ids des contact auquels envoyer le scheduled * @param array $contacts_ids : Les ids des contact auquels envoyer le scheduled
* @param array $groupes_ids : Les ids des groupe auxquels envoyer le scheduled * @param array $groups_ids : Les ids des group auxquels envoyer le scheduled
* @return mixed bool|int : false si echec, sinon l'id du nouveau scheduled inséré * @return mixed bool|int : false si echec, sinon l'id du nouveau scheduled inséré
*/ */
public function create($scheduled, $numbers = [], $contacts_ids = [], $groupes_ids = []) public function create($scheduled, $numbers = [], $contacts_ids = [], $groups_ids = [])
{ {
$modelScheduled = new \models\Scheduled($this->bdd); if (!$id_scheduled = $this->model_scheduled->insert($scheduled)) {
$date = date("Y-m-d H:i:s");
if (!$id_scheduled = $modelScheduled->insert($scheduled)) { $this->internal_event->create('SCHEDULED_ADD', 'Ajout d\'un Sms pour le ' . $date . '.');
$internalEvent = new \controllers\internals\Event($this->bdd);
$internalEvent->create('SCHEDULED_ADD', 'Ajout d\'un SMS pour le ' . $date . '.');
return false; return false;
} }
foreach ($numbers as $number) { foreach ($numbers as $number) {
$modelScheduled->insert_scheduled_number($id_scheduled, $number); $this->model_scheduled->insert_scheduled_number($id_scheduled, $number);
} }
foreach ($contacts_ids as $contact_id) { foreach ($contacts_ids as $contact_id) {
$modelScheduled->insert_scheduled_contact($id_scheduled, $contact_id); $this->model_scheduled->insert_scheduled_contact($id_scheduled, $contact_id);
} }
foreach ($groupes_ids as $groupe_id) { foreach ($groups_ids as $group_id) {
$modelScheduled->insert_scheduled_groupe($id_scheduled, $groupe_id); $this->model_scheduled->insert_scheduled_group($id_scheduled, $group_id);
} }
return $id_scheduled; return $id_scheduled;
@ -101,34 +102,32 @@ namespace controllers\internals;
/** /**
* Cette fonction met à jour une série de scheduledes * Cette fonction met à jour une série de scheduledes
* @param array $scheduleds : Un tableau de scheduled à modifier avec at, content, flash, progress + pour chaque scheduled number, contact_ids, groupe_ids * @param array $scheduleds : Un tableau de scheduled à modifier avec at, content, flash, progress + pour chaque scheduled number, contact_ids, group_ids
* @param array $numbers : Les numéros auxquels envoyer le scheduled * @param array $numbers : Les numéros auxquels envoyer le scheduled
* @param array $contacts_ids : Les ids des contact auquels envoyer le scheduled * @param array $contacts_ids : Les ids des contact auquels envoyer le scheduled
* @param array $groupes_ids : Les ids des groupe auxquels envoyer le scheduled * @param array $groups_ids : Les ids des group auxquels envoyer le scheduled
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($scheduleds) public function update($scheduleds)
{ {
$modelScheduled = new \models\Scheduled($this->bdd);
$nb_update = 0; $nb_update = 0;
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled) {
$result = $modelScheduled->update($scheduled['scheduled']['id'], $scheduled['scheduled']); $result = $this->model_scheduled->update($scheduled['scheduled']['id'], $scheduled['scheduled']);
$modelScheduled->delete_scheduled_number($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_number($scheduled['scheduled']['id']);
$modelScheduled->delete_scheduled_contact($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_contact($scheduled['scheduled']['id']);
$modelScheduled->delete_scheduled_groupe($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_group($scheduled['scheduled']['id']);
foreach ($scheduled['number'] as $number) { foreach ($scheduled['number'] as $number) {
$modelScheduled->insert_scheduled_number($scheduled['scheduled']['id'], $number); $this->model_scheduled->insert_scheduled_number($scheduled['scheduled']['id'], $number);
} }
foreach ($scheduled['contact_ids'] as $contact_id) { foreach ($scheduled['contact_ids'] as $contact_id) {
$modelScheduled->insert_scheduled_contact($scheduled['scheduled']['id'], $contact_id); $this->model_scheduled->insert_scheduled_contact($scheduled['scheduled']['id'], $contact_id);
} }
foreach ($scheduled['groupe_ids'] as $groupe_id) { foreach ($scheduled['group_ids'] as $group_id) {
$modelScheduled->insert_scheduled_groupe($scheduled['scheduled']['id'], $groupe_id); $this->model_scheduled->insert_scheduled_group($scheduled['scheduled']['id'], $group_id);
} }
@ -146,8 +145,7 @@ namespace controllers\internals;
public function get_number($id_scheduled) public function get_number($id_scheduled)
{ {
//Recupération des scheduledes //Recupération des scheduledes
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_number($id_scheduled);
return $modelScheduled->get_number($id_scheduled);
} }
/** /**
@ -158,19 +156,17 @@ namespace controllers\internals;
public function get_contact($id_scheduled) public function get_contact($id_scheduled)
{ {
//Recupération des scheduledes //Recupération des scheduledes
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_contact($id_scheduled);
return $modelScheduled->get_contact($id_scheduled);
} }
/** /**
* Cette fonction retourne une liste de groupe pour un scheduled * Cette fonction retourne une liste de group pour un scheduled
* @param int $id_scheduled : L'id du scheduled pour lequel on veux le numéro * @param int $id_scheduled : L'id du scheduled pour lequel on veux le numéro
* @return array : La liste des groupe * @return array : La liste des group
*/ */
public function get_groupe($id_scheduled) public function get_group($id_scheduled)
{ {
//Recupération des scheduledes //Recupération des scheduledes
$modelScheduled = new \models\Scheduled($this->bdd); return $this->model_scheduled->get_group($id_scheduled);
return $modelScheduled->get_groupe($id_scheduled);
} }
} }

View File

@ -6,6 +6,12 @@ namespace controllers\internals;
*/ */
class Sended extends \descartes\InternalController class Sended extends \descartes\InternalController
{ {
private $model_sended;
public function __construct(\PDO $bdd)
{
$this->model_sended = new \models\Sended($bdd);
}
/** /**
* Cette fonction retourne une liste des sendedes sous forme d'un tableau * Cette fonction retourne une liste des sendedes sous forme d'un tableau
@ -16,8 +22,7 @@ namespace controllers\internals;
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des sendedes //Recupération des sendedes
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->get_list($nb_entry, $nb_entry * $page);
return $modelSended->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -28,8 +33,7 @@ namespace controllers\internals;
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des sendedes //Recupération des sendedes
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->get_by_ids($ids);
return $modelSended->get_by_ids($ids);
} }
/** /**
@ -39,8 +43,7 @@ namespace controllers\internals;
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
{ {
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->get_lasts_by_date($nb_entry);
return $modelSended->get_lasts_by_date($nb_entry);
} }
/** /**
@ -51,8 +54,7 @@ namespace controllers\internals;
public function get_by_target($target) public function get_by_target($target)
{ {
//Recupération des sendeds //Recupération des sendeds
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->get_by_target($target);
return $modelSended->get_by_target($target);
} }
@ -63,8 +65,7 @@ namespace controllers\internals;
*/ */
public function delete($id) public function delete($id)
{ {
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->delete_by_id($id);
return $modelSended->delete_by_id($id);
} }
/** /**
@ -74,8 +75,7 @@ namespace controllers\internals;
*/ */
public function create($sended) public function create($sended)
{ {
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->create($sended);
return $modelSended->create($sended);
} }
/** /**
@ -84,11 +84,9 @@ namespace controllers\internals;
*/ */
public function update($sendeds) public function update($sendeds)
{ {
$modelSended = new \models\Sended($this->bdd);
$nb_update = 0; $nb_update = 0;
foreach ($sendeds as $sended) { foreach ($sendeds as $sended) {
$result = $modelSended->update($sended['id'], $sended); $result = $this->model_sended->update($sended['id'], $sended);
if ($result) { if ($result) {
$nb_update ++; $nb_update ++;
@ -104,8 +102,7 @@ namespace controllers\internals;
*/ */
public function count() public function count()
{ {
$modelSended = new \models\Sended($this->bdd); return $this->model_sended->count();
return $modelSended->count();
} }
/** /**
@ -114,9 +111,7 @@ namespace controllers\internals;
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
{ {
$modelSended = new \models\Sended($this->bdd); $counts_by_day = $this->model_sended->count_by_day_since($date);
$counts_by_day = $modelSended->count_by_day_since($date);
$return = []; $return = [];
foreach ($counts_by_day as $count_by_day) { foreach ($counts_by_day as $count_by_day) {

View File

@ -22,7 +22,7 @@
/** /**
* Update a setting by his name * Update a setting by his name
*/ */
public function update(string $name, $value) : boolean public function update(string $name, $value) : bool
{ {
return (bool) $this->model_setting->update($name, $value); return (bool) $this->model_setting->update($name, $value);
} }

View File

@ -4,8 +4,15 @@ namespace controllers\internals;
/** /**
* Classe des smsstopes * Classe des smsstopes
*/ */
class SMSStop extends \descartes\InternalController class SmsStop extends \descartes\InternalController
{ {
private $model_sms_stop;
public function __construct(\PDO $bdd)
{
$this->model_sms_stop = new \models\SmsStop($bdd);
}
/** /**
* Cette fonction retourne une liste des smsstopes sous forme d'un tableau * Cette fonction retourne une liste des smsstopes sous forme d'un tableau
* @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page * @param mixed(int|bool) $nb_entry : Le nombre d'entrées à retourner par page
@ -15,8 +22,7 @@ namespace controllers\internals;
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
{ {
//Recupération des smsstopes //Recupération des smsstopes
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->get_list($nb_entry, $nb_entry * $page);
return $modelSMSStop->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
@ -27,8 +33,7 @@ namespace controllers\internals;
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
//Recupération des smsstopes //Recupération des smsstopes
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->get_by_ids($ids);
return $modelSMSStop->get_by_ids($ids);
} }
/** /**
@ -39,8 +44,7 @@ namespace controllers\internals;
public function get_by_number($number) public function get_by_number($number)
{ {
//Recupération des smsstopes //Recupération des smsstopes
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->get_by_number($number);
return $modelSMSStop->get_by_number($number);
} }
@ -50,8 +54,7 @@ namespace controllers\internals;
*/ */
public function count() public function count()
{ {
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->count();
return $modelSMSStop->count();
} }
/** /**
@ -61,8 +64,7 @@ namespace controllers\internals;
*/ */
public function delete($id) public function delete($id)
{ {
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->delete_by_id($id);
return $modelSMSStop->delete_by_id($id);
} }
/** /**
@ -72,8 +74,7 @@ namespace controllers\internals;
*/ */
public function create($smsstop) public function create($smsstop)
{ {
$modelSMSStop = new \models\SMSStop($this->bdd); return $this->model_sms_stop->insert($smsstop);
return $modelSMSStop->insert($smsstop);
} }
/** /**
@ -82,11 +83,9 @@ namespace controllers\internals;
*/ */
public function update($smsstops) public function update($smsstops)
{ {
$modelSMSStop = new \models\SMSStop($this->bdd);
$nb_update = 0; $nb_update = 0;
foreach ($smsstops as $smsstop) { foreach ($smsstops as $smsstop) {
$result = $modelSMSStop->update($smsstop['id'], $smsstop); $result = $this->model_sms_stop->update($smsstop['id'], $smsstop);
if ($result) { if ($result) {
$nb_update ++; $nb_update ++;

View File

@ -109,7 +109,7 @@
* Cette fonction vérifie si un utilisateur et connecté, et si il ne l'est pas, redirige sur la page de connexion * Cette fonction vérifie si un utilisateur et connecté, et si il ne l'est pas, redirige sur la page de connexion
* @return void * @return void
*/ */
public static function verify_connect() public static function verifyconnect()
{ {
if (!isset($_SESSION['connect']) || !$_SESSION['connect']) { if (!isset($_SESSION['connect']) || !$_SESSION['connect']) {
header('Location: /'); header('Location: /');
@ -136,9 +136,9 @@
* @param array $settings : Les settings du mail, type, sujet, template * @param array $settings : Les settings du mail, type, sujet, template
* @param array $datas : Les données à fournir au template du mail * @param array $datas : Les données à fournir au template du mail
*/ */
public function send_email($to, $settings, $datas = []) public static function send_email($to, $settings, $datas = [])
{ {
$controller = new \Controller(); $controller = new \descartes\Controller();
$content = $controller->render($settings['template'], $datas, true); $content = $controller->render($settings['template'], $datas, true);
return true;#mail($to, $settings['subject'], $content); return true;#mail($to, $settings['subject'], $content);
} }

View File

@ -4,6 +4,7 @@
class User extends \descartes\InternalController class User extends \descartes\InternalController
{ {
private $model_user; private $model_user;
private $internal_event;
public function __construct(\PDO $bdd) public function __construct(\PDO $bdd)
{ {
@ -56,9 +57,9 @@
* Update a user password * Update a user password
* @param string $id : User id * @param string $id : User id
* @param string $password : New password * @param string $password : New password
* @return boolean; * @return bool;
*/ */
public function update_password(int $id, string $password) : boolean public function update_password(int $id, string $password) : bool
{ {
$password = password_hash($password, PASSWORD_DEFAULT); $password = password_hash($password, PASSWORD_DEFAULT);
return (bool) $this->model_user->update_password($id, $password); return (bool) $this->model_user->update_password($id, $password);
@ -70,7 +71,7 @@
* @param string $transfer : New value of property transfer * @param string $transfer : New value of property transfer
* @return boolean; * @return boolean;
*/ */
public function update_transfer(int $id, int $transfer) : boolean public function update_transfer(int $id, int $transfer) : bool
{ {
return (bool) $this->model_user->update_transfer($id, $transfer); return (bool) $this->model_user->update_transfer($id, $transfer);
} }
@ -93,7 +94,7 @@
*/ */
public function get_by_email($email) public function get_by_email($email)
{ {
return $model_user->get_by_email($email); return $this->model_user->get_by_email($email);
} }
/** /**
@ -109,7 +110,7 @@
'transfer' => $transfer, 'transfer' => $transfer,
]; ];
return $model_user->update($id, $user); return $this->model_user->update($id, $user);
} }
/** /**
@ -126,13 +127,13 @@
'transfer' => $transfer, 'transfer' => $transfer,
]; ];
$result = $model_user->insert($user); $result = $this->model_user->insert($user);
if (!$result) { if (!$result) {
return false; return false;
} }
$internal_event->create('CONTACT_ADD', 'Ajout de l\'utilisateur : ' . $email . '.'); $this->internal_event->create('CONTACT_ADD', 'Ajout de l\'utilisateur : ' . $email . '.');
return $result; return $result;
} }

View File

@ -1,113 +0,0 @@
<?php
namespace controllers\internals;
/**
* Classe des commandes
*/
class Command extends \descartes\InternalController
{
public function populate_database ($nb_entry = false, $page = false)
{
global $bdd;
$internalContact = new \controllers\internals\Contact($bdd);
$internalGroupe = new \controllers\internals\Groupe($bdd);
#On insert des contacts & regroupe aléatoirement les ids en groupes
$groupes_contacts_ids = [];
for ($i = 0; $i < 100; $i ++)
{
$contact = [
'name' => 'Contact N°' . $i,
'number' => '06' . rand(10,99) . rand(10,99) . rand(10,99) . rand(10,99),
];
if (!$id_contact = $internalContact->create($contact))
{
continue;
}
$nb_groupe = rand(0,14);
if (!isset($groupes[$nb_groupe]))
{
$groupes_contacts_ids[$nb_groupe] = [];
}
$groupes_contacts_ids[$nb_groupe][] = $id_contact;
}
#On insert les groupes
foreach ($groupes_contacts_ids as $key => $groupe_contacts_ids)
{
$internalGroupe->create(['name' => 'Groupe N°' . $key], $groupe_contacts_ids);
}
}
/**
* Cette fonction retourne une liste des commandes sous forme d'un tableau
* @param array int $ids : Les ids des entrées à retourner
* @return array : La liste des commandes
*/
public function get_by_ids ($ids)
{
//Recupération des commandes
$modelCommand = new \models\Command($this->bdd);
return $modelCommand->get_by_ids($ids);
}
/**
* Cette fonction permet de compter le nombre de scheduleds
* @return int : Le nombre d'entrées dans la table
*/
public function count ()
{
$modelCommand = new \models\Command($this->bdd);
return $modelCommand->count();
}
/**
* Cette fonction va supprimer une liste de commands
* @param array $ids : Les id des commandes à supprimer
* @return int : Le nombre de commandes supprimées;
*/
public function delete ($ids)
{
$modelCommand = new \models\Command($this->bdd);
return $modelCommand->delete_by_ids($ids);
}
/**
* Cette fonction insert une nouvelle commande
* @param array $command : La commande à insérer
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle commande insérée
*/
public function create ($command)
{
$modelCommand = new \models\Command($this->bdd);
return $modelCommand->insert($command);
}
/**
* Cette fonction met à jour une série de commandes
* @return int : le nombre de ligne modifiées
*/
public function update ($commands)
{
$modelCommand = new \models\Command($this->bdd);
$nb_update = 0;
foreach ($commands as $command)
{
$result = $modelCommand->update($command['id'], $command);
if ($result)
{
$nb_update ++;
}
}
return $nb_update;
}
}

View File

@ -7,10 +7,10 @@
public function __construct() public function __construct()
{ {
$bdd = Model::connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_user = new \controllers\internals\User($bdd); $this->internal_user = new \controllers\internals\User($bdd);
\controllers\internals\Tool::verify_connect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
@ -31,25 +31,25 @@
{ {
$password = $_POST['password'] ?? false; $password = $_POST['password'] ?? false;
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
if (!$password) { if (!$password) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner un mot de passe.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner un mot de passe.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$update_password_result = $this->internal_user->update_password($_SESSION['user']['id'], $password); $update_password_result = $this->internal_user->update_password($_SESSION['user']['id'], $password);
if (!$update_password_result) { if (!$update_password_result) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour le mot de passe.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour le mot de passe.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le mot de passe a bien été mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le mot de passe a bien été mis à jour.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
@ -61,26 +61,26 @@
{ {
$transfer = $_POST['transfer'] ?? false; $transfer = $_POST['transfer'] ?? false;
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
if ($transfer === false) { if ($transfer === false) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez choisir une option parmis celles de la liste déroulante.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez choisir une option parmis celles de la liste déroulante.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$transfer_update_result = $this->internal_user->update_transfer($_SESSION['user']['id'], $transfer); $transfer_update_result = $this->internal_user->update_transfer($_SESSION['user']['id'], $transfer);
if (!$transfer_update_result) { if (!$transfer_update_result) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$_SESSION['user']['transfer'] = $transfer; $_SESSION['user']['transfer'] = $transfer;
\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le transfert a bien été ' . ($transfer ? 'activé' : 'désactivé') . '.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le transfert a bien été ' . ($transfer ? 'activé' : 'désactivé') . '.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
@ -91,33 +91,34 @@
*/ */
public function update_email($csrf) public function update_email($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$email = $_POST['email'] ?? false; $email = $_POST['email'] ?? false;
if (!$email) { if (!$email) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez fournir une adresse e-mail !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez fournir une adresse e-mail !');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas une adresse valide.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas une adresse valide.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$update_email_result = $this->internal_user->update_email($_SESSION['user']['id'], $email); $update_email_result = $this->internal_user->update_email($_SESSION['user']['id'], $email);
if (!$update_email_result) { if (!$update_email_result) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
;
} }
$_SESSION['user']['email'] = $email; $_SESSION['user']['email'] = $email;
\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'email a bien été mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'email a bien été mis à jour.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
@ -127,22 +128,22 @@
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$delete_account = $_POST['delete_account'] ?? false; $delete_account = $_POST['delete_account'] ?? false;
if (!$delete_account) { if (!$delete_account) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Pour supprimer le compte, vous devez cocher la case correspondante.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Pour supprimer le compte, vous devez cocher la case correspondante.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$delete_account_result = $this->internal_user->delete($_SESSION['user']['id']); $delete_account_result = $this->internal_user->delete($_SESSION['user']['id']);
if (!$delete_account_result) { if (!$delete_account_result) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de supprimer le compte.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de supprimer le compte.');
return header('Location: ' . \descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
return $this->logout(); return $this->logout();
@ -150,12 +151,12 @@
/** /**
* Logout a user and redirect to login page * Logout a user and redirect to login page
* @return void * @return null
*/ */
public function logout() public function logout()
{ {
session_unset(); session_unset();
session_destroy(); session_destroy();
return header('Location: ' . \descartes\Router::url('Connect', 'login')); return $this->redirect(\descartes\Router::url('Connect', 'login'));
} }
} }

View File

@ -6,17 +6,17 @@ namespace controllers\publics;
*/ */
class Command extends \descartes\Controller class Command extends \descartes\Controller
{ {
public $bdd; private $internal_command;
private $internal_event;
public function __construct() public function __construct()
{ {
$bdd = Model::connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_command = new \Controller\internals\Command($bdd); $this->internal_command = new \controllers\internals\Command($bdd);
$this->internal_event = new \Controller\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verify_connect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
@ -36,18 +36,18 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return false; return false;
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalCommand->delete($id); $this->internal_command->delete($id);
} }
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return true; return true;
} }
@ -68,7 +68,7 @@ namespace controllers\publics;
global $db; global $db;
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
$commands = $this->internalCommand->get_by_ids($ids); $commands = $this->internal_command->get_by_ids($ids);
$this->render('command/edit', array( $this->render('command/edit', array(
'commands' => $commands, 'commands' => $commands,
@ -85,9 +85,9 @@ namespace controllers\publics;
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return false; return false;
} }
@ -97,17 +97,17 @@ namespace controllers\publics;
if (!$name || !$script) { if (!$name || !$script) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Renseignez au moins un nom et un script.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Renseignez au moins un nom et un script.');
return header('Location: ' . \descartes\Router::url('Command', 'list')); return $this->redirect(\descartes\Router::url('Command', 'list'));
} }
if (!$this->internalCommand->create($name, $script, $admin)) { if (!$this->internal_command->create($name, $script, $admin)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible créer cette commande.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible créer cette commande.');
return header('Location: ' . \descartes\Router::url('commands', 'add')); return $this->redirect(\descartes\Router::url('commands', 'add'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'La commande a bien été crée.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'La commande a bien été crée.');
return header('Location: ' . \descartes\Router::url('Command', 'list')); return $this->redirect(\descartes\Router::url('Command', 'list'));
} }
/** /**
@ -118,26 +118,26 @@ namespace controllers\publics;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return false; return false;
} }
$nb_commands_update = 0; $nb_commands_update = 0;
foreach ($_POST['commands'] as $command) { foreach ($_POST['commands'] as $command) {
$update_command = $this->internalCommand->update($command['id'], $command['name'], $command['script'], $command['admin']); $update_command = $this->internal_command->update($command['id'], $command['name'], $command['script'], $command['admin']);
$nb_commands_update += (int) $update_command; $nb_commands_update += (int) $update_command;
} }
if ($nb_commands_update != count($_POST['commands'])) { if ($nb_commands_update != count($_POST['commands'])) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certaines commandes n\'ont pas pu êtres mises à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certaines commandes n\'ont pas pu êtres mises à jour.');
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return false; return false;
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Toutes les commandes ont été modifiées avec succès.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Toutes les commandes ont été modifiées avec succès.');
header('Location: ' . \descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return true; return true;
} }
} }

View File

@ -6,18 +6,19 @@
*/ */
class Connect extends \descartes\Controller class Connect extends \descartes\Controller
{ {
private $internal_user;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
global $model;
$this->bdd = $bdd; $this->internal_user = new \controllers\internals\User($bdd);
$this->model = $model;
\controllers\internals\Tool::verifyconnect();
$this->internal_user = new \controllers\internals\User($this->bdd);
} }
/** /**
@ -42,14 +43,14 @@
$user = $this->internal_user->check_credentials($email, $password); $user = $this->internal_user->check_credentials($email, $password);
if (!$user) { if (!$user) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Email ou mot de passe invalide.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Email ou mot de passe invalide.');
return header('Location: ' . \descartes\Router::url('Connect', 'login')); return $this->redirect(\descartes\Router::url('Connect', 'login'));
} }
$_SESSION['connect'] = true; $_SESSION['connect'] = true;
$_SESSION['user'] = $user; $_SESSION['user'] = $user;
$_SESSION['csrf'] = str_shuffle(uniqid().uniqid()); $_SESSION['csrf'] = str_shuffle(uniqid().uniqid());
return header('Location: ' . \descartes\Router::url('Dashboard', 'show')); return $this->redirect(\descartes\Router::url('Dashboard', 'show'));
} }
@ -69,9 +70,9 @@
*/ */
public function send_reset_password($csrf) public function send_reset_password($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Connect', 'forget_password')); $this->redirect(\descartes\Router::url('Connect', 'forget_password'));
return false; return false;
} }
@ -80,7 +81,7 @@
if (!$email || !$user) { if (!$email || !$user) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Aucun utilisateur n\'existe pour cette adresse mail.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Aucun utilisateur n\'existe pour cette adresse mail.');
header('Location: ' . \descartes\Router::url('Connect', 'forget_password')); $this->redirect(\descartes\Router::url('Connect', 'forget_password'));
return false; return false;
} }
@ -126,6 +127,6 @@
{ {
session_unset(); session_unset();
session_destroy(); session_destroy();
header('Location: ' . \descartes\Router::url('Connect', 'login')); $this->redirect(\descartes\Router::url('Connect', 'login'));
} }
} }

View File

@ -6,20 +6,22 @@ namespace controllers\publics;
*/ */
class Contact extends \descartes\Controller class Contact extends \descartes\Controller
{ {
private $internal_contact;
private $internal_event;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd;
$this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internalContact = new \controllers\internals\Contact($this->bdd); $this->internal_event = new \controllers\internals\Event($bdd);
$this->internalEvent = new \controllers\internals\Event($this->bdd);
\controllers\internals\Tool::verifyconnect();
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -28,7 +30,7 @@ namespace controllers\publics;
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$contacts = $this->internalContact->get_list(25, $page); $contacts = $this->internal_contact->get_list(25, $page);
$this->render('contact/list', ['contacts' => $contacts]); $this->render('contact/list', ['contacts' => $contacts]);
} }
@ -39,17 +41,17 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalContact->delete($id); $this->internal_contact->delete($id);
} }
header('Location: ' . \descartes\Router::url('Contact', 'list')); $this->redirect(\descartes\Router::url('Contact', 'list'));
return true; return true;
} }
@ -70,7 +72,7 @@ namespace controllers\publics;
global $db; global $db;
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
$contacts = $this->internalContact->get_by_ids($ids); $contacts = $this->internal_contact->get_by_ids($ids);
$this->render('contact/edit', array( $this->render('contact/edit', array(
'contacts' => $contacts, 'contacts' => $contacts,
@ -85,9 +87,9 @@ namespace controllers\publics;
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
$name = $_POST['name'] ?? false; $name = $_POST['name'] ?? false;
@ -95,22 +97,22 @@ namespace controllers\publics;
if (!$name || !$number) { if (!$name || !$number) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
return header('Location: ' . \descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
$number = \controllers\internals\Tool::parse_phone($number); $number = \controllers\internals\Tool::parse_phone($number);
if (!$number) { if (!$number) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Numéro de téléphone incorrect.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Numéro de téléphone incorrect.');
return header('Location: ' . \descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
if (!$this->internalContact->create($number, $name)) { if (!$this->internal_contact->create($number, $name)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce contact.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce contact.');
return header('Location: ' . \descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le contact a bien été créé.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le contact a bien été créé.');
return header('Location: ' . \descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
/** /**
@ -121,24 +123,24 @@ namespace controllers\publics;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
$nb_contacts_update = 0; $nb_contacts_update = 0;
foreach ($_POST['contacts'] as $contact) { foreach ($_POST['contacts'] as $contact) {
$nb_contacts_update += $this->internalContact->update($contact['id'], $contact['number'], $contact['name']); $nb_contacts_update += $this->internal_contact->update($contact['id'], $contact['number'], $contact['name']);
} }
if ($nb_contacts_update != count($_POST['contacts'])) { if ($nb_contacts_update != count($_POST['contacts'])) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certais contacts n\'ont pas pu êtres mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certais contacts n\'ont pas pu êtres mis à jour.');
return header('Location: ' . \descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les contacts ont été modifiés avec succès.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les contacts ont été modifiés avec succès.');
return header('Location: ' . \descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
/** /**
@ -147,6 +149,6 @@ namespace controllers\publics;
public function json_list() public function json_list()
{ {
header('Content-Type: application/json'); header('Content-Type: application/json');
echo json_encode($this->internalContact->get_list()); echo json_encode($this->internal_contact->get_list());
} }
} }

View File

@ -6,25 +6,32 @@ namespace controllers\publics;
*/ */
class Dashboard extends \descartes\Controller class Dashboard extends \descartes\Controller
{ {
private $internal_sended;
private $internal_received;
private $internal_contact;
private $internal_group;
private $internal_scheduled;
private $internal_command;
private $internal_event;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd;
$this->internal_sended = new \controllers\internals\Sended($bdd);
$this->internalSended = new \controllers\internals\Sended($this->bdd); $this->internal_received = new \controllers\internals\Received($bdd);
$this->internalReceived = new \controllers\internals\Received($this->bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internalContact = new \controllers\internals\Contact($this->bdd); $this->internal_group = new \controllers\internals\Group($bdd);
$this->internalGroupe = new \controllers\internals\Groupe($this->bdd); $this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
$this->internalScheduled = new \controllers\internals\Scheduled($this->bdd); $this->internal_command = new \controllers\internals\Command($bdd);
$this->internalCommand = new \controllers\internals\Command($this->bdd); $this->internal_event = new \controllers\internals\Event($bdd);
$this->internalEvent = new \controllers\internals\Event($this->bdd);
\controllers\internals\Tool::verifyconnect();
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -37,12 +44,12 @@ namespace controllers\publics;
global $db; global $db;
//Recupération des nombres des 4 panneaux d'accueil //Recupération des nombres des 4 panneaux d'accueil
$nb_contacts = $this->internalContact->count(); $nb_contacts = $this->internal_contact->count();
$nb_groupes = $this->internalGroupe->count(); $nb_groups = $this->internal_group->count();
$nb_scheduleds = $this->internalScheduled->count(); $nb_scheduleds = $this->internal_scheduled->count();
$nb_commands = $this->internalCommand->count(); $nb_commands = $this->internal_command->count();
$nb_sendeds = $this->internalSended->count(); $nb_sendeds = $this->internal_sended->count();
$nb_receiveds = $this->internalReceived->count(); $nb_receiveds = $this->internal_received->count();
//Création de la date d'il y a une semaine //Création de la date d'il y a une semaine
$now = new \DateTime(); $now = new \DateTime();
@ -50,14 +57,14 @@ namespace controllers\publics;
$date = $now->sub($one_week); $date = $now->sub($one_week);
$formated_date = $date->format('Y-m-d'); $formated_date = $date->format('Y-m-d');
//Récupération des 10 derniers SMS envoyés, SMS reçus et evenements enregistrés. Par date. //Récupération des 10 derniers Sms envoyés, Sms reçus et evenements enregistrés. Par date.
$sendeds = $this->internalSended->get_lasts_by_date(10); $sendeds = $this->internal_sended->get_lasts_by_date(10);
$receiveds = $this->internalReceived->get_lasts_by_date(10); $receiveds = $this->internal_received->get_lasts_by_date(10);
$events = $this->internalEvent->get_lasts_by_date(10); $events = $this->internal_event->get_lasts_by_date(10);
//Récupération du nombre de SMS envoyés et reçus depuis les 7 derniers jours //Récupération du nombre de Sms envoyés et reçus depuis les 7 derniers jours
$nb_sendeds_by_day = $this->internalSended->count_by_day_since($formated_date); $nb_sendeds_by_day = $this->internal_sended->count_by_day_since($formated_date);
$nb_receiveds_by_day = $this->internalReceived->count_by_day_since($formated_date); $nb_receiveds_by_day = $this->internal_received->count_by_day_since($formated_date);
//On va traduire ces données pour les afficher en graphique //On va traduire ces données pour les afficher en graphique
$array_area_chart = array(); $array_area_chart = array();
@ -101,7 +108,7 @@ namespace controllers\publics;
$this->render('dashboard/show', array( $this->render('dashboard/show', array(
'nb_contacts' => $nb_contacts, 'nb_contacts' => $nb_contacts,
'nb_groupes' => $nb_groupes, 'nb_groups' => $nb_groups,
'nb_scheduleds' => $nb_scheduleds, 'nb_scheduleds' => $nb_scheduleds,
'nb_commands' => $nb_commands, 'nb_commands' => $nb_commands,
'nb_sendeds' => $nb_sendeds, 'nb_sendeds' => $nb_sendeds,

View File

@ -6,24 +6,26 @@ namespace controllers\publics;
*/ */
class Discussion extends \descartes\Controller class Discussion extends \descartes\Controller
{ {
private $internal_sended;
private $internal_scheduled;
private $internal_received;
private $internal_contact;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
global $model;
$this->bdd = $bdd; $this->internal_sended = new \controllers\internals\Sended($bdd);
$this->model = $model; $this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
$this->internal_received = new \controllers\internals\Received($bdd);
$this->internalSended = new \controllers\internals\Sended($this->bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internalScheduled = new \controllers\internals\Scheduled($this->bdd);
$this->internalReceived = new \controllers\internals\Received($this->bdd); \controllers\internals\Tool::verifyconnect();
$this->internalContact = new \controllers\internals\Contact($this->bdd);
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -31,10 +33,10 @@ namespace controllers\publics;
*/ */
public function list() public function list()
{ {
$discussions = $this->internalReceived->get_discussions(); $discussions = $this->internal_received->get_discussions();
foreach ($discussions as $key => $discussion) { foreach ($discussions as $key => $discussion) {
if (!$contact = $this->internalContact->get_by_number($discussion['number'])) { if (!$contact = $this->internal_contact->get_by_number($discussion['number'])) {
continue; continue;
} }
@ -52,7 +54,7 @@ namespace controllers\publics;
*/ */
public function show($number) public function show($number)
{ {
$contact = $this->internalContact->get_by_number($number); $contact = $this->internal_contact->get_by_number($number);
$this->render('discussion/show', array( $this->render('discussion/show', array(
@ -71,9 +73,9 @@ namespace controllers\publics;
$now = new \DateTime(); $now = new \DateTime();
$now = $now->format('Y-m-d H:i:s'); $now = $now->format('Y-m-d H:i:s');
$sendeds = $this->internalSended->get_by_target($number); $sendeds = $this->internal_sended->get_by_target($number);
$receiveds = $this->internalReceived->get_by_send_by($number); $receiveds = $this->internal_received->get_by_send_by($number);
$scheduleds = $this->internalScheduled->get_before_date_for_number($now, $number); $scheduleds = $this->internal_scheduled->get_before_date_for_number($now, $number);
$messages = []; $messages = [];
@ -118,16 +120,16 @@ namespace controllers\publics;
/** /**
* Cette fonction permet d'envoyer facilement un sms à un numéro donné * Cette fonction permet d'envoyer facilement un sms à un numéro donné
* @param string $csrf : Le jeton csrf * @param string $csrf : Le jeton csrf
* @param string $_POST['content'] : Le contenu du SMS * @param string $_POST['content'] : Le contenu du Sms
* @param string $_POST['numbers'] : Un tableau avec le numero des gens auxquel envoyer le sms * @param string $_POST['numbers'] : Un tableau avec le numero des gens auxquel envoyer le sms
* @return json : Le statut de l'envoi * @return string : json string Le statut de l'envoi
*/ */
public function send($csrf) public function send($csrf)
{ {
$return = ['success' => true, 'message' => '']; $return = ['success' => true, 'message' => ''];
//On vérifie que le jeton csrf est bon //On vérifie que le jeton csrf est bon
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
$return['success'] = false; $return['success'] = false;
$return['message'] = 'Jeton CSRF invalide'; $return['message'] = 'Jeton CSRF invalide';
echo json_encode($return); echo json_encode($return);
@ -149,9 +151,9 @@ namespace controllers\publics;
return false; return false;
} }
if (!$this->internalScheduled->create($scheduled, $numbers)) { if (!$this->internal_scheduled->create($scheduled, $numbers)) {
$return['success'] = false; $return['success'] = false;
$return['message'] = 'Impossible de créer le SMS'; $return['message'] = 'Impossible de créer le Sms';
echo json_encode($return); echo json_encode($return);
return false; return false;
} }
@ -162,27 +164,27 @@ namespace controllers\publics;
/** /**
* Cette fonction retourne les id des sms qui sont envoyés * Cette fonction retourne les id des sms qui sont envoyés
* @return json : Tableau des ids des sms qui sont envoyés * @return string : json string Tableau des ids des sms qui sont envoyés
*/ */
public function checksendeds() public function checksendeds()
{ {
$_SESSION['discussion_wait_progress'] = isset($_SESSION['discussion_wait_progress']) ? $_SESSION['discussion_wait_progress'] : []; $_SESSION['discussion_wait_progress'] = isset($_SESSION['discussion_wait_progress']) ? $_SESSION['discussion_wait_progress'] : [];
$scheduleds = $this->internalScheduled->get_by_ids($_SESSION['discussion_wait_progress']); $scheduleds = $this->internal_scheduled->get_by_ids($_SESSION['discussion_wait_progress']);
//On va chercher à chaque fois si on a trouvé le sms. Si ce n'est pas le cas c'est qu'il a été envoyé //On va chercher à chaque fois si on a trouvé le sms. Si ce n'est pas le cas c'est qu'il a été envoyé
$sendeds = []; $sendeds = [];
foreach ($_SESSION['discussion_wait_progress'] as $key => $id_scheduled) { foreach ($_SESSION['discussion_wait_progress'] as $key => $id_scheduled) {
$found = false; $found = false;
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled) {
if ($id == $scheduled['id']) { if ($id_scheduled == $scheduled['id']) {
$found = true; $found = true;
} }
} }
if (!$found) { if (!$found) {
unset($_SESSION['discussion_wait_progress'][$key]); unset($_SESSION['discussion_wait_progress'][$key]);
$sendeds[] = $id; $sendeds[] = $id_scheduled;
} }
} }
@ -193,7 +195,7 @@ namespace controllers\publics;
/** /**
* Cette fonction retourne les messages reçus pour un numéro après la date $_SESSION['discussion_last_checkreceiveds'] * Cette fonction retourne les messages reçus pour un numéro après la date $_SESSION['discussion_last_checkreceiveds']
* @param string $number : Le numéro de téléphone pour lequel on veux les messages * @param string $number : Le numéro de téléphone pour lequel on veux les messages
* @return json : Un tableau avec les messages * @return string : json string Un tableau avec les messages
*/ */
public function checkreceiveds($number) public function checkreceiveds($number)
{ {
@ -202,7 +204,7 @@ namespace controllers\publics;
$_SESSION['discussion_last_checkreceiveds'] = isset($_SESSION['discussion_last_checkreceiveds']) ? $_SESSION['discussion_last_checkreceiveds'] : $now; $_SESSION['discussion_last_checkreceiveds'] = isset($_SESSION['discussion_last_checkreceiveds']) ? $_SESSION['discussion_last_checkreceiveds'] : $now;
$receiveds = $internalReceived->get_since_for_number_by_date($_SESSION['discussion_last_checkreceiveds'], $number); $receiveds = $this->internal_received->get_since_for_number_by_date($_SESSION['discussion_last_checkreceiveds'], $number);
//On va gérer le cas des messages en double en stockant ceux déjà reçus et en eliminant les autres //On va gérer le cas des messages en double en stockant ceux déjà reçus et en eliminant les autres
$_SESSION['discussion_already_receiveds'] = isset($_SESSION['discussion_already_receiveds']) ? $_SESSION['discussion_already_receiveds'] : []; $_SESSION['discussion_already_receiveds'] = isset($_SESSION['discussion_already_receiveds']) ? $_SESSION['discussion_already_receiveds'] : [];

View File

@ -6,19 +6,20 @@ namespace controllers\publics;
*/ */
class Event extends \descartes\Controller class Event extends \descartes\Controller
{ {
private $internal_event;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd;
$this->internal_event = new \controllers\internals\Event($bdd);
$this->internalEvent = new \controllers\internals\Event($this->bdd); \controllers\internals\Tool::verifyconnect();
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -28,7 +29,7 @@ namespace controllers\publics;
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$events = $this->internalEvent->get_list($limit, $page); $events = $this->internal_event->get_list($limit, $page);
$this->render('event/list', ['events' => $events, 'limit' => $limit, 'page' => $page, 'nb_results' => count($events)]); $this->render('event/list', ['events' => $events, 'limit' => $limit, 'page' => $page, 'nb_results' => count($events)]);
} }
@ -39,21 +40,21 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Event', 'list')); return $this->redirect(\descartes\Router::url('Event', 'list'));
} }
if (!\controllers\internals\Tool::is_admin()) { if (!\controllers\internals\Tool::is_admin()) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être admin pour pouvoir supprimer des events.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être admin pour pouvoir supprimer des events.');
return header('Location: ' . \descartes\Router::url('Event', 'list')); return $this->redirect(\descartes\Router::url('Event', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalEvent->delete($id); $this->internal_event->delete($id);
} }
return header('Location: ' . \descartes\Router::url('Event', 'list')); return $this->redirect(\descartes\Router::url('Event', 'list'));
} }
} }

161
controllers/publics/Group.php Executable file
View File

@ -0,0 +1,161 @@
<?php
namespace controllers\publics;
/**
* Page des groups
*/
class Group extends \descartes\Controller
{
private $internal_group;
private $internal_contact;
private $internal_event;
/**
* Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté
* @return void;
*/
public function __construct()
{
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_group = new \controllers\internals\Group($bdd);
$this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verifyconnect();
}
/**
* Cette fonction retourne tous les groups, sous forme d'un tableau permettant l'administration de ces groups
*/
public function list($page = 0)
{
$page = (int) $page;
$groups = $this->internal_group->get_list(25, $page);
foreach ($groups as $key => $group) {
$contacts = $this->internal_group->get_contact($group['id']);
$groups[$key]['nb_contacts'] = count($contacts);
}
$this->render('group/list', ['groups' => $groups]);
}
/**
* Cette fonction va supprimer une liste de groups
* @param array int $_GET['ids'] : Les id des groups à supprimer
* @return boolean;
*/
public function delete($csrf)
{
if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Group', 'list'));
return false;
}
$ids = $_GET['ids'] ?? [];
$this->internal_group->delete($ids);
$this->redirect(\descartes\Router::url('Group', 'list'));
return true;
}
/**
* Cette fonction retourne la page d'ajout d'un group
*/
public function add()
{
$this->render('group/add');
}
/**
* Cette fonction retourne la page d'édition des groups
* @param int... $ids : Les id des groups à supprimer
*/
public function edit()
{
$ids = $_GET['ids'] ?? [];
$groups = $this->internal_group->get_by_ids($ids);
foreach ($groups as $key => $group) {
$groups[$key]['contacts'] = $this->internal_group->get_contact($group['id']);
}
$this->render('group/edit', array(
'groups' => $groups,
));
}
/**
* Cette fonction insert un nouveau group
* @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom du group
* @param array $_POST['contacts'] : Les ids des contacts à mettre dans le group
*/
public function create($csrf)
{
if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return $this->redirect(\descartes\Router::url('Group', 'add'));
}
$name = $_POST['name'] ?? false;
$contacts_ids = $_POST['contacts'] ?? false;
if (!$name || !$contacts_ids) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
return $this->redirect(\descartes\Router::url('Group', 'add'));
}
$id_group = $this->internal_group->create($name, $contacts_ids);
if (!$id_group) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce group.');
return $this->redirect(\descartes\Router::url('Group', 'add'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le group a bien été créé.');
return $this->redirect(\descartes\Router::url('Group', 'list'));
}
/**
* Cette fonction met à jour une group
* @param $csrf : Le jeton CSRF
* @param array $_POST['groups'] : Un tableau des groups avec leur nouvelle valeurs & une entrée 'contacts_id' avec les ids des contacts pour chaque group
* @return boolean;
*/
public function update($csrf)
{
if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Group', 'list'));
return false;
}
$groups = $_POST['groups'] ?? [];
$nb_groups_update = 0;
foreach ($groups as $id => $group) {
$nb_groups_update += (int) $this->internal_group->update($id, $group['name'], $group['contacts_ids']);
}
if ($nb_groups_update != count($groups)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains groups n\'ont pas pu êtres mis à jour.');
return $this->redirect(\descartes\Router::url('Group', 'list'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les groups ont été modifiés avec succès.');
return $this->redirect(\descartes\Router::url('Group', 'list'));
}
/**
* Cette fonction retourne la liste des groups sous forme JSON
*/
public function json_list()
{
header('Content-Type: application/json');
echo json_encode($this->internal_group->get_list());
}
}

View File

@ -1,158 +0,0 @@
<?php
namespace controllers\publics;
/**
* Page des groupes
*/
class Groupe extends \descartes\Controller
{
/**
* Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté
* @return void;
*/
public function _before()
{
global $bdd;
$this->bdd = $bdd;
$this->internalGroupe = new \controllers\internals\Groupe($this->bdd);
$this->internalContact = new \controllers\internals\Contact($this->bdd);
$this->internalEvent = new \controllers\internals\Event($this->bdd);
\controllers\internals\Tool::verify_connect();
}
/**
* Cette fonction retourne tous les groupes, sous forme d'un tableau permettant l'administration de ces groupes
*/
public function list($page = 0)
{
$page = (int) $page;
$groupes = $this->internalGroupe->get_list(25, $page);
foreach ($groupes as $key => $groupe) {
$contacts = $this->internalGroupe->get_contact($groupe['id']);
$groupes[$key]['nb_contacts'] = count($contacts);
}
$this->render('groupe/list', ['groupes' => $groupes]);
}
/**
* Cette fonction va supprimer une liste de groupes
* @param array int $_GET['ids'] : Les id des groupes à supprimer
* @return boolean;
*/
public function delete($csrf)
{
if (!$this->verifyCSRF($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Groupe', 'list'));
return false;
}
$ids = $_GET['ids'] ?? [];
$this->internalGroupe->delete($ids);
header('Location: ' . \descartes\Router::url('Groupe', 'list'));
return true;
}
/**
* Cette fonction retourne la page d'ajout d'un groupe
*/
public function add()
{
$this->render('groupe/add');
}
/**
* Cette fonction retourne la page d'édition des groupes
* @param int... $ids : Les id des groupes à supprimer
*/
public function edit()
{
$ids = $_GET['ids'] ?? [];
$groupes = $this->internalGroupe->get_by_ids($ids);
foreach ($groupes as $key => $groupe) {
$groupes[$key]['contacts'] = $this->internalGroupe->get_contact($groupe['id']);
}
$this->render('groupe/edit', array(
'groupes' => $groupes,
));
}
/**
* Cette fonction insert un nouveau groupe
* @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom du groupe
* @param array $_POST['contacts'] : Les ids des contacts à mettre dans le groupe
*/
public function create($csrf)
{
if (!$this->verifyCSRF($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Groupe', 'add'));
}
$name = $_POST['name'] ?? false;
$contacts_ids = $_POST['contacts'] ?? false;
if (!$name || !$contacts_ids) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
return header('Location: ' . \descartes\Router::url('Groupe', 'add'));
}
$id_groupe = $this->internalGroupe->create($name, $contacts_ids);
if (!$id_groupe) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce groupe.');
return header('Location: ' . \descartes\Router::url('Groupe', 'add'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le groupe a bien été créé.');
return header('Location: ' . \descartes\Router::url('Groupe', 'list'));
}
/**
* Cette fonction met à jour une groupe
* @param $csrf : Le jeton CSRF
* @param array $_POST['groupes'] : Un tableau des groupes avec leur nouvelle valeurs & une entrée 'contacts_id' avec les ids des contacts pour chaque groupe
* @return boolean;
*/
public function update($csrf)
{
if (!$this->verifyCSRF($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
header('Location: ' . \descartes\Router::url('Groupe', 'list'));
return false;
}
$groupes = $_POST['groupes'] ?? [];
$nb_groupes_update = 0;
foreach ($groupes as $id => $groupe) {
$nb_groupes_update += (int) $this->internalGroupe->update($id, $groupe['name'], $groupe['contacts_ids']);
}
if ($nb_groupes_update != count($groupes)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains groupes n\'ont pas pu êtres mis à jour.');
return header('Location: ' . \descartes\Router::url('Groupe', 'list'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les groupes ont été modifiés avec succès.');
return header('Location: ' . \descartes\Router::url('Groupe', 'list'));
}
/**
* Cette fonction retourne la liste des groupes sous forme JSON
*/
public function json_list()
{
header('Content-Type: application/json');
echo json_encode($this->internalGroupe->get_list());
}
}

View File

@ -6,20 +6,21 @@ namespace controllers\publics;
*/ */
class Received extends \descartes\Controller class Received extends \descartes\Controller
{ {
private $internal_received;
private $internal_contact;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd; $this->internal_received = new \controllers\internals\Received($bdd);
$this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internalReceived = new \controllers\internals\Received($this->bdd); \controllers\internals\Tool::verifyconnect();
$this->internalContact = new \controllers\internals\Contact($this->bdd);
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -29,10 +30,10 @@ namespace controllers\publics;
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$receiveds = $this->internalReceived->get_list($limit, $page); $receiveds = $this->internal_received->get_list($limit, $page);
foreach ($receiveds as $key => $received) { foreach ($receiveds as $key => $received) {
if (!$contact = $this->internalContact->get_by_number($received['origin'])) { if (!$contact = $this->internal_contact->get_by_number($received['origin'])) {
continue; continue;
} }
@ -43,16 +44,16 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les SMS reçus aujourd'hui pour la popup * Cette fonction retourne tous les Sms reçus aujourd'hui pour la popup
* @return json : Un tableau des SMS reçus * @return string : A JSON Un tableau des Sms reçus
*/ */
public function popup() public function popup()
{ {
$now = new \DateTime(); $now = new \DateTime();
$receiveds = $this->internalReceived->get_since_by_date($now->format('Y-m-d')); $receiveds = $this->internal_received->get_since_by_date($now->format('Y-m-d'));
foreach ($receiveds as $key => $received) { foreach ($receiveds as $key => $received) {
if (!$contact = $this->internalContact->get_by_number($received['origin'])) { if (!$contact = $this->internal_contact->get_by_number($received['origin'])) {
continue; continue;
} }
@ -61,13 +62,13 @@ namespace controllers\publics;
$nb_received = count($receiveds); $nb_received = count($receiveds);
if (!isset($_SESSION['popup_nb_receiveds']) || $_SESSION['popup_nb_receiveds'] > $nb_receiveds) { if (!isset($_SESSION['popup_nb_receiveds']) || $_SESSION['popup_nb_receiveds'] > $nb_received) {
$_SESSION['popup_nb_receiveds'] = $nb_received; $_SESSION['popup_nb_receiveds'] = $nb_received;
} }
$newly_receiveds = array_slice($receiveds, $_SESSION['popup_nb_receiveds']); $newly_receiveds = array_slice($receiveds, $_SESSION['popup_nb_receiveds']);
$_SESSION['popup_nb_receiveds'] = $nb_receiveds; $_SESSION['popup_nb_receiveds'] = $nb_received;
echo json_encode($newly_receiveds); echo json_encode($newly_receiveds);
return true; return true;
@ -80,21 +81,21 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Received', 'list')); return $this->redirect(\descartes\Router::url('Received', 'list'));
} }
if (!\controllers\internals\Tool::is_admin()) { if (!\controllers\internals\Tool::is_admin()) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour effectuer cette action.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour effectuer cette action.');
return header('Location: ' . \descartes\Router::url('Received', 'list')); return $this->redirect(\descartes\Router::url('Received', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalReceived->delete($id); $this->internal_received->delete($id);
} }
return header('Location: ' . \descartes\Router::url('Received', 'list')); return $this->redirect(\descartes\Router::url('Received', 'list'));
} }
} }

View File

@ -6,20 +6,19 @@ namespace controllers\publics;
*/ */
class Scheduled extends \descartes\Controller class Scheduled extends \descartes\Controller
{ {
private $internal_scheduled;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd; $this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
$this->internalScheduled = new \controllers\internals\Scheduled($this->bdd); \controllers\internals\Tool::verifyconnect();
$this->internalEvent = new \controllers\internals\Event($this->bdd);
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -28,7 +27,7 @@ namespace controllers\publics;
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$scheduleds = $this->internalScheduled->get_list(25, $page); $scheduleds = $this->internal_scheduled->get_list(25, $page);
$this->render('scheduled/list', ['scheduleds' => $scheduleds]); $this->render('scheduled/list', ['scheduleds' => $scheduleds]);
} }
@ -39,17 +38,17 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalScheduled->delete($id); $this->internal_scheduled->delete($id);
} }
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
/** /**
@ -74,28 +73,28 @@ namespace controllers\publics;
{ {
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
$scheduleds = $this->internalScheduled->get_by_ids($ids); $scheduleds = $this->internal_scheduled->get_by_ids($ids);
//Pour chaque message on ajoute les numéros, les contacts & les groupes //Pour chaque message on ajoute les numéros, les contacts & les groups
foreach ($scheduleds as $key => $scheduled) { foreach ($scheduleds as $key => $scheduled) {
$scheduleds[$key]['numbers'] = []; $scheduleds[$key]['numbers'] = [];
$scheduleds[$key]['contacts'] = []; $scheduleds[$key]['contacts'] = [];
$scheduleds[$key]['groupes'] = []; $scheduleds[$key]['groups'] = [];
$numbers = $this->internalScheduled->get_numbers($scheduled['id']); $numbers = $this->internal_scheduled->get_numbers($scheduled['id']);
foreach ($numbers as $number) { foreach ($numbers as $number) {
$scheduleds[$key]['numbers'][] = $number['number']; $scheduleds[$key]['numbers'][] = $number['number'];
} }
$contacts = $this->internalScheduled->get_contacts($scheduled['id']); $contacts = $this->internal_scheduled->get_contacts($scheduled['id']);
foreach ($contacts as $contact) { foreach ($contacts as $contact) {
$scheduleds[$key]['contacts'][] = (int) $contact['id']; $scheduleds[$key]['contacts'][] = (int) $contact['id'];
} }
$groupes = $this->internalScheduled->get_groupes($scheduled['id']); $groups = $this->internal_scheduled->get_groups($scheduled['id']);
foreach ($groupes as $groupe) { foreach ($groups as $group) {
$scheduleds[$key]['groupes'][] = (int) $groupe['id']; $scheduleds[$key]['groups'][] = (int) $group['id'];
} }
} }
@ -112,29 +111,29 @@ namespace controllers\publics;
* @param string $_POST['date'] : La date d'envoie du scheduled * @param string $_POST['date'] : La date d'envoie du scheduled
* @param string $_POST['numbers'] : Les numeros de téléphone du scheduled * @param string $_POST['numbers'] : Les numeros de téléphone du scheduled
* @param string $_POST['contacts'] : Les contacts du scheduled * @param string $_POST['contacts'] : Les contacts du scheduled
* @param string $_POST['groupes'] : Les groupes du scheduled * @param string $_POST['groups'] : Les groups du scheduled
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
$date = $_POST['date'] ?? false; $date = $_POST['date'] ?? false;
$content = $_POST['content'] ?? false; $content = $_POST['content'] ?? false;
$numbers = $_POST['numbers'] ?? []; $numbers = $_POST['numbers'] ?? [];
$contacts = $_POST['contacts'] ?? []; $contacts = $_POST['contacts'] ?? [];
$groupes = $_POST['groupes'] ?? []; $groups = $_POST['groups'] ?? [];
if (!$content) { if (!$content) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous ne pouvez pas créer un SMS sans message.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous ne pouvez pas créer un Sms sans message.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
if (!\controllers\internals\Tool::validate_date($date, 'Y-m-d H:i:s') && !\controllers\internals\Tool::validate_date($date, 'Y-m-d H:i')) { if (!\controllers\internals\Tool::validate_date($date, 'Y-m-d H:i:s') && !\controllers\internals\Tool::validate_date($date, 'Y-m-d H:i')) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez fournir une date valide.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez fournir une date valide.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
foreach ($numbers as $key => $number) { foreach ($numbers as $key => $number) {
@ -148,9 +147,9 @@ namespace controllers\publics;
$numbers[$key] = $number; $numbers[$key] = $number;
} }
if (!$numbers && !$contacts && !$groupes) { if (!$numbers && !$contacts && !$groups) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner au moins un destinataire pour le SMS.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner au moins un destinataire pour le Sms.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
$scheduled = [ $scheduled = [
@ -160,26 +159,26 @@ namespace controllers\publics;
'progress' => false, 'progress' => false,
]; ];
if (!$scheduled_id = $this->internalScheduled->create($scheduled, $numbers, $contacts, $groupes)) { if (!$scheduled_id = $this->internal_scheduled->create($scheduled, $numbers, $contacts, $groups)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer le SMS.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer le Sms.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le SMS a bien été créé pour le ' . $date . '.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le Sms a bien été créé pour le ' . $date . '.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
/** /**
* Cette fonction met à jour une schedulede * Cette fonction met à jour une schedulede
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param array $_POST['scheduleds'] : Un tableau des scheduledes avec leur nouvelle valeurs + les numbers, contacts et groupes liées * @param array $_POST['scheduleds'] : Un tableau des scheduledes avec leur nouvelle valeurs + les numbers, contacts et groups liées
* @return boolean; * @return boolean;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
$scheduleds = $_POST['scheduleds'] ?? []; $scheduleds = $_POST['scheduleds'] ?? [];
@ -191,7 +190,7 @@ namespace controllers\publics;
$content = $scheduled['content'] ?? false; $content = $scheduled['content'] ?? false;
$numbers = $scheduled['numbers'] ?? []; $numbers = $scheduled['numbers'] ?? [];
$contacts = $scheduled['contacts'] ?? []; $contacts = $scheduled['contacts'] ?? [];
$groupes = $scheduled['groupes'] ?? []; $groups = $scheduled['groups'] ?? [];
if (!$content) { if (!$content) {
$all_update_ok = false; $all_update_ok = false;
@ -214,7 +213,7 @@ namespace controllers\publics;
$numbers[$key] = $number; $numbers[$key] = $number;
} }
if (!$numbers && !$contacts && !$groupes) { if (!$numbers && !$contacts && !$groups) {
$all_update_ok = false; $all_update_ok = false;
continue; continue;
} }
@ -229,21 +228,21 @@ namespace controllers\publics;
], ],
'numbers' => $numbers, 'numbers' => $numbers,
'contacts_ids' => $contacts, 'contacts_ids' => $contacts,
'groupes_ids' => $groupes, 'groups_ids' => $groups,
]; ];
if (!$this->internalScheduled->update([$scheduled])) { if (!$this->internal_scheduled->update([$scheduled])) {
$all_update_ok = false; $all_update_ok = false;
continue; continue;
} }
} }
if (!$all_update_ok) { if (!$all_update_ok) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains SMS n\'ont pas pu êtres mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains Sms n\'ont pas pu êtres mis à jour.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les SMS ont été mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les Sms ont été mis à jour.');
return header('Location: ' . \descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
} }

View File

@ -6,19 +6,19 @@ namespace controllers\publics;
*/ */
class Sended extends \descartes\Controller class Sended extends \descartes\Controller
{ {
private $internal_sended;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd; $this->internal_sended = new \controllers\internals\Sended($bdd);
$this->internalSended = new \controllers\internals\Sended($this->bdd); \controllers\internals\Tool::verifyconnect();
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -28,7 +28,7 @@ namespace controllers\publics;
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$sendeds = $this->internalSended->get_list($limit, $page); $sendeds = $this->internal_sended->get_list($limit, $page);
$this->render('sended/list', ['sendeds' => $sendeds, 'page' => $page, 'limit' => $limit, 'nb_results' => count($sendeds)]); $this->render('sended/list', ['sendeds' => $sendeds, 'page' => $page, 'limit' => $limit, 'nb_results' => count($sendeds)]);
} }
@ -39,16 +39,16 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Sended', 'list')); return $this->redirect(\descartes\Router::url('Sended', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalSended->delete($id); $this->internal_sended->delete($id);
} }
return header('Location: ' . \descartes\Router::url('Sended', 'list')); return $this->redirect(\descartes\Router::url('Sended', 'list'));
} }
} }

View File

@ -10,11 +10,11 @@ namespace controllers\publics;
public function __construct() public function __construct()
{ {
$bdd = Model::connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_setting = new \controllers\internals\Setting($bdd); $this->internal_setting = new \controllers\internals\Setting($bdd);
\controllers\internals\Tool::verify_connect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
@ -34,30 +34,30 @@ namespace controllers\publics;
*/ */
public function update(string $setting_name, string $csrf) public function update(string $setting_name, string $csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
if (!\controllers\internals\Tool::is_admin()) { if (!\controllers\internals\Tool::is_admin()) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour pouvoir modifier un réglage.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour pouvoir modifier un réglage.');
return header('Location: ' . \descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
$setting_value = $_POST['setting_value'] ?? false; $setting_value = $_POST['setting_value'] ?? false;
if ($setting_value === false) { if ($setting_value === false) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner une valeure pour le réglage.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez renseigner une valeure pour le réglage.');
return header('Location: ' . \descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
$update_setting_result = $this->internal_setting->update($setting_name, $setting_value); $update_setting_result = $this->internal_setting->update($setting_name, $setting_value);
if ($update_setting_result === false) { if ($update_setting_result === false) {
\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour ce réglage.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour ce réglage.');
return header('Location: ' . \descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le réglage a bien été mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le réglage a bien été mis à jour.');
return header('Location: ' . \descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
} }

View File

@ -4,21 +4,21 @@ namespace controllers\publics;
/** /**
* Page des smsstops * Page des smsstops
*/ */
class SMSStop extends \descartes\Controller class SmsStop extends \descartes\Controller
{ {
private $internal_sms_stop;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté * Elle vérifie que l'utilisateur est bien connecté
* @return void; * @return void;
*/ */
public function _before() public function __construct()
{ {
global $bdd; $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->bdd = $bdd; $this->internal_sms_stop = new \controllers\internals\SmsStop($bdd);
$this->internalSMSStop = new \controllers\internals\SMSStop($this->bdd); \controllers\internals\Tool::verifyconnect();
\controllers\internals\Tool::verify_connect();
} }
/** /**
@ -28,7 +28,7 @@ namespace controllers\publics;
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$smsstops = $this->internalSMSStop->get_list($limit, $page); $smsstops = $this->internal_sms_stop->get_list($limit, $page);
$this->render('smsstop/list', ['page' => $page, 'smsstops' => $smsstops, 'limit' => $limit, 'nb_results' => count($smsstops)]); $this->render('smsstop/list', ['page' => $page, 'smsstops' => $smsstops, 'limit' => $limit, 'nb_results' => count($smsstops)]);
} }
@ -39,21 +39,21 @@ namespace controllers\publics;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verifyCSRF($csrf)) { if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('SMSStop', 'list')); return $this->redirect(\descartes\Router::url('SmsStop', 'list'));
} }
if (!\controllers\internals\Tool::is_admin()) { if (!\controllers\internals\Tool::is_admin()) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour pouvoir supprimer un "STOP SMS" !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour pouvoir supprimer un "STOP Sms" !');
return header('Location: ' . \descartes\Router::url('SMSStop', 'list')); return $this->redirect(\descartes\Router::url('SmsStop', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id) {
$this->internalSMSStop->delete($id); $this->internal_sms_stop->delete($id);
} }
return header('Location: ' . \descartes\Router::url('SMSStop', 'list')); return $this->redirect(\descartes\Router::url('SmsStop', 'list'));
} }
} }

View File

@ -1,110 +1,112 @@
<?php <?php
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des users * Page des users
*/ */
class User extends \descartes\Controller class User extends \descartes\Controller
{
private $internal_user;
/**
* Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté
* @return void;
*/
public function __construct()
{ {
/** $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
* Cette fonction est appelée avant toute les autres : $this->internal_user = new \controllers\internals\User($bdd);
* Elle vérifie que l'utilisateur est bien connecté
* @return void;
*/
public function _before()
{
$bdd = Model::connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_user = new \controllers\internals\User($bdd);
\controllers\internals\Tool::verify_connect(); \controllers\internals\Tool::verifyconnect();
}
/**
* Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users
*/
public function list($page = 0)
{
$page = (int) $page;
$users = $this->internal_user->list(25, $page);
$this->render('user/list', ['users' => $users]);
}
/**
* Cette fonction va supprimer une liste de users
* @param array int $_GET['ids'] : Les id des useres à supprimer
* @return boolean;
*/
public function delete($csrf)
{
if (!$this->verifyCSRF($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('User', 'list'));
}
if (!\controllers\internals\Tool::is_admin()) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour supprimer un utilisateur !');
return header('Location: ' . \descartes\Router::url('User', 'list'));
}
$ids = $_GET['ids'] ?? [];
foreach ($ids as $id) {
$this->internal_user->delete($id);
}
return header('Location: ' . \descartes\Router::url('User', 'list'));
}
/**
* Cette fonction retourne la page d'ajout d'un user
*/
public function add()
{
return $this->render('user/add');
}
/**
* Cette fonction insert un nouveau user
* @param $csrf : Le jeton CSRF
* @param string $_POST['email'] : L'email de l'utilisateur
* @param string $_POST['email_confirm'] : Verif de l'email de l'utilisateur
* @param optional string $_POST['password'] : Le mot de passe de l'utilisateur (si vide, généré automatiquement)
* @param optional string $_POST['password_confirm'] : Confirmation du mot de passe de l'utilisateur
* @param optional boolean $_POST['admin'] : Si vrai, l'utilisateur est admin, si vide non
*/
public function create($csrf)
{
if (!$this->verifyCSRF($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return header('Location: ' . \descartes\Router::url('User', 'add'));
}
$email = $_POST['email'] ?? false;
$password = $_POST['password'] ?? \controllers\internals\Tool::generate_password(rand(6, 12));
$admin = $_POST['admin'] ?? false;
if (!$email) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez au moins fournir une adresse e-mail pour l\'utilisateur.');
return header('Location: ' . \descartes\Router::url('User', 'add'));
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas valide.');
return header('Location: ' . \descartes\Router::url('User', 'add'));
}
$email_send = \controllers\internals\Tool::send_email($email, EMAIL_CREATE_USER, ['email' => $email, 'password' => $password]);
if (!$email_send) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible d\'envoyer l\'e-mail à l\'utilisateur, le compte n\'a donc pas été créé.');
return header('Location: ' . \descartes\Router::url('User', 'add'));
}
$user_id = $this->internal_user->create($email, $password, $admin);
if (!$user_id) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce user.');
return header('Location: ' . \descartes\Router::url('User', 'add'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'utilisateur a bien été créé.');
return header('Location: ' . \descartes\Router::url('User', 'list'));
}
} }
/**
* Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users
*/
public function list($page = 0)
{
$page = (int) $page;
$users = $this->internal_user->list(25, $page);
$this->render('user/list', ['users' => $users]);
}
/**
* Cette fonction va supprimer une liste de users
* @param array int $_GET['ids'] : Les id des useres à supprimer
* @return boolean;
*/
public function delete($csrf)
{
if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return $this->redirect(\descartes\Router::url('User', 'list'));
}
if (!\controllers\internals\Tool::is_admin()) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour supprimer un utilisateur !');
return $this->redirect(\descartes\Router::url('User', 'list'));
}
$ids = $_GET['ids'] ?? [];
foreach ($ids as $id) {
$this->internal_user->delete($id);
}
return $this->redirect(\descartes\Router::url('User', 'list'));
}
/**
* Cette fonction retourne la page d'ajout d'un user
*/
public function add()
{
return $this->render('user/add');
}
/**
* Cette fonction insert un nouveau user
* @param $csrf : Le jeton CSRF
* @param string $_POST['email'] : L'email de l'utilisateur
* @param string $_POST['email_confirm'] : Verif de l'email de l'utilisateur
* @param optional string $_POST['password'] : Le mot de passe de l'utilisateur (si vide, généré automatiquement)
* @param optional string $_POST['password_confirm'] : Confirmation du mot de passe de l'utilisateur
* @param optional boolean $_POST['admin'] : Si vrai, l'utilisateur est admin, si vide non
*/
public function create($csrf)
{
if (!$this->verify_csrf($csrf)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
return $this->redirect(\descartes\Router::url('User', 'add'));
}
$email = $_POST['email'] ?? false;
$password = $_POST['password'] ?? \controllers\internals\Tool::generate_password(rand(6, 12));
$admin = $_POST['admin'] ?? false;
if (!$email) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez au moins fournir une adresse e-mail pour l\'utilisateur.');
return $this->redirect(\descartes\Router::url('User', 'add'));
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas valide.');
return $this->redirect(\descartes\Router::url('User', 'add'));
}
$email_send = \controllers\internals\Tool::send_email($email, EMAIL_CREATE_USER, ['email' => $email, 'password' => $password]);
if (!$email_send) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible d\'envoyer l\'e-mail à l\'utilisateur, le compte n\'a donc pas été créé.');
return $this->redirect(\descartes\Router::url('User', 'add'));
}
$user_id = $this->internal_user->create($email, $password, $admin);
if (!$user_id) {
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce user.');
return $this->redirect(\descartes\Router::url('User', 'add'));
}
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'utilisateur a bien été créé.');
return $this->redirect(\descartes\Router::url('User', 'list'));
}
}

View File

@ -11,9 +11,9 @@
* @param array|null $variables : Array of variables to transfer to the template, format name => value * @param array|null $variables : Array of variables to transfer to the template, format name => value
* @param string $dir_template_path : Template directory path, if not defined we use PWD_TEMPLATES constant * @param string $dir_template_path : Template directory path, if not defined we use PWD_TEMPLATES constant
* @param string $extension : The extension of the template file, if not defined we use ".php" * @param string $extension : The extension of the template file, if not defined we use ".php"
* @return void * @return true
*/ */
protected function render (string $template, ?array $variables = array(), string $dir_template_path = PWD_TEMPLATES, string $template_extension = '.php') : void protected function render (string $template, ?array $variables = array(), string $dir_template_path = PWD_TEMPLATES, string $template_extension = '.php') : bool
{ {
foreach ($variables as $clef => $value) foreach ($variables as $clef => $value)
{ {
@ -28,6 +28,7 @@
} }
require $template_path; require $template_path;
return true;
} }
@ -76,5 +77,17 @@
} }
return true; return true;
} }
/**
* Redirect to an url
* @param string $url : URL to redirect to
* @param int $http_code : Http code to send (default 302)
* @return null
*/
public static function redirect (string $url, int $http_code = 302)
{
header('Location: ' . $url, true, $http_code);
return null;
}
} }

View File

@ -5,6 +5,11 @@
{ {
foreach ($array as $key => $value) foreach ($array as $key => $value)
{ {
if (defined(mb_strtoupper($key)))
{
continue;
}
define(mb_strtoupper($key), $value); define(mb_strtoupper($key), $value);
} }
} }

View File

@ -266,9 +266,9 @@
} }
/** /**
* Récupère les groupes dont l'id fait partie de la liste fournie * Récupère les groups dont l'id fait partie de la liste fournie
* @param array $groups_ids = Tableau des id des groupes voulus * @param array $groups_ids = Tableau des id des groups voulus
* @return array : Retourne un tableau avec les groupes adaptés * @return array : Retourne un tableau avec les groups adaptés
*/ */
public function getGroupsIn($groups_ids) public function getGroupsIn($groups_ids)
{ {
@ -286,7 +286,7 @@
} }
/** /**
* Supprime tous les groupes dont l'id fait partie du tableau fourni * Supprime tous les groups dont l'id fait partie du tableau fourni
* @param $contacts_ids : Tableau des id des groups à supprimer * @param $contacts_ids : Tableau des id des groups à supprimer
* @return int : Nombre de lignes supprimées * @return int : Nombre de lignes supprimées
*/ */
@ -309,9 +309,9 @@
/***************************************/ /***************************************/
/** /**
* Retourne tous les contacts pour un groupe donnée * Retourne tous les contacts pour un group donnée
* @param int $id_group : L'id du groupe * @param int $id_group : L'id du group
* @return array : Tous les contacts compris dans le groupe * @return array : Tous les contacts compris dans le group
*/ */
public function getContactsForGroup($id_group) public function getContactsForGroup($id_group)
{ {
@ -331,8 +331,8 @@
} }
/** /**
* Récupère tout les groupes, avec le nombre de contact dans chacun * Récupère tout les groups, avec le nombre de contact dans chacun
* @return array : Tableau avec tous les groupes et le nombre de contacts liés * @return array : Tableau avec tous les groups et le nombre de contacts liés
*/ */
public function getGroupsWithContactsNb($order_by = '', $desc = false, $limit = false, $offset = false) public function getGroupsWithContactsNb($order_by = '', $desc = false, $limit = false, $offset = false)
{ {
@ -351,8 +351,7 @@
'number', 'number',
]; ];
if (in_array($order_by, $orders)) if (in_array($order_by, $orders)) {
{
$query .= ' ORDER BY '. $order_by; $query .= ' ORDER BY '. $order_by;
if ($desc) { if ($desc) {
$query .= ' DESC'; $query .= ' DESC';
@ -673,9 +672,9 @@
} }
/** /**
* Retourne tous les groupes pour un scheduled donnée * Retourne tous les groups pour un scheduled donnée
* @param int $id_scheduled : L'id du schedulede * @param int $id_scheduled : L'id du schedulede
* @return array : Tous les groupes compris dans le scheduled * @return array : Tous les groups compris dans le scheduled
*/ */
public function getGroupsForScheduled($id_scheduled) public function getGroupsForScheduled($id_scheduled)
{ {

View File

@ -2,9 +2,9 @@
namespace models; namespace models;
/** /**
* Cette classe gère les accès bdd pour les groupes * Cette classe gère les accès bdd pour les groups
*/ */
class Groupe extends \descartes\Model class Group extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id
@ -13,8 +13,8 @@
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$groupes = $this->_select('groupe', ['id' => $id]); $groups = $this->_select('group', ['id' => $id]);
return isset($groupes[0]) ? $groupes[0] : false; return isset($groups[0]) ? $groups[0] : false;
} }
/** /**
@ -24,31 +24,31 @@
*/ */
public function get_by_name($name) public function get_by_name($name)
{ {
$groupes = $this->_select('groupe', ['name' => $name]); $groups = $this->_select('group', ['name' => $name]);
return isset($groupes[0]) ? $groupes[0] : false; return isset($groups[0]) ? $groups[0] : false;
} }
/** /**
* Retourne une liste de groupes sous forme d'un tableau * Retourne une liste de groups sous forme d'un tableau
* @param int $limit : Nombre de résultat maximum à retourner * @param int $limit : Nombre de résultat maximum à retourner
* @param int $offset : Nombre de résultat à ingnorer * @param int $offset : Nombre de résultat à ingnorer
*/ */
public function get_list($limit, $offset) public function get_list($limit, $offset)
{ {
$groupes = $this->_select('groupe', [], '', false, $limit, $offset); $groups = $this->_select('group', [], '', false, $limit, $offset);
return $groupes; return $groups;
} }
/** /**
* Retourne une liste de groupes sous forme d'un tableau * Retourne une liste de groups sous forme d'un tableau
* @param array $ids : un ou plusieurs id d'entrées à récupérer * @param array $ids : un ou plusieurs id d'entrées à récupérer
* @return array : La liste des entrées * @return array : La liste des entrées
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
{ {
$query = " $query = "
SELECT * FROM groupe SELECT * FROM group
WHERE id "; WHERE id ";
//On génère la clause IN et les paramètres adaptés depuis le tableau des id //On génère la clause IN et les paramètres adaptés depuis le tableau des id
@ -60,14 +60,14 @@
} }
/** /**
* Retourne une liste de groupes sous forme d'un tableau * Retourne une liste de groups sous forme d'un tableau
* @param array $ids : un ou plusieurs id d'entrées à supprimer * @param array $ids : un ou plusieurs id d'entrées à supprimer
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_ids($ids) public function delete_by_ids($ids)
{ {
$query = " $query = "
DELETE FROM groupe DELETE FROM group
WHERE id "; WHERE id ";
//On génère la clause IN et les paramètres adaptés depuis le tableau des id //On génère la clause IN et les paramètres adaptés depuis le tableau des id
@ -79,23 +79,23 @@
} }
/** /**
* Supprime les liens groupe/contact pour un groupe précis * Supprime les liens group/contact pour un group précis
* @param int $id_groupe : L'id du groupe pour lequel supprimer * @param int $id_group : L'id du group pour lequel supprimer
* @return int : Le nmbre d'entrées modifiées * @return int : Le nmbre d'entrées modifiées
*/ */
public function delete_groupe_contact($id_groupe) public function delete_group_contact($id_group)
{ {
return $this->_delete('groupe_contact', ['id_groupe' => $id_groupe]); return $this->_delete('group_contact', ['id_group' => $id_group]);
} }
/** /**
* Insert une groupe * Insert une group
* @param array $groupe : La groupe à insérer avec les champs name, script, admin & admin * @param array $group : La group à insérer avec les champs name, script, admin & admin
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle lignée insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle lignée insérée
*/ */
public function insert($groupe) public function insert($group)
{ {
$result = $this->_insert('groupe', $groupe); $result = $this->_insert('group', $group);
if (!$result) { if (!$result) {
return false; return false;
@ -105,14 +105,14 @@
} }
/** /**
* Insert un lien groupe/contact * Insert un lien group/contact
* @param int $id_groupe : L'id du groupe à liéer * @param int $id_group : L'id du group à liéer
* @param int $id_contact : L'id du contact à liéer * @param int $id_contact : L'id du contact à liéer
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle lignée insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle lignée insérée
*/ */
public function insert_groupe_contact($id_groupe, $id_contact) public function insert_group_contact($id_group, $id_contact)
{ {
$result = $this->_insert('groupe_contact', ['id_groupe' => $id_groupe, 'id_contact' => $id_contact]); $result = $this->_insert('group_contact', ['id_group' => $id_group, 'id_contact' => $id_contact]);
if (!$result) { if (!$result) {
return false; return false;
@ -122,14 +122,14 @@
} }
/** /**
* Met à jour une groupe par son id * Met à jour une group par son id
* @param int $id : L'id de la groupe à modifier * @param int $id : L'id de la group à modifier
* @param array $groupe : Les données à mettre à jour pour la groupe * @param array $group : Les données à mettre à jour pour la group
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $groupe) public function update($id, $group)
{ {
return $this->_update('groupe', $groupe, ['id' => $id]); return $this->_update('group', $group, ['id' => $id]);
} }
/** /**
@ -138,12 +138,12 @@
*/ */
public function count() public function count()
{ {
return $this->_count('groupe'); return $this->_count('group');
} }
/** /**
* Cette fonction retourne les contact pour un groupe * Cette fonction retourne les contact pour un group
* @param string $id : L'id du groupe * @param string $id : L'id du group
* @return array : Un tableau avec les contact * @return array : Un tableau avec les contact
*/ */
public function get_contact($id) public function get_contact($id)
@ -151,7 +151,7 @@
$query = " $query = "
SELECT * SELECT *
FROM contact FROM contact
WHERE id IN (SELECT id_contact FROM groupe_contact WHERE id_groupe = :id) WHERE id IN (SELECT id_contact FROM group_contact WHERE id_group = :id)
"; ";
$params = array( $params = array(

View File

@ -77,10 +77,10 @@
) )
OR id IN ( OR id IN (
SELECT id_scheduled SELECT id_scheduled
FROM scheduled_groupe FROM scheduled_group
WHERE id_group IN ( WHERE id_group IN (
SELECT id_group SELECT id_group
FROM groupe_contact FROM group_contact
WHERE id_contact IN ( WHERE id_contact IN (
SELECT id SELECT id
FROM contact FROM contact
@ -177,13 +177,13 @@
} }
/** /**
* Cette fonction retourne une liste de groupes pour un scheduled * Cette fonction retourne une liste de groups pour un scheduled
* @param int $id_scheduled : L'id du scheduled pour lequel on veux le numéro * @param int $id_scheduled : L'id du scheduled pour lequel on veux le numéro
* @return array : Les groupes du scheduled * @return array : Les groups du scheduled
*/ */
public function get_groupe($id_scheduled) public function get_group($id_scheduled)
{ {
$query = 'SELECT * FROM groupe WHERE id IN (SELECT id_group FROM scheduled_groupe WHERE id_scheduled = :id_scheduled)'; $query = 'SELECT * FROM group WHERE id IN (SELECT id_group FROM scheduled_group WHERE id_scheduled = :id_scheduled)';
$params = ['id_scheduled' => $id_scheduled]; $params = ['id_scheduled' => $id_scheduled];
@ -230,9 +230,9 @@
* @param int $id_group : L'id du group * @param int $id_group : L'id du group
* @return int : le nombre d'entrées * @return int : le nombre d'entrées
*/ */
public function insert_scheduled_groupe($id_scheduled, $id_group) public function insert_scheduled_group($id_scheduled, $id_group)
{ {
$result = $this->_insert('scheduled_groupe', ['id_scheduled' => $id_scheduled, 'id_group' => $id_group]); $result = $this->_insert('scheduled_group', ['id_scheduled' => $id_scheduled, 'id_group' => $id_group]);
if (!$result) { if (!$result) {
return false; return false;
@ -262,12 +262,12 @@
} }
/** /**
* Supprime les liens scheduled/groupe pour un scheduled précis * Supprime les liens scheduled/group pour un scheduled précis
* @param int $id_scheduled : L'id du scheduled pour lequel supprimer * @param int $id_scheduled : L'id du scheduled pour lequel supprimer
* @return int : Le nmbre d'entrées modifiées * @return int : Le nmbre d'entrées modifiées
*/ */
public function delete_scheduled_groupe($id_scheduled) public function delete_scheduled_group($id_scheduled)
{ {
return $this->_delete('scheduled_groupe', ['id_scheduled' => $id_scheduled]); return $this->_delete('scheduled_group', ['id_scheduled' => $id_scheduled]);
} }
} }

16
todo.txt Normal file
View File

@ -0,0 +1,16 @@
Migrate to latest version of descartes. Remove all useless functions
y Account.php (almost done need to do user after)
p Command.php
Connect.php
Contact.php
Dashboard.php
Discussion.php
Event.php
Groupe.php
Received.php
Scheduled.php
Sended.php
y Setting.php
SMSAPI.php
SMSStop.php
y User.php