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