On passe au nouveau système de framework !
This commit is contained in:
parent
acdbb0a407
commit
000ee8f2f2
|
@ -32,7 +32,7 @@
|
|||
global $db;
|
||||
|
||||
//Recupération des commandes
|
||||
$commands = $db->getAll('commands');
|
||||
$commands = $db->getFromTableWhere('commands');
|
||||
|
||||
$this->render('commands', array(
|
||||
'commands' => $commands,
|
||||
|
@ -42,24 +42,24 @@
|
|||
|
||||
/**
|
||||
* Cette fonction va supprimer une liste de commands
|
||||
* @return void;
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete()
|
||||
public function delete(...$ids)
|
||||
{
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//Create de l'object de base de données
|
||||
global $db;
|
||||
|
||||
$commands_ids = $_GET;
|
||||
$db->deleteCommandsIn($commands_ids);
|
||||
$db->deleteCommandsIn($ids);
|
||||
header('Location: ' . $this->generateUrl('commands'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,14 +71,14 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la page d'édition des contacts
|
||||
* Cette fonction retourne la page d'édition des commandes
|
||||
* @param int... $ids : Les id des commandes à editer
|
||||
*/
|
||||
public function edit()
|
||||
public function edit(...$ids)
|
||||
{
|
||||
global $db;
|
||||
|
||||
|
||||
$commands = $db->getCommandsIn($_GET);
|
||||
$commands = $db->getCommandsIn($ids);
|
||||
$this->render('editCommands', array(
|
||||
'commands' => $commands,
|
||||
));
|
||||
|
@ -86,72 +86,66 @@
|
|||
|
||||
/**
|
||||
* Cette fonction insert une nouvelle 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)
|
||||
* @return boolean;
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll'));
|
||||
return true;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
$nom = $_POST['name'];
|
||||
$script = $_POST['script'];
|
||||
$admin = (isset($_POST['admin']) ? $_POST['admin'] : false);
|
||||
if ($db->createCommand($nom, $script, $admin))
|
||||
{
|
||||
$db->createEvent('COMMAND_ADD', 'Ajout commande : ' . $nom . ' => ' . $script);
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll', array(
|
||||
'successmessage' => 'La commande a bien été créée.'
|
||||
)));
|
||||
|
||||
return true;
|
||||
if (!$db->insertIntoTable('commands', ['name' => $nom, 'script' => $script, 'admin' => $admin]))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible créer cette commande.';
|
||||
header('Location: ' . $this->generateUrl('commands', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('commands', 'add', array(
|
||||
'errormessage' => 'Impossible créer cette commande.'
|
||||
)));
|
||||
return false;
|
||||
$db->insertIntoTable('events', ['type' => 'COMMAND_ADD', 'text' => 'Ajout commande : ' . $nom . ' => ' . $script]);
|
||||
|
||||
$_SESSION['successmessage'] = 'La commande a bien été créée.';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll'));
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une commande
|
||||
* @param array $_POST['commands'] : Un tableau des commandes avec leur nouvelle valeurs
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
$errors = array(); //On initialise le tableau qui contiendra les erreurs rencontrés
|
||||
|
||||
//Pour chaque commande reçu, on boucle en récupérant son id (la clef), et la commande elle-même (la value)
|
||||
|
||||
|
||||
foreach ($_POST['commands'] as $id => $command)
|
||||
{
|
||||
$db->updateCommand($id, $command['name'], $command['script'], $command['admin']);
|
||||
$db->updateTableWhere('commands', $command, ['id' => $id]);
|
||||
}
|
||||
|
||||
$message = 'Toutes les commandes ont été modifiées avec succès.';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll', array(
|
||||
'successmessage' => $message,
|
||||
)));
|
||||
}
|
||||
|
||||
public function flagMeThat()
|
||||
{
|
||||
var_dump(internalTools::parseForFlag('[COMMAND:chauffer 35][PASSWORD:mon password qui rox][LOGin:monlogin]'));
|
||||
$_SESSION['successmessage'] = 'Toutes les commandes ont été modifiées avec succès.';
|
||||
header('Location: ' . $this->generateUrl('commands', 'showAll'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
*/
|
||||
public function login()
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
$this->render('login');
|
||||
}
|
||||
|
||||
|
@ -29,10 +27,6 @@
|
|||
*/
|
||||
public function forgetPassword()
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$this->render('forgetPassword');
|
||||
}
|
||||
|
||||
|
@ -48,32 +42,29 @@
|
|||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$email = $_POST['mail'];
|
||||
$password = $_POST['password'];
|
||||
|
||||
if ($user = $db->getUserFromEmail($email))
|
||||
if (!$users = $db->getFromTableWhere('users', ['email' => $email]))
|
||||
{
|
||||
if (sha1($password) == $user['password'])
|
||||
{
|
||||
$_SESSION['connect'] = true;
|
||||
$_SESSION['admin'] = $user['admin'];
|
||||
$_SESSION['email'] = $user['email'];
|
||||
$_SESSION['csrf'] = str_shuffle(uniqid().uniqid());
|
||||
header('Location: ' . $this->generateUrl(''));
|
||||
return true;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('connect', 'login', array(
|
||||
'errormessage' => 'Identifiants incorrects.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Identifiants incorrects.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'login'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('connect', 'login', array(
|
||||
'errormessage' => 'Cet e-mail n\'existe pas.'
|
||||
)));
|
||||
return false;
|
||||
if (sha1($password) != $users[0]['password'])
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Cet e-mail n\'existe pas.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'login'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$_SESSION['connect'] = true;
|
||||
$_SESSION['admin'] = $user['admin'];
|
||||
$_SESSION['email'] = $user['email'];
|
||||
$_SESSION['csrf'] = str_shuffle(uniqid().uniqid());
|
||||
header('Location: ' . $this->generateUrl(''));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -86,38 +77,40 @@
|
|||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$email = $_POST['mail'];
|
||||
|
||||
if ($user = $db->getUserFromEmail($email))
|
||||
if (!$users = $db->getFromTableWhere('users', ['email' => $email]))
|
||||
{
|
||||
$password = internalTools::generatePassword(rand(8,12));
|
||||
$message = "Vous avez demandé un nouveau mot de passe pour le site " . HTTP_PWD . ".\n";
|
||||
$message = "Votre nouveau mot de passe a été généré aléatoirement, et n'est connu que de vous. Le voici : \n";
|
||||
$message .= "Nouveau mot de passe : " . $password . "\n\n";
|
||||
$message .= "-------------------------------------\n";
|
||||
$message .= "Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site http://raspbian-france.fr\n";
|
||||
if (mail($email, 'RaspiSMS - Recuperation de mot de passe', $message))
|
||||
{
|
||||
$new_password = sha1($password);
|
||||
if ($db->updateUser($user['id'], $user['email'], $new_password, $user['admin']))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('connect', 'login', array(
|
||||
'successmessage' => 'Un nouveau mot de passe vous a été envoyé par mail.'
|
||||
)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('connect', 'forgetPassword', array(
|
||||
'errormessage' => 'Impossible d\'envoyer les nouveaux identifiants.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Cet e-mail n\'existe pas.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'forgetPassword'));
|
||||
return false;
|
||||
}
|
||||
header('Location: ' . $this->generateUrl('connect', 'forgetPassword', array(
|
||||
'errormessage' => 'Cet e-mail n\'existe pas.'
|
||||
)));
|
||||
return false;
|
||||
|
||||
$password = internalTools::generatePassword(rand(8,12));
|
||||
$message = "Vous avez demandé un nouveau mot de passe pour le site " . HTTP_PWD . ".\n";
|
||||
$message = "Votre nouveau mot de passe a été généré aléatoirement, et n'est connu que de vous. Le voici : \n";
|
||||
$message .= "Nouveau mot de passe : " . $password . "\n\n";
|
||||
$message .= "-------------------------------------\n";
|
||||
$message .= "Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site http://raspbian-france.fr\n";
|
||||
if (!mail($email, 'RaspiSMS - Recuperation de mot de passe', $message))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible d\'envoyer les nouveaux identifiants.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'forgetPassword'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$new_password = sha1($password);
|
||||
if (!$db->updateTableWhere('users', ['email' => $user['email'], 'password' => $new_password, 'admin' => $user['admin']], ['id' => $user['id']]))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible de mettre à jour le mot de passe.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'login'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$_SESSION['successmessage'] = 'Un nouveau mot de passe vous a été envoyé par mail.';
|
||||
header('Location: ' . $this->generateUrl('connect', 'login'));
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -32,34 +32,34 @@
|
|||
global $db;
|
||||
|
||||
//Recupération des nombres des 4 panneaux d'accueil
|
||||
$contacts = $db->getAll('contacts');
|
||||
$contacts = $db->getFromTableWhere('contacts');
|
||||
|
||||
$this->render('contacts', array(
|
||||
'contacts' => $contacts,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction supprimer une liste de contacts
|
||||
* @return void;
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
* @return Boolean;
|
||||
*/
|
||||
public function delete()
|
||||
public function delete(...$ids)
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//Create de l'object de base de données
|
||||
global $db;
|
||||
|
||||
$contacts_ids = $_GET;
|
||||
$db->deleteContactsIn($contacts_ids);
|
||||
header('Location: ' . $this->generateUrl('contacts'));
|
||||
$db->deleteContactsIn($ids);
|
||||
header('Location: ' . $this->generateUrl('contacts'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -72,13 +72,13 @@
|
|||
|
||||
/**
|
||||
* Cette fonction retourne la page d'édition des contacts
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
*/
|
||||
public function edit()
|
||||
public function edit(...$ids)
|
||||
{
|
||||
global $db;
|
||||
|
||||
|
||||
$contacts = $db->getContactsIn($_GET);
|
||||
$contacts = $db->getContactsIn($ids);
|
||||
$this->render('editContacts', array(
|
||||
'contacts' => $contacts,
|
||||
));
|
||||
|
@ -86,91 +86,91 @@
|
|||
|
||||
/**
|
||||
* Cette fonction insert un nouveau contact
|
||||
* @param string $_POST['name'] : Le nom du contact
|
||||
* @param string $_POST['phone'] : Le numero de téléphone du contact
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
if (empty($_POST['name']) || empty($_POST['phone']))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Des champs sont manquants.';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$nom = $_POST['name'];
|
||||
$phone = $_POST['phone'];
|
||||
|
||||
if ($phone = internalTools::parsePhone($phone))
|
||||
{
|
||||
if ($db->createContact($nom, $phone))
|
||||
{
|
||||
$db->createEvent('CONTACT_ADD', 'Ajout contact : ' . $nom . ' (' . internalTools::phoneAddSpace($phone) . ')');
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'successmessage' => 'Le contact a bien été créé.'
|
||||
)));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('contacts', 'add', array(
|
||||
'errormessage' => 'Impossible créer ce contact.'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Numéro de téléphone incorrect.';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('contacts', 'add', array(
|
||||
'errormessage' => 'Numéro de téléphone incorrect.'
|
||||
)));
|
||||
if (!$db->insertIntoTable('contacts', ['nom' => $nom, 'phone' => $phone]))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible créer ce contact.';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$db->insertIntoTable('events', ['type' => 'CONTACT_ADD', 'text' => 'Ajout contact : ' . $nom . ' (' . internalTools::phoneAddSpace($phone) . ')']);
|
||||
|
||||
$_SESSION['successmessage'] = 'Le contact a bien été créé.';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une liste de contacts
|
||||
* @param array $_POST['contacts'] : Un tableau des contacts avec leur nouvelle valeurs
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
$errors = array(); //On initialise le tableau qui contiendra les erreurs rencontrés
|
||||
//Pour chaque contact reçu, on boucle en récupérant son id (la clef), et le contact lui-même (la value)
|
||||
|
||||
foreach ($_POST['contacts'] as $id => $contact)
|
||||
{
|
||||
if ($number = internalTools::parsePhone($contact['phone']))
|
||||
{
|
||||
$db->updateContact($id, $contact['name'], $number);
|
||||
}
|
||||
else
|
||||
if (!$number = internalTools::parsePhone($contact['phone']))
|
||||
{
|
||||
$errors[] = $contact['id'];
|
||||
continue;
|
||||
}
|
||||
|
||||
$db->updateTableWhere('contacts', ['name' => $contact['name'], 'number' => $number], ['id' => $contact['id']]);
|
||||
}
|
||||
|
||||
//Si on a eu des erreurs
|
||||
if (count($errors))
|
||||
{
|
||||
$message = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors);
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'errormessage' => $message,
|
||||
)));
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = 'Tous les contacts ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('contacts', 'showAll', array(
|
||||
'successmessage' => $message,
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors);
|
||||
return header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
}
|
||||
|
||||
$_SESSION['successmessage'] = 'Tous les contacts ont été modifiés avec succès.';
|
||||
return header('Location: ' . $this->generateUrl('contacts', 'showAll'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -180,6 +180,6 @@
|
|||
{
|
||||
global $db;
|
||||
|
||||
echo json_encode($db->getAll('contacts'));
|
||||
echo json_encode($db->getFromTableWhere('contacts'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne l'index temporaire du site
|
||||
* Cette fonction est un alias de show
|
||||
* @return void;
|
||||
*/
|
||||
public function byDefault()
|
||||
|
@ -28,12 +28,11 @@
|
|||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
//Recupération des nombres des 4 panneaux d'accueil
|
||||
$nb_contacts = $db->countContacts();
|
||||
$nb_groups = $db->countGroups();
|
||||
$nb_scheduleds = $db->countScheduleds();
|
||||
$nb_commands = $db->countCommands();
|
||||
$nb_contacts = $db->countTable('contacts');;
|
||||
$nb_groups = $db->countTable('groups');
|
||||
$nb_scheduleds = $db->countTable('scheduleds');
|
||||
$nb_commands = $db->countTable('commands');
|
||||
|
||||
//Création de la date d'il y a une semaine
|
||||
$now = new DateTime();
|
||||
|
@ -42,9 +41,9 @@
|
|||
$formated_date = $date->format('Y-m-d');
|
||||
|
||||
//Récupération des 10 derniers SMS envoyés, SMS reçus et evenements enregistrés. Par date.
|
||||
$sendeds = $db->getAll('sendeds', 'at', true, 10);
|
||||
$receiveds = $db->getAll('receiveds', 'at', true, 10);
|
||||
$events = $db->getAll('events', 'at', true, 10);
|
||||
$sendeds = $db->getFromTableWhere('sendeds', [], 'at', true, 10);
|
||||
$receiveds = $db->getFromTableWhere('receiveds', [], 'at', true, 10);
|
||||
$events = $db->getFromTableWhere('events', [], 'at', true, 10);
|
||||
|
||||
//Récupération du nombre de SMS envoyés et reçus depuis les 7 derniers jours
|
||||
$nb_sendeds = $db->getNbSendedsSinceGroupDay($formated_date);
|
||||
|
|
|
@ -24,21 +24,20 @@
|
|||
|
||||
/**
|
||||
* Cette fonction retourne tous les événements, sous forme d'un tableau permettant l'administration de ces événements
|
||||
* @param int $page : La page à consulter. Par défaut 0
|
||||
* @return void;
|
||||
*/
|
||||
public function showAll()
|
||||
public function showAll($page = 0)
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$page = (int)(isset($_GET['page']) ? $_GET['page'] : 0);
|
||||
|
||||
$page = (int)($page < 0 ? $page = 0 : $page);
|
||||
$limit = 25;
|
||||
$offset = $limit * $page;
|
||||
|
||||
|
||||
//Récupération des évènements triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
|
||||
$events = $db->getAll('events', 'at', true, $limit, $offset);
|
||||
$events = $db->getFromTableWhere('events', [], 'at', true, $limit, $offset);
|
||||
|
||||
$this->render('events', array(
|
||||
'events' => $events,
|
||||
|
|
|
@ -30,36 +30,34 @@
|
|||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$groups = $db->getGroupsWithContactsNb();
|
||||
$this->render('groups', array(
|
||||
'groups' => $groups,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction supprime une liste de groupes
|
||||
* @param int... $ids : Les id des groups à supprimer
|
||||
* @return void;
|
||||
*/
|
||||
public function delete()
|
||||
public function delete(...$ids)
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] => 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//Create de l'object de base de données
|
||||
global $db;
|
||||
|
||||
$groups_ids = $_GET;
|
||||
$db->deleteGroupsIn($groups_ids);
|
||||
header('Location: ' . $this->generateUrl('groups'));
|
||||
$db->deleteGroupsIn($ids);
|
||||
header('Location: ' . $this->generateUrl('groups'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -72,12 +70,13 @@
|
|||
|
||||
/**
|
||||
* Cette fonction retourne la page d'édition des groupes
|
||||
* @param int... $ids : Les id des groups à modifier
|
||||
*/
|
||||
public function edit()
|
||||
public function edit(...$ids)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$groups = $db->getGroupsIn($_GET);
|
||||
$groups = $db->getGroupsIn($ids);
|
||||
$blocks = array(); //On défini la variable qui correspondra à un bloc groupe et contacts
|
||||
|
||||
//Pour chaque groupe, on récupère les contacts liés
|
||||
|
@ -93,75 +92,72 @@
|
|||
|
||||
/**
|
||||
* Cette fonction insert un nouveau contact
|
||||
* @param string $_POST['name'] : Le nom du groupe
|
||||
* @param array $_POST['contacts'] : Les id des contacts à mettre dans le du groupe
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
$nom = $_POST['name'];
|
||||
if ($db->createGroup($nom))
|
||||
if (!$db->insertIntoTable('groups' ['name' => $nom]))
|
||||
{
|
||||
$id_group = $db->lastId();
|
||||
$db->createEvent('GROUP_ADD', 'Ajout du groupe : ' . $nom);
|
||||
foreach ($_POST['contacts'] as $id_contact)
|
||||
{
|
||||
$db->createGroups_contacts($id_group, $id_contact);
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'successmessage' => 'Le groupe a bien été créé.'
|
||||
)));
|
||||
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Impossible de créer ce groupe.';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'errormessage' => 'Impossible de créer ce groupe.'
|
||||
)));
|
||||
$id_group = $db->lastId();
|
||||
$db->insertIntoTable('events', ['type' => 'GROUP_ADD', 'text' => 'Ajout du groupe : ' . $nom]);
|
||||
|
||||
foreach ($_POST['contacts'] as $id_contact)
|
||||
{
|
||||
$db->insertIntoTable('groups_contacts', ['id_group' => $id_group, 'id_contact' => $id_contact]);
|
||||
}
|
||||
|
||||
$_SESSION['successmessage'] = 'Le groupe a bien été créé.';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une liste de groupes
|
||||
* @param array $_POST['groups'] : Un tableau des groups avec leur nouvelle valeurs
|
||||
* @return boolean;
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
//Pour chaque groupe reçu, on boucle en récupérant son id (la clef), et le contact le tableau du groupe (nom et liste des contacts)
|
||||
foreach ($_POST['groups'] as $id_group => $group)
|
||||
{
|
||||
$db->updateGroup($id_group, $group['name']); //On met à jour le nom du groupe
|
||||
$db->deleteGroups_contactsForGroup($id_group); //On supprime tous les contacts de ce groupe
|
||||
$db->updateTableWhere('groups', $group, ['id' => $id_group]); //On met à jour le nom du groupe
|
||||
$db->deleteFromTableWhere('groups_contacts', ['id_group' => $id_group]); //On supprime tous les contacts de ce groupe
|
||||
foreach ($group['contacts'] as $id_contact) //Pour chaque contact on l'ajoute au groupe
|
||||
{
|
||||
$db->createGroups_contacts($id_group, $id_contact);
|
||||
$db->insertIntoTable('groups_contacts', ['id_group' => $id_group, 'id_contact' => $id_contact]);
|
||||
}
|
||||
}
|
||||
|
||||
$message = 'Tous les groupes ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll', array(
|
||||
'successmessage' => $message,
|
||||
)));
|
||||
$_SESSION['successmessage'] = 'Tous les groupes ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('groups', 'showAll'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,11 +8,22 @@
|
|||
*/
|
||||
public function head($title = '')
|
||||
{
|
||||
$title = (!empty($title)) ? $title . ' - RaspiSMS' : 'RaspiSMS';
|
||||
$author = 'Ajani';
|
||||
$title = (!empty($title)) ? $title . ' - ' . WEBSITE_TITLE : WEBSITE_TITLE;
|
||||
$author = WEBSITE_AUTHOR;
|
||||
|
||||
$error_message = (isset($_GET['errormessage'])) ? $_GET['errormessage'] : '';
|
||||
$success_message = (isset($_GET['successmessage'])) ? $_GET['successmessage'] : '';
|
||||
$error_message = false;
|
||||
$success_message = false;
|
||||
if (isset($_SESSION['errormessage']))
|
||||
{
|
||||
$error_message = $_SESSION['errormessage'];
|
||||
unset($_SESSION['errormessage']);
|
||||
}
|
||||
|
||||
if (isset($_SESSION['successmessage']))
|
||||
{
|
||||
$success_message = $_SESSION['successmessage'];
|
||||
unset($_SESSION['successmessage']);
|
||||
}
|
||||
|
||||
$this->render('head', array(
|
||||
'title' => $title,
|
||||
|
|
|
@ -28,10 +28,6 @@
|
|||
*/
|
||||
public function show()
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$this->render('profile');
|
||||
}
|
||||
|
||||
|
@ -46,35 +42,34 @@
|
|||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll');
|
||||
return false;
|
||||
}
|
||||
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
if (empty($_POST['password']) || empty($_POST['verif_password']) || $_POST['password'] != $_POST['verif_password'])
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'errormessage' => 'Les mots de passe ne correspondent pas.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Les mots de passe ne correspondent pas.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$user = $db->getUserFromEmail($_SESSION['email']);
|
||||
|
||||
$user = $db->getFromTableWhere('users', ['email' => $_SESSION['email']]);
|
||||
$password = sha1($_POST['password']);
|
||||
|
||||
if ($db->updateUser($user['id'], $user['email'], $password, $user['admin']))
|
||||
if (!$db->updateTableWhere('users', ['password' => $password], ['id' => $user['id']]))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'successmessage' => 'Les données ont été mises à jour.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Impossible de mettre à jour le mot de passe.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -88,10 +83,9 @@
|
|||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll');
|
||||
return false;
|
||||
}
|
||||
|
||||
//Creation de l'object de base de données
|
||||
|
@ -100,6 +94,7 @@
|
|||
|
||||
if (empty($_POST['mail']) || empty($_POST['verif_mail']) || $_POST['mail'] != $_POST['verif_mail'])
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Les e-mails ne correspondent pas.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'errormessage' => 'Les e-mails ne correspondent pas.'
|
||||
)));
|
||||
|
@ -110,27 +105,24 @@
|
|||
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'errormessage' => 'L\'adresse e-mail est invalide.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'L\'adresse e-mail est invalide.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$user = $db->getUserFromEmail($_SESSION['email']);
|
||||
$user = $db->getFromTableWhere('users', ['email' => $_SESSION['email']]);
|
||||
|
||||
if ($db->updateUser($user['id'], $email, $user['password'], $user['admin']))
|
||||
if (!$db->updateTableWhere('users', ['email' => $email], ['id' => $user['id']]))
|
||||
{
|
||||
$_SESSION['email'] = $email;
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'successmessage' => 'Les données ont été mises à jour.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Cette adresse e-mail est déjà utilisée.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'errormessage' => 'Cette adresse e-mail est déjà utilisée.'
|
||||
)));
|
||||
return false;
|
||||
$_SESSION['email'] = $email;
|
||||
$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -143,29 +135,32 @@
|
|||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll');
|
||||
return false;
|
||||
}
|
||||
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
//Si l'utilisateur veux vraiment supprimer son compte
|
||||
if (!empty($_POST['delete_account']))
|
||||
if (empty($_POST['delete_account']))
|
||||
{
|
||||
$user = $db->getUserFromEmail($_SESSION['email']); //On récupère l'utilisateur en base
|
||||
$db->deleteUsersIn(array($user['id'])); //On supprime l'utilisateur
|
||||
$this->logout();
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Le compte n\'a pas été supprimé';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('profile', 'show', array(
|
||||
'errormessage' => 'Le compte n\'a pas été supprimé'
|
||||
)));
|
||||
return false;
|
||||
if (!$db->deleteFromTableWhere('users', ['email' => $_SESSION['email']]))
|
||||
{
|
||||
$_SESSION['errormessage'] = 'Impossible de supprime le compte';
|
||||
header('Location: ' . $this->generateUrl('profile', 'show'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->logout();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,23 +24,23 @@
|
|||
|
||||
/**
|
||||
* Cette fonction retourne tous les SMS envoyés, sous forme d'un tableau
|
||||
* @param int $page : La page à consulter. Par défaut 0
|
||||
* @return void;
|
||||
*/
|
||||
public function showAll()
|
||||
public function showAll($page = 0)
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$page = (int)(isset($_GET['page']) ? $_GET['page'] : 0);
|
||||
$page = (int)($page < 0 ? $page = 0 : $page);
|
||||
$limit = 25;
|
||||
$offset = $limit * $page;
|
||||
|
||||
|
||||
//Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
|
||||
$receiveds = $db->getAll('receiveds', 'at', true, $limit, $offset);
|
||||
$receiveds = $db->getFromTableWhere('receiveds', [], 'at', true, $limit, $offset);
|
||||
|
||||
$this->render('receiveds', array(
|
||||
return $this->render('receiveds', array(
|
||||
'receiveds' => $receiveds,
|
||||
'page' => $page,
|
||||
'limit' => $limit,
|
||||
|
|
|
@ -30,9 +30,8 @@
|
|||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$scheduleds = $db->getAll('scheduleds');
|
||||
$scheduleds = $db->getFromTableWhere('scheduleds');
|
||||
$this->render('scheduleds', array(
|
||||
'scheduleds' => $scheduleds,
|
||||
));
|
||||
|
@ -40,25 +39,25 @@
|
|||
|
||||
/**
|
||||
* Cette fonction supprime une liste de groupes
|
||||
* @return void;
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete()
|
||||
public function delete(...$ids)
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll');
|
||||
return false;
|
||||
}
|
||||
|
||||
//Create de l'object de base de données
|
||||
global $db;
|
||||
|
||||
$scheduleds_ids = $_GET;
|
||||
$db->deleteScheduledsIn($scheduleds_ids);
|
||||
header('Location: ' . $this->generateUrl('scheduleds'));
|
||||
$db->deleteScheduledsIn($ids);
|
||||
header('Location: ' . $this->generateUrl('scheduleds'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,19 +69,20 @@
|
|||
$babyonemoretime = new DateInterval('PT1M'); //Haha, i'm so a funny guy
|
||||
$now->add($babyonemoretime);
|
||||
$now = $now->format('Y-m-d H:i');
|
||||
$this->render('addScheduled', array(
|
||||
return $this->render('addScheduled', array(
|
||||
'now' => $now
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction retourne la page d'édition des sms programmés
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
*/
|
||||
public function edit()
|
||||
public function edit(...$ids)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$scheduleds = $db->getScheduledsIn($_GET);
|
||||
$scheduleds = $db->getScheduledsIn($ids);
|
||||
//Pour chaque groupe, on récupère les contacts liés
|
||||
foreach ($scheduleds as $key => $scheduled)
|
||||
{
|
||||
|
@ -102,6 +102,12 @@
|
|||
/**
|
||||
* Cette fonction insert un nouveau SMS programmé
|
||||
* @param optionnal boolean $api : Si vrai (faux par défaut), on retourne des réponses au lieu de rediriger
|
||||
* @param string $_POST['date'] : La date a la quelle de sms devra être envoyé
|
||||
* @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['contacts'] : Un tableau avec les ids des contacts auxquels envoyer le sms
|
||||
* @param string $_POST['groups'] : Un tableau avec les ids des groupes auxquels envoyer le sms
|
||||
* @return boolean;
|
||||
*/
|
||||
public function create($api = false)
|
||||
{
|
||||
|
@ -110,10 +116,9 @@
|
|||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('profile', 'showAll');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,9 +136,8 @@
|
|||
{
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Pas de texte pour ce SMS !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Pas de texte pour ce SMS !';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -143,9 +147,8 @@
|
|||
{
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Pas numéro, de contacts, ni de groupes définis pour envoyer ce SMS !'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Pas numéro, de contacts, ni de groupes définis pour envoyer ce SMS !';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -154,91 +157,87 @@
|
|||
{
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'add', array(
|
||||
'errormessage' => 'La date renseignée est invalide.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'La date renseignée est invalide.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($db->createScheduleds($date, $content))
|
||||
if (!$db->createScheduleds($date, $content))
|
||||
{
|
||||
$id_scheduled = $db->lastId();
|
||||
$db->createEvent('SCHEDULED_ADD', 'Ajout d\'un SMS pour le ' . $date);
|
||||
$errors = false;
|
||||
|
||||
foreach ($numbers as $number)
|
||||
if (!$api)
|
||||
{
|
||||
if ($number = internalTools::parsePhone($number))
|
||||
{
|
||||
$db->createScheduleds_numbers($id_scheduled, $number);
|
||||
}
|
||||
else
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
$_SESSION['errormessage'] = 'Impossible de créer ce SMS.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$id_scheduled = $db->lastId();
|
||||
$db->insertIntoTable('events', ['type' => 'SCHEDULED_ADD', 'text' => 'Ajout d\'un SMS pour le ' . $date]);
|
||||
$errors = false;
|
||||
|
||||
foreach ($numbers as $number)
|
||||
{
|
||||
if (!$number = internalTools::parsePhone($number))
|
||||
{
|
||||
$errors = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($contacts as $id_contact)
|
||||
if (!$db->insertIntoTable('scheduleds_numbers', ['id_scheduled' => $id_scheduled, 'number' => $number]))
|
||||
{
|
||||
if (!$db->createScheduleds_contacts($id_scheduled, $id_contact))
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
$errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($groups as $id_group)
|
||||
foreach ($contacts as $id_contact)
|
||||
{
|
||||
if (!$db->insertIntoTable('scheduleds_contacts', ['id_scheduled' => $id_scheduled, 'id_contact' => $id_contact]))
|
||||
{
|
||||
if (!$db->createScheduleds_groups($id_scheduled, $id_group))
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
$errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($errors)
|
||||
foreach ($groups as $id_group)
|
||||
{
|
||||
if (!$db->insertIntoTable('scheduleds_groups', ['id_scheduled' => $id_scheduled, 'id_group' => $id_group]))
|
||||
{
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Le SMS a bien été créé, mais certains numéro ne sont pas valides.'
|
||||
)));
|
||||
}
|
||||
return true;
|
||||
$errors = true;
|
||||
}
|
||||
else
|
||||
}
|
||||
|
||||
if ($errors)
|
||||
{
|
||||
if (!$api)
|
||||
{
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'successmessage' => 'Le SMS a bien été créé.'
|
||||
)));
|
||||
}
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Le SMS a bien été créé, mais certains numéro ne sont pas valides.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!$api)
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Impossible de créer ce SMS.'
|
||||
)));
|
||||
$_SESSION['successmessage'] = 'Le SMS a bien été créé.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll');
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction met à jour une liste de sms
|
||||
* @param array $_POST['scheduleds'] : Un tableau contenant les sms avec leurs nouvelles valeurs
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['successmessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll');
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
@ -250,66 +249,62 @@
|
|||
$date = $scheduled['date'];
|
||||
if (!internalTools::validateDate($date, 'Y-m-d H:i'))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => 'La date renseignée pour le SMS numéro ' . $scheduled['id'] . ' est invalide.'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'La date renseignée pour le SMS numéro ' . $scheduled['id'] . ' est invalide.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//Si la date fournie est passée, on la change pour dans 2 minutes
|
||||
$objectDate = DateTime::createFromFormat('Y-m-d H:i', $date);
|
||||
|
||||
$db->updateScheduled($id_scheduled, $date, $scheduled['content'], false); //On met à jour le sms
|
||||
$db->updateTableWhere('scheduleds', ['content' => $scheduled['content'], 'date' => $date], ['id' => $id_scheduled]); //On met à jour le sms
|
||||
|
||||
$db->deleteScheduleds_numbersForScheduled($id_scheduled); //On supprime tous les numéros pour ce SMS
|
||||
$db->deleteScheduleds_contactsForScheduled($id_scheduled); //On supprime tous les contacts pour ce SMS
|
||||
$db->deleteScheduleds_GroupsForScheduled($id_scheduled); //On supprime tous les groupes pour ce SMS
|
||||
|
||||
//Pour chaque numéro, on va le vérifier et l'ajouter au sms
|
||||
foreach ($scheduled['numbers'] as $number)
|
||||
{
|
||||
if (internalTools::parsePhone($number))
|
||||
if (!$number = internalTools::parsePhone($number))
|
||||
{
|
||||
$db->createScheduleds_numbers($id_scheduled, $number);
|
||||
$errors = true;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
if (!$db->insertIntoTable('scheduleds_numbers', ['id_scheduled' => $id_scheduled, 'number' => $number]))
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
//Pour chaque contact, on va l'ajouter au sms
|
||||
foreach ($scheduled['contacts'] as $id_contact)
|
||||
{
|
||||
if (!$db->createScheduleds_contacts($id_scheduled, $id_contact))
|
||||
if (!$db->insertIntoTable('scheduleds_contacts', ['id_scheduled' => $id_scheduled, 'id_contact' => $id_contact]))
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
//Pour chaque groupe, on va l'ajouter au sms
|
||||
foreach ($scheduled['groups'] as $id_group)
|
||||
{
|
||||
if (!$db->createScheduleds_groups($id_scheduled, $id_group))
|
||||
if (!$db->insertIntoTable('scheduleds_groups', ['id_scheduled' => $id_scheduled, 'id_group' => $id_group]))
|
||||
{
|
||||
$errors = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$errors)
|
||||
if ($errors)
|
||||
{
|
||||
$message = 'Tous les SMS ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'successmessage' => $message,
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Tous les SMS ont été modifiés mais certaines données incorrects ont été ignorées.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = 'Tous les SMS ont été modifiés mais certaines données incorrects ont été ignorées.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll', array(
|
||||
'errormessage' => $message,
|
||||
)));
|
||||
$_SESSION['successmessage'] = 'Tous les SMS ont été modifiés avec succès.';
|
||||
header('Location: ' . $this->generateUrl('scheduleds', 'showAll'));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,21 +24,22 @@
|
|||
|
||||
/**
|
||||
* Cette fonction retourne tous les SMS envoyés, sous forme d'un tableau
|
||||
* @param int $page : La page à consulter. Par défaut 0
|
||||
* @return void;
|
||||
*/
|
||||
public function showAll()
|
||||
public function showAll($page = 0)
|
||||
{
|
||||
//Creation de l'object de base de données
|
||||
global $db;
|
||||
|
||||
|
||||
$page = (int)(isset($_GET['page']) ? $_GET['page'] : 0);
|
||||
$page = (int)($page < 0 ? $page = 0 : $page);
|
||||
$limit = 25;
|
||||
$offset = $limit * $page;
|
||||
|
||||
|
||||
//Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
|
||||
$sendeds = $db->getAll('sendeds', 'at', true, $limit, $offset);
|
||||
$sendeds = $db->getFromTableWhere('sendeds', [], 'at', true, $limit, $offset);
|
||||
|
||||
$this->render('sendeds', array(
|
||||
'sendeds' => $sendeds,
|
||||
|
|
|
@ -82,27 +82,25 @@
|
|||
//Pour chaque contact, on récupère l'id du contact
|
||||
foreach ($contacts as $key => $name)
|
||||
{
|
||||
if ($contact = $db->getContactFromName($name))
|
||||
{
|
||||
$contacts[$key] = $contact['id'];
|
||||
}
|
||||
else
|
||||
if (!$contact = $db->getFromTableWhere('contacts', ['name' => $name]))
|
||||
{
|
||||
unset($contacts[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$contacts[$key] = $contact['id'];
|
||||
}
|
||||
|
||||
//Pour chaque groupe, on récupère l'id du groupe
|
||||
foreach ($groups as $key => $name)
|
||||
{
|
||||
if ($group = $db->getGroupFromName($name))
|
||||
{
|
||||
$groups[$key] = $group['id'];
|
||||
}
|
||||
else
|
||||
if ($group = $db->getFromTableWhere('groups', ['name' => $name]))
|
||||
{
|
||||
unset($groups[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$groups[$key] = $group['id'];
|
||||
}
|
||||
|
||||
//Si la date n'est pas définie, on la met à la date du jour
|
||||
|
@ -118,8 +116,9 @@
|
|||
echo json_encode(array(
|
||||
'error' => self::API_ERROR_MISSING_FIELD,
|
||||
));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//On assigne les variable POST (après avoir vidé $_POST) en prévision de la création du SMS
|
||||
$_POST = array();
|
||||
$_POST['content'] = $text;
|
||||
|
@ -131,17 +130,18 @@
|
|||
$scheduleds = new scheduleds();
|
||||
$success = $scheduleds->create(true);
|
||||
|
||||
if ($success)
|
||||
{
|
||||
echo json_encode(array(
|
||||
'error' => self::API_ERROR_NO,
|
||||
));
|
||||
}
|
||||
else
|
||||
if (!$success)
|
||||
{
|
||||
echo json_encode(array(
|
||||
'error' => self::API_ERROR_CREATION_FAILED,
|
||||
));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
echo json_encode(array(
|
||||
'error' => self::API_ERROR_NO,
|
||||
));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
|
||||
//Récupération des utilisateurs
|
||||
$users = $db->getAll('users');
|
||||
$users = $db->getFromTableWhere('users');
|
||||
|
||||
$this->render('users', array(
|
||||
'users' => $users,
|
||||
|
@ -50,26 +50,26 @@
|
|||
|
||||
/**
|
||||
* Cette fonction insert un nouvel utilisateur
|
||||
* @param string $_POST['email'] : L'email de l'utilisateur
|
||||
* @param string $_POST['email_confirm'] : Confirmation de l'email de l'utilisateur
|
||||
* @param boolean $_POST['admin'] : Optionnel : Si l'utilisateur est admin. Par défaut non
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('users', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
|
||||
|
||||
if (!isset($_POST['email']) || !isset($_POST['email_confirm']) || $_POST['email'] != $_POST['email_confirm'])
|
||||
if (!isset($_POST['email']) || !isset($_POST['email_confirm']) || ($_POST['email'] != $_POST['email_confirm']))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'add', array(
|
||||
'errormessage' => 'Les e-mails fournis ne correspondent pas.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Les e-mails fournis ne correspondent pas.';
|
||||
header('Location: ' . $this->generateUrl('users', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -79,9 +79,8 @@
|
|||
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'add', array(
|
||||
'errormessage' => 'L\'e-mail fourni présente un format incorrect.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'L\'e-mail fourni présente un format incorrect.';
|
||||
header('Location: ' . $this->generateUrl('users', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -101,44 +100,39 @@
|
|||
$message .= "-------------------------------------\n";
|
||||
$message .= "Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site http://raspbian-france.fr\n";
|
||||
|
||||
if (mail($email, 'Identifiants RaspiSMS', $message))
|
||||
if (!mail($email, 'Identifiants RaspiSMS', $message))
|
||||
{
|
||||
if ($db->createUser($email, $password, $admin))
|
||||
{
|
||||
$db->createEvent('USER_ADD', 'Ajout de l\'utilisateur : ' . $email);
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll', array(
|
||||
'successmessage' => 'L\'utilisateur a bien été créé.'
|
||||
)));
|
||||
return true;
|
||||
}
|
||||
$_SESSION['errormessage'] = 'Impossible d\'envoyer le mail d\'inscription à l\'utilisateur. Le compte n\'a donc pas été créé.';
|
||||
header('Location: ' . $this->generateUrl('users', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
header('Location: ' . $this->generateUrl('users', 'add', array(
|
||||
'errormessage' => 'Impossible de créer cet utilisateur.'
|
||||
)));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
if (!$db->insertIntoTable('users', ['email' => $email, 'password' => $password, 'admin' => $admin]))
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll', array(
|
||||
'errormessage' => 'Impossible d\'envoyer le mail d\'inscription à l\'utilisateur. Le compte n\'a donc pas été créé.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Impossible de créer cet utilisateur.';
|
||||
header('Location: ' . $this->generateUrl('users', 'add'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$db->insertIntoTable('events', ['type' => 'USER_ADD', 'text' => 'Ajout de l\'utilisateur : ' . $email]);
|
||||
$_SESSION['successmessage'] = 'L\'utilisateur a bien été créé.';
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction supprimer une liste d'utilisateur
|
||||
* @return void;
|
||||
* @param int... $ids : Les id des commandes à supprimer
|
||||
* @return boolean;
|
||||
*/
|
||||
public function delete()
|
||||
public function delete(...$ids)
|
||||
{
|
||||
//On vérifie que le jeton csrf est bon
|
||||
if (!internalTools::verifyCSRF())
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll', array(
|
||||
'errormessage' => 'Jeton CSRF invalide !'
|
||||
)));
|
||||
return true;
|
||||
$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
//Create de l'object de base de données
|
||||
|
@ -147,14 +141,13 @@
|
|||
//Si on est pas admin
|
||||
if (!$_SESSION['admin'])
|
||||
{
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll', array(
|
||||
'errormessage' => 'Vous devez être administrateur pour effectuer cette action.'
|
||||
)));
|
||||
$_SESSION['errormessage'] = 'Vous devez être administrateur pour effectuer cette action.';
|
||||
header('Location: ' . $this->generateUrl('users', 'showAll'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$users_ids = $_GET;
|
||||
$db->deleteUsersIn($users_ids);
|
||||
header('Location: ' . $this->generateUrl('users'));
|
||||
$db->deleteUsersIn($ids);
|
||||
header('Location: ' . $this->generateUrl('users'));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue