コード例 #1
0
 /**
  * Cette fonction supprimer une liste de sms reçus
  * @param $csrf : Le jeton CSRF
  * @param int... $ids : Les id des sms à supprimer
  * @return boolean;
  */
 public function delete($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('receiveds'));
         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;
     //Si on est pas admin
     if (!$_SESSION['admin']) {
         $_SESSION['errormessage'] = 'Vous devez être administrateur pour effectuer cette action.';
         header('Location: ' . $this->generateUrl('receiveds'));
         return false;
     }
     $db->deleteReceivedsIn($ids);
     header('Location: ' . $this->generateUrl('receiveds'));
     return true;
 }
コード例 #2
0
 /**
  * Cette fonction permet de mettre à jour un réglage
  * @param string $settingName : Le nom du réglage à modifier
  * @param $csrf : Le jeton CSRF
  * @param string $_POST['settingValue'] : La nouvelle valeur du réglage
  * @return boolean
  */
 public function change($settingName, $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;
     }
     //On vérifie que la valeur est définie
     if (!isset($_POST['settingValue'])) {
         $_SESSION['errormessage'] = 'Vous devez fournir une valeur pour le réglage !';
         header('Location: ' . $this->generateUrl('settings'));
         return false;
     }
     global $db;
     if (!$db->updateTableWhere('settings', ['value' => $_POST['settingValue']], ['name' => $settingName])) {
         $_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;
 }
コード例 #3
0
ファイル: contacts.php プロジェクト: romainguerrero/RaspiSMS
 /**
  * Cette fonction met à jour une liste de contacts
  * @param $csrf : Le jeton CSRF
  * @param array $_POST['contacts'] : Un tableau des contacts avec leur nouvelle valeurs
  * @return boolean;
  */
 public function update($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('contacts'));
     }
     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 (!isset($contact['name']) || !isset($contact['phone']) || RASPISMS_SETTINGS_EXTENDED_CONTACTS_INFOS && !isset($contact['civility'])) {
             $errors[] = $id;
             continue;
         }
         $nom = $contact['name'];
         $phone = $contact['phone'];
         // on enregistre les infos si elles ont été saisies par l'utilisateur
         $civility = isset($contact['civility']) ? $contact['civility'] : null;
         $prenom = isset($contact['first_name']) ? $contact['first_name'] : null;
         $birthday = isset($contact['birthday']) ? $contact['birthday'] : null;
         $loveSituation = isset($contact['love_situation']) ? $contact['love_situation'] : null;
         $nomComplet = $prenom ? $prenom . ' ' . $nom : $nom;
         if (!($number = internalTools::parsePhone($contact['phone']))) {
             $errors[] = $id;
             continue;
         }
         $db->updateTableWhere('contacts', ['name' => $nomComplet, 'number' => $number], ['id' => $id]);
         // si l'option des infos contacts n'est pas activée, on sort de la boucle
         if (!RASPISMS_SETTINGS_EXTENDED_CONTACTS_INFOS) {
             continue;
         }
         if (empty($contact['contacts_infos_id'])) {
             if (!$db->insertIntoTable('contacts_infos', ['id_contact' => $id, 'civility' => $civility, 'first_name' => $prenom, 'last_name' => $nom, 'birthday' => $birthday, 'love_situation' => $loveSituation])) {
                 $errors[] = $id;
                 continue;
             }
         } elseif (!$db->updateTableWhere('contacts_infos', ['id_contact' => $id, 'civility' => $civility, 'first_name' => $prenom, 'last_name' => $nom, 'birthday' => $birthday, 'love_situation' => $loveSituation], ['id' => $contact['contacts_infos_id']])) {
             $errors[] = $id;
             continue;
         }
     }
     //Si on a eu des erreurs
     if (count($errors)) {
         $_SESSION['errormessage'] = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors);
         return header('Location: ' . $this->generateUrl('contacts'));
     }
     $_SESSION['successmessage'] = 'Tous les contacts ont été modifiés avec succès.';
     return header('Location: ' . $this->generateUrl('contacts'));
 }
コード例 #4
0
ファイル: groups.php プロジェクト: assistechnologie/RaspiSMS
 /**
  * Cette fonction met à jour une liste de groupes
  * @param $csrf : Le jeton CSRF
  * @param array $_POST['groups'] : Un tableau des groups avec leur nouvelle valeurs
  * @return boolean;
  */
 public function update($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('groups'));
         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->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) {
             $db->insertIntoTable('groups_contacts', ['id_group' => $id_group, 'id_contact' => $id_contact]);
         }
     }
     $_SESSION['successmessage'] = 'Tous les groupes ont été modifiés avec succès.';
     header('Location: ' . $this->generateUrl('groups'));
 }
コード例 #5
0
 /**
  * Cette fonction met à jour une liste de sms
  * @param $csrf : Le jeton CSRF
  * @param array $_POST['scheduleds'] : Un tableau contenant les sms avec leurs nouvelles valeurs
  */
 public function update($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['successmessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('scheduleds'));
         return false;
     }
     global $db;
     $errors = false;
     //Pour chaque SMS programmé reçu, on boucle en récupérant son id (la clef), et sont contenu
     foreach ($_POST['scheduleds'] as $id_scheduled => $scheduled) {
         $date = $scheduled['date'];
         if (!internalTools::validateDate($date, 'Y-m-d H:i:s') && !internalTools::validateDate($date, 'Y-m-d H:i')) {
             $_SESSION['errormessage'] = 'La date renseignée pour le SMS numéro ' . $scheduled['id'] . ' est invalide.';
             header('Location: ' . $this->generateUrl('scheduleds'));
             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->updateTableWhere('scheduleds', ['content' => $scheduled['content'], 'at' => $date], ['id' => $id_scheduled]);
         $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
         if (array_key_exists('numbers', $scheduled)) {
             foreach ($scheduled['numbers'] as $number) {
                 if (!($number = internalTools::parsePhone($number))) {
                     $errors = true;
                     continue;
                 }
                 if (!$db->insertIntoTable('scheduleds_numbers', ['id_scheduled' => $id_scheduled, 'number' => $number])) {
                     $errors = true;
                 }
             }
         }
         if (array_key_exists('contacts', $scheduled)) {
             foreach ($scheduled['contacts'] as $id_contact) {
                 if (!$db->insertIntoTable('scheduleds_contacts', ['id_scheduled' => $id_scheduled, 'id_contact' => $id_contact])) {
                     $errors = true;
                 }
             }
         }
         if (array_key_exists('groups', $scheduled)) {
             foreach ($scheduled['groups'] as $id_group) {
                 if (!$db->insertIntoTable('scheduleds_groups', ['id_scheduled' => $id_scheduled, 'id_group' => $id_group])) {
                     $errors = true;
                 }
             }
         }
     }
     if ($errors) {
         $_SESSION['errormessage'] = 'Tous les SMS ont été modifiés mais certaines données incorrects ont été ignorées.';
         header('Location: ' . $this->generateUrl('scheduleds'));
         return false;
     } else {
         $_SESSION['successmessage'] = 'Tous les SMS ont été modifiés avec succès.';
         header('Location: ' . $this->generateUrl('scheduleds'));
         return true;
     }
 }
コード例 #6
0
ファイル: admin.php プロジェクト: OsaAjani/soap-project
 /**
  * Cette page supprime la ligne de la base
  * @param string $table : Le nom de la table a modifier
  * @param string $id : L'id de la ligne à supprimer
  * @param string $csrf : Le csrf, necessaire pour assurer la suppression
  */
 public function confirmDelete($table, $id, $csrf)
 {
     //On verifie que le CSRF est ok
     if (!\internalTools::verifyCSRF($csrf)) {
         return header('Location: ' . $this->generateUrl('admin'));
     }
     global $db;
     $nbDelete = $db->deleteFromTableWhere($table, ['id' => $id]);
     if (!$nbDelete) {
         $_SESSION['alert'] = ['type' => 'danger', 'text' => 'Impossible de supprimer la ligne'];
     } else {
         $_SESSION['alert'] = ['type' => 'success', 'text' => 'La ligne a bien été supprimée'];
     }
     $arguments = ['table' => $table];
     if (isset($_SESSION['admin-liste-' . $table]['orderBy'])) {
         $arguments['orderBy'] = $_SESSION['admin-liste-' . $table]['orderBy'];
     }
     if (isset($_SESSION['admin-liste-' . $table]['orderDesc'])) {
         $arguments['orderDesc'] = $_SESSION['admin-liste-' . $table]['orderDesc'];
     }
     if (isset($_SESSION['admin-liste-' . $table]['page'])) {
         $arguments['page'] = $_SESSION['admin-liste-' . $table]['page'];
     }
     return header('Location: ' . $this->generateUrl('admin', 'liste', $arguments));
 }
コード例 #7
0
 /**
  * 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 (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('commands'));
         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->updateTableWhere('commands', $command, ['id' => $id]);
     }
     $_SESSION['successmessage'] = 'Toutes les commandes ont été modifiées avec succès.';
     header('Location: ' . $this->generateUrl('commands'));
 }
コード例 #8
0
 /**
  * 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 json : Le statut de l'envoi
  */
 function send($csrf)
 {
     global $db;
     $return = ['success' => true, 'message' => ''];
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($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');
     $_POST['date'] = $now;
     $scheduleds = new scheduleds();
     if (!$scheduleds->create('', true, true)) {
         $return['success'] = false;
         $return['message'] = 'Impossible de créer le SMS';
         echo json_encode($return);
         return false;
     }
     $return['id'] = $_SESSION['discussion_wait_progress'][count($_SESSION['discussion_wait_progress']) - 1];
     echo json_encode($return);
     return true;
 }
コード例 #9
0
 /**
  * Cette fonction met à jour une liste de contacts
  * @param $csrf : Le jeton CSRF
  * @param array $_POST['contacts'] : Un tableau des contacts avec leur nouvelle valeurs
  * @return boolean;
  */
 public function update($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('contacts'));
     }
     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']))) {
             $errors[] = $contact['id'];
             continue;
         }
         $db->updateTableWhere('contacts', ['name' => $contact['name'], 'number' => $number], ['id' => $id]);
     }
     //Si on a eu des erreurs
     if (count($errors)) {
         $_SESSION['errormessage'] = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors);
         return header('Location: ' . $this->generateUrl('contacts'));
     }
     $_SESSION['successmessage'] = 'Tous les contacts ont été modifiés avec succès.';
     return header('Location: ' . $this->generateUrl('contacts'));
 }
コード例 #10
0
ファイル: profile.php プロジェクト: assistechnologie/RaspiSMS
 /**
  * Cette fonction supprime l'utilisateur
  * @param $csrf : Le jeton CSRF
  * @param string $_POST['delete_account'] : La vérification que l'on veux bien supprimer l'utilisateur
  * @return void;
  */
 public function delete($csrf)
 {
     //On vérifie que le jeton csrf est bon
     if (!internalTools::verifyCSRF($csrf)) {
         $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
         header('Location: ' . $this->generateUrl('profile'));
         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'])) {
         $_SESSION['errormessage'] = 'Le compte n\'a pas été supprimé';
         header('Location: ' . $this->generateUrl('profile'));
         return false;
     }
     if (!$db->deleteFromTableWhere('users', ['email' => $_SESSION['email']])) {
         $_SESSION['errormessage'] = 'Impossible de supprime le compte';
         header('Location: ' . $this->generateUrl('profile'));
         return false;
     }
     $this->logout();
     return true;
 }