foreach ($tab_ids as $classe_id) { $is_modif = DB_STRUCTURE_BREVET::DB_modifier_brevet_classe_etat($classe_id, $new_etat); if ($is_modif && $abonnes_nb && isset($tab_profs_par_classe[$classe_id])) { $texte = 'Statut [' . $tab_etats[$new_etat] . '] appliqué par ' . $auteur . ' à [Fiches brevet] [Session ' . $annee_session_brevet . '] [' . $tab_classes[$classe_id] . '].' . "\r\n"; foreach ($tab_profs_par_classe[$classe_id] as $user_id) { $tab_abonnes[$user_id]['contenu'] .= $texte; } } } // On termine par le log et l'envoi des notifications if ($abonnes_nb) { foreach ($tab_abonnes as $user_id => $tab) { if ($tab['contenu']) { DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_visible($user_id, $abonnement_ref, $tab['statut'], $tab['contenu']); if ($tab['statut'] == 'envoyée') { $tab['contenu'] .= Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $tab['courriel']); $courriel_bilan = Sesamail::mail($tab['mailto'], 'Notification - Bilan officiel, étape de saisie', $tab['contenu'], $tab['mailto']); } } } } } } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Récupérer l'état de la fiche brevet des classes concernées // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_classe_etat = array(); $DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_classes_editables_etat($listing_classes_concernees); foreach ($DB_TAB as $DB_ROW) { $tab_classe_etat[$DB_ROW['groupe_id']] = $DB_ROW['fiche_brevet']; }
$DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_id', $user_id); if (empty($DB_ROW)) { $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++; $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME']; exit_json(FALSE, 'Utilisateur inconnu ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.'); } // On vérifie que l'adresse mail concorde if ($DB_ROW['user_email'] != $courriel) { $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++; $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME']; exit_json(FALSE, 'Adresse mail non concordante ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.'); } // On enregistre un ticket pour cette demande $user_pass_key = crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']); $code_mdp = $BASE ? $user_pass_key . 'g' . $BASE : $user_pass_key; DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], '', $user_pass_key); // On envoi le courriel à l'utilisateur $mail_contenu = 'Bonjour,' . "\r\n"; $mail_contenu .= "\r\n"; $mail_contenu .= 'Une demande de nouveaux identifiants a été formulée pour le compte SACoche de ' . $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . '.' . "\r\n"; $mail_contenu .= "\r\n"; $mail_contenu .= 'Pour confirmer la génération d\'un nouveau mot de passe, veuillez cliquer sur ce lien :' . "\r\n"; $mail_contenu .= URL_DIR_SACOCHE . '?code_mdp=' . $code_mdp . "\r\n"; $mail_contenu .= Sesamail::texte_pied_courriel(array('excuses_derangement', 'info_connexion', 'no_reply', 'signature'), $DB_ROW['user_email']); $courriel_bilan = Sesamail::mail($DB_ROW['user_email'], 'Demande de nouveaux identifiants', $mail_contenu, $DB_ROW['user_email']); if (!$courriel_bilan) { exit_json(FALSE, 'Erreur lors de l\'envoi du courriel !'); } // OK ! exit_json(TRUE); }
// Notification (qui a la particularité d'être envoyée de suite, et avec tous les admins en destinataires du mail) $abonnement_ref = 'contact_externe'; $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref); $destinataires_nb = count($DB_TAB); if (!$destinataires_nb) { // Normalement impossible, l'abonnement des admins à ce type de de notification étant obligatoire exit_json(FALSE, 'Aucun destinataire trouvé.'); } $tab_destinataires = array(); $notification_contenu = 'Message de ' . $prenom . ' ' . $nom . ' (' . $courriel . ') :' . "\r\n\r\n" . $message . "\r\n"; foreach ($DB_TAB as $DB_ROW) { $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable'; DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_visible($DB_ROW['user_id'], $abonnement_ref, $notification_statut, $notification_contenu); if ($notification_statut == 'envoyée') { $tab_destinataires[] = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>'; } } if (count($tab_destinataires)) { /** * L'envoi d'un contact externe depuis la page d'authentification est une exception à plusieurs titres : * - le numéro de base n'est pas en session * - envoi possible à plusieurs destinataires simultanéments * - notification obligatoire et immédiate * Du coup, le paramètre 'notif_individuelle' n'est pas transmis dans le tableau pour texte_pied_courriel(). */ $notification_contenu .= Sesamail::texte_pied_courriel(array('no_reply', 'signature')); $courriel_bilan = Sesamail::mail($tab_destinataires, 'Notification - Contact externe', $notification_contenu, $tab_destinataires); } $admin_txt = $destinataires_nb > 1 ? 'aux ' . $destinataires_nb . ' administrateurs' : 'à l\'administrateur'; exit_json(TRUE, $admin_txt); }
$abonnement_ref = 'bilan_officiel_appreciation'; $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref, $destinataire_id); $destinataires_nb = count($DB_TAB); if (!$destinataires_nb) { // Normalement impossible, l'abonnement des personnels à ce type de de notification étant obligatoire exit('Erreur : destinataire non trouvé !'); } $notification_debut = $action == 'signaler_faute' ? 'Signalement effectué par ' : 'Correction apportée par '; $notification_contenu = $notification_debut . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']) . ' :' . "\r\n\r\n" . $message_contenu . "\r\n"; foreach ($DB_TAB as $DB_ROW) { // 1 seul passage en fait $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable'; DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_visible($DB_ROW['user_id'], $abonnement_ref, $notification_statut, $notification_contenu); if ($notification_statut == 'envoyée') { $destinataire = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>'; $notification_contenu .= Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $DB_ROW['user_email']); $courriel_bilan = Sesamail::mail($destinataire, 'Notification - Erreur appréciation bilan officiel', $notification_contenu, $destinataire); } } exit('ok'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Générer un archivage des saisies // //////////////////////////////////////////////////////////////////////////////////////////////////// $tab_actions = array('imprimer_donnees_eleves_prof' => 'Mes appréciations pour chaque élève et le groupe classe', 'imprimer_donnees_eleves_collegues' => 'Appréciations des collègues pour chaque élève', 'imprimer_donnees_classe_collegues' => 'Appréciations des collègues sur le groupe classe', 'imprimer_donnees_eleves_syntheses' => 'Appréciations de synthèse générale pour chaque élève', 'imprimer_donnees_eleves_moyennes' => 'Tableau des moyennes pour chaque élève', 'imprimer_donnees_eleves_recapitulatif' => 'Récapitulatif annuel des moyennes et appréciations par élève'); if (isset($tab_actions[$action])) { require CHEMIN_DOSSIER_INCLUDE . 'code_officiel_archiver.php'; exit; // Normalement, on n'arrive pas jusque là. } // ////////////////////////////////////////////////////////////////////////////////////////////////////
/** * Envoyer ou rendre disponibles les notifications en attente. * * @param void * @return void */ public static function envoyer_notifications() { $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_notifications_a_publier(); if (!empty($DB_TAB)) { foreach ($DB_TAB as $DB_ROW) { $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable'; DB_STRUCTURE_NOTIFICATION::DB_modifier_statut($DB_ROW['notification_id'], $DB_ROW['user_id'], $notification_statut); if ($notification_statut == 'envoyée') { $mail_user = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>'; $mail_objet = 'Notification - ' . $DB_ROW['abonnement_objet']; $mail_contenu = $DB_ROW['notification_contenu'] . Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $DB_ROW['user_email']); $courriel_bilan = Sesamail::mail($mail_user, $mail_objet, $mail_contenu, $mail_user); } } } }