Пример #1
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;
     }
 }