diff --git a/console.php b/console.php index 72522db..2f55be8 100755 --- a/console.php +++ b/console.php @@ -21,6 +21,13 @@ ######### //On va appeler un modèle, est l'initialiser $db = new DataBase($bdd);; + + //On va ajouter les réglages globaux de RaspiSMS modifiables via l'interface + $settings = $db->getFromTableWhere('settings'); + foreach ($settings as $setting) + { + define('RASPISMS_SETTINGS_' . mb_convert_case($setting['name'], MB_CASE_UPPER), $setting['value']); + } ########### # ROUTAGE # diff --git a/controllers/commands.php b/controllers/commands.php index 5b21da8..1679973 100755 --- a/controllers/commands.php +++ b/controllers/commands.php @@ -36,7 +36,7 @@ * @param int... $ids : Les id des commandes à supprimer * @return boolean; */ - public function delete($csrf, ...$ids) + public function delete($csrf) { if (!internalTools::verifyCSRF($csrf)) { @@ -45,6 +45,10 @@ return false; } + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); + unset($ids[0]); + //Create de l'object de base de données global $db; @@ -65,9 +69,10 @@ * Cette fonction retourne la page d'édition des commandes * @param int... $ids : Les id des commandes à editer */ - public function edit(...$ids) + public function edit() { global $db; + $ids = func_get_args(); $commands = $db->getCommandsIn($ids); $this->render('commands/edit', array( diff --git a/controllers/contacts.php b/controllers/contacts.php index 5800a7e..a527e50 100755 --- a/controllers/contacts.php +++ b/controllers/contacts.php @@ -36,7 +36,7 @@ * @param int... $ids : Les id des commandes à supprimer * @return Boolean; */ - public function delete($csrf, ...$ids) + public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) @@ -46,6 +46,10 @@ return false; } + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); + unset($ids[0]); + //Create de l'object de base de données global $db; @@ -66,9 +70,12 @@ * Cette fonction retourne la page d'édition des contacts * @param int... $ids : Les id des commandes à supprimer */ - public function edit(...$ids) + public function edit() { global $db; + + //On récupère les ids comme étant tous les arguments de la fonction + $ids = func_get_args(); $contacts = $db->getContactsIn($ids); $this->render('contacts/edit', array( diff --git a/controllers/groups.php b/controllers/groups.php index cfa24f5..99f4f24 100755 --- a/controllers/groups.php +++ b/controllers/groups.php @@ -34,7 +34,7 @@ * @param int... $ids : Les id des groups à supprimer * @return void; */ - public function delete($csrf, ...$ids) + public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) @@ -44,6 +44,10 @@ return false; } + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); + unset($ids[0]); + //Create de l'object de base de données global $db; @@ -64,9 +68,12 @@ * Cette fonction retourne la page d'édition des groupes * @param int... $ids : Les id des groups à modifier */ - public function edit(...$ids) + public function edit() { global $db; + + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); $groups = $db->getGroupsIn($ids); $blocks = array(); //On défini la variable qui correspondra à un bloc groupe et contacts diff --git a/controllers/internalConsole.php b/controllers/internalConsole.php index 57d7934..a81f383 100755 --- a/controllers/internalConsole.php +++ b/controllers/internalConsole.php @@ -300,6 +300,12 @@ */ public function sendTransfers () { + if (!RASPISMS_SETTINGS_TRANSFER) + { + echo "Le transfer de SMS est désactivé ! \n"; + return false; + } + global $db; $transfers = $db->getFromTableWhere('transfers', ['progress' => false]); diff --git a/controllers/internalIncs.php b/controllers/internalIncs.php index ea1ecdf..56338f2 100755 --- a/controllers/internalIncs.php +++ b/controllers/internalIncs.php @@ -43,6 +43,7 @@ $email = isset($_SESSION['email']) ? $_SESSION['email'] : 'Mon compte'; $this->render('internalIncs/nav', array( 'email' => $email, + 'admin' => $_SESSION['admin'], 'page' => $page, )); } diff --git a/controllers/receiveds.php b/controllers/receiveds.php index 517ba50..bb2854f 100755 --- a/controllers/receiveds.php +++ b/controllers/receiveds.php @@ -40,6 +40,16 @@ //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->getFromTableWhere('receiveds', [], 'at', true, $limit, $offset); + foreach ($receiveds as $key => $received) + { + if (!$contacts = $db->getFromTableWhere('contacts', ['number' => $received['send_by']])) + { + continue; + } + + $receiveds[$key]['send_by'] = $contacts[0]['name'] . ' (' . $received['send_by'] . ')'; + } + return $this->render('receiveds/showAll', array( 'receiveds' => $receiveds, 'page' => $page, @@ -57,6 +67,16 @@ global $db; $now = new DateTime(); $receiveds = $db->getReceivedsSince($now->format('Y-m-d')); + + foreach ($receiveds as $key => $received) + { + if (!$contacts = $db->getFromTableWhere('contacts', ['number' => $received['send_by']])) + { + continue; + } + + $receiveds[$key]['send_by'] = $contacts[0]['name'] . ' (' . $received['send_by'] . ')'; + } $nbReceiveds = count($receiveds); diff --git a/controllers/scheduleds.php b/controllers/scheduleds.php index 03517b0..3b59bcf 100755 --- a/controllers/scheduleds.php +++ b/controllers/scheduleds.php @@ -34,7 +34,7 @@ * @param int... $ids : Les id des commandes à supprimer * @return boolean; */ - public function delete($csrf, ...$ids) + public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) @@ -44,6 +44,10 @@ return false; } + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); + unset($ids[0]); + //Create de l'object de base de données global $db; @@ -70,9 +74,12 @@ * Cette fonction retourne la page d'édition des sms programmés * @param int... $ids : Les id des commandes à supprimer */ - public function edit(...$ids) + public function edit() { global $db; + + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); $scheduleds = $db->getScheduledsIn($ids); //Pour chaque groupe, on récupère les contacts liés diff --git a/controllers/settings.php b/controllers/settings.php new file mode 100755 index 0000000..b95643c --- /dev/null +++ b/controllers/settings.php @@ -0,0 +1,69 @@ +render('settings/default'); + } + + /** + * Cette fonction permet de mettre à jour l'activation ou la désactivation du transfer des SMS + * @param $csrf : Le jeton CSRF + * @param string $_POST['transfer'] : Le nouveau transfer de l'utilisateur + * @return void; + */ + public function changeTransfer($csrf) + { + //On vérifie que le jeton csrf est bon + if (!internalTools::verifyCSRF($csrf)) + { + $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + //Creation de l'object de base de données + global $db; + + if (!isset($_POST['transfer'])) + { + $_SESSION['errormessage'] = 'Vous devez renseigner un valeur'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + $transfer = (int)$_POST['transfer']; + + if (!$db->updateTableWhere('settings', ['value' => $transfer], ['name' => 'transfer'])) + { + $_SESSION['errormessage'] = 'Impossible de mettre les données à jour.'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + $_SESSION['successmessage'] = 'Les données ont été mises à jour.'; + header('Location: ' . $this->generateUrl('settings')); + return true; + } + } diff --git a/controllers/users.php b/controllers/users.php index ac414f6..2a9e647 100755 --- a/controllers/users.php +++ b/controllers/users.php @@ -118,7 +118,7 @@ * @param int... $ids : Les id des commandes à supprimer * @return boolean; */ - public function delete($csrf, ...$ids) + public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) @@ -128,6 +128,10 @@ return false; } + //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) + $ids = func_get_args(); + unset($ids[0]); + //Create de l'object de base de données global $db; diff --git a/createDatabase.sql b/createDatabase.sql index 4310c08..9d0d114 100755 --- a/createDatabase.sql +++ b/createDatabase.sql @@ -3,6 +3,14 @@ CREATE DATABASE IF NOT EXISTS raspisms; USE raspisms; +CREATE TABLE IF NOT EXISTS settings +( + id INT NOT NULL AUTO_INCREMENT, + name VARCHAR(20) NOT NULL, + value VARCHAR(1000) NOT NULL, + PRIMARY KEY (id) +); + CREATE TABLE IF NOT EXISTS receiveds ( id INT NOT NULL AUTO_INCREMENT, @@ -126,3 +134,7 @@ CREATE TABLE IF NOT EXISTS transfers PRIMARY KEY (id), FOREIGN KEY (id_received) REFERENCES receiveds (id) ON DELETE CASCADE ON UPDATE CASCADE ); + +#On insert les données par défaut dans les settings +INSERT INTO settings (name, value) +VALUES ('transfer', '1'); diff --git a/index.php b/index.php index b01642a..eb8ffb5 100755 --- a/index.php +++ b/index.php @@ -18,6 +18,14 @@ //On va appeler un modèle, est l'initialiser $db = new DataBase($bdd);; + //On va ajouter les réglages globaux de RaspiSMS modifiables via l'interface + $settings = $db->getFromTableWhere('settings'); + foreach ($settings as $setting) + { + define('RASPISMS_SETTINGS_' . mb_convert_case($setting['name'], MB_CASE_UPPER), $setting['value']); + } + + ########### # ROUTAGE # ########### diff --git a/templates/internalIncs/nav.php b/templates/internalIncs/nav.php index 49ba288..bd57133 100755 --- a/templates/internalIncs/nav.php +++ b/templates/internalIncs/nav.php @@ -68,6 +68,11 @@