mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-04-21 08:56:27 +02:00
Fix style and add config file to php-cs-fixer
This commit is contained in:
parent
485a0cb6fd
commit
fab9e256ab
40 changed files with 2360 additions and 1128 deletions
|
@ -1,10 +1,21 @@
|
|||
<?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
|
||||
{
|
||||
public $internal_user;
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$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()
|
||||
{
|
||||
|
@ -22,127 +33,161 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* Update connected user password
|
||||
* Update connected user password.
|
||||
*
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param string $_POST['password'] : The new password
|
||||
*
|
||||
* @return void;
|
||||
*/
|
||||
public function update_password($csrf)
|
||||
{
|
||||
$password = $_POST['password'] ?? false;
|
||||
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le mot de passe a bien été mis à jour.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user mail transfer property
|
||||
* Update user mail transfer property.
|
||||
*
|
||||
* @param $csrf : CSRF token
|
||||
* @param string $_POST['transfer'] : New transfer property value
|
||||
*/
|
||||
public function update_transfer($csrf)
|
||||
{
|
||||
$transfer = $_POST['transfer'] ?? false;
|
||||
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
$_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'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user email
|
||||
* Update user email.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
public function update_email($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
$email = $_POST['email'] ?? false;
|
||||
|
||||
if (!$email) {
|
||||
|
||||
if (!$email)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez fournir une adresse e-mail !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
$_SESSION['user']['email'] = $email;
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'email a bien été mis à jour.');
|
||||
|
||||
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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Account', 'show'));
|
||||
}
|
||||
|
||||
|
@ -150,13 +195,13 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* Logout a user and redirect to login page
|
||||
* @return null
|
||||
* Logout a user and redirect to login page.
|
||||
*/
|
||||
public function logout()
|
||||
{
|
||||
session_unset();
|
||||
session_destroy();
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Connect', 'login'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des commandes
|
||||
* Page des commandes.
|
||||
*/
|
||||
class Command extends \descartes\Controller
|
||||
{
|
||||
|
@ -15,12 +26,14 @@ namespace controllers\publics;
|
|||
|
||||
$this->internal_command = new \controllers\internals\Command($bdd);
|
||||
$this->internal_event = new \controllers\internals\Event($bdd);
|
||||
|
||||
|
||||
\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)
|
||||
{
|
||||
|
@ -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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_command->delete($id);
|
||||
}
|
||||
|
||||
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
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()
|
||||
{
|
||||
|
@ -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
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
global $db;
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
|
||||
|
||||
$commands = $this->internal_command->get_by_ids($ids);
|
||||
|
||||
$this->render('command/edit', array(
|
||||
$this->render('command/edit', [
|
||||
'commands' => $commands,
|
||||
));
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction insert une nouvelle commande
|
||||
* Cette fonction insert une nouvelle commande.
|
||||
*
|
||||
* @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 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;
|
||||
*/
|
||||
public function create($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -95,49 +120,61 @@ namespace controllers\publics;
|
|||
$script = $_POST['script'] ?? 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.');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('commands', 'add'));
|
||||
}
|
||||
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'La commande a bien été crée.');
|
||||
|
||||
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 array $_POST['commands'] : Un tableau des commandes avec leur nouvelle valeurs
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$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']);
|
||||
$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.');
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Toutes les commandes ont été modifiées avec succès.');
|
||||
$this->redirect(\descartes\Router::url('Command', 'list'));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,39 +1,51 @@
|
|||
<?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
|
||||
{
|
||||
private $internal_user;
|
||||
|
||||
/**
|
||||
* Cette fonction est appelée avant toute les autres :
|
||||
* Cette fonction est appelée avant toute les autres :.
|
||||
*
|
||||
* @return void;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_user = new \controllers\internals\User($bdd);
|
||||
|
||||
|
||||
\controllers\internals\Tool::verifyconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la fenetre de connexion
|
||||
* Cette fonction retourne la fenetre de connexion.
|
||||
*/
|
||||
public function login()
|
||||
{
|
||||
$this->render('connect/login');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cette fonction connecte un utilisateur, et le redirige sur la page d'accueil
|
||||
* @param string $_POST['mail'] : L'email de l'utilisateur
|
||||
* 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['password'] : Le mot de passe de l'utilisateur
|
||||
* @return void
|
||||
*/
|
||||
public function connection()
|
||||
{
|
||||
|
@ -41,21 +53,23 @@
|
|||
$password = $_POST['password'] ?? false;
|
||||
|
||||
$user = $this->internal_user->check_credentials($email, $password);
|
||||
if (!$user) {
|
||||
if (!$user)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Email ou mot de passe invalide.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Connect', 'login'));
|
||||
}
|
||||
|
||||
$_SESSION['connect'] = true;
|
||||
$_SESSION['user'] = $user;
|
||||
$_SESSION['csrf'] = str_shuffle(uniqid().uniqid());
|
||||
|
||||
|
||||
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;
|
||||
*/
|
||||
public function forget_password()
|
||||
|
@ -64,24 +78,29 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* Cette fonction envoi un email contenant un lien pour re-générer un password oublié
|
||||
* @param string $csrf : jeton csrf
|
||||
* Cette fonction envoi un email contenant un lien pour re-générer un password oublié.
|
||||
*
|
||||
* @param string $csrf : jeton csrf
|
||||
* @param string $_POST['email'] : L'email pour lequel on veut envoyer un nouveau password
|
||||
*/
|
||||
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 !');
|
||||
$this->redirect(\descartes\Router::url('Connect', 'forget_password'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$email = $_POST['email'] ?? false;
|
||||
$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.');
|
||||
$this->redirect(\descartes\Router::url('Connect', 'forget_password'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -96,9 +115,10 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* 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 optionnal $_POST['password'] : Le nouveau password à utiliser
|
||||
*/
|
||||
public function reset_password($user_id, $token)
|
||||
|
@ -106,22 +126,24 @@
|
|||
$password = $_POST['password'] ?? false;
|
||||
|
||||
$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');
|
||||
}
|
||||
|
||||
if (!$password) {
|
||||
if (!$password)
|
||||
{
|
||||
return $this->render('connect/reset-password');
|
||||
}
|
||||
|
||||
$this->internal_user->update_password($user_id, $password);
|
||||
|
||||
return $this->render('connect/reset-password-done');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cette fonction déconnecte un utilisateur et le renvoie sur la page d'accueil
|
||||
* @return void
|
||||
* Cette fonction déconnecte un utilisateur et le renvoie sur la page d'accueil.
|
||||
*/
|
||||
public function logout()
|
||||
{
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des contacts
|
||||
* Page des contacts.
|
||||
*/
|
||||
class Contact extends \descartes\Controller
|
||||
{
|
||||
|
@ -11,21 +22,24 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_contact = new \controllers\internals\Contact($bdd);
|
||||
$this->internal_event = new \controllers\internals\Event($bdd);
|
||||
|
||||
|
||||
\controllers\internals\Tool::verifyconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne tous les 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)
|
||||
{
|
||||
|
@ -33,30 +47,37 @@ namespace controllers\publics;
|
|||
$contacts = $this->internal_contact->get_list(25, $page);
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_contact->delete($id);
|
||||
}
|
||||
|
||||
$this->redirect(\descartes\Router::url('Contact', 'list'));
|
||||
|
||||
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()
|
||||
{
|
||||
|
@ -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
|
||||
*/
|
||||
public function edit()
|
||||
|
@ -74,77 +96,95 @@ namespace controllers\publics;
|
|||
|
||||
$contacts = $this->internal_contact->get_by_ids($ids);
|
||||
|
||||
$this->render('contact/edit', array(
|
||||
$this->render('contact/edit', [
|
||||
'contacts' => $contacts,
|
||||
));
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction insert un nouveau contact
|
||||
* Cette fonction insert un nouveau contact.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
public function create($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'add'));
|
||||
}
|
||||
|
||||
|
||||
$name = $_POST['name'] ?? false;
|
||||
$number = $_POST['number'] ?? false;
|
||||
|
||||
if (!$name || !$number) {
|
||||
if (!$name || !$number)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'add'));
|
||||
}
|
||||
|
||||
$number = \controllers\internals\Tool::parse_phone($number);
|
||||
if (!$number) {
|
||||
if (!$number)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Numéro de téléphone incorrect.');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'add'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le contact a bien été créé.');
|
||||
|
||||
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 array $_POST['contacts'] : Un tableau des contactes avec leur nouvelle valeurs
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'list'));
|
||||
}
|
||||
|
||||
$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']);
|
||||
}
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Contact', 'list'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les contacts ont été modifiés avec succès.');
|
||||
|
||||
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()
|
||||
{
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* 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
|
||||
{
|
||||
|
@ -16,13 +27,14 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_sended = new \controllers\internals\Sended($bdd);
|
||||
$this->internal_received = new \controllers\internals\Received($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_command = new \controllers\internals\Command($bdd);
|
||||
$this->internal_event = new \controllers\internals\Event($bdd);
|
||||
|
||||
|
||||
\controllers\internals\Tool::verifyconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction est un alias de show
|
||||
* Cette fonction est un alias de show.
|
||||
*
|
||||
* @return void;
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
//Recupération des nombres des 4 panneaux d'accueil
|
||||
$nb_contacts = $this->internal_contact->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);
|
||||
|
||||
//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->sub(new \DateInterval('P7D'));
|
||||
$increment_day = new \DateInterval('P1D');
|
||||
$i = 0;
|
||||
|
||||
//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);
|
||||
$i ++;
|
||||
++$i;
|
||||
$date_f = $today_less_7_day->format('Y-m-d');
|
||||
$array_area_chart[$date_f] = array(
|
||||
$array_area_chart[$date_f] = [
|
||||
'period' => $date_f,
|
||||
'sendeds' => 0,
|
||||
'receiveds' => 0,
|
||||
);
|
||||
];
|
||||
}
|
||||
|
||||
$total_sendeds = 0;
|
||||
$total_receiveds = 0;
|
||||
|
||||
//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;
|
||||
$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;
|
||||
$total_receiveds += $nb_received;
|
||||
}
|
||||
|
@ -105,8 +121,7 @@ namespace controllers\publics;
|
|||
|
||||
$array_area_chart = array_values($array_area_chart);
|
||||
|
||||
|
||||
$this->render('dashboard/show', array(
|
||||
$this->render('dashboard/show', [
|
||||
'nb_contacts' => $nb_contacts,
|
||||
'nb_groups' => $nb_groups,
|
||||
'nb_scheduleds' => $nb_scheduleds,
|
||||
|
@ -119,6 +134,6 @@ namespace controllers\publics;
|
|||
'receiveds' => $receiveds,
|
||||
'events' => $events,
|
||||
'datas_area_chart' => json_encode($array_area_chart),
|
||||
));
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des discussions
|
||||
* Page des discussions.
|
||||
*/
|
||||
class Discussion extends \descartes\Controller
|
||||
{
|
||||
|
@ -13,59 +24,63 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_sended = new \controllers\internals\Sended($bdd);
|
||||
$this->internal_scheduled = new \controllers\internals\Scheduled($bdd);
|
||||
$this->internal_received = new \controllers\internals\Received($bdd);
|
||||
$this->internal_contact = new \controllers\internals\Contact($bdd);
|
||||
|
||||
|
||||
\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()
|
||||
{
|
||||
$discussions = $this->internal_received->get_discussions();
|
||||
|
||||
foreach ($discussions as $key => $discussion) {
|
||||
if (!$contact = $this->internal_contact->get_by_number($discussion['number'])) {
|
||||
foreach ($discussions as $key => $discussion)
|
||||
{
|
||||
if (!$contact = $this->internal_contact->get_by_number($discussion['number']))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$discussions[$key]['contact'] = $contact['name'];
|
||||
}
|
||||
|
||||
$this->render('discussion/list', array(
|
||||
$this->render('discussion/list', [
|
||||
'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
|
||||
*/
|
||||
public function show($number)
|
||||
{
|
||||
$contact = $this->internal_contact->get_by_number($number);
|
||||
|
||||
|
||||
$this->render('discussion/show', array(
|
||||
$this->render('discussion/show', [
|
||||
'number' => $number,
|
||||
'contact' => $contact,
|
||||
));
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* 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 $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)
|
||||
|
@ -79,49 +94,56 @@ namespace controllers\publics;
|
|||
|
||||
$messages = [];
|
||||
|
||||
foreach ($sendeds as $sended) {
|
||||
$messages[] = array(
|
||||
foreach ($sendeds as $sended)
|
||||
{
|
||||
$messages[] = [
|
||||
'date' => htmlspecialchars($sended['at']),
|
||||
'text' => htmlspecialchars($sended['content']),
|
||||
'type' => 'sended',
|
||||
'status' => ($sended['delivered'] ? 'delivered' : ($sended['failed'] ? 'failed' : '')),
|
||||
);
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($receiveds as $received) {
|
||||
$messages[] = array(
|
||||
foreach ($receiveds as $received)
|
||||
{
|
||||
$messages[] = [
|
||||
'date' => htmlspecialchars($received['at']),
|
||||
'text' => htmlspecialchars($received['content']),
|
||||
'type' => 'received',
|
||||
'md5' => md5($received['at'] . $received['content']),
|
||||
);
|
||||
'md5' => md5($received['at'].$received['content']),
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($scheduleds as $scheduled) {
|
||||
$messages[] = array(
|
||||
foreach ($scheduleds as $scheduled)
|
||||
{
|
||||
$messages[] = [
|
||||
'date' => htmlspecialchars($scheduled['at']),
|
||||
'text' => htmlspecialchars($scheduled['content']),
|
||||
'type' => 'inprogress',
|
||||
);
|
||||
];
|
||||
}
|
||||
|
||||
//On va trier le tableau des messages
|
||||
usort($messages, function ($a, $b) {
|
||||
return strtotime($a["date"]) - strtotime($b["date"]);
|
||||
usort($messages, function ($a, $b)
|
||||
{
|
||||
return strtotime($a['date']) - strtotime($b['date']);
|
||||
});
|
||||
|
||||
//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]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction permet d'envoyer facilement un sms à un numéro donné
|
||||
* @param string $csrf : Le jeton csrf
|
||||
* Cette fonction permet d'envoyer facilement un sms à un numéro donné.
|
||||
*
|
||||
* @param string $csrf : Le jeton csrf
|
||||
* @param string $_POST['content'] : Le contenu du 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
|
||||
*/
|
||||
public function send($csrf)
|
||||
|
@ -129,41 +151,49 @@ namespace controllers\publics;
|
|||
$return = ['success' => true, 'message' => ''];
|
||||
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
$return['success'] = false;
|
||||
$return['message'] = 'Jeton CSRF invalide';
|
||||
echo json_encode($return);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$now = new \DateTime();
|
||||
$now = $now->format('Y-m-d H:i:s');
|
||||
|
||||
|
||||
$scheduled = [];
|
||||
$scheduled['at'] = $now;
|
||||
$scheduled['content'] = $_POST['content'] ?? '';
|
||||
$numbers = $_POST['numbers'] ?? false;
|
||||
|
||||
if (!$numbers) {
|
||||
if (!$numbers)
|
||||
{
|
||||
$return['success'] = false;
|
||||
$return['message'] = 'Vous devez renseigner un numéro valide';
|
||||
echo json_encode($return);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->internal_scheduled->create($scheduled, $numbers)) {
|
||||
if (!$this->internal_scheduled->create($scheduled, $numbers))
|
||||
{
|
||||
$return['success'] = false;
|
||||
$return['message'] = 'Impossible de créer le Sms';
|
||||
echo json_encode($return);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
echo json_encode($return);
|
||||
|
||||
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
|
||||
*/
|
||||
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é
|
||||
$sendeds = [];
|
||||
foreach ($_SESSION['discussion_wait_progress'] as $key => $id_scheduled) {
|
||||
foreach ($_SESSION['discussion_wait_progress'] as $key => $id_scheduled)
|
||||
{
|
||||
$found = false;
|
||||
foreach ($scheduleds as $scheduled) {
|
||||
if ($id_scheduled == $scheduled['id']) {
|
||||
foreach ($scheduleds as $scheduled)
|
||||
{
|
||||
if ($id_scheduled === $scheduled['id'])
|
||||
{
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
if (!$found)
|
||||
{
|
||||
unset($_SESSION['discussion_wait_progress'][$key]);
|
||||
$sendeds[] = $id_scheduled;
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($sendeds);
|
||||
|
||||
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
|
||||
*
|
||||
* @return string : json string Un tableau avec les messages
|
||||
*/
|
||||
public function checkreceiveds($number)
|
||||
{
|
||||
$now = new \DateTime();
|
||||
$now = $now->format('Y-m-d H:i');
|
||||
|
||||
|
||||
$_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);
|
||||
|
@ -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
|
||||
$_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
|
||||
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'];
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -222,7 +262,7 @@ namespace controllers\publics;
|
|||
|
||||
//On met à jour la date de dernière verif
|
||||
$_SESSION['discussion_last_checkreceiveds'] = $now;
|
||||
|
||||
|
||||
echo json_encode($receiveds);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des events
|
||||
* Page des events.
|
||||
*/
|
||||
class Event extends \descartes\Controller
|
||||
{
|
||||
|
@ -10,48 +21,59 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_event = new \controllers\internals\Event($bdd);
|
||||
|
||||
\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)
|
||||
{
|
||||
$page = (int) $page;
|
||||
$limit = 25;
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Event', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_event->delete($id);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des groups
|
||||
* Page des groups.
|
||||
*/
|
||||
class Group extends \descartes\Controller
|
||||
{
|
||||
|
@ -12,13 +23,14 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
|
||||
|
||||
$this->internal_group = new \controllers\internals\Group($bdd);
|
||||
$this->internal_contact = new \controllers\internals\Contact($bdd);
|
||||
$this->internal_event = new \controllers\internals\Event($bdd);
|
||||
|
@ -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)
|
||||
{
|
||||
$page = (int) $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']);
|
||||
$groups[$key]['nb_contacts'] = count($contacts);
|
||||
$groups[$key]['nb_contacts'] = \count($contacts);
|
||||
}
|
||||
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
$this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -59,11 +79,12 @@ namespace controllers\publics;
|
|||
$this->internal_group->delete($ids);
|
||||
|
||||
$this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
|
||||
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()
|
||||
{
|
||||
|
@ -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
|
||||
*/
|
||||
public function edit()
|
||||
|
@ -80,78 +102,95 @@ namespace controllers\publics;
|
|||
|
||||
$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']);
|
||||
}
|
||||
|
||||
$this->render('group/edit', array(
|
||||
$this->render('group/edit', [
|
||||
'groups' => $groups,
|
||||
));
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction insert un nouveau group
|
||||
* Cette fonction insert un nouveau group.
|
||||
*
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param string $_POST['name'] : Le nom du group
|
||||
* @param array $_POST['contacts'] : Les ids des contacts à mettre dans le group
|
||||
* @param string $_POST['name'] : Le nom du group
|
||||
* @param array $_POST['contacts'] : Les ids des contacts à mettre dans le group
|
||||
*/
|
||||
public function create($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'add'));
|
||||
}
|
||||
|
||||
|
||||
$name = $_POST['name'] ?? false;
|
||||
$contacts_ids = $_POST['contacts'] ?? false;
|
||||
|
||||
if (!$name || !$contacts_ids) {
|
||||
if (!$name || !$contacts_ids)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Des champs sont manquants !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'add'));
|
||||
}
|
||||
|
||||
$id_group = $this->internal_group->create($name, $contacts_ids);
|
||||
if (!$id_group) {
|
||||
if (!$id_group)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce group.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'add'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le group a bien été créé.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une group
|
||||
* Cette fonction met à jour une group.
|
||||
*
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param array $_POST['groups'] : Un tableau des groups avec leur nouvelle valeurs & une entrée 'contacts_id' avec les ids des contacts pour chaque group
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
$this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$groups = $_POST['groups'] ?? [];
|
||||
|
||||
$nb_groups_update = 0;
|
||||
foreach ($groups as $id => $group) {
|
||||
foreach ($groups as $id => $group)
|
||||
{
|
||||
$nb_groups_update += (int) $this->internal_group->update($id, $group['name'], $group['contacts_ids']);
|
||||
}
|
||||
|
||||
if ($nb_groups_update != count($groups)) {
|
||||
if ($nb_groups_update !== \count($groups))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains groups n\'ont pas pu êtres mis à jour.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les groups ont été modifiés avec succès.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Group', 'list'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la liste des groups sous forme JSON
|
||||
* Cette fonction retourne la liste des groups sous forme JSON.
|
||||
*/
|
||||
public function json_list()
|
||||
{
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des receiveds
|
||||
* Page des receiveds.
|
||||
*/
|
||||
class Received extends \descartes\Controller
|
||||
{
|
||||
|
@ -11,7 +22,8 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
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)
|
||||
{
|
||||
|
@ -32,67 +46,82 @@ namespace controllers\publics;
|
|||
$limit = 25;
|
||||
$receiveds = $this->internal_received->get_list($limit, $page);
|
||||
|
||||
foreach ($receiveds as $key => $received) {
|
||||
if (!$contact = $this->internal_contact->get_by_number($received['origin'])) {
|
||||
foreach ($receiveds as $key => $received)
|
||||
{
|
||||
if (!$contact = $this->internal_contact->get_by_number($received['origin']))
|
||||
{
|
||||
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
|
||||
*/
|
||||
public function popup()
|
||||
{
|
||||
$now = new \DateTime();
|
||||
$receiveds = $this->internal_received->get_since_by_date($now->format('Y-m-d'));
|
||||
|
||||
foreach ($receiveds as $key => $received) {
|
||||
if (!$contact = $this->internal_contact->get_by_number($received['origin'])) {
|
||||
|
||||
foreach ($receiveds as $key => $received)
|
||||
{
|
||||
if (!$contact = $this->internal_contact->get_by_number($received['origin']))
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
$newly_receiveds = array_slice($receiveds, $_SESSION['popup_nb_receiveds']);
|
||||
|
||||
$newly_receiveds = \array_slice($receiveds, $_SESSION['popup_nb_receiveds']);
|
||||
|
||||
$_SESSION['popup_nb_receiveds'] = $nb_received;
|
||||
|
||||
echo json_encode($newly_receiveds);
|
||||
|
||||
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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Received', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_received->delete($id);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des scheduleds
|
||||
* Page des scheduleds.
|
||||
*/
|
||||
class Scheduled extends \descartes\Controller
|
||||
{
|
||||
|
@ -10,7 +21,8 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
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)
|
||||
{
|
||||
|
@ -30,21 +44,27 @@ namespace controllers\publics;
|
|||
$scheduleds = $this->internal_scheduled->get_list(25, $page);
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $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()
|
||||
{
|
||||
|
@ -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
|
||||
*/
|
||||
public function edit()
|
||||
|
@ -76,79 +97,93 @@ namespace controllers\publics;
|
|||
$scheduleds = $this->internal_scheduled->get_by_ids($ids);
|
||||
|
||||
//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]['contacts'] = [];
|
||||
$scheduleds[$key]['groups'] = [];
|
||||
|
||||
|
||||
$numbers = $this->internal_scheduled->get_numbers($scheduled['id']);
|
||||
foreach ($numbers as $number) {
|
||||
foreach ($numbers as $number)
|
||||
{
|
||||
$scheduleds[$key]['numbers'][] = $number['number'];
|
||||
}
|
||||
|
||||
|
||||
$contacts = $this->internal_scheduled->get_contacts($scheduled['id']);
|
||||
foreach ($contacts as $contact) {
|
||||
foreach ($contacts as $contact)
|
||||
{
|
||||
$scheduleds[$key]['contacts'][] = (int) $contact['id'];
|
||||
}
|
||||
|
||||
|
||||
$groups = $this->internal_scheduled->get_groups($scheduled['id']);
|
||||
foreach ($groups as $group) {
|
||||
foreach ($groups as $group)
|
||||
{
|
||||
$scheduleds[$key]['groups'][] = (int) $group['id'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->render('scheduled/edit', array(
|
||||
$this->render('scheduled/edit', [
|
||||
'scheduleds' => $scheduleds,
|
||||
));
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction insert un nouveau scheduled
|
||||
* Cette fonction insert un nouveau scheduled.
|
||||
*
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param string $_POST['name'] : Le nom 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['name'] : Le nom 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['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)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
|
||||
}
|
||||
|
||||
|
||||
$date = $_POST['date'] ?? false;
|
||||
$content = $_POST['content'] ?? false;
|
||||
$numbers = $_POST['numbers'] ?? [];
|
||||
$contacts = $_POST['contacts'] ?? [];
|
||||
$groups = $_POST['groups'] ?? [];
|
||||
|
||||
if (!$content) {
|
||||
if (!$content)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous ne pouvez pas créer un Sms sans message.');
|
||||
|
||||
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.');
|
||||
|
||||
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);
|
||||
|
||||
if (!$number) {
|
||||
if (!$number)
|
||||
{
|
||||
unset($numbers[$key]);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'add'));
|
||||
}
|
||||
|
||||
|
@ -159,62 +194,79 @@ namespace controllers\publics;
|
|||
'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.');
|
||||
|
||||
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'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une schedulede
|
||||
* Cette fonction met à jour une schedulede.
|
||||
*
|
||||
* @param $csrf : Le jeton CSRF
|
||||
* @param array $_POST['scheduleds'] : Un tableau des scheduledes avec leur nouvelle valeurs + les numbers, contacts et groups liées
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
|
||||
}
|
||||
|
||||
|
||||
$scheduleds = $_POST['scheduleds'] ?? [];
|
||||
|
||||
$all_update_ok = true;
|
||||
|
||||
foreach ($scheduleds as $id_scheduled => $scheduled) {
|
||||
foreach ($scheduleds as $id_scheduled => $scheduled)
|
||||
{
|
||||
$date = $scheduled['date'] ?? false;
|
||||
$content = $scheduled['content'] ?? false;
|
||||
$numbers = $scheduled['numbers'] ?? [];
|
||||
$contacts = $scheduled['contacts'] ?? [];
|
||||
$groups = $scheduled['groups'] ?? [];
|
||||
|
||||
if (!$content) {
|
||||
if (!$content)
|
||||
{
|
||||
$all_update_ok = false;
|
||||
|
||||
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;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($numbers as $key => $number) {
|
||||
|
||||
foreach ($numbers as $key => $number)
|
||||
{
|
||||
$number = \controllers\internals\Tool::parse_phone($number);
|
||||
|
||||
if (!$number) {
|
||||
if (!$number)
|
||||
{
|
||||
unset($numbers[$key]);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$numbers[$key] = $number;
|
||||
}
|
||||
|
||||
if (!$numbers && !$contacts && !$groups) {
|
||||
if (!$numbers && !$contacts && !$groups)
|
||||
{
|
||||
$all_update_ok = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -231,18 +283,23 @@ namespace controllers\publics;
|
|||
'groups_ids' => $groups,
|
||||
];
|
||||
|
||||
if (!$this->internal_scheduled->update([$scheduled])) {
|
||||
if (!$this->internal_scheduled->update([$scheduled]))
|
||||
{
|
||||
$all_update_ok = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$all_update_ok) {
|
||||
if (!$all_update_ok)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Certains Sms n\'ont pas pu êtres mis à jour.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Tous les Sms ont été mis à jour.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Scheduled', 'list'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des sendeds
|
||||
* Page des sendeds.
|
||||
*/
|
||||
class Sended extends \descartes\Controller
|
||||
{
|
||||
|
@ -10,7 +21,8 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
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)
|
||||
{
|
||||
$page = (int) $page;
|
||||
$limit = 25;
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Sended', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_sended->delete($id);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des settings
|
||||
* Page des settings.
|
||||
*/
|
||||
class Setting extends \descartes\Controller
|
||||
{
|
||||
|
@ -13,51 +24,61 @@ namespace controllers\publics;
|
|||
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
|
||||
$this->internal_setting = new \controllers\internals\Setting($bdd);
|
||||
|
||||
|
||||
\controllers\internals\Tool::verifyconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all settings to administrate them
|
||||
* Return all settings to administrate them.
|
||||
*/
|
||||
public function 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 $csrf : CSRF token
|
||||
* @param string $_POST['setting_value'] : Setting's new value
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
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 !');
|
||||
|
||||
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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Setting', 'show'));
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Setting', 'show'));
|
||||
}
|
||||
|
||||
$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.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Setting', 'show'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'Le réglage a bien été mis à jour.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('Setting', 'show'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
<?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;
|
||||
|
||||
/**
|
||||
* Page des smsstops
|
||||
* Page des smsstops.
|
||||
*/
|
||||
class SmsStop extends \descartes\Controller
|
||||
{
|
||||
|
@ -10,7 +21,8 @@ namespace controllers\publics;
|
|||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
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)
|
||||
{
|
||||
$page = (int) $page;
|
||||
$limit = 25;
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
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" !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('SmsStop', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $id)
|
||||
{
|
||||
$this->internal_sms_stop->delete($id);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,28 @@
|
|||
<?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
|
||||
{
|
||||
private $internal_user;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
*/
|
||||
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)
|
||||
{
|
||||
|
@ -30,26 +44,34 @@ class User extends \descartes\Controller
|
|||
$users = $this->internal_user->list(25, $page);
|
||||
$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 mixed $csrf
|
||||
*
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'list'));
|
||||
}
|
||||
|
||||
if (!\controllers\internals\Tool::is_admin()) {
|
||||
if (!\controllers\internals\Tool::is_admin())
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez être administrateur pour supprimer un utilisateur !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'list'));
|
||||
}
|
||||
|
||||
$ids = $_GET['ids'] ?? [];
|
||||
foreach ($ids as $id) {
|
||||
foreach ($ids as $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()
|
||||
{
|
||||
|
@ -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 string $_POST['email'] : L'email de l'utilisateur
|
||||
* @param string $_POST['email_confirm'] : Verif de l'email de l'utilisateur
|
||||
* @param optional string $_POST['password'] : Le mot de passe de l'utilisateur (si vide, généré automatiquement)
|
||||
* @param optional string $_POST['password_confirm'] : Confirmation du mot de passe de l'utilisateur
|
||||
* @param optional boolean $_POST['admin'] : Si vrai, l'utilisateur est admin, si vide non
|
||||
* @param string $_POST['email'] : L'email de l'utilisateur
|
||||
* @param string $_POST['email_confirm'] : Verif de l'email de l'utilisateur
|
||||
* @param optional string $_POST['password'] : Le mot de passe de l'utilisateur (si vide, généré automatiquement)
|
||||
* @param optional string $_POST['password_confirm'] : Confirmation du mot de passe de l'utilisateur
|
||||
* @param optional boolean $_POST['admin'] : Si vrai, l'utilisateur est admin, si vide non
|
||||
*/
|
||||
public function create($csrf)
|
||||
{
|
||||
if (!$this->verify_csrf($csrf)) {
|
||||
if (!$this->verify_csrf($csrf))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Jeton CSRF invalid !');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'add'));
|
||||
}
|
||||
|
||||
|
||||
$email = $_POST['email'] ?? false;
|
||||
$password = $_POST['password'] ?? \controllers\internals\Tool::generate_password(rand(6, 12));
|
||||
$admin = $_POST['admin'] ?? false;
|
||||
|
||||
if (!$email) {
|
||||
if (!$email)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Vous devez au moins fournir une adresse e-mail pour l\'utilisateur.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'add'));
|
||||
}
|
||||
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'L\'adresse e-mail n\'est pas valide.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'add'));
|
||||
}
|
||||
|
||||
$email_send = \controllers\internals\Tool::send_email($email, EMAIL_CREATE_USER, ['email' => $email, 'password' => $password]);
|
||||
if (!$email_send) {
|
||||
if (!$email_send)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible d\'envoyer l\'e-mail à l\'utilisateur, le compte n\'a donc pas été créé.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'add'));
|
||||
}
|
||||
|
||||
$user_id = $this->internal_user->create($email, $password, $admin);
|
||||
if (!$user_id) {
|
||||
if (!$user_id)
|
||||
{
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('danger', 'Impossible de créer ce user.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'add'));
|
||||
}
|
||||
|
||||
\modules\DescartesSessionMessages\internals\DescartesSessionMessages::push('success', 'L\'utilisateur a bien été créé.');
|
||||
|
||||
return $this->redirect(\descartes\Router::url('User', 'list'));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue