Fix style and add config file to php-cs-fixer

This commit is contained in:
osaajani 2019-10-30 00:30:39 +01:00
parent 485a0cb6fd
commit fab9e256ab
40 changed files with 2360 additions and 1128 deletions

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des commandes * Classe des commandes.
*/ */
class Command extends \descartes\InternalController class Command extends \descartes\InternalController
{ {
@ -15,11 +26,12 @@ namespace controllers\internals;
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
} }
/** /**
* Return the list of commands as an array * Return the list of commands as an array.
*
* @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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des commandes * @return array : La liste des commandes
*/ */
public function list($nb_entry = false, $page = false) public function list($nb_entry = false, $page = false)
@ -28,8 +40,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des commandes sous forme d'un tableau * Cette fonction retourne une liste des commandes sous forme d'un tableau.
*
* @param array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des commandes * @return array : La liste des commandes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -39,7 +53,8 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction permet de compter le nombre de scheduleds * Cette fonction permet de compter le nombre de scheduleds.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -48,8 +63,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction va supprimer une commande * Cette fonction va supprimer une commande.
*
* @param array $id : L'id de la commande à supprimer * @param array $id : L'id de la commande à supprimer
*
* @return int : Le nombre de commandes supprimées; * @return int : Le nombre de commandes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -58,8 +75,13 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert une nouvelle commande * Cette fonction insert une nouvelle commande.
*
* @param array $command : La commande à insérer * @param array $command : La commande à insérer
* @param mixed $name
* @param mixed $script
* @param mixed $admin
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle commande insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle commande insérée
*/ */
public function create($name, $script, $admin) public function create($name, $script, $admin)
@ -72,16 +94,24 @@ namespace controllers\internals;
$result = $this->model_command->insert($command); $result = $this->model_command->insert($command);
if (!$result) { if (!$result)
{
return false; return false;
} }
$this->internal_event->create('COMMAND_ADD', 'Ajout commande : ' . $name . ' => ' . $script); $this->internal_event->create('COMMAND_ADD', 'Ajout commande : '.$name.' => '.$script);
return $result; return $result;
} }
/** /**
* Cette fonction met à jour un commande * Cette fonction met à jour un commande.
*
* @param mixed $id
* @param mixed $name
* @param mixed $script
* @param mixed $admin
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $name, $script, $admin) public function update($id, $name, $script, $admin)
@ -92,8 +122,6 @@ namespace controllers\internals;
'admin' => $admin, 'admin' => $admin,
]; ];
$result = $this->model_command->update($id, $command); return $this->model_command->update($id, $command);
return $result;
} }
} }

View File

@ -1,17 +1,29 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
class Console extends \descartes\InternalController class Console extends \descartes\InternalController
{ {
/** /**
* Cette fonction envoie tous les Sms programmés qui doivent l'être * Cette fonction envoie tous les Sms programmés qui doivent l'être.
*/ */
public function sendScheduled() public function sendScheduled()
{ {
//On créé l'objet de base de données //On créé l'objet de base de données
global $db; global $db;
for ($i = 0; $i < 30; $i++) { for ($i = 0; $i < 30; ++$i)
{
$now = new \DateTime(); $now = new \DateTime();
$now = $now->format('Y-m-d H:i:s'); $now = $now->format('Y-m-d H:i:s');
@ -19,87 +31,100 @@ class Console extends \descartes\InternalController
$scheduleds = $db->getScheduledNotInProgressBefore($now); $scheduleds = $db->getScheduledNotInProgressBefore($now);
$ids_scheduleds = array(); $ids_scheduleds = [];
//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 = [];
//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'];
} }
//On récupère les contacts, et on ajoute les numéros //On récupère les contacts, et on ajoute les numéros
$contacts = $db->getContactForScheduled($id_scheduled); $contacts = $db->getContactForScheduled($id_scheduled);
foreach ($contacts as $contact) { foreach ($contacts as $contact)
{
$numbers[] = $contact['number']; $numbers[] = $contact['number'];
} }
//On récupère les groups //On récupère les groups
$groups = $db->getGroupForScheduled($id_scheduled); $groups = $db->getGroupForScheduled($id_scheduled);
foreach ($groups as $group) { foreach ($groups as $group)
{
//On récupère les contacts du group et on les ajoute aux numéros //On récupère les contacts du group et on les ajoute aux numéros
$contacts = $db->getContactForGroup($group['id']); $contacts = $db->getContactForGroup($group['id']);
foreach ($contacts as $contact) { foreach ($contacts as $contact)
{
$numbers[] = $contact['number']; $numbers[] = $contact['number'];
} }
} }
$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) { {
if (!($number == $smsStop['number'])) { foreach ($smsStops as $smsStop)
{
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_send_sms = 'gammu-smsd-inject TEXT ' . escapeshellarg($number) . ' -report -len ' . mb_strlen($text_sms) . ' -text ' . $text_sms;
if (RASPISms_SETTINGS_Sms_FLASH && $flash) { //Commande qui envoie le 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)
{
$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
} }
} }
@ -120,40 +145,46 @@ class Console extends \descartes\InternalController
{ {
//On créer l'objet de base de données //On créer l'objet de base de données
global $db; global $db;
for ($i = 0; $i < 30; $i++) { for ($i = 0; $i < 30; ++$i)
foreach (scandir(PWD_RECEIVEDS) as $dir) { {
foreach (scandir(PWD_RECEIVEDS) as $dir)
{
//Si le fichier est un fichier système, on passe à l'itération suivante //Si le fichier est un fichier système, on passe à l'itération suivante
if ($dir == '.' || $dir == '..' || $dir == '.tokeep') { if ('.' === $dir || '..' === $dir || '.tokeep' === $dir)
{
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 = mb_substr($dir, 0, 4).'-'.mb_substr($dir, 4, 2).'-'.mb_substr($dir, 6, 2).' '.mb_substr($dir, 8, 2).':'.mb_substr($dir, 10, 2).':'.mb_substr($dir, 12, 2);
//On récupère le fichier, et on récupère la chaine jusqu'au premier ':' pour le numéro de téléphone source, et la fin pour le message //On récupère le fichier, et on récupère la chaine jusqu'au premier ':' pour le numéro de téléphone source, et la fin pour le message
$content_file = file_get_contents(PWD_RECEIVEDS . $dir); $content_file = file_get_contents(PWD_RECEIVEDS.$dir);
//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 (false === $content_file)
error_log('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))
error_log('Unable to delete file "' . $dir); {
error_log('Unable to delete file "'.$dir);
die(8); die(8);
} }
$content_file = explode(':', $content_file, 2); $content_file = explode(':', $content_file, 2);
//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]))
error_log('Missing params in file "' . $dir); {
error_log('Missing params in file "'.$dir);
die(5); die(5);
} }
@ -162,81 +193,96 @@ class Console extends \descartes\InternalController
$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 ('STOP' === trim($text))
echo 'STOP Sms detected ' . $number . "\n"; {
error_log('STOP Sms detected ' . $number); echo 'STOP Sms detected '.$number."\n";
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 ('Delivered' === trim($text) || 'Failed' === trim($text))
echo 'Delivered or Failed Sms for ' . $number . "\n"; {
error_log('Delivered or Failed Sms for ' . $number); echo 'Delivered or Failed Sms for '.$number."\n";
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');
if (!$sendeds = $db->getFromTableWhere('sendeds', ['target' => $number, 'delivered' => false, 'failed' => false, '>at' => $sinceDate], 'at', false, 1)) { if (!$sendeds = $db->getFromTableWhere('sendeds', ['target' => $number, 'delivered' => false, 'failed' => false, '>at' => $sinceDate], 'at', false, 1))
{
continue; continue;
} }
$sended = $sendeds[0]; $sended = $sendeds[0];
//On gère les echecs //On gère les echecs
if (trim($text) == 'Failed') { if ('Failed' === trim($text))
{
$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)
error_log('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 = \controllers\internals\Tool::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
$found_commands = array(); $found_commands = [];
//Si on reçu des identifiants //Si on reçu des identifiants
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']);
error_log('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']))
{
error_log('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');
error_log('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))
error_log('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'])
{
error_log('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]);
} }
} }
} }
@ -244,17 +290,19 @@ 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";
error_log('Unable to process the Sms in file "' . $dir); error_log('Unable to process the Sms in file "'.$dir);
die(7); die(7);
} }
@ -262,8 +310,9 @@ class Console extends \descartes\InternalController
$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.
foreach ($found_commands as $command_name => $command) { foreach ($found_commands as $command_name => $command)
echo 'Execution de la commande : ' . $command_name . ' :: ' . $command . "\n"; {
echo 'Execution de la commande : '.$command_name.' :: '.$command."\n";
exec($command); exec($command);
} }
} }
@ -274,12 +323,14 @@ class Console extends \descartes\InternalController
} }
/** /**
* Cette fonction permet d'envoyer par mail les sms à transférer * Cette fonction permet d'envoyer par mail les sms à transférer.
*/ */
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;
} }
@ -288,27 +339,30 @@ class Console extends \descartes\InternalController
$ids_transfers = []; $ids_transfers = [];
$ids_receiveds = []; $ids_receiveds = [];
foreach ($transfers as $transfer) { foreach ($transfers as $transfer)
{
$ids_transfers[] = $transfer['id']; $ids_transfers[] = $transfer['id'];
$ids_receiveds[] = $transfer['id_received']; $ids_receiveds[] = $transfer['id_received'];
} }
$db->updateProgressTransfersIn($ids_transfers, true); $db->updateProgressTransfersIn($ids_transfers, true);
$receiveds = $db->getReceivedIn($ids_receiveds); $receiveds = $db->getReceivedIn($ids_receiveds);
$users = $db->getFromTableWhere('users', ['transfer' => true]); $users = $db->getFromTableWhere('users', ['transfer' => true]);
foreach ($users as $user) { foreach ($users as $user)
foreach ($receiveds as $received) { {
echo "Transfer d'un Sms du " . $received['send_by'] . " à l'email " . $user['email']; foreach ($receiveds as $received)
{
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);
echo " ... " . ($ok ? 'OK' : 'KO') . "\n"; echo ' ... '.($ok ? 'OK' : 'KO')."\n";
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des contactes * Classe des contactes.
*/ */
class Contact extends \descartes\InternalController class Contact extends \descartes\InternalController
{ {
@ -16,9 +27,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des contactes sous forme d'un tableau * Cette fonction retourne une liste des contactes 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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des contactes * @return array : La liste des contactes
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -28,8 +41,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des contactes sous forme d'un tableau * Cette fonction retourne une liste des contactes sous forme d'un tableau.
*
* @param array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des contactes * @return array : La liste des contactes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -37,10 +52,12 @@ namespace controllers\internals;
//Recupération des contactes //Recupération des contactes
return $this->model_contact->get_by_ids($ids); return $this->model_contact->get_by_ids($ids);
} }
/** /**
* Cette fonction retourne un contact par son numéro de tel * Cette fonction retourne un contact par son numéro de tel.
*
* @param string $number : Le numéro du contact * @param string $number : Le numéro du contact
*
* @return array : Le contact * @return array : Le contact
*/ */
public function get_by_number($number) public function get_by_number($number)
@ -48,10 +65,12 @@ namespace controllers\internals;
//Recupération des contactes //Recupération des contactes
return $this->model_contact->get_by_number($number); return $this->model_contact->get_by_number($number);
} }
/** /**
* Cette fonction retourne un contact par son name * Cette fonction retourne un contact par son name.
*
* @param string $name : Le name du contact * @param string $name : Le name du contact
*
* @return array : Le contact * @return array : Le contact
*/ */
public function get_by_name($name) public function get_by_name($name)
@ -59,10 +78,10 @@ namespace controllers\internals;
//Recupération des contactes //Recupération des contactes
return $this->model_contact->get_by_name($name); return $this->model_contact->get_by_name($name);
} }
/** /**
* Cette fonction permet de compter le nombre de contacts * Cette fonction permet de compter le nombre de contacts.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -71,8 +90,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction va supprimer un contact * Cette fonction va supprimer un contact.
*
* @param array $id : L'id du contact à supprimer * @param array $id : L'id du contact à supprimer
*
* @return int : Le nombre de contact supprimées; * @return int : Le nombre de contact supprimées;
*/ */
public function delete($id) public function delete($id)
@ -81,8 +102,12 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert une nouvelle contacte * Cette fonction insert une nouvelle contacte.
*
* @param array $contact : Un tableau représentant la contacte à insérer * @param array $contact : Un tableau représentant la contacte à insérer
* @param mixed $number
* @param mixed $name
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle contacte insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle contacte insérée
*/ */
public function create($number, $name) public function create($number, $name)
@ -93,17 +118,23 @@ namespace controllers\internals;
]; ];
$result = $this->model_contact->insert($contact); $result = $this->model_contact->insert($contact);
if (!$result) { if (!$result)
{
return $result; return $result;
} }
$this->internal_event->create('CONTACT_ADD', 'Ajout contact : ' . $name . ' (' . \controllers\internals\Tool::phone_add_space($number) . ')'); $this->internal_event->create('CONTACT_ADD', 'Ajout contact : '.$name.' ('.\controllers\internals\Tool::phone_add_space($number).')');
return $result; return $result;
} }
/** /**
* Cette fonction met à jour une série de contactes * Cette fonction met à jour une série de contactes.
*
* @param mixed $id
* @param mixed $number
* @param mixed $name
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $number, $name) public function update($id, $number, $name)
@ -112,7 +143,7 @@ namespace controllers\internals;
'number' => $number, 'number' => $number,
'name' => $name, 'name' => $name,
]; ];
return $this->model_contact->update($id, $contact); return $this->model_contact->update($id, $contact);
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
namespace controllers\internals;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals;
/** /**
* Classe des Event * Classe des Event.
*/ */
class Event extends \descartes\InternalController class Event extends \descartes\InternalController
{ {
@ -14,10 +25,12 @@
} }
/** /**
* Cette fonction retourne une liste des events sous forme d'un tableau * Cette fonction retourne une liste des events sous forme d'un tableau.
* @param PDO $bdd : instance PDO de la base de donnée *
* @param PDO $bdd : instance PDO de la base de donnée
* @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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des events * @return array : La liste des events
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -27,8 +40,10 @@
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout * @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
@ -37,8 +52,11 @@
} }
/** /**
* Cette fonction va supprimer une liste de contacts * Cette fonction va supprimer une liste de contacts.
*
* @param array $ids : Les id des contactes à supprimer * @param array $ids : Les id des contactes à supprimer
* @param mixed $id
*
* @return int : Le nombre de contactes supprimées; * @return int : Le nombre de contactes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -47,8 +65,12 @@
} }
/** /**
* Cette fonction insert un nouvel event * Cette fonction insert un nouvel event.
*
* @param array $event : Un tableau représentant l'event à insérer * @param array $event : Un tableau représentant l'event à insérer
* @param mixed $type
* @param mixed $text
*
* @return mixed bool|int : false si echec, sinon l'id du nouvel event inséré * @return mixed bool|int : false si echec, sinon l'id du nouvel event inséré
*/ */
public function create($type, $text) public function create($type, $text)

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des groups * Classe des groups.
*/ */
class Group extends \descartes\InternalController class Group extends \descartes\InternalController
{ {
@ -16,9 +27,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des groups sous forme d'un tableau * 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) $nb_entry : Le nombre d'entrées à retourner par page
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des groups * @return array : La liste des groups
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -28,8 +41,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des groups sous forme d'un tableau * Cette fonction retourne une liste des groups sous forme d'un tableau.
*
* @param array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des groups * @return array : La liste des groups
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -37,10 +52,12 @@ namespace controllers\internals;
//Recupération des groups //Recupération des groups
return $this->model_group->get_by_ids($ids); return $this->model_group->get_by_ids($ids);
} }
/** /**
* Cette fonction retourne un group par son name * Cette fonction retourne un group par son name.
*
* @param string $name : Le name du group * @param string $name : Le name du group
*
* @return array : Le group * @return array : Le group
*/ */
public function get_by_name($name) public function get_by_name($name)
@ -50,7 +67,8 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction permet de compter le nombre de group * Cette fonction permet de compter le nombre de group.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -59,8 +77,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction va supprimer une liste de group * Cette fonction va supprimer une liste de group.
*
* @param array $ids : Les id des groups à supprimer * @param array $ids : Les id des groups à supprimer
*
* @return int : Le nombre de groups supprimées; * @return int : Le nombre de groups supprimées;
*/ */
public function delete($ids) public function delete($ids)
@ -69,9 +89,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert une nouvelle group * Cette fonction insert une nouvelle group.
* @param array $name : le nom du group *
* @param array $name : le nom du group
* @param array $contacts_ids : Un tableau des ids des contact 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 * @return mixed bool|int : false si echec, sinon l'id de la nouvelle group insérée
*/ */
public function create($name, $contacts_ids) public function create($name, $contacts_ids)
@ -81,24 +103,28 @@ namespace controllers\internals;
]; ];
$id_group = $this->model_group->insert($group); $id_group = $this->model_group->insert($group);
if (!$id_group) { if (!$id_group)
{
return false; return false;
} }
foreach ($contacts_ids as $contact_id) { foreach ($contacts_ids as $contact_id)
{
$this->model_group->insert_group_contact($id_group, $contact_id); $this->model_group->insert_group_contact($id_group, $contact_id);
} }
$this->internal_event->create('GROUP_ADD', 'Ajout group : ' . $name); $this->internal_event->create('GROUP_ADD', 'Ajout group : '.$name);
return $id_group; return $id_group;
} }
/** /**
* Cette fonction met à jour un group * Cette fonction met à jour un group.
* @param int $id : L'id du group à update *
* @param string $name : Le nom du group à update * @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 * @param string $contacts_ids : Les ids des contact du group
*
* @return bool : True if all update ok, false else * @return bool : True if all update ok, false else
*/ */
public function update($id, $name, $contacts_ids) public function update($id, $name, $contacts_ids)
@ -112,22 +138,27 @@ namespace controllers\internals;
$this->model_group->delete_group_contact($id); $this->model_group->delete_group_contact($id);
$nb_contact_insert = 0; $nb_contact_insert = 0;
foreach ($contacts_ids as $contact_id) { foreach ($contacts_ids as $contact_id)
if ($this->model_group->insert_group_contact($id, $contact_id)) { {
$nb_contact_insert ++; if ($this->model_group->insert_group_contact($id, $contact_id))
{
++$nb_contact_insert;
} }
} }
if (!$result && $nb_contact_insert != count($contacts_ids)) { if (!$result && $nb_contact_insert !== \count($contacts_ids))
{
return false; return false;
} }
return true; return true;
} }
/** /**
* Cette fonction retourne les contact pour un group * Cette fonction retourne les contact pour un group.
*
* @param string $id : L'id du group * @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)

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des receivedes * Classe des receivedes.
*/ */
class Received extends \descartes\InternalController class Received extends \descartes\InternalController
{ {
@ -13,11 +24,12 @@ class Received extends \descartes\InternalController
$this->model_received = new \models\Received($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.
*
* @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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des receivedes * @return array : La liste des receivedes
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -25,11 +37,12 @@ class Received extends \descartes\InternalController
//Recupération des receivedes //Recupération des receivedes
return $this->model_received->get_list($nb_entry, $nb_entry * $page); return $this->model_received->get_list($nb_entry, $nb_entry * $page);
} }
/** /**
* Cette fonction retourne une liste des receivedes sous forme d'un tableau * Cette fonction retourne une liste des receivedes sous forme d'un tableau.
*
* @param array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des receivedes * @return array : La liste des receivedes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -37,20 +50,24 @@ class Received extends \descartes\InternalController
//Recupération des receivedes //Recupération des receivedes
return $this->model_received->get_by_ids($ids); return $this->model_received->get_by_ids($ids);
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout * @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
{ {
return $this->model_received->get_lasts_by_date($nb_entry); return $this->model_received->get_lasts_by_date($nb_entry);
} }
/** /**
* Cette fonction retourne une liste des receiveds sous forme d'un tableau * Cette fonction retourne une liste des receiveds sous forme d'un tableau.
*
* @param string $origin : Le numéro depuis lequel est envoyé le message * @param string $origin : Le numéro depuis lequel est envoyé le message
*
* @return array : La liste des receiveds * @return array : La liste des receiveds
*/ */
public function get_by_origin($origin) public function get_by_origin($origin)
@ -59,8 +76,10 @@ class Received extends \descartes\InternalController
} }
/** /**
* 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)
@ -69,9 +88,11 @@ class Received extends \descartes\InternalController
} }
/** /**
* 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)
@ -80,8 +101,11 @@ class Received extends \descartes\InternalController
} }
/** /**
* Cette fonction va supprimer une liste de receiveds * Cette fonction va supprimer une liste de receiveds.
*
* @param array $ids : Les id des receivedes à supprimer * @param array $ids : Les id des receivedes à supprimer
* @param mixed $id
*
* @return int : Le nombre de receivedes supprimées; * @return int : Le nombre de receivedes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -90,8 +114,14 @@ class Received extends \descartes\InternalController
} }
/** /**
* Cette fonction insert une nouvelle receivede * Cette fonction insert une nouvelle receivede.
* @param array $received : Un tableau représentant la receivede à insérer *
* @param array $received : Un tableau représentant la receivede à insérer
* @param mixed $at
* @param mixed $origin
* @param mixed $content
* @param mixed $is_command
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle receivede insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle receivede insérée
*/ */
public function create($at, $origin, $content, $is_command) public function create($at, $origin, $content, $is_command)
@ -107,7 +137,14 @@ class Received extends \descartes\InternalController
} }
/** /**
* Cette fonction met à jour une série de receivedes * Cette fonction met à jour une série de receivedes.
*
* @param mixed $id
* @param mixed $at
* @param mixed $origin
* @param mixed $content
* @param mixed $is_command
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $at, $origin, $content, $is_command) public function update($id, $at, $origin, $content, $is_command)
@ -123,7 +160,8 @@ class Received extends \descartes\InternalController
} }
/** /**
* Cette fonction permet de compter le nombre de receiveds * Cette fonction permet de compter le nombre de receiveds.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -132,23 +170,28 @@ class Received extends \descartes\InternalController
} }
/** /**
* Cette fonction compte le nombre de receiveds par jour depuis une date * Cette fonction compte le nombre de receiveds par jour depuis une date.
*
* @param mixed $date
*
* @return array : un tableau avec en clef la date et en valeure le nombre de sms envoyés * @return array : un tableau avec en clef la date et en valeure le nombre de sms envoyés
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
{ {
$counts_by_day = $this->model_received->count_by_day_since($date); $counts_by_day = $this->model_received->count_by_day_since($date);
$return = []; $return = [];
foreach ($counts_by_day as $count_by_day) { foreach ($counts_by_day as $count_by_day)
{
$return[$count_by_day['at_ymd']] = $count_by_day['nb']; $return[$count_by_day['at_ymd']] = $count_by_day['nb'];
} }
return $return; return $return;
} }
/** /**
* Cette fonction retourne les discussions avec un numéro * Cette fonction retourne les discussions avec un numéro.
*
* @return array : Un tableau avec la date de l'échange et le numéro de la personne * @return array : Un tableau avec la date de l'échange et le numéro de la personne
*/ */
public function get_discussions() public function get_discussions()

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des scheduledes * Classe des scheduledes.
*/ */
class Scheduled extends \descartes\InternalController class Scheduled extends \descartes\InternalController
{ {
@ -14,11 +25,13 @@ namespace controllers\internals;
$this->model_scheduled = new \models\Scheduled($bdd); $this->model_scheduled = new \models\Scheduled($bdd);
$this->internal_event = new \controllers\internals\Event($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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des scheduledes * @return array : La liste des scheduledes
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -28,8 +41,10 @@ namespace controllers\internals;
} }
/** /**
* 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 array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des scheduledes * @return array : La liste des scheduledes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -39,9 +54,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne les messages programmés avant une date et pour un numéro * Cette fonction retourne les messages programmés avant une date et pour un numéro.
* @param \DateTime $date : La date avant laquelle on veux le message *
* @param string $number : Le numéro * @param \DateTime $date : La date avant laquelle on veux le message
* @param string $number : Le numéro
*
* @return array : Les messages programmés avant la date * @return array : Les messages programmés avant la date
*/ */
public function get_before_date_for_number($date, $number) public function get_before_date_for_number($date, $number)
@ -50,7 +67,8 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction permet de compter le nombre de scheduled * Cette fonction permet de compter le nombre de scheduled.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -59,8 +77,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction va supprimer un scheduled * Cette fonction va supprimer un scheduled.
*
* @param int $id : L'id du scheduled à supprimer * @param int $id : L'id du scheduled à supprimer
*
* @return int : Le nombre de scheduledes supprimées; * @return int : Le nombre de scheduledes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -69,31 +89,37 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert un nouveau scheduled * Cette fonction insert un nouveau scheduled.
* @param array $scheduled : Le scheduled à créer avec at, content, flash, progress *
* @param array $numbers : Les numéros auxquels envoyer le scheduled * @param array $scheduled : Le scheduled à créer avec at, content, flash, progress
* @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 $groups_ids : Les ids des group 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 = [], $groups_ids = []) public function create($scheduled, $numbers = [], $contacts_ids = [], $groups_ids = [])
{ {
if (!$id_scheduled = $this->model_scheduled->insert($scheduled)) { if (!$id_scheduled = $this->model_scheduled->insert($scheduled))
$date = date("Y-m-d H:i:s"); {
$this->internal_event->create('SCHEDULED_ADD', 'Ajout d\'un Sms pour le ' . $date . '.'); $date = date('Y-m-d H:i:s');
$this->internal_event->create('SCHEDULED_ADD', 'Ajout d\'un Sms pour le '.$date.'.');
return false; return false;
} }
foreach ($numbers as $number) { foreach ($numbers as $number)
{
$this->model_scheduled->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)
{
$this->model_scheduled->insert_scheduled_contact($id_scheduled, $contact_id); $this->model_scheduled->insert_scheduled_contact($id_scheduled, $contact_id);
} }
foreach ($groups_ids as $group_id) { foreach ($groups_ids as $group_id)
{
$this->model_scheduled->insert_scheduled_group($id_scheduled, $group_id); $this->model_scheduled->insert_scheduled_group($id_scheduled, $group_id);
} }
@ -101,45 +127,52 @@ 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, group_ids *
* @param array $numbers : Les numéros auxquels envoyer le scheduled * @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 $contacts_ids : Les ids des contact auquels envoyer le scheduled * @param array $contacts_ids : Les ids des contact auquels envoyer le scheduled
* @param array $groups_ids : Les ids des group 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)
{ {
$nb_update = 0; $nb_update = 0;
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled)
{
$result = $this->model_scheduled->update($scheduled['scheduled']['id'], $scheduled['scheduled']); $result = $this->model_scheduled->update($scheduled['scheduled']['id'], $scheduled['scheduled']);
$this->model_scheduled->delete_scheduled_number($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_number($scheduled['scheduled']['id']);
$this->model_scheduled->delete_scheduled_contact($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_contact($scheduled['scheduled']['id']);
$this->model_scheduled->delete_scheduled_group($scheduled['scheduled']['id']); $this->model_scheduled->delete_scheduled_group($scheduled['scheduled']['id']);
foreach ($scheduled['number'] as $number) { foreach ($scheduled['number'] as $number)
{
$this->model_scheduled->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)
{
$this->model_scheduled->insert_scheduled_contact($scheduled['scheduled']['id'], $contact_id); $this->model_scheduled->insert_scheduled_contact($scheduled['scheduled']['id'], $contact_id);
} }
foreach ($scheduled['group_ids'] as $group_id) { foreach ($scheduled['group_ids'] as $group_id)
{
$this->model_scheduled->insert_scheduled_group($scheduled['scheduled']['id'], $group_id); $this->model_scheduled->insert_scheduled_group($scheduled['scheduled']['id'], $group_id);
} }
$nb_update ++; ++$nb_update;
} }
return $nb_update; return $nb_update;
} }
/** /**
* Cette fonction retourne une liste de numéro pour un scheduled * Cette fonction retourne une liste de numéro 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 scheduledes * @return array : La liste des scheduledes
*/ */
public function get_number($id_scheduled) public function get_number($id_scheduled)
@ -149,8 +182,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste de contact pour un scheduled * Cette fonction retourne une liste de contact 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 contact * @return array : La liste des contact
*/ */
public function get_contact($id_scheduled) public function get_contact($id_scheduled)
@ -158,10 +193,12 @@ namespace controllers\internals;
//Recupération des scheduledes //Recupération des scheduledes
return $this->model_scheduled->get_contact($id_scheduled); return $this->model_scheduled->get_contact($id_scheduled);
} }
/** /**
* Cette fonction retourne une liste de group 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 group * @return array : La liste des group
*/ */
public function get_group($id_scheduled) public function get_group($id_scheduled)

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des sendedes * Classe des sendedes.
*/ */
class Sended extends \descartes\InternalController class Sended extends \descartes\InternalController
{ {
@ -14,9 +25,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des sendedes sous forme d'un tableau * Cette fonction retourne une liste des sendedes 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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des sendedes * @return array : La liste des sendedes
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -26,8 +39,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne une liste des sendedes sous forme d'un tableau * Cette fonction retourne une liste des sendedes sous forme d'un tableau.
*
* @param array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des sendedes * @return array : La liste des sendedes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -37,18 +52,22 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout * @param mixed false|int $nb_entry : Nombre d'entrée à retourner ou faux pour tout
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry = false) public function get_lasts_by_date($nb_entry = false)
{ {
return $this->model_sended->get_lasts_by_date($nb_entry); return $this->model_sended->get_lasts_by_date($nb_entry);
} }
/** /**
* Cette fonction retourne une liste des receivedes sous forme d'un tableau * Cette fonction retourne une liste des receivedes sous forme d'un tableau.
*
* @param string $target : Le numéro de à qui est envoyé le message * @param string $target : Le numéro de à qui est envoyé le message
*
* @return array : La liste des sendeds * @return array : La liste des sendeds
*/ */
public function get_by_target($target) public function get_by_target($target)
@ -57,10 +76,12 @@ namespace controllers\internals;
return $this->model_sended->get_by_target($target); return $this->model_sended->get_by_target($target);
} }
/** /**
* Cette fonction va supprimer une liste de sendeds * Cette fonction va supprimer une liste de sendeds.
*
* @param array $ids : Les id des sendedes à supprimer * @param array $ids : Les id des sendedes à supprimer
* @param mixed $id
*
* @return int : Le nombre de sendedes supprimées; * @return int : Le nombre de sendedes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -69,8 +90,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert une nouvelle sendede * Cette fonction insert une nouvelle sendede.
*
* @param array $sended : Un tableau représentant la sendede à insérer * @param array $sended : Un tableau représentant la sendede à insérer
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle sendede insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle sendede insérée
*/ */
public function create($sended) public function create($sended)
@ -79,25 +102,31 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction met à jour une série de sendedes * Cette fonction met à jour une série de sendedes.
*
* @param mixed $sendeds
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($sendeds) public function update($sendeds)
{ {
$nb_update = 0; $nb_update = 0;
foreach ($sendeds as $sended) { foreach ($sendeds as $sended)
{
$result = $this->model_sended->update($sended['id'], $sended); $result = $this->model_sended->update($sended['id'], $sended);
if ($result) { if ($result)
$nb_update ++; {
++$nb_update;
} }
} }
return $nb_update; return $nb_update;
} }
/** /**
* Cette fonction permet de compter le nombre de sendeds * Cette fonction permet de compter le nombre de sendeds.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -106,15 +135,19 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction compte le nombre de sendeds par jour depuis une date * Cette fonction compte le nombre de sendeds par jour depuis une date.
*
* @param mixed $date
*
* @return array : un tableau avec en clef la date et en valeure le nombre de sms envoyés * @return array : un tableau avec en clef la date et en valeure le nombre de sms envoyés
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
{ {
$counts_by_day = $this->model_sended->count_by_day_since($date); $counts_by_day = $this->model_sended->count_by_day_since($date);
$return = []; $return = [];
foreach ($counts_by_day as $count_by_day) { foreach ($counts_by_day as $count_by_day)
{
$return[$count_by_day['at_ymd']] = $count_by_day['nb']; $return[$count_by_day['at_ymd']] = $count_by_day['nb'];
} }

View File

@ -1,5 +1,16 @@
<?php <?php
namespace controllers\internals;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals;
class Setting extends \descartes\InternalController class Setting extends \descartes\InternalController
{ {
@ -11,7 +22,8 @@
} }
/** /**
* Return all settings * Return all settings.
*
* @return array || false * @return array || false
*/ */
public function all() public function all()
@ -20,9 +32,11 @@
} }
/** /**
* Update a setting by his name * Update a setting by his name.
*
* @param mixed $value
*/ */
public function update(string $name, $value) : bool 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

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals; namespace controllers\internals;
/** /**
* Classe des smsstopes * Classe des smsstopes.
*/ */
class SmsStop extends \descartes\InternalController class SmsStop extends \descartes\InternalController
{ {
@ -14,9 +25,11 @@ namespace controllers\internals;
} }
/** /**
* 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
* @param mixed(int|bool) $page : Le numéro de page en cours * @param mixed(int|bool) $page : Le numéro de page en cours
*
* @return array : La liste des smsstopes * @return array : La liste des smsstopes
*/ */
public function get_list($nb_entry = false, $page = false) public function get_list($nb_entry = false, $page = false)
@ -26,8 +39,10 @@ namespace controllers\internals;
} }
/** /**
* 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 array int $ids : Les ids des entrées à retourner * @param array int $ids : Les ids des entrées à retourner
*
* @return array : La liste des smsstopes * @return array : La liste des smsstopes
*/ */
public function get_by_ids($ids) public function get_by_ids($ids)
@ -35,10 +50,12 @@ namespace controllers\internals;
//Recupération des smsstopes //Recupération des smsstopes
return $this->model_sms_stop->get_by_ids($ids); return $this->model_sms_stop->get_by_ids($ids);
} }
/** /**
* Cette fonction retourne un smsstop par son numéro de tel * Cette fonction retourne un smsstop par son numéro de tel.
*
* @param string $number : Le numéro du smsstop * @param string $number : Le numéro du smsstop
*
* @return array : Le smsstop * @return array : Le smsstop
*/ */
public function get_by_number($number) public function get_by_number($number)
@ -46,10 +63,10 @@ namespace controllers\internals;
//Recupération des smsstopes //Recupération des smsstopes
return $this->model_sms_stop->get_by_number($number); return $this->model_sms_stop->get_by_number($number);
} }
/** /**
* Cette fonction permet de compter le nombre de smsstops * Cette fonction permet de compter le nombre de smsstops.
*
* @return int : Le nombre d'entrées dans la table * @return int : Le nombre d'entrées dans la table
*/ */
public function count() public function count()
@ -58,8 +75,11 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction va supprimer une liste de smsstops * Cette fonction va supprimer une liste de smsstops.
*
* @param array $ids : Les id des smsstopes à supprimer * @param array $ids : Les id des smsstopes à supprimer
* @param mixed $id
*
* @return int : Le nombre de smsstopes supprimées; * @return int : Le nombre de smsstopes supprimées;
*/ */
public function delete($id) public function delete($id)
@ -68,8 +88,10 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction insert une nouvelle smsstope * Cette fonction insert une nouvelle smsstope.
*
* @param array $smsstop : Un tableau représentant la smsstope à insérer * @param array $smsstop : Un tableau représentant la smsstope à insérer
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle smsstope insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle smsstope insérée
*/ */
public function create($smsstop) public function create($smsstop)
@ -78,20 +100,25 @@ namespace controllers\internals;
} }
/** /**
* Cette fonction met à jour une série de smsstopes * Cette fonction met à jour une série de smsstopes.
*
* @param mixed $smsstops
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($smsstops) public function update($smsstops)
{ {
$nb_update = 0; $nb_update = 0;
foreach ($smsstops as $smsstop) { foreach ($smsstops as $smsstop)
{
$result = $this->model_sms_stop->update($smsstop['id'], $smsstop); $result = $this->model_sms_stop->update($smsstop['id'], $smsstop);
if ($result) { if ($result)
$nb_update ++; {
++$nb_update;
} }
} }
return $nb_update; return $nb_update;
} }
} }

View File

@ -1,26 +1,42 @@
<?php <?php
namespace controllers\internals;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals;
class Tool extends \descartes\InternalController class Tool extends \descartes\InternalController
{ {
/** /**
* Cette fonction parse un numéro pour le retourner sans espaces, etc. * Cette fonction parse un numéro pour le retourner sans espaces, etc.
*
* @param string $number : Le numéro de téléphone à parser * @param string $number : Le numéro de téléphone à parser
*
* @return mixed : Si le numéro est bien un numéro de téléphone, on retourne le numéro parsé. Sinon, on retourne faux * @return mixed : Si le numéro est bien un numéro de téléphone, on retourne le numéro parsé. Sinon, on retourne faux
*/ */
public static function parse_phone($number) public static function parse_phone($number)
{ {
$number = preg_replace('#[^-0-9+]#', '', $number); $number = preg_replace('#[^-0-9+]#', '', $number);
if (preg_match('#^(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8,10}$#', $number)) { if (preg_match('#^(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8,10}$#', $number))
{
return $number; return $number;
} }
return false; return false;
} }
/** /**
* Cette fonction parse un numéro pour le retourner avec des espaces, etc. * Cette fonction parse un numéro pour le retourner avec des espaces, etc.
*
* @param string $number : Le numéro de téléphone à parser * @param string $number : Le numéro de téléphone à parser
*
* @return mixed : Si le numéro est bien un numéro de téléphone, on retourne le numéro parsé. Sinon, on retourne faux * @return mixed : Si le numéro est bien un numéro de téléphone, on retourne le numéro parsé. Sinon, on retourne faux
*/ */
public static function phone_add_space($number) public static function phone_add_space($number)
@ -30,7 +46,9 @@
/** /**
* Cette fonction fait la correspondance entre un type d'evenement et une icone font awesome. * Cette fonction fait la correspondance entre un type d'evenement et une icone font awesome.
*
* @param string $type : Le type de l'évenement à analyser * @param string $type : Le type de l'évenement à analyser
*
* @return string : Le nom de l'icone à afficher (ex : fa-user) * @return string : Le nom de l'icone à afficher (ex : fa-user)
*/ */
public static function event_type_to_icon($type) public static function event_type_to_icon($type)
@ -38,18 +56,23 @@
switch ($type) { switch ($type) {
case 'USER_ADD': case 'USER_ADD':
$logo = 'fa-user'; $logo = 'fa-user';
break; break;
case 'CONTACT_ADD': case 'CONTACT_ADD':
$logo = 'fa-user'; $logo = 'fa-user';
break; break;
case 'GROUP_ADD': case 'GROUP_ADD':
$logo = 'fa-group'; $logo = 'fa-group';
break; break;
case 'SCHEDULED_ADD': case 'SCHEDULED_ADD':
$logo = 'fa-calendar'; $logo = 'fa-calendar';
break; break;
case 'COMMAND_ADD': case 'COMMAND_ADD':
$logo = 'fa-terminal'; $logo = 'fa-terminal';
break; break;
default: default:
$logo = 'fa-question'; $logo = 'fa-question';
@ -59,37 +82,45 @@
} }
/** /**
* Cette fonction vérifie une date * Cette fonction vérifie une date.
* @param string $date : La date a valider *
* @param string $date : La date a valider
* @param string $format : Le format de la date * @param string $format : Le format de la date
* @return boolean : Vrai si la date et valide, faux sinon *
* @return bool : Vrai si la date et valide, faux sinon
*/ */
public static function validate_date($date, $format) public static function validate_date($date, $format)
{ {
$objectDate = \DateTime::createFromFormat($format, $date); $objectDate = \DateTime::createFromFormat($format, $date);
return ($objectDate && $objectDate->format($format) == $date);
return $objectDate && $objectDate->format($format) === $date;
} }
/** /**
* Cette fonction parse un texte, pour en extraire des données contenu dans des drapeaux au format [FLAG:contenu du drapeau] * Cette fonction parse un texte, pour en extraire des données contenu dans des drapeaux au format [FLAG:contenu du drapeau].
*
* @param string $texte : Le texte à parser * @param string $texte : Le texte à parser
*
* @return mixed : Tableau de la forme 'FLAG' => 'contenu du drapeau'. si on trouve une forme correcte (Le contenu de FLAG sera mis en majuscule automatiquement). Sinon le tableau vide. * @return mixed : Tableau de la forme 'FLAG' => 'contenu du drapeau'. si on trouve une forme correcte (Le contenu de FLAG sera mis en majuscule automatiquement). Sinon le tableau vide.
*/ */
public static function parse_for_flag($texte) public static function parse_for_flag($texte)
{ {
$returns = array(); $returns = [];
$results = array(); $results = [];
while (preg_match('#\[(.*)(?<!\\\):(.*)(?<!\\\)\]#Uui', $texte, $results)) { //Tant qu'on recuèpre un flag while (preg_match('#\[(.*)(?<!\\\):(.*)(?<!\\\)\]#Uui', $texte, $results))
{ //Tant qu'on recuèpre un flag
$returns[mb_strtoupper($results[1])] = $results[2]; $returns[mb_strtoupper($results[1])] = $results[2];
$texte = str_replace($results[0], '', $texte); $texte = str_replace($results[0], '', $texte);
} }
return $returns; return $returns;
} }
/** /**
* Cette fonction retourne un mot de passe généré aléatoirement * Cette fonction retourne un mot de passe généré aléatoirement.
*
* @param int $length : Taille du mot de passe à générer * @param int $length : Taille du mot de passe à générer
*
* @return string : Le mot de passe aléatoire * @return string : Le mot de passe aléatoire
*/ */
public static function generate_password($length) public static function generate_password($length)
@ -98,32 +129,36 @@
$password = ''; $password = '';
$chars_length = mb_strlen($chars) - 1; $chars_length = mb_strlen($chars) - 1;
$i = 0; $i = 0;
while ($i < $length) { while ($i < $length)
$i ++; {
++$i;
$password .= $chars[rand(0, $chars_length)]; $password .= $chars[rand(0, $chars_length)];
} }
return $password; return $password;
} }
/** /**
* 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
*/ */
public static function verifyconnect() public static function verifyconnect()
{ {
if (!isset($_SESSION['connect']) || !$_SESSION['connect']) { if (!isset($_SESSION['connect']) || !$_SESSION['connect'])
{
header('Location: /'); header('Location: /');
die(); die();
} }
} }
/** /**
* Check if the user is admin. * Check if the user is admin.
* @return Bool : True if admin, False else *
* @return bool : True if admin, False else
*/ */
public static function is_admin() public static function is_admin()
{ {
if (!isset($_SESSION['user']) || !$_SESSION['connect']['admin']) { if (!isset($_SESSION['user']) || !$_SESSION['connect']['admin'])
{
return false; return false;
} }
@ -131,15 +166,17 @@
} }
/** /**
* Cette fonction s'occupe d'envoyer les emails * Cette fonction s'occupe d'envoyer les emails.
* @param string $to : L'adresse mail à laquelle envoyer le mail *
* @param array $settings : Les settings du mail, type, sujet, template * @param string $to : L'adresse mail à laquelle envoyer le mail
* @param array $datas : Les données à fournir au template du mail * @param array $settings : Les settings du mail, type, sujet, template
* @param array $datas : Les données à fournir au template du mail
*/ */
public static function send_email($to, $settings, $datas = []) public static function send_email($to, $settings, $datas = [])
{ {
$controller = new \descartes\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

@ -1,5 +1,16 @@
<?php <?php
namespace controllers\internals;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals;
class User extends \descartes\InternalController class User extends \descartes\InternalController
{ {
@ -13,19 +24,24 @@
} }
/** /**
* Return list of users as an array * Return list of users as an array.
*
* @param mixed(int|bool) $nb_entry : Number of entry to return * @param mixed(int|bool) $nb_entry : Number of entry to return
* @param mixed(int|bool) $page : Numero of page * @param mixed(int|bool) $page : Numero of page
*
* @return array|bool : List of user or false * @return array|bool : List of user or false
*/ */
public function list(?int $nb_entry = null, ?int $page = null) public function list(?int $nb_entry = null, ?int $page = null)
{ {
return $this->model_user->list($nb_entry, $page); return $this->model_user->list($nb_entry, $page);
} }
/** /**
* Cette fonction va supprimer une liste de users * Cette fonction va supprimer une liste de users.
*
* @param array $ids : Les id des useres à supprimer * @param array $ids : Les id des useres à supprimer
* @param mixed $id
*
* @return int : Le nombre de useres supprimées; * @return int : Le nombre de useres supprimées;
*/ */
public function delete($id) public function delete($id)
@ -34,19 +50,23 @@
} }
/** /**
* Cette fonction vérifie s'il existe un utilisateur qui corresponde à ce couple login/password * Cette fonction vérifie s'il existe un utilisateur qui corresponde à ce couple login/password.
* @param string $email : L'eamil de l'utilisateur *
* @param string $email : L'eamil de l'utilisateur
* @param string $password : Le mot de passe de l'utilisateur * @param string $password : Le mot de passe de l'utilisateur
*
* @return mixed false | array : False si pas de user, le user correspondant sous forme d'array sinon * @return mixed false | array : False si pas de user, le user correspondant sous forme d'array sinon
*/ */
public function check_credentials($email, $password) public function check_credentials($email, $password)
{ {
$user = $this->model_user->get_by_email($email); $user = $this->model_user->get_by_email($email);
if (!$user) { if (!$user)
{
return false; return false;
} }
if (!password_verify($password, $user['password'])) { if (!password_verify($password, $user['password']))
{
return false; return false;
} }
@ -54,32 +74,39 @@
} }
/** /**
* 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 bool; * @return bool;
*/ */
public function update_password(int $id, string $password) : bool 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);
} }
/** /**
* Update a user transfer property value * Update a user transfer property value.
* @param string $id : User id *
* @param string $id : User id
* @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) : bool 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);
} }
/** /**
* Update user email * Update user email.
* @param string $id : user id *
* @param string $id : user id
* @param string $email : new mail * @param string $email : new mail
*
* @return boolean; * @return boolean;
*/ */
public function update_email($id, $email) public function update_email($id, $email)
@ -88,8 +115,10 @@
} }
/** /**
* Cette fonction retourne un utilisateur pour un mail donné * Cette fonction retourne un utilisateur pour un mail donné.
*
* @param string $email : L'email de l'utilisateur * @param string $email : L'email de l'utilisateur
*
* @return mixed boolean | array : false si pas de user pour le mail, le user sinon * @return mixed boolean | array : false si pas de user pour le mail, le user sinon
*/ */
public function get_by_email($email) public function get_by_email($email)
@ -98,7 +127,14 @@
} }
/** /**
* Cette fonction met à jour une série de users * Cette fonction met à jour une série de users.
*
* @param mixed $id
* @param mixed $email
* @param mixed $password
* @param mixed $admin
* @param mixed $transfer
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $email, $password, $admin, $transfer) public function update($id, $email, $password, $admin, $transfer)
@ -112,10 +148,16 @@
return $this->model_user->update($id, $user); return $this->model_user->update($id, $user);
} }
/** /**
* Cette fonction insert une nouvelle usere * Cette fonction insert une nouvelle usere.
* @param array $user : Un tableau représentant la usere à insérer *
* @param array $user : Un tableau représentant la usere à insérer
* @param mixed $email
* @param mixed $password
* @param mixed $admin
* @param mixed $transfer
*
* @return mixed bool|int : false si echec, sinon l'id de la nouvelle usere insérée * @return mixed bool|int : false si echec, sinon l'id de la nouvelle usere insérée
*/ */
public function create($email, $password, $admin, $transfer = false) public function create($email, $password, $admin, $transfer = false)
@ -129,12 +171,13 @@
$result = $this->model_user->insert($user); $result = $this->model_user->insert($user);
if (!$result) { if (!$result)
{
return false; return false;
} }
$this->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,10 +1,21 @@
<?php <?php
namespace controllers\publics;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics;
class Account extends \descartes\Controller class Account extends \descartes\Controller
{ {
public $internal_user; public $internal_user;
public function __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
@ -14,7 +25,7 @@
} }
/** /**
* Show profile page * Show profile page.
*/ */
public function show() public function show()
{ {
@ -22,127 +33,161 @@
} }
/** /**
* Update connected user password * Update connected user password.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['password'] : The new password * @param string $_POST['password'] : The new password
*
* @return void; * @return void;
*/ */
public function update_password($csrf) public function update_password($csrf)
{ {
$password = $_POST['password'] ?? false; $password = $_POST['password'] ?? false;
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
if (!$password) { if (!$password)
{
\modules\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 $this->redirect(\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)
{
\modules\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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
\modules\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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
* Update user mail transfer property * Update user mail transfer property.
*
* @param $csrf : CSRF token * @param $csrf : CSRF token
* @param string $_POST['transfer'] : New transfer property value * @param string $_POST['transfer'] : New transfer property value
*/ */
public function update_transfer($csrf) public function update_transfer($csrf)
{ {
$transfer = $_POST['transfer'] ?? false; $transfer = $_POST['transfer'] ?? false;
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
if ($transfer === false) { if (false === $transfer)
{
\modules\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 $this->redirect(\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)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.');
return $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
$_SESSION['user']['transfer'] = $transfer; $_SESSION['user']['transfer'] = $transfer;
\modules\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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
* Update user email * Update user email.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['email'] : User new email * @param string $_POST['email'] : User new email
* @param string $_POST['verif_email'] : Verif email * @param string $_POST['verif_email'] : Verif email
*/ */
public function update_email($csrf) public function update_email($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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)
{
\modules\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 $this->redirect(\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))
{
\modules\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 $this->redirect(\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)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de mettre à jour.');
return $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
;
} }
$_SESSION['user']['email'] = $email; $_SESSION['user']['email'] = $email;
\modules\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 $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
/** /**
* Delete a user * Delete a user.
*
* @param string $_POST['delete_account'] : Boolean to see if we want to delete * @param string $_POST['delete_account'] : Boolean to see if we want to delete
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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)
{
\modules\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 $this->redirect(\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)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de supprimer le compte.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de supprimer le compte.');
return $this->redirect(\descartes\Router::url('Account', 'show')); return $this->redirect(\descartes\Router::url('Account', 'show'));
} }
@ -150,13 +195,13 @@
} }
/** /**
* Logout a user and redirect to login page * Logout a user and redirect to login page.
* @return null
*/ */
public function logout() public function logout()
{ {
session_unset(); session_unset();
session_destroy(); session_destroy();
return $this->redirect(\descartes\Router::url('Connect', 'login')); return $this->redirect(\descartes\Router::url('Connect', 'login'));
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des commandes * Page des commandes.
*/ */
class Command extends \descartes\Controller class Command extends \descartes\Controller
{ {
@ -15,12 +26,14 @@ namespace controllers\publics;
$this->internal_command = new \controllers\internals\Command($bdd); $this->internal_command = new \controllers\internals\Command($bdd);
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users * Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
@ -30,29 +43,36 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction va supprimer une liste de commands * Cette fonction va supprimer une liste de commands.
*
* @param array int $_GET['ids'] : Les id des commandes à supprimer * @param array int $_GET['ids'] : Les id des commandes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\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->internal_command->delete($id); $this->internal_command->delete($id);
} }
$this->redirect(\descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return true; return true;
} }
/** /**
* Cette fonction retourne la page d'ajout d'une commande * Cette fonction retourne la page d'ajout d'une commande.
*/ */
public function add() public function add()
{ {
@ -60,34 +80,39 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne la page d'édition des commandes * Cette fonction retourne la page d'édition des commandes.
*
* @param array int $_GET['ids'] : Les id des commandes à editer * @param array int $_GET['ids'] : Les id des commandes à editer
*/ */
public function edit() public function edit()
{ {
global $db; global $db;
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
$commands = $this->internal_command->get_by_ids($ids); $commands = $this->internal_command->get_by_ids($ids);
$this->render('command/edit', array( $this->render('command/edit', [
'commands' => $commands, 'commands' => $commands,
)); ]);
} }
/** /**
* Cette fonction insert une nouvelle commande * Cette fonction insert une nouvelle commande.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom de la commande * @param string $_POST['name'] : Le nom de la commande
* @param string $_POST['script'] : Le script a appeler * @param string $_POST['script'] : Le script a appeler
* @param boolean $_POST['admin'] : Si la commande necessite les droits d'admin (par défaut non) * @param bool $_POST['admin'] : Si la commande necessite les droits d'admin (par défaut non)
*
* @return boolean; * @return boolean;
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return false; return false;
} }
@ -95,49 +120,61 @@ namespace controllers\publics;
$script = $_POST['script'] ?? false; $script = $_POST['script'] ?? false;
$admin = (isset($_POST['admin']) ? $_POST['admin'] : false); $admin = (isset($_POST['admin']) ? $_POST['admin'] : false);
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 $this->redirect(\descartes\Router::url('Command', 'list')); return $this->redirect(\descartes\Router::url('Command', 'list'));
} }
if (!$this->internal_command->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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Command', 'list')); return $this->redirect(\descartes\Router::url('Command', 'list'));
} }
/** /**
* Cette fonction met à jour une commande * Cette fonction met à jour une commande.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param array $_POST['commands'] : Un tableau des commandes avec leur nouvelle valeurs * @param array $_POST['commands'] : Un tableau des commandes avec leur nouvelle valeurs
*
* @return boolean; * @return boolean;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\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->internal_command->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.');
$this->redirect(\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.');
$this->redirect(\descartes\Router::url('Command', 'list')); $this->redirect(\descartes\Router::url('Command', 'list'));
return true; return true;
} }
} }

View File

@ -1,39 +1,51 @@
<?php <?php
namespace controllers\publics;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics;
/** /**
* Page de connexion * Page de connexion.
*/ */
class Connect extends \descartes\Controller class Connect extends \descartes\Controller
{ {
private $internal_user; 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 __construct() public function __construct()
{ {
$bdd = \descartes\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::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction retourne la fenetre de connexion * Cette fonction retourne la fenetre de connexion.
*/ */
public function login() public function login()
{ {
$this->render('connect/login'); $this->render('connect/login');
} }
/** /**
* Cette fonction connecte un utilisateur, et le redirige sur la page d'accueil * Cette fonction connecte un utilisateur, et le redirige sur la page d'accueil.
* @param string $_POST['mail'] : L'email de l'utilisateur *
* @param string $_POST['mail'] : L'email de l'utilisateur
* @param string $_POST['password'] : Le mot de passe de l'utilisateur * @param string $_POST['password'] : Le mot de passe de l'utilisateur
* @return void
*/ */
public function connection() public function connection()
{ {
@ -41,21 +53,23 @@
$password = $_POST['password'] ?? false; $password = $_POST['password'] ?? false;
$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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Dashboard', 'show')); return $this->redirect(\descartes\Router::url('Dashboard', 'show'));
} }
/** /**
* Cette fonction retourne la fenetre de changement de password * Cette fonction retourne la fenetre de changement de password.
*
* @return void; * @return void;
*/ */
public function forget_password() public function forget_password()
@ -64,24 +78,29 @@
} }
/** /**
* Cette fonction envoi un email contenant un lien pour re-générer un password oublié * Cette fonction envoi un email contenant un lien pour re-générer un password oublié.
* @param string $csrf : jeton csrf *
* @param string $csrf : jeton csrf
* @param string $_POST['email'] : L'email pour lequel on veut envoyer un nouveau password * @param string $_POST['email'] : L'email pour lequel on veut envoyer un nouveau password
*/ */
public function send_reset_password($csrf) public function send_reset_password($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Connect', 'forget_password')); $this->redirect(\descartes\Router::url('Connect', 'forget_password'));
return false; return false;
} }
$email = $_POST['email'] ?? false; $email = $_POST['email'] ?? false;
$user = $this->internal_user->get_by_email($email); $user = $this->internal_user->get_by_email($email);
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.');
$this->redirect(\descartes\Router::url('Connect', 'forget_password')); $this->redirect(\descartes\Router::url('Connect', 'forget_password'));
return false; return false;
} }
@ -96,9 +115,10 @@
} }
/** /**
* Cette fonction permet à un utilisateur de re-définir son mot de passe * Cette fonction permet à un utilisateur de re-définir son mot de passe.
* @param int $user_id : L'id du user dont on veut modifier le password *
* @param string $token : Le token permetttant de vérifier que l'opération est légitime * @param int $user_id : L'id du user dont on veut modifier le password
* @param string $token : Le token permetttant de vérifier que l'opération est légitime
* @param optionnal $_POST['password'] : Le nouveau password à utiliser * @param optionnal $_POST['password'] : Le nouveau password à utiliser
*/ */
public function reset_password($user_id, $token) public function reset_password($user_id, $token)
@ -106,22 +126,24 @@
$password = $_POST['password'] ?? false; $password = $_POST['password'] ?? false;
$Tokenista = new \Ingenerator\Tokenista(APP_SECRET); $Tokenista = new \Ingenerator\Tokenista(APP_SECRET);
if (!$Tokenista->isValid($token, ['user_id' => $user_id])) { if (!$Tokenista->isValid($token, ['user_id' => $user_id]))
{
return $this->render('connect/reset-password-invalid'); return $this->render('connect/reset-password-invalid');
} }
if (!$password) { if (!$password)
{
return $this->render('connect/reset-password'); return $this->render('connect/reset-password');
} }
$this->internal_user->update_password($user_id, $password); $this->internal_user->update_password($user_id, $password);
return $this->render('connect/reset-password-done'); return $this->render('connect/reset-password-done');
} }
/** /**
* Cette fonction déconnecte un utilisateur et le renvoie sur la page d'accueil * Cette fonction déconnecte un utilisateur et le renvoie sur la page d'accueil.
* @return void
*/ */
public function logout() public function logout()
{ {

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des contacts * Page des contacts.
*/ */
class Contact extends \descartes\Controller class Contact extends \descartes\Controller
{ {
@ -11,21 +22,24 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction retourne tous les contacts, sous forme d'un tableau permettant l'administration de ces contacts * Cette fonction retourne tous les contacts, sous forme d'un tableau permettant l'administration de ces contacts.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
@ -33,30 +47,37 @@ namespace controllers\publics;
$contacts = $this->internal_contact->get_list(25, $page); $contacts = $this->internal_contact->get_list(25, $page);
$this->render('contact/list', ['contacts' => $contacts]); $this->render('contact/list', ['contacts' => $contacts]);
} }
/** /**
* Cette fonction va supprimer une liste de contacts * Cette fonction va supprimer une liste de contacts.
*
* @param array int $_GET['ids'] : Les id des contactes à supprimer * @param array int $_GET['ids'] : Les id des contactes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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->internal_contact->delete($id); $this->internal_contact->delete($id);
} }
$this->redirect(\descartes\Router::url('Contact', 'list')); $this->redirect(\descartes\Router::url('Contact', 'list'));
return true; return true;
} }
/** /**
* Cette fonction retourne la page d'ajout d'un contact * Cette fonction retourne la page d'ajout d'un contact.
*/ */
public function add() public function add()
{ {
@ -64,7 +85,8 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne la page d'édition des contacts * Cette fonction retourne la page d'édition des contacts.
*
* @param int... $ids : Les id des contactes à supprimer * @param int... $ids : Les id des contactes à supprimer
*/ */
public function edit() public function edit()
@ -74,77 +96,95 @@ namespace controllers\publics;
$contacts = $this->internal_contact->get_by_ids($ids); $contacts = $this->internal_contact->get_by_ids($ids);
$this->render('contact/edit', array( $this->render('contact/edit', [
'contacts' => $contacts, 'contacts' => $contacts,
)); ]);
} }
/** /**
* Cette fonction insert un nouveau contact * Cette fonction insert un nouveau contact.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom du contact * @param string $_POST['name'] : Le nom du contact
* @param string $_POST['phone'] : Le numero de téléphone du contact * @param string $_POST['phone'] : Le numero de téléphone du contact
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
$name = $_POST['name'] ?? false; $name = $_POST['name'] ?? false;
$number = $_POST['number'] ?? false; $number = $_POST['number'] ?? false;
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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Contact', 'add')); return $this->redirect(\descartes\Router::url('Contact', 'add'));
} }
if (!$this->internal_contact->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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
/** /**
* Cette fonction met à jour une contacte * Cette fonction met à jour une contacte.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param array $_POST['contacts'] : Un tableau des contactes avec leur nouvelle valeurs * @param array $_POST['contacts'] : Un tableau des contactes avec leur nouvelle valeurs
*
* @return boolean; * @return boolean;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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->internal_contact->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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Contact', 'list')); return $this->redirect(\descartes\Router::url('Contact', 'list'));
} }
/** /**
* Cette fonction retourne la liste des contacts sous forme JSON * Cette fonction retourne la liste des contacts sous forme JSON.
*/ */
public function json_list() public function json_list()
{ {

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page d'index, qui gère l'affichage par défaut temporairement * Page d'index, qui gère l'affichage par défaut temporairement.
*/ */
class Dashboard extends \descartes\Controller class Dashboard extends \descartes\Controller
{ {
@ -16,13 +27,14 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_sended = new \controllers\internals\Sended($bdd); $this->internal_sended = new \controllers\internals\Sended($bdd);
$this->internal_received = new \controllers\internals\Received($bdd); $this->internal_received = new \controllers\internals\Received($bdd);
$this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
@ -30,19 +42,20 @@ namespace controllers\publics;
$this->internal_scheduled = new \controllers\internals\Scheduled($bdd); $this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
$this->internal_command = new \controllers\internals\Command($bdd); $this->internal_command = new \controllers\internals\Command($bdd);
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction est un alias de show * Cette fonction est un alias de show.
*
* @return void; * @return void;
*/ */
public function show() public function show()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
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->internal_contact->count(); $nb_contacts = $this->internal_contact->count();
$nb_groups = $this->internal_group->count(); $nb_groups = $this->internal_group->count();
@ -67,35 +80,38 @@ namespace controllers\publics;
$nb_receiveds_by_day = $this->internal_received->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 = [];
$today_less_7_day = new \DateTime(); $today_less_7_day = new \DateTime();
$today_less_7_day->sub(new \DateInterval('P7D')); $today_less_7_day->sub(new \DateInterval('P7D'));
$increment_day = new \DateInterval('P1D'); $increment_day = new \DateInterval('P1D');
$i = 0; $i = 0;
//On va construire un tableau avec la date en clef, et les données pour chaque date //On va construire un tableau avec la date en clef, et les données pour chaque date
while ($i < 7) { while ($i < 7)
{
$today_less_7_day->add($increment_day); $today_less_7_day->add($increment_day);
$i ++; ++$i;
$date_f = $today_less_7_day->format('Y-m-d'); $date_f = $today_less_7_day->format('Y-m-d');
$array_area_chart[$date_f] = array( $array_area_chart[$date_f] = [
'period' => $date_f, 'period' => $date_f,
'sendeds' => 0, 'sendeds' => 0,
'receiveds' => 0, 'receiveds' => 0,
); ];
} }
$total_sendeds = 0; $total_sendeds = 0;
$total_receiveds = 0; $total_receiveds = 0;
//0n remplie le tableau avec les données adaptées //0n remplie le tableau avec les données adaptées
foreach ($nb_sendeds_by_day as $date => $nb_sended) { foreach ($nb_sendeds_by_day as $date => $nb_sended)
{
$array_area_chart[$date]['sendeds'] = $nb_sended; $array_area_chart[$date]['sendeds'] = $nb_sended;
$total_sendeds += $nb_sended; $total_sendeds += $nb_sended;
} }
foreach ($nb_receiveds_by_day as $date => $nb_received) { foreach ($nb_receiveds_by_day as $date => $nb_received)
{
$array_area_chart[$date]['receiveds'] = $nb_received; $array_area_chart[$date]['receiveds'] = $nb_received;
$total_receiveds += $nb_received; $total_receiveds += $nb_received;
} }
@ -105,8 +121,7 @@ namespace controllers\publics;
$array_area_chart = array_values($array_area_chart); $array_area_chart = array_values($array_area_chart);
$this->render('dashboard/show', [
$this->render('dashboard/show', array(
'nb_contacts' => $nb_contacts, 'nb_contacts' => $nb_contacts,
'nb_groups' => $nb_groups, 'nb_groups' => $nb_groups,
'nb_scheduleds' => $nb_scheduleds, 'nb_scheduleds' => $nb_scheduleds,
@ -119,6 +134,6 @@ namespace controllers\publics;
'receiveds' => $receiveds, 'receiveds' => $receiveds,
'events' => $events, 'events' => $events,
'datas_area_chart' => json_encode($array_area_chart), 'datas_area_chart' => json_encode($array_area_chart),
)); ]);
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des discussions * Page des discussions.
*/ */
class Discussion extends \descartes\Controller class Discussion extends \descartes\Controller
{ {
@ -13,59 +24,63 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_sended = new \controllers\internals\Sended($bdd); $this->internal_sended = new \controllers\internals\Sended($bdd);
$this->internal_scheduled = new \controllers\internals\Scheduled($bdd); $this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
$this->internal_received = new \controllers\internals\Received($bdd); $this->internal_received = new \controllers\internals\Received($bdd);
$this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction retourne toutes les discussions, sous forme d'un tableau permettant l'administration de ces contacts * Cette fonction retourne toutes les discussions, sous forme d'un tableau permettant l'administration de ces contacts.
*/ */
public function list() public function list()
{ {
$discussions = $this->internal_received->get_discussions(); $discussions = $this->internal_received->get_discussions();
foreach ($discussions as $key => $discussion) { foreach ($discussions as $key => $discussion)
if (!$contact = $this->internal_contact->get_by_number($discussion['number'])) { {
if (!$contact = $this->internal_contact->get_by_number($discussion['number']))
{
continue; continue;
} }
$discussions[$key]['contact'] = $contact['name']; $discussions[$key]['contact'] = $contact['name'];
} }
$this->render('discussion/list', array( $this->render('discussion/list', [
'discussions' => $discussions, 'discussions' => $discussions,
)); ]);
} }
/** /**
* Cette fonction permet d'afficher la discussion avec un numero * Cette fonction permet d'afficher la discussion avec un numero.
*
* @param string $number : La numéro de téléphone avec lequel on discute * @param string $number : La numéro de téléphone avec lequel on discute
*/ */
public function show($number) public function show($number)
{ {
$contact = $this->internal_contact->get_by_number($number); $contact = $this->internal_contact->get_by_number($number);
$this->render('discussion/show', [
$this->render('discussion/show', array(
'number' => $number, 'number' => $number,
'contact' => $contact, 'contact' => $contact,
)); ]);
} }
/** /**
* Cette fonction récupère l'ensemble des messages pour un numéro, recçus, envoyés, en cours * Cette fonction récupère l'ensemble des messages pour un numéro, recçus, envoyés, en cours.
* @param string $number : Le numéro cible *
* @param string $number : Le numéro cible
* @param string $transaction_id : Le numéro unique de la transaction ajax (sert à vérifier si la requete doit être prise en compte) * @param string $transaction_id : Le numéro unique de la transaction ajax (sert à vérifier si la requete doit être prise en compte)
*/ */
public function get_messages($number, $transaction_id) public function get_messages($number, $transaction_id)
@ -79,49 +94,56 @@ namespace controllers\publics;
$messages = []; $messages = [];
foreach ($sendeds as $sended) { foreach ($sendeds as $sended)
$messages[] = array( {
$messages[] = [
'date' => htmlspecialchars($sended['at']), 'date' => htmlspecialchars($sended['at']),
'text' => htmlspecialchars($sended['content']), 'text' => htmlspecialchars($sended['content']),
'type' => 'sended', 'type' => 'sended',
'status' => ($sended['delivered'] ? 'delivered' : ($sended['failed'] ? 'failed' : '')), 'status' => ($sended['delivered'] ? 'delivered' : ($sended['failed'] ? 'failed' : '')),
); ];
} }
foreach ($receiveds as $received) { foreach ($receiveds as $received)
$messages[] = array( {
$messages[] = [
'date' => htmlspecialchars($received['at']), 'date' => htmlspecialchars($received['at']),
'text' => htmlspecialchars($received['content']), 'text' => htmlspecialchars($received['content']),
'type' => 'received', 'type' => 'received',
'md5' => md5($received['at'] . $received['content']), 'md5' => md5($received['at'].$received['content']),
); ];
} }
foreach ($scheduleds as $scheduled) { foreach ($scheduleds as $scheduled)
$messages[] = array( {
$messages[] = [
'date' => htmlspecialchars($scheduled['at']), 'date' => htmlspecialchars($scheduled['at']),
'text' => htmlspecialchars($scheduled['content']), 'text' => htmlspecialchars($scheduled['content']),
'type' => 'inprogress', 'type' => 'inprogress',
); ];
} }
//On va trier le tableau des messages //On va trier le tableau des messages
usort($messages, function ($a, $b) { usort($messages, function ($a, $b)
return strtotime($a["date"]) - strtotime($b["date"]); {
return strtotime($a['date']) - strtotime($b['date']);
}); });
//On récupère uniquement les 25 derniers messages sur l'ensemble //On récupère uniquement les 25 derniers messages sur l'ensemble
$messages = array_slice($messages, -25); $messages = \array_slice($messages, -25);
echo json_encode(['transaction_id' => $transaction_id, 'messages' => $messages]); echo json_encode(['transaction_id' => $transaction_id, 'messages' => $messages]);
return true; return true;
} }
/** /**
* 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 string : json string Le statut de l'envoi * @return string : json string Le statut de l'envoi
*/ */
public function send($csrf) public function send($csrf)
@ -129,41 +151,49 @@ namespace controllers\publics;
$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->verify_csrf($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);
return false; return false;
} }
$now = new \DateTime(); $now = new \DateTime();
$now = $now->format('Y-m-d H:i:s'); $now = $now->format('Y-m-d H:i:s');
$scheduled = []; $scheduled = [];
$scheduled['at'] = $now; $scheduled['at'] = $now;
$scheduled['content'] = $_POST['content'] ?? ''; $scheduled['content'] = $_POST['content'] ?? '';
$numbers = $_POST['numbers'] ?? false; $numbers = $_POST['numbers'] ?? false;
if (!$numbers) { if (!$numbers)
{
$return['success'] = false; $return['success'] = false;
$return['message'] = 'Vous devez renseigner un numéro valide'; $return['message'] = 'Vous devez renseigner un numéro valide';
echo json_encode($return); echo json_encode($return);
return false; return false;
} }
if (!$this->internal_scheduled->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;
} }
echo json_encode($return); echo json_encode($return);
return true; return true;
} }
/** /**
* Cette fonction retourne les id des sms qui sont envoyés * Cette fonction retourne les id des sms qui sont envoyés.
*
* @return string : json string 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()
@ -174,34 +204,41 @@ namespace controllers\publics;
//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 == $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_scheduled; $sendeds[] = $id_scheduled;
} }
} }
echo json_encode($sendeds); echo json_encode($sendeds);
return true; return true;
} }
/** /**
* 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 string : json string Un tableau avec les messages * @return string : json string Un tableau avec les messages
*/ */
public function checkreceiveds($number) public function checkreceiveds($number)
{ {
$now = new \DateTime(); $now = new \DateTime();
$now = $now->format('Y-m-d H:i'); $now = $now->format('Y-m-d H:i');
$_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 = $this->internal_received->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);
@ -209,10 +246,13 @@ namespace controllers\publics;
//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'] : [];
foreach ($receiveds as $key => $received) { foreach ($receiveds as $key => $received)
{
//Sms jamais recu //Sms jamais recu
if (array_search($received['id'], $_SESSION['discussion_already_receiveds']) === false) { if (false === array_search($received['id'], $_SESSION['discussion_already_receiveds'], true))
{
$_SESSION['discussion_already_receiveds'][] = $received['id']; $_SESSION['discussion_already_receiveds'][] = $received['id'];
continue; continue;
} }
@ -222,7 +262,7 @@ namespace controllers\publics;
//On met à jour la date de dernière verif //On met à jour la date de dernière verif
$_SESSION['discussion_last_checkreceiveds'] = $now; $_SESSION['discussion_last_checkreceiveds'] = $now;
echo json_encode($receiveds); echo json_encode($receiveds);
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des events * Page des events.
*/ */
class Event extends \descartes\Controller class Event extends \descartes\Controller
{ {
@ -10,48 +21,59 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Cette fonction retourne tous les events, sous forme d'un tableau permettant l'administration de ces events * Cette fonction retourne tous les events, sous forme d'un tableau permettant l'administration de ces events.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$events = $this->internal_event->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)]);
} }
/** /**
* Cette fonction va supprimer une liste de events * Cette fonction va supprimer une liste de events.
*
* @param array int $_GET['ids'] : Les id des eventes à supprimer * @param array int $_GET['ids'] : Les id des eventes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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 $this->redirect(\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->internal_event->delete($id); $this->internal_event->delete($id);
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des groups * Page des groups.
*/ */
class Group extends \descartes\Controller class Group extends \descartes\Controller
{ {
@ -12,13 +23,14 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
{ {
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_group = new \controllers\internals\Group($bdd); $this->internal_group = new \controllers\internals\Group($bdd);
$this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internal_event = new \controllers\internals\Event($bdd); $this->internal_event = new \controllers\internals\Event($bdd);
@ -27,31 +39,39 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les groups, sous forme d'un tableau permettant l'administration de ces groups * Cette fonction retourne tous les groups, sous forme d'un tableau permettant l'administration de ces groups.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$groups = $this->internal_group->get_list(25, $page); $groups = $this->internal_group->get_list(25, $page);
foreach ($groups as $key => $group) { foreach ($groups as $key => $group)
{
$contacts = $this->internal_group->get_contact($group['id']); $contacts = $this->internal_group->get_contact($group['id']);
$groups[$key]['nb_contacts'] = count($contacts); $groups[$key]['nb_contacts'] = \count($contacts);
} }
$this->render('group/list', ['groups' => $groups]); $this->render('group/list', ['groups' => $groups]);
} }
/** /**
* Cette fonction va supprimer une liste de groups * Cette fonction va supprimer une liste de groups.
*
* @param array int $_GET['ids'] : Les id des groups à supprimer * @param array int $_GET['ids'] : Les id des groups à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Group', 'list')); $this->redirect(\descartes\Router::url('Group', 'list'));
return false; return false;
} }
@ -59,11 +79,12 @@ namespace controllers\publics;
$this->internal_group->delete($ids); $this->internal_group->delete($ids);
$this->redirect(\descartes\Router::url('Group', 'list')); $this->redirect(\descartes\Router::url('Group', 'list'));
return true; return true;
} }
/** /**
* Cette fonction retourne la page d'ajout d'un group * Cette fonction retourne la page d'ajout d'un group.
*/ */
public function add() public function add()
{ {
@ -71,7 +92,8 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne la page d'édition des groups * Cette fonction retourne la page d'édition des groups.
*
* @param int... $ids : Les id des groups à supprimer * @param int... $ids : Les id des groups à supprimer
*/ */
public function edit() public function edit()
@ -80,78 +102,95 @@ namespace controllers\publics;
$groups = $this->internal_group->get_by_ids($ids); $groups = $this->internal_group->get_by_ids($ids);
foreach ($groups as $key => $group) { foreach ($groups as $key => $group)
{
$groups[$key]['contacts'] = $this->internal_group->get_contact($group['id']); $groups[$key]['contacts'] = $this->internal_group->get_contact($group['id']);
} }
$this->render('group/edit', array( $this->render('group/edit', [
'groups' => $groups, 'groups' => $groups,
)); ]);
} }
/** /**
* Cette fonction insert un nouveau group * Cette fonction insert un nouveau group.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom du group * @param string $_POST['name'] : Le nom du group
* @param array $_POST['contacts'] : Les ids des contacts à mettre dans le group * @param array $_POST['contacts'] : Les ids des contacts à mettre dans le group
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('Group', 'add')); return $this->redirect(\descartes\Router::url('Group', 'add'));
} }
$name = $_POST['name'] ?? false; $name = $_POST['name'] ?? false;
$contacts_ids = $_POST['contacts'] ?? false; $contacts_ids = $_POST['contacts'] ?? false;
if (!$name || !$contacts_ids) { if (!$name || !$contacts_ids)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
return $this->redirect(\descartes\Router::url('Group', 'add')); return $this->redirect(\descartes\Router::url('Group', 'add'));
} }
$id_group = $this->internal_group->create($name, $contacts_ids); $id_group = $this->internal_group->create($name, $contacts_ids);
if (!$id_group) { if (!$id_group)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce group.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce group.');
return $this->redirect(\descartes\Router::url('Group', 'add')); return $this->redirect(\descartes\Router::url('Group', 'add'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le group a bien été créé.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le group a bien été créé.');
return $this->redirect(\descartes\Router::url('Group', 'list')); return $this->redirect(\descartes\Router::url('Group', 'list'));
} }
/** /**
* Cette fonction met à jour une group * Cette fonction met à jour une group.
*
* @param $csrf : Le jeton CSRF * @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 * @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; * @return boolean;
*/ */
public function update($csrf) public function update($csrf)
{ {
if (!$this->verify_csrf($csrf)) { if (!$this->verify_csrf($csrf))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
$this->redirect(\descartes\Router::url('Group', 'list')); $this->redirect(\descartes\Router::url('Group', 'list'));
return false; return false;
} }
$groups = $_POST['groups'] ?? []; $groups = $_POST['groups'] ?? [];
$nb_groups_update = 0; $nb_groups_update = 0;
foreach ($groups as $id => $group) { foreach ($groups as $id => $group)
{
$nb_groups_update += (int) $this->internal_group->update($id, $group['name'], $group['contacts_ids']); $nb_groups_update += (int) $this->internal_group->update($id, $group['name'], $group['contacts_ids']);
} }
if ($nb_groups_update != count($groups)) { if ($nb_groups_update !== \count($groups))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains groups n\'ont pas pu êtres mis à jour.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains groups n\'ont pas pu êtres mis à jour.');
return $this->redirect(\descartes\Router::url('Group', 'list')); return $this->redirect(\descartes\Router::url('Group', 'list'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les groups ont été modifiés avec succès.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les groups ont été modifiés avec succès.');
return $this->redirect(\descartes\Router::url('Group', 'list')); return $this->redirect(\descartes\Router::url('Group', 'list'));
} }
/** /**
* Cette fonction retourne la liste des groups sous forme JSON * Cette fonction retourne la liste des groups sous forme JSON.
*/ */
public function json_list() public function json_list()
{ {

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des receiveds * Page des receiveds.
*/ */
class Received extends \descartes\Controller class Received extends \descartes\Controller
{ {
@ -11,7 +22,8 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
@ -24,7 +36,9 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les receiveds, sous forme d'un tableau permettant l'administration de ces receiveds * Cette fonction retourne tous les receiveds, sous forme d'un tableau permettant l'administration de ces receiveds.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
@ -32,67 +46,82 @@ namespace controllers\publics;
$limit = 25; $limit = 25;
$receiveds = $this->internal_received->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->internal_contact->get_by_number($received['origin'])) { {
if (!$contact = $this->internal_contact->get_by_number($received['origin']))
{
continue; continue;
} }
$receiveds[$key]['send_by'] = $contact['name'] . ' (' . $received['origin'] . ')'; $receiveds[$key]['send_by'] = $contact['name'].' ('.$received['origin'].')';
} }
$this->render('received/list', ['receiveds' => $receiveds, 'page' => $page, 'limit' => $limit, 'nb_results' => count($receiveds)]); $this->render('received/list', ['receiveds' => $receiveds, 'page' => $page, 'limit' => $limit, 'nb_results' => \count($receiveds)]);
} }
/** /**
* 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 string : A 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->internal_received->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->internal_contact->get_by_number($received['origin'])) { {
if (!$contact = $this->internal_contact->get_by_number($received['origin']))
{
continue; continue;
} }
$receiveds[$key]['origin'] = $contact['name'] . ' (' . $received['origin'] . ')'; $receiveds[$key]['origin'] = $contact['name'].' ('.$received['origin'].')';
} }
$nb_received = count($receiveds);
if (!isset($_SESSION['popup_nb_receiveds']) || $_SESSION['popup_nb_receiveds'] > $nb_received) { $nb_received = \count($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_received; $_SESSION['popup_nb_receiveds'] = $nb_received;
echo json_encode($newly_receiveds); echo json_encode($newly_receiveds);
return true; return true;
} }
/** /**
* Cette fonction va supprimer une liste de receiveds * Cette fonction va supprimer une liste de receiveds.
*
* @param array int $_GET['ids'] : Les id des receivedes à supprimer * @param array int $_GET['ids'] : Les id des receivedes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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 $this->redirect(\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->internal_received->delete($id); $this->internal_received->delete($id);
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des scheduleds * Page des scheduleds.
*/ */
class Scheduled extends \descartes\Controller class Scheduled extends \descartes\Controller
{ {
@ -10,7 +21,8 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
@ -22,7 +34,9 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les scheduleds, sous forme d'un tableau permettant l'administration de ces scheduleds * Cette fonction retourne tous les scheduleds, sous forme d'un tableau permettant l'administration de ces scheduleds.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
@ -30,21 +44,27 @@ namespace controllers\publics;
$scheduleds = $this->internal_scheduled->get_list(25, $page); $scheduleds = $this->internal_scheduled->get_list(25, $page);
$this->render('scheduled/list', ['scheduleds' => $scheduleds]); $this->render('scheduled/list', ['scheduleds' => $scheduleds]);
} }
/** /**
* Cette fonction va supprimer une liste de scheduleds * Cette fonction va supprimer une liste de scheduleds.
*
* @param array int $_GET['ids'] : Les id des scheduledes à supprimer * @param array int $_GET['ids'] : Les id des scheduledes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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->internal_scheduled->delete($id); $this->internal_scheduled->delete($id);
} }
@ -52,7 +72,7 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne la page d'ajout d'un scheduled * Cette fonction retourne la page d'ajout d'un scheduled.
*/ */
public function add() public function add()
{ {
@ -66,7 +86,8 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne la page d'édition des scheduleds * Cette fonction retourne la page d'édition des scheduleds.
*
* @param int... $ids : Les id des scheduledes à supprimer * @param int... $ids : Les id des scheduledes à supprimer
*/ */
public function edit() public function edit()
@ -76,79 +97,93 @@ namespace controllers\publics;
$scheduleds = $this->internal_scheduled->get_by_ids($ids); $scheduleds = $this->internal_scheduled->get_by_ids($ids);
//Pour chaque message on ajoute les numéros, les contacts & les groups //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]['groups'] = []; $scheduleds[$key]['groups'] = [];
$numbers = $this->internal_scheduled->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->internal_scheduled->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'];
} }
$groups = $this->internal_scheduled->get_groups($scheduled['id']); $groups = $this->internal_scheduled->get_groups($scheduled['id']);
foreach ($groups as $group) { foreach ($groups as $group)
{
$scheduleds[$key]['groups'][] = (int) $group['id']; $scheduleds[$key]['groups'][] = (int) $group['id'];
} }
} }
$this->render('scheduled/edit', [
$this->render('scheduled/edit', array(
'scheduleds' => $scheduleds, 'scheduleds' => $scheduleds,
)); ]);
} }
/** /**
* Cette fonction insert un nouveau scheduled * Cette fonction insert un nouveau scheduled.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['name'] : Le nom du scheduled * @param string $_POST['name'] : Le nom du scheduled
* @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['groups'] : Les groups du scheduled * @param string $_POST['groups'] : Les groups du scheduled
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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'] ?? [];
$groups = $_POST['groups'] ?? []; $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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
foreach ($numbers as $key => $number) { foreach ($numbers as $key => $number)
{
$number = \controllers\internals\Tool::parse_phone($number); $number = \controllers\internals\Tool::parse_phone($number);
if (!$number) { if (!$number)
{
unset($numbers[$key]); unset($numbers[$key]);
continue; continue;
} }
$numbers[$key] = $number; $numbers[$key] = $number;
} }
if (!$numbers && !$contacts && !$groups) { 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 $this->redirect(\descartes\Router::url('Scheduled', 'add')); return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
} }
@ -159,62 +194,79 @@ namespace controllers\publics;
'progress' => false, 'progress' => false,
]; ];
if (!$scheduled_id = $this->internal_scheduled->create($scheduled, $numbers, $contacts, $groups)) { 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 $this->redirect(\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 $this->redirect(\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 groups 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->verify_csrf($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 $this->redirect(\descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
$scheduleds = $_POST['scheduleds'] ?? []; $scheduleds = $_POST['scheduleds'] ?? [];
$all_update_ok = true; $all_update_ok = true;
foreach ($scheduleds as $id_scheduled => $scheduled) { foreach ($scheduleds as $id_scheduled => $scheduled)
{
$date = $scheduled['date'] ?? false; $date = $scheduled['date'] ?? false;
$content = $scheduled['content'] ?? false; $content = $scheduled['content'] ?? false;
$numbers = $scheduled['numbers'] ?? []; $numbers = $scheduled['numbers'] ?? [];
$contacts = $scheduled['contacts'] ?? []; $contacts = $scheduled['contacts'] ?? [];
$groups = $scheduled['groups'] ?? []; $groups = $scheduled['groups'] ?? [];
if (!$content) { if (!$content)
{
$all_update_ok = false; $all_update_ok = false;
continue; continue;
} }
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'))
{
$all_update_ok = false; $all_update_ok = false;
continue; continue;
} }
foreach ($numbers as $key => $number) { foreach ($numbers as $key => $number)
{
$number = \controllers\internals\Tool::parse_phone($number); $number = \controllers\internals\Tool::parse_phone($number);
if (!$number) { if (!$number)
{
unset($numbers[$key]); unset($numbers[$key]);
continue; continue;
} }
$numbers[$key] = $number; $numbers[$key] = $number;
} }
if (!$numbers && !$contacts && !$groups) { if (!$numbers && !$contacts && !$groups)
{
$all_update_ok = false; $all_update_ok = false;
continue; continue;
} }
@ -231,18 +283,23 @@ namespace controllers\publics;
'groups_ids' => $groups, 'groups_ids' => $groups,
]; ];
if (!$this->internal_scheduled->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 $this->redirect(\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 $this->redirect(\descartes\Router::url('Scheduled', 'list')); return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des sendeds * Page des sendeds.
*/ */
class Sended extends \descartes\Controller class Sended extends \descartes\Controller
{ {
@ -10,7 +21,8 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
@ -22,30 +34,38 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les sendeds, sous forme d'un tableau permettant l'administration de ces sendeds * Cette fonction retourne tous les sendeds, sous forme d'un tableau permettant l'administration de ces sendeds.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$sendeds = $this->internal_sended->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)]);
} }
/** /**
* Cette fonction va supprimer une liste de sendeds * Cette fonction va supprimer une liste de sendeds.
*
* @param array int $_GET['ids'] : Les id des sendedes à supprimer * @param array int $_GET['ids'] : Les id des sendedes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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->internal_sended->delete($id); $this->internal_sended->delete($id);
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des settings * Page des settings.
*/ */
class Setting extends \descartes\Controller class Setting extends \descartes\Controller
{ {
@ -13,51 +24,61 @@ namespace controllers\publics;
$bdd = \descartes\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::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
/** /**
* Return all settings to administrate them * Return all settings to administrate them.
*/ */
public function show() public function show()
{ {
return $this->render('setting/show'); return $this->render('setting/show');
} }
/** /**
* Update a setting value identified by his name * Update a setting value identified by his name.
*
* @param string $setting_name : Name of the setting to modify * @param string $setting_name : Name of the setting to modify
* @param $csrf : CSRF token * @param $csrf : CSRF token
* @param string $_POST['setting_value'] : Setting's new value * @param string $_POST['setting_value'] : Setting's new value
*
* @return boolean; * @return boolean;
*/ */
public function update(string $setting_name, string $csrf) public function update(string $setting_name, string $csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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())
{
\modules\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 $this->redirect(\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 (false === $setting_value)
{
\modules\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 $this->redirect(\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 (false === $update_setting_result)
{
\modules\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 $this->redirect(\descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
\modules\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 $this->redirect(\descartes\Router::url('Setting', 'show')); return $this->redirect(\descartes\Router::url('Setting', 'show'));
} }
} }

View File

@ -1,8 +1,19 @@
<?php <?php
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics; namespace controllers\publics;
/** /**
* Page des smsstops * Page des smsstops.
*/ */
class SmsStop extends \descartes\Controller class SmsStop extends \descartes\Controller
{ {
@ -10,7 +21,8 @@ namespace controllers\publics;
/** /**
* 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 __construct() public function __construct()
@ -22,35 +34,45 @@ namespace controllers\publics;
} }
/** /**
* Cette fonction retourne tous les smsstops, sous forme d'un tableau permettant l'administration de ces smsstops * Cette fonction retourne tous les smsstops, sous forme d'un tableau permettant l'administration de ces smsstops.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
$page = (int) $page; $page = (int) $page;
$limit = 25; $limit = 25;
$smsstops = $this->internal_sms_stop->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)]);
} }
/** /**
* Cette fonction va supprimer une liste de smsstops * Cette fonction va supprimer une liste de smsstops.
*
* @param array int $_GET['ids'] : Les id des smsstopes à supprimer * @param array int $_GET['ids'] : Les id des smsstopes à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\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 $this->redirect(\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->internal_sms_stop->delete($id); $this->internal_sms_stop->delete($id);
} }

View File

@ -1,16 +1,28 @@
<?php <?php
namespace controllers\publics;
/** /*
* Page des users * This file is part of PHP CS Fixer.
*/ *
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\publics;
/**
* Page des users.
*/
class User extends \descartes\Controller class User extends \descartes\Controller
{ {
private $internal_user; private $internal_user;
/** /**
* 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 __construct() public function __construct()
@ -22,7 +34,9 @@ class User extends \descartes\Controller
} }
/** /**
* Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users * Cette fonction retourne tous les users, sous forme d'un tableau permettant l'administration de ces users.
*
* @param mixed $page
*/ */
public function list($page = 0) public function list($page = 0)
{ {
@ -30,26 +44,34 @@ class User extends \descartes\Controller
$users = $this->internal_user->list(25, $page); $users = $this->internal_user->list(25, $page);
$this->render('user/list', ['users' => $users]); $this->render('user/list', ['users' => $users]);
} }
/** /**
* Cette fonction va supprimer une liste de users * Cette fonction va supprimer une liste de users.
*
* @param array int $_GET['ids'] : Les id des useres à supprimer * @param array int $_GET['ids'] : Les id des useres à supprimer
* @param mixed $csrf
*
* @return boolean; * @return boolean;
*/ */
public function delete($csrf) public function delete($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('User', 'list')); return $this->redirect(\descartes\Router::url('User', 'list'));
} }
if (!\controllers\internals\Tool::is_admin()) { if (!\controllers\internals\Tool::is_admin())
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour supprimer un utilisateur !'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour supprimer un utilisateur !');
return $this->redirect(\descartes\Router::url('User', 'list')); return $this->redirect(\descartes\Router::url('User', 'list'));
} }
$ids = $_GET['ids'] ?? []; $ids = $_GET['ids'] ?? [];
foreach ($ids as $id) { foreach ($ids as $id)
{
$this->internal_user->delete($id); $this->internal_user->delete($id);
} }
@ -57,7 +79,7 @@ class User extends \descartes\Controller
} }
/** /**
* Cette fonction retourne la page d'ajout d'un user * Cette fonction retourne la page d'ajout d'un user.
*/ */
public function add() public function add()
{ {
@ -65,48 +87,60 @@ class User extends \descartes\Controller
} }
/** /**
* Cette fonction insert un nouveau user * Cette fonction insert un nouveau user.
*
* @param $csrf : Le jeton CSRF * @param $csrf : Le jeton CSRF
* @param string $_POST['email'] : L'email de l'utilisateur * @param string $_POST['email'] : L'email de l'utilisateur
* @param string $_POST['email_confirm'] : Verif de 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'] : 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 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 * @param optional boolean $_POST['admin'] : Si vrai, l'utilisateur est admin, si vide non
*/ */
public function create($csrf) public function create($csrf)
{ {
if (!$this->verify_csrf($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 $this->redirect(\descartes\Router::url('User', 'add')); return $this->redirect(\descartes\Router::url('User', 'add'));
} }
$email = $_POST['email'] ?? false; $email = $_POST['email'] ?? false;
$password = $_POST['password'] ?? \controllers\internals\Tool::generate_password(rand(6, 12)); $password = $_POST['password'] ?? \controllers\internals\Tool::generate_password(rand(6, 12));
$admin = $_POST['admin'] ?? false; $admin = $_POST['admin'] ?? false;
if (!$email) { if (!$email)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez au moins fournir une adresse e-mail pour l\'utilisateur.'); \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')); return $this->redirect(\descartes\Router::url('User', 'add'));
} }
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas valide.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas valide.');
return $this->redirect(\descartes\Router::url('User', 'add')); return $this->redirect(\descartes\Router::url('User', 'add'));
} }
$email_send = \controllers\internals\Tool::send_email($email, EMAIL_CREATE_USER, ['email' => $email, 'password' => $password]); $email_send = \controllers\internals\Tool::send_email($email, EMAIL_CREATE_USER, ['email' => $email, 'password' => $password]);
if (!$email_send) { 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éé.'); \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')); return $this->redirect(\descartes\Router::url('User', 'add'));
} }
$user_id = $this->internal_user->create($email, $password, $admin); $user_id = $this->internal_user->create($email, $password, $admin);
if (!$user_id) { if (!$user_id)
{
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce user.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce user.');
return $this->redirect(\descartes\Router::url('User', 'add')); return $this->redirect(\descartes\Router::url('User', 'add'));
} }
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'utilisateur a bien été créé.'); \modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'utilisateur a bien été créé.');
return $this->redirect(\descartes\Router::url('User', 'list')); return $this->redirect(\descartes\Router::url('User', 'list'));
} }
} }

View File

@ -1,45 +1,60 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les commandes * Cette classe gère les accès bdd pour les commandes.
*/ */
class Command extends \descartes\Model class Command extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$commands = $this->_select('command', ['id' => $id]); $commands = $this->_select('command', ['id' => $id]);
return isset($commands[0]) ? $commands[0] : false; return isset($commands[0]) ? $commands[0] : false;
} }
/** /**
* Retourne une liste de commandes sous forme d'un tableau * Retourne une liste de commandes 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 list($limit, $offset) public function list($limit, $offset)
{ {
$commands = $this->_select('command', [], '', false, $limit, $offset); return $this->_select('command', [], '', false, $limit, $offset);
return $commands;
} }
/** /**
* Retourne une liste de commandes sous forme d'un tableau * Retourne une liste de commandes 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 command SELECT * FROM command
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -47,32 +62,38 @@
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Supprime une commande * Supprime une commande.
*
* @param array $id : l'id de l'entrée à supprimer * @param array $id : l'id de l'entrée à supprimer
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM command DELETE FROM command
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une commande * Insert une commande.
*
* @param array $command : La commande à insérer * @param array $command : La commande à insérer
*
* @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($command) public function insert($command)
{ {
$result = $this->_insert('command', $command); $result = $this->_insert('command', $command);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -80,18 +101,21 @@
} }
/** /**
* Met à jour une commande par son id * Met à jour une commande par son id.
* @param int $id : L'id de la command à modifier *
* @param int $id : L'id de la command à modifier
* @param array $command : Les données à mettre à jour pour la commande * @param array $command : Les données à mettre à jour pour la commande
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $command) public function update($id, $command)
{ {
return $this->_update('command', $command, ['id' => $id]); return $this->_update('command', $command, ['id' => $id]);
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()

View File

@ -1,67 +1,88 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les contactes * Cette classe gère les accès bdd pour les contactes.
*/ */
class Contact extends \descartes\Model class Contact extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$contacts = $this->_select('contact', ['id' => $id]); $contacts = $this->_select('contact', ['id' => $id]);
return isset($contacts[0]) ? $contacts[0] : false; return isset($contacts[0]) ? $contacts[0] : false;
} }
/** /**
* Retourne une entrée par son numéro de tel * Retourne une entrée par son numéro de tel.
*
* @param string $number : Le numéro de tél * @param string $number : Le numéro de tél
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_number($number) public function get_by_number($number)
{ {
$contacts = $this->_select('contact', ['number' => $number]); $contacts = $this->_select('contact', ['number' => $number]);
return isset($contacts[0]) ? $contacts[0] : false; return isset($contacts[0]) ? $contacts[0] : false;
} }
/** /**
* Retourne une entrée par son numéro de tel * Retourne une entrée par son numéro de tel.
*
* @param string $name : Le numéro de tél * @param string $name : Le numéro de tél
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_name($name) public function get_by_name($name)
{ {
$contacts = $this->_select('contact', ['name' => $name]); $contacts = $this->_select('contact', ['name' => $name]);
return isset($contacts[0]) ? $contacts[0] : false; return isset($contacts[0]) ? $contacts[0] : false;
} }
/** /**
* Retourne une liste de contactes sous forme d'un tableau * Retourne une liste de contactes 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)
{ {
$contacts = $this->_select('contact', [], '', false, $limit, $offset); return $this->_select('contact', [], '', false, $limit, $offset);
return $contacts;
} }
/** /**
* Retourne une liste de contactes sous forme d'un tableau * Retourne une liste de contactes 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 contact SELECT * FROM contact
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -71,30 +92,36 @@
} }
/** /**
* Supprimer un contact par son id * Supprimer un contact par son id.
*
* @param array $id : un ou plusieurs id d'entrées à supprimer * @param array $id : 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_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM contact DELETE FROM contact
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une contacte * Insert une contacte.
*
* @param array $contact : La contacte à insérer avec les champs name, script, admin & admin * @param array $contact : La contacte à 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($contact) public function insert($contact)
{ {
$result = $this->_insert('contact', $contact); $result = $this->_insert('contact', $contact);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -102,9 +129,11 @@
} }
/** /**
* Met à jour une contacte par son id * Met à jour une contacte par son id.
* @param int $id : L'id de la contact à modifier *
* @param int $id : L'id de la contact à modifier
* @param array $contact : Les données à mettre à jour pour la contacte * @param array $contact : Les données à mettre à jour pour la contacte
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $contact) public function update($id, $contact)
@ -113,7 +142,8 @@
} }
/** /**
* Compte le nombre d'entrées dans la table contact * Compte le nombre d'entrées dans la table contact.
*
* @return int : Le nombre de contact * @return int : Le nombre de contact
*/ */
public function count() public function count()

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +1,72 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les eventes * Cette classe gère les accès bdd pour les eventes.
*/ */
class Event extends \descartes\Model class Event extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$events = $this->_select('event', ['id' => $id]); $events = $this->_select('event', ['id' => $id]);
return isset($events[0]) ? $events[0] : false; return isset($events[0]) ? $events[0] : false;
} }
/** /**
* Retourne une liste de eventes sous forme d'un tableau * Retourne une liste de eventes 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)
{ {
$events = $this->_select('event', [], '', false, $limit, $offset); return $this->_select('event', [], '', false, $limit, $offset);
return $events;
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param mixed $nb_entry
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry) public function get_lasts_by_date($nb_entry)
{ {
$events = $this->_select('event', [], 'at', true, $nb_entry); return $this->_select('event', [], 'at', true, $nb_entry);
return $events;
} }
/** /**
* Retourne une liste de eventes sous forme d'un tableau * Retourne une liste de eventes 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 event SELECT * FROM event
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -57,33 +74,39 @@
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Retourne une liste de eventes sous forme d'un tableau * Retourne une liste de eventes 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM event DELETE FROM event
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une evente * Insert une evente.
*
* @param array $event : La evente à insérer avec les champs name, script, admin & admin * @param array $event : La evente à 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($event) public function insert($event)
{ {
$result = $this->_insert('event', $event); $result = $this->_insert('event', $event);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -91,7 +114,8 @@
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()

View File

@ -1,56 +1,74 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les groups * Cette classe gère les accès bdd pour les groups.
*/ */
class Group extends \descartes\Model class Group extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$groups = $this->_select('group', ['id' => $id]); $groups = $this->_select('group', ['id' => $id]);
return isset($groups[0]) ? $groups[0] : false; return isset($groups[0]) ? $groups[0] : false;
} }
/** /**
* Retourne une entrée par son numéro de tel * Retourne une entrée par son numéro de tel.
*
* @param string $name : Le numéro de tél * @param string $name : Le numéro de tél
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_name($name) public function get_by_name($name)
{ {
$groups = $this->_select('group', ['name' => $name]); $groups = $this->_select('group', ['name' => $name]);
return isset($groups[0]) ? $groups[0] : false; return isset($groups[0]) ? $groups[0] : false;
} }
/** /**
* Retourne une liste de groups 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)
{ {
$groups = $this->_select('group', [], '', false, $limit, $offset); return $this->_select('group', [], '', false, $limit, $offset);
return $groups;
} }
/** /**
* Retourne une liste de groups 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 group 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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -60,16 +78,18 @@
} }
/** /**
* Retourne une liste de groups 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 group 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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -77,10 +97,12 @@
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Supprime les liens group/contact pour un group précis * Supprime les liens group/contact pour un group précis.
*
* @param int $id_group : L'id du group 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_group_contact($id_group) public function delete_group_contact($id_group)
@ -89,32 +111,38 @@
} }
/** /**
* Insert une group * Insert une group.
*
* @param array $group : La group à 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($group) public function insert($group)
{ {
$result = $this->_insert('group', $group); $result = $this->_insert('group', $group);
if (!$result) { if (!$result)
{
return false; return false;
} }
return $this->_last_id(); return $this->_last_id();
} }
/** /**
* Insert un lien group/contact * Insert un lien group/contact.
* @param int $id_group : L'id du group à 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_group_contact($id_group, $id_contact) public function insert_group_contact($id_group, $id_contact)
{ {
$result = $this->_insert('group_contact', ['id_group' => $id_group, '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,41 +150,46 @@
} }
/** /**
* Met à jour une group par son id * Met à jour une group par son id.
* @param int $id : L'id de la group à modifier *
* @param int $id : L'id de la group à modifier
* @param array $group : Les données à mettre à jour pour la group * @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, $group) public function update($id, $group)
{ {
return $this->_update('group', $group, ['id' => $id]); return $this->_update('group', $group, ['id' => $id]);
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()
{ {
return $this->_count('group'); return $this->_count('group');
} }
/** /**
* Cette fonction retourne les contact pour un group * Cette fonction retourne les contact pour un group.
*
* @param string $id : L'id du group * @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)
{ {
$query = " $query = '
SELECT * SELECT *
FROM contact FROM contact
WHERE id IN (SELECT id_contact FROM group_contact WHERE id_group = :id) WHERE id IN (SELECT id_contact FROM group_contact WHERE id_group = :id)
"; ';
$params = array( $params = [
'id' => $id, 'id' => $id,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }

View File

@ -1,68 +1,84 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les receivedes * Cette classe gère les accès bdd pour les receivedes.
*/ */
class Received extends \descartes\Model class Received extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$receiveds = $this->_select('received', ['id' => $id]); $receiveds = $this->_select('received', ['id' => $id]);
return isset($receiveds[0]) ? $receiveds[0] : false; return isset($receiveds[0]) ? $receiveds[0] : false;
} }
/** /**
* Retourne une liste de receivedes sous forme d'un tableau * Retourne une liste de receivedes 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)
{ {
$receiveds = $this->_select('received', [], '', false, $limit, $offset); return $this->_select('received', [], '', false, $limit, $offset);
return $receiveds;
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param int $nb_entry : Nombre d'entrée à retourner * @param int $nb_entry : Nombre d'entrée à retourner
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry) public function get_lasts_by_date($nb_entry)
{ {
$receiveds = $this->_select('received', [], 'at', true, $nb_entry); return $this->_select('received', [], 'at', true, $nb_entry);
return $receiveds;
} }
/** /**
* Cette fonction retourne une liste des received sous forme d'un tableau * Cette fonction retourne une liste des received sous forme d'un tableau.
*
* @param string $origin : Le numéro depuis lequel est envoyé le message * @param string $origin : Le numéro depuis lequel est envoyé le message
*
* @return array : La liste des received * @return array : La liste des received
*/ */
public function get_by_origin($origin) public function get_by_origin($origin)
{ {
$receiveds = $this->_select('received', ['origin' => $origin]); return $this->_select('received', ['origin' => $origin]);
return $receiveds;
} }
/** /**
* Retourne une liste de receivedes sous forme d'un tableau * Retourne une liste de receivedes 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 received SELECT * FROM received
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -70,32 +86,39 @@
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Retourne une liste de receivedes sous forme d'un tableau * Retourne une liste de receivedes 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM received DELETE FROM received
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une receivede * Insert une receivede.
*
* @param array $received : La receivede à insérer avec les champs name, script, admin & admin * @param array $received : La receivede à 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($received) public function insert($received)
{ {
$result = $this->_insert('received', $received); $result = $this->_insert('received', $received);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -103,18 +126,21 @@
} }
/** /**
* Met à jour une receivede par son id * Met à jour une receivede par son id.
* @param int $id : L'id de la received à modifier *
* @param int $id : L'id de la received à modifier
* @param array $received : Les données à mettre à jour pour la receivede * @param array $received : Les données à mettre à jour pour la receivede
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $received) public function update($id, $received)
{ {
return $this->_update('received', $received, ['id' => $id]); return $this->_update('received', $received, ['id' => $id]);
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()
@ -123,8 +149,10 @@
} }
/** /**
* Récupère le nombre de SMS envoyés pour chaque jour depuis une date * Récupère le nombre de SMS envoyés pour chaque jour depuis une date.
*
* @param \DateTime $date : La date depuis laquelle on veux les SMS * @param \DateTime $date : La date depuis laquelle on veux les SMS
*
* @return array : Tableau avec le nombre de SMS depuis la date * @return array : Tableau avec le nombre de SMS depuis la date
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
@ -136,31 +164,33 @@
GROUP BY at_ymd GROUP BY at_ymd
"; ";
$params = array( $params = [
'date' => $date, 'date' => $date,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Cette fonction retourne toutes les discussions, càd les numéros pour lesquels ont a a la fois un message et une réponse * Cette fonction retourne toutes les discussions, càd les numéros pour lesquels ont a a la fois un message et une réponse.
*/ */
public function get_discussions() public function get_discussions()
{ {
$query = " $query = '
SELECT MAX(at) as at, number SELECT MAX(at) as at, number
FROM (SELECT at, destination as number FROM sendeds UNION (SELECT at, origin as number FROM received)) as discussions FROM (SELECT at, destination as number FROM sendeds UNION (SELECT at, origin as number FROM received)) as discussions
GROUP BY origin GROUP BY origin
ORDER BY at DESC ORDER BY at DESC
"; ';
return $this->_run_query($query); return $this->_run_query($query);
} }
/** /**
* 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)
@ -172,17 +202,19 @@
ORDER BY at ASC ORDER BY at ASC
"; ";
$params = array( $params = [
'date' => $date, 'date' => $date,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* 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 $origin : Le numéro * @param $origin : 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_origin_by_date($date, $origin) public function get_since_for_origin_by_date($date, $origin)
@ -195,10 +227,10 @@
ORDER BY at ASC ORDER BY at ASC
"; ";
$params = array( $params = [
'date' => $date, 'date' => $date,
'origin' => $origin 'origin' => $origin,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }

View File

@ -1,45 +1,60 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les scheduledes * Cette classe gère les accès bdd pour les scheduledes.
*/ */
class Scheduled extends \descartes\Model class Scheduled extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$scheduleds = $this->_select('scheduled', ['id' => $id]); $scheduleds = $this->_select('scheduled', ['id' => $id]);
return isset($scheduleds[0]) ? $scheduleds[0] : false; return isset($scheduleds[0]) ? $scheduleds[0] : false;
} }
/** /**
* Retourne une liste de scheduledes sous forme d'un tableau * Retourne une liste de scheduledes 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)
{ {
$scheduleds = $this->_select('scheduled', [], '', false, $limit, $offset); return $this->_select('scheduled', [], '', false, $limit, $offset);
return $scheduleds;
} }
/** /**
* Retourne une liste de scheduledes sous forme d'un tableau * Retourne une liste de scheduledes 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 scheduled SELECT * FROM scheduled
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -49,14 +64,16 @@
} }
/** /**
* Cette fonction retourne les messages programmés avant une date et pour un numéro * Cette fonction retourne les messages programmés avant une date et pour un numéro.
* @param \DateTime $date : La date avant laquelle on veux le message *
* @param string $number : Le numéro * @param \DateTime $date : La date avant laquelle on veux le message
* @param string $number : Le numéro
*
* @return array : Les messages programmés avant la date * @return array : Les messages programmés avant la date
*/ */
public function get_before_date_for_number($date, $number) public function get_before_date_for_number($date, $number)
{ {
$query = " $query = '
SELECT * SELECT *
FROM scheduled FROM scheduled
WHERE at <= :date WHERE at <= :date
@ -89,27 +106,30 @@
) )
) )
) )
"; ';
$params = array( $params = [
'date' => $date, 'date' => $date,
'number' => $number, 'number' => $number,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Retourne une liste de scheduledes sous forme d'un tableau * Retourne une liste de scheduledes 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM scheduled DELETE FROM scheduled
WHERE id = :id"; WHERE id = :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
$params = ['id' => $id]; $params = ['id' => $id];
@ -117,15 +137,18 @@
} }
/** /**
* Insert une schedulede * Insert une schedulede.
*
* @param array $scheduled : La schedulede à insérer avec les champs name, script, admin & admin * @param array $scheduled : La schedulede à 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($scheduled) public function insert($scheduled)
{ {
$result = $this->_insert('scheduled', $scheduled); $result = $this->_insert('scheduled', $scheduled);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -133,38 +156,45 @@
} }
/** /**
* Met à jour une schedulede par son id * Met à jour une schedulede par son id.
* @param int $id : L'id de la scheduled à modifier *
* @param int $id : L'id de la scheduled à modifier
* @param array $scheduled : Les données à mettre à jour pour la schedulede * @param array $scheduled : Les données à mettre à jour pour la schedulede
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $scheduled) public function update($id, $scheduled)
{ {
return $this->_update('scheduled', $scheduled, ['id' => $id]); return $this->_update('scheduled', $scheduled, ['id' => $id]);
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()
{ {
return $this->_count('scheduled'); return $this->_count('scheduled');
} }
/** /**
* Cette fonction retourne une liste de numéro pour un scheduled * Cette fonction retourne une liste de numéro 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 numéros des scheduled * @return array : Les numéros des scheduled
*/ */
public function get_number($id_scheduled) public function get_number($id_scheduled)
{ {
return $this->_select('scheduled_number', ['id_scheduled' => $id_scheduled]); return $this->_select('scheduled_number', ['id_scheduled' => $id_scheduled]);
} }
/** /**
* Cette fonction retourne une liste de contact pour un scheduled * Cette fonction retourne une liste de contact 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 contact du scheduled * @return array : Les contact du scheduled
*/ */
public function get_contact($id_scheduled) public function get_contact($id_scheduled)
@ -175,10 +205,12 @@
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Cette fonction retourne une liste de groups 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 groups du scheduled * @return array : Les groups du scheduled
*/ */
public function get_group($id_scheduled) public function get_group($id_scheduled)
@ -189,18 +221,21 @@
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }
/** /**
* Insert un liens scheduled/number * Insert un liens scheduled/number.
* @param int $id_scheduled : L'id du scheduled *
* @param string $number : Le numéro à lier * @param int $id_scheduled : L'id du scheduled
* @param string $number : Le numéro à lier
*
* @return int : le nombre d'entrées * @return int : le nombre d'entrées
*/ */
public function insert_scheduled_number($id_scheduled, $number) public function insert_scheduled_number($id_scheduled, $number)
{ {
$result = $this->_insert('scheduled_number', ['id_scheduled' => $id_scheduled, 'number' => $number]); $result = $this->_insert('scheduled_number', ['id_scheduled' => $id_scheduled, 'number' => $number]);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -208,33 +243,39 @@
} }
/** /**
* Insert un liens scheduled/contact * Insert un liens scheduled/contact.
*
* @param int $id_scheduled : L'id du scheduled * @param int $id_scheduled : L'id du scheduled
* @param int $id_contact : L'id du contact * @param int $id_contact : L'id du contact
*
* @return int : le nombre d'entrées * @return int : le nombre d'entrées
*/ */
public function insert_scheduled_contact($id_scheduled, $id_contact) public function insert_scheduled_contact($id_scheduled, $id_contact)
{ {
$result = $this->_insert('scheduled_contact', ['id_scheduled' => $id_scheduled, 'id_contact' => $id_contact]); $result = $this->_insert('scheduled_contact', ['id_scheduled' => $id_scheduled, 'id_contact' => $id_contact]);
if (!$result) { if (!$result)
{
return false; return false;
} }
return $this->_last_id(); return $this->_last_id();
} }
/** /**
* Insert un liens scheduled/group * Insert un liens scheduled/group.
*
* @param int $id_scheduled : L'id du scheduled * @param int $id_scheduled : L'id du scheduled
* @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_group($id_scheduled, $id_group) public function insert_scheduled_group($id_scheduled, $id_group)
{ {
$result = $this->_insert('scheduled_group', ['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;
} }
@ -242,28 +283,34 @@
} }
/** /**
* Supprime les liens scheduled/number pour un scheduled précis * Supprime les liens scheduled/number 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_number($id_scheduled) public function delete_scheduled_number($id_scheduled)
{ {
return $this->_delete('scheduled_number', ['id_scheduled' => $id_scheduled]); return $this->_delete('scheduled_number', ['id_scheduled' => $id_scheduled]);
} }
/** /**
* Supprime les liens scheduled/contact pour un scheduled précis * Supprime les liens scheduled/contact 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_contact($id_scheduled) public function delete_scheduled_contact($id_scheduled)
{ {
return $this->_delete('scheduled_contact', ['id_scheduled' => $id_scheduled]); return $this->_delete('scheduled_contact', ['id_scheduled' => $id_scheduled]);
} }
/** /**
* Supprime les liens scheduled/group 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_group($id_scheduled) public function delete_scheduled_group($id_scheduled)

View File

@ -1,45 +1,60 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les sendedes * Cette classe gère les accès bdd pour les sendedes.
*/ */
class Sended extends \descartes\Model class Sended extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$sendeds = $this->_select('sended', ['id' => $id]); $sendeds = $this->_select('sended', ['id' => $id]);
return isset($sendeds[0]) ? $sendeds[0] : false; return isset($sendeds[0]) ? $sendeds[0] : false;
} }
/** /**
* Retourne une liste de sendedes sous forme d'un tableau * Retourne une liste de sendedes 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)
{ {
$sendeds = $this->_select('sended', [], '', false, $limit, $offset); return $this->_select('sended', [], '', false, $limit, $offset);
return $sendeds;
} }
/** /**
* Retourne une liste de sendedes sous forme d'un tableau * Retourne une liste de sendedes 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 sended SELECT * FROM sended
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -49,54 +64,61 @@
} }
/** /**
* Cette fonction retourne les X dernières entrées triées par date * Cette fonction retourne les X dernières entrées triées par date.
*
* @param int $nb_entry : Nombre d'entrée à retourner * @param int $nb_entry : Nombre d'entrée à retourner
*
* @return array : Les dernières entrées * @return array : Les dernières entrées
*/ */
public function get_lasts_by_date($nb_entry) public function get_lasts_by_date($nb_entry)
{ {
$sendeds = $this->_select('sended', [], 'at', true, $nb_entry); return $this->_select('sended', [], 'at', true, $nb_entry);
return $sendeds;
} }
/** /**
* Cette fonction retourne une liste des sended sous forme d'un tableau * Cette fonction retourne une liste des sended sous forme d'un tableau.
*
* @param string $target : Le numéro auquel est envoyé le message * @param string $target : Le numéro auquel est envoyé le message
*
* @return array : La liste des sended * @return array : La liste des sended
*/ */
public function get_by_target($target) public function get_by_target($target)
{ {
$sendeds = $this->_select('sended', ['target' => $target]); return $this->_select('sended', ['target' => $target]);
return $sendeds;
} }
/** /**
* Retourne une liste de sendedes sous forme d'un tableau * Retourne une liste de sendedes 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM sended DELETE FROM sended
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une sendede * Insert une sendede.
*
* @param array $sended : La sendede à insérer avec les champs name, script, admin & admin * @param array $sended : La sendede à 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($sended) public function insert($sended)
{ {
$result = $this->_insert('sended', $sended); $result = $this->_insert('sended', $sended);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -104,18 +126,21 @@
} }
/** /**
* Met à jour une sendede par son id * Met à jour une sendede par son id.
* @param int $id : L'id de la sended à modifier *
* @param int $id : L'id de la sended à modifier
* @param array $sended : Les données à mettre à jour pour la sendede * @param array $sended : Les données à mettre à jour pour la sendede
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $sended) public function update($id, $sended)
{ {
return $this->_update('sended', $sended, ['id' => $id]); return $this->_update('sended', $sended, ['id' => $id]);
} }
/** /**
* Compte le nombre d'entrées dans la table * Compte le nombre d'entrées dans la table.
*
* @return int : Le nombre d'entrées * @return int : Le nombre d'entrées
*/ */
public function count() public function count()
@ -124,8 +149,10 @@
} }
/** /**
* Récupère le nombre de SMS envoyés pour chaque jour depuis une date * Récupère le nombre de SMS envoyés pour chaque jour depuis une date.
*
* @param \DateTime $date : La date depuis laquelle on veux les SMS * @param \DateTime $date : La date depuis laquelle on veux les SMS
*
* @return array : Tableau avec le nombre de SMS depuis la date * @return array : Tableau avec le nombre de SMS depuis la date
*/ */
public function count_by_day_since($date) public function count_by_day_since($date)
@ -137,9 +164,9 @@
GROUP BY at_ymd GROUP BY at_ymd
"; ";
$params = array( $params = [
'date' => $date, 'date' => $date,
); ];
return $this->_run_query($query, $params); return $this->_run_query($query, $params);
} }

View File

@ -1,24 +1,38 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les settinges * Cette classe gère les accès bdd pour les settinges.
*/ */
class Setting extends \descartes\Model class Setting extends \descartes\Model
{ {
/** /**
* Return array of all settings * Return array of all settings.
*/ */
public function all() : array public function all(): array
{ {
return $this->_select('setting', [], '', false); return $this->_select('setting', [], '', false);
} }
/** /**
* Update a setting by his name * Update a setting by his name.
*
* @param mixed $value
*
* @return int : number of modified lines * @return int : number of modified lines
*/ */
public function update(string $name, $value) : int public function update(string $name, $value): int
{ {
return $this->_update('setting', ['value' => $value], ['name' => $name]); return $this->_update('setting', ['value' => $value], ['name' => $name]);
} }

View File

@ -1,56 +1,74 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
/** /**
* Cette classe gère les accès bdd pour les smsstopes * Cette classe gère les accès bdd pour les smsstopes.
*/ */
class SmsStop extends \descartes\Model class SmsStop extends \descartes\Model
{ {
/** /**
* Retourne une entrée par son id * Retourne une entrée par son id.
*
* @param int $id : L'id de l'entrée * @param int $id : L'id de l'entrée
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_id($id) public function get_by_id($id)
{ {
$smsstops = $this->_select('smsstop', ['id' => $id]); $smsstops = $this->_select('smsstop', ['id' => $id]);
return isset($smsstops[0]) ? $smsstops[0] : false; return isset($smsstops[0]) ? $smsstops[0] : false;
} }
/** /**
* Retourne une entrée par son numéro de tel * Retourne une entrée par son numéro de tel.
*
* @param string $number : Le numéro de tél * @param string $number : Le numéro de tél
*
* @return array : L'entrée * @return array : L'entrée
*/ */
public function get_by_number($number) public function get_by_number($number)
{ {
$smsstops = $this->_select('smsstop', ['number' => $number]); $smsstops = $this->_select('smsstop', ['number' => $number]);
return isset($smsstops[0]) ? $smsstops[0] : false; return isset($smsstops[0]) ? $smsstops[0] : false;
} }
/** /**
* Retourne une liste de smsstopes sous forme d'un tableau * Retourne une liste de smsstopes 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)
{ {
$smsstops = $this->_select('smsstop', [], '', false, $limit, $offset); return $this->_select('smsstop', [], '', false, $limit, $offset);
return $smsstops;
} }
/** /**
* Retourne une liste de smsstopes sous forme d'un tableau * Retourne une liste de smsstopes 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 smsstop SELECT * FROM smsstop
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
$generated_in = $this->_generate_in_from_array($ids); $generated_in = $this->_generate_in_from_array($ids);
$query .= $generated_in['QUERY']; $query .= $generated_in['QUERY'];
@ -60,31 +78,37 @@
} }
/** /**
* Retourne une liste de smsstopes sous forme d'un tableau * Retourne une liste de smsstopes 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function delete_by_id($id) public function delete_by_id($id)
{ {
$query = " $query = '
DELETE FROM smsstop DELETE FROM smsstop
WHERE id = :id"; WHERE id = :id';
$params = ['id' => $id]; $params = ['id' => $id];
return $this->_run_query($query, $params, self::ROWCOUNT); return $this->_run_query($query, $params, self::ROWCOUNT);
} }
/** /**
* Insert une smsstope * Insert une smsstope.
*
* @param array $smsstop : La smsstope à insérer avec les champs name, script, admin & admin * @param array $smsstop : La smsstope à 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($smsstop) public function insert($smsstop)
{ {
$result = $this->_insert('smsstop', $smsstop); $result = $this->_insert('smsstop', $smsstop);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -92,9 +116,11 @@
} }
/** /**
* Met à jour une smsstope par son id * Met à jour une smsstope par son id.
* @param int $id : L'id de la smsstop à modifier *
* @param int $id : L'id de la smsstop à modifier
* @param array $smsstop : Les données à mettre à jour pour la smsstope * @param array $smsstop : Les données à mettre à jour pour la smsstope
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $smsstop) public function update($id, $smsstop)
@ -103,7 +129,8 @@
} }
/** /**
* Compte le nombre d'entrées dans la table smsstop * Compte le nombre d'entrées dans la table smsstop.
*
* @return int : Le nombre de smsstop * @return int : Le nombre de smsstop
*/ */
public function count() public function count()

View File

@ -1,11 +1,24 @@
<?php <?php
namespace models;
/*
* This file is part of PHP CS Fixer.
*
* (c) Fabien Potencier <fabien@symfony.com>
* Dariusz Rumiński <dariusz.ruminski@gmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace models;
class User extends \descartes\Model class User extends \descartes\Model
{ {
/** /**
* Retourne un user par son email * Retourne un user par son email.
*
* @param string $email : L'email du user * @param string $email : L'email du user
*
* @return mixed array | false : false si pas de user pour ce mail, sinon le user associé sous forme de tableau * @return mixed array | false : false si pas de user pour ce mail, sinon le user associé sous forme de tableau
*/ */
public function get_by_email($email) public function get_by_email($email)
@ -14,18 +27,22 @@
} }
/** /**
* Return list of user * Return list of user.
* @param int $limit : Number of user to return *
* @param int $limit : Number of user to return
* @param int $offset : Number of user to skip * @param int $offset : Number of user to skip
*/ */
public function list($limit, $offset) public function list($limit, $offset)
{ {
return $this->_select('user', [], '', false, $limit, $offset); return $this->_select('user', [], '', false, $limit, $offset);
} }
/** /**
* Retourne une liste de useres sous forme d'un tableau * Retourne une liste de useres 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
* @param mixed $id
*
* @return int : Le nombre de lignes supprimées * @return int : Le nombre de lignes supprimées
*/ */
public function remove($id) public function remove($id)
@ -34,15 +51,18 @@
} }
/** /**
* Insert un user * Insert un user.
*
* @param array $user : La user à insérer avec les champs name, script, admin & admin * @param array $user : La user à 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($user) public function insert($user)
{ {
$result = $this->_insert('user', $user); $result = $this->_insert('user', $user);
if (!$result) { if (!$result)
{
return false; return false;
} }
@ -50,42 +70,50 @@
} }
/** /**
* Met à jour un user par son id * Met à jour un user par son id.
* @param int $id : L'id de la user à modifier *
* @param int $id : L'id de la user à modifier
* @param array $user : Les données à mettre à jour pour la user * @param array $user : Les données à mettre à jour pour la user
*
* @return int : le nombre de ligne modifiées * @return int : le nombre de ligne modifiées
*/ */
public function update($id, $user) public function update($id, $user)
{ {
return $this->_update('user', $user, ['id' => $id]); return $this->_update('user', $user, ['id' => $id]);
} }
/** /**
* Update a user password by his id * Update a user password by his id.
* @param int $id : User id *
* @param int $id : User id
* @param array $password : The new password of the user * @param array $password : The new password of the user
*
* @return int : Number of modified lines * @return int : Number of modified lines
*/ */
public function update_password($id, $password) public function update_password($id, $password)
{ {
return $this->_update('user', ['password' => $password], ['id' => $id]); return $this->_update('user', ['password' => $password], ['id' => $id]);
} }
/** /**
* Update a user transfer property value by his id * Update a user transfer property value by his id.
* @param int $id : User id *
* @param int $id : User id
* @param array $transfer : The new transfer property value * @param array $transfer : The new transfer property value
*
* @return int : Number of modified lines * @return int : Number of modified lines
*/ */
public function update_transfer($id, $transfer) public function update_transfer($id, $transfer)
{ {
return $this->_update('user', ['transfer' => $transfer], ['id' => $id]); return $this->_update('user', ['transfer' => $transfer], ['id' => $id]);
} }
/** /**
* Update a user email by his id * Update a user email by his id.
* @param int $id : User id *
* @param int $id : User id
* @param array $email : The new email * @param array $email : The new email
*
* @return int : Number of modified lines * @return int : Number of modified lines
*/ */
public function update_email($id, $email) public function update_email($id, $email)

File diff suppressed because one or more lines are too long

View File

@ -27,7 +27,11 @@ $config = PhpCsFixer\Config::create()
'list_syntax' => ['syntax' => 'long'], 'list_syntax' => ['syntax' => 'long'],
'mb_str_functions' => true, 'mb_str_functions' => true,
'method_separation' => true, 'method_separation' => true,
'braces' => ['position_after_anonymous_constructs' => 'next', 'position_after_control_structures' => 'next', 'position_after_functions_and_oop_constructs' => 'next'], 'braces' => [
'position_after_anonymous_constructs' => 'next',
'position_after_control_structures' => 'next',
'position_after_functions_and_oop_constructs' => 'next'
],
]) ])
->setFinder($finder) ->setFinder($finder)
; ;

View File

@ -13,13 +13,13 @@
} }
$lint_commands = [ $lint_commands = [
'php ' . __DIR__ . '/php-cs-fixer.phar -v --dry-run fix ' . __DIR__ . '/../../controllers/', 'php ' . __DIR__ . '/php-cs-fixer.phar -v --dry-run --config="' . __DIR__ . '/php_cs.config" fix ' . __DIR__ . '/../../controllers/',
'php ' . __DIR__ . '/php-cs-fixer.phar -v --dry-run fix ' . __DIR__ . '/../../models/', 'php ' . __DIR__ . '/php-cs-fixer.phar -v --dry-run --config="' . __DIR__ . '/php_cs.config" fix ' . __DIR__ . '/../../models/',
]; ];
$fix_commands = [ $fix_commands = [
'php ' . __DIR__ . '/php-cs-fixer.phar fix ' . __DIR__ . '/../../controllers/', 'php ' . __DIR__ . '/php-cs-fixer.phar --config="' . __DIR__ . '/php_cs.config" fix ' . __DIR__ . '/../../controllers/',
'php ' . __DIR__ . '/php-cs-fixer.phar fix ' . __DIR__ . '/../../models/', 'php ' . __DIR__ . '/php-cs-fixer.phar --config="' . __DIR__ . '/php_cs.config" fix ' . __DIR__ . '/../../models/',
]; ];