/** * 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; }
/** * 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; }
/** * 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')); }
/** * 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')); }
/** * 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; } }
/** * 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)); }
/** * 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')); }
/** * 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; }
/** * 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')); }
/** * 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; }