| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- /**
- * Classe `cron`
- *
- * Cette classe gère les tâches planifiées (cron jobs) pour l'application.
- *
- * Fonctionnalités principales :
- * - Vérification de l'exécution en environnement local.
- * - Gestion des paramètres d'alertes email.
- * - Envoi d'emails pour les documents assignés.
- *
- * @package Core\Class
- */
- class cron
- {
- /**
- * Vérifie si le script est exécuté en local.
- *
- * @return bool TRUE si exécuté en local, FALSE sinon.
- */
- public static function ifLocalHost(){
- return $_SERVER['SERVER_ADDR'] === $_SERVER['REMOTE_ADDR'] ? TRUE : FALSE;
- }
- /**
- * Envoie des emails pour les documents assignés.
- *
- * @return void
- */
- public static function sendMailAssignDocument(){
- foreach (document::assignMailDocument() as $assign) {
- if(self::checkParameter($assign["id"])){
- document::sendEmailCronAssign($assign);
- }
- }
- }
- /**
- * Insère les paramètres d'alertes email pour un utilisateur.
- *
- * @param array|null $_array Les paramètres d'alertes (heures et jours).
- * @return bool TRUE si l'insertion a réussi, FALSE sinon.
- */
- public static function insertParameter(array $_array = NULL){
- $userId = session::getId();
- db::query("DELETE FROM " . DB_T_ALERTES_EMAILS . " WHERE id_user = :id_user");
- db::bind(':id_user', $userId);
- db::execute();
- if(!is_null($_array)){
- foreach ($_array as $heure => $tmp) {
- foreach ($tmp as $jour => $value) {
- db::query("INSERT INTO " . DB_T_ALERTES_EMAILS . " (id, id_user, heure, jour) VALUES (:id, :id_user, :heure, :jour)");
- db::bind(':id', $userId."#".$heure."#".$jour);
- db::bind(':id_user', $userId);
- db::bind(':heure', $heure);
- db::bind(':jour', $jour);
-
- try {
- db::execute();
- } catch (Exception $ex) {
- alert::recError("Erreur d'enregistrement des alertes");
- return FALSE;
- }
- }
- }
- alert::recSuccess("Enregistrement pris en compte");
- return TRUE;
- } else {
- alert::recSuccess("Vous n'avez plus de plages horaires enregistrées");
- return TRUE;
- }
-
- }
- /**
- * Récupère les paramètres d'alertes email pour un utilisateur.
- *
- * @param float|null $_id L'ID de l'utilisateur (optionnel).
- * @return array|null Les paramètres d'alertes ou NULL si aucun paramètre.
- */
- public static function getParameter(float $_id = NULL){
- $userId = is_null($_id) ? session::getId() : $_id;
- db::query("SELECT "
- . "" . DB_T_ALERTES_EMAILS . ".heure, "
- . "" . DB_T_ALERTES_EMAILS . ".jour "
- . "FROM " . DB_T_ALERTES_EMAILS . " "
- . "WHERE id_user = :id_user");
- db::bind(':id_user', $userId);
- $tmp = db::resultset();
- if(isset($tmp)){
- $return = [];
- foreach ($tmp as $value) {
- $return[$value["heure"]][$value["jour"]] = 1;
- }
- return $return;
- } else {
- return NULL;
- }
-
- }
- /**
- * Vérifie si les paramètres d'alertes sont valides pour un utilisateur.
- *
- * @param float $_id L'ID de l'utilisateur.
- * @return bool TRUE si les paramètres sont valides, FALSE sinon.
- */
- public static function checkParameter(float $_id){
- $data = self::getParameter($_id);
- $jourSemaineOriginal = date('w');
- $jourSemaineAdjuste = ($jourSemaineOriginal + 6) % 7; // Pour que le Lundi soit le numéro 0
- return isset($data[date('G')][$jourSemaineAdjuste]) ? TRUE : FALSE;
- }
- }
|