security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } // SQL : INSERT INTO droits VALUES ( '/bulletin/autorisation_exceptionnelle_saisie_note.php', 'V', 'F', 'F', 'V', 'F', 'F', 'F', 'F', 'Autorisation exceptionnelle de saisie de notes du bulletin.', ''); if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } /* DROP TABLE IF EXISTS acces_exceptionnel_matieres_notes; CREATE TABLE acces_exceptionnel_matieres_notes ( id INT( 11 ) NOT NULL AUTO_INCREMENT , id_groupe INT( 11 ) NOT NULL , periode INT( 11 ) NOT NULL , date_limite timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, commentaires text NOT NULL, PRIMARY KEY ( id ) ) CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Acces exceptionnel à la modif de notes du bulletin en periode close'; */ if(($_SESSION['statut']=='scolarite')&&(!getSettingAOui('PeutDonnerAccesBullNotePeriodeCloseScol'))) { $mess=rawurlencode("Accès interdit !"); header("Location: ../accueil.php?msg=$mess"); die(); } $id_classe=isset($_POST['id_classe']) ? $_POST['id_classe'] : (isset($_GET['id_classe']) ? $_GET['id_classe'] : NULL); $id_groupe=isset($_POST['id_groupe']) ? $_POST['id_groupe'] : (isset($_GET['id_groupe']) ? $_GET['id_groupe'] : NULL); $periode=isset($_POST['periode']) ? $_POST['periode'] : (isset($_GET['periode']) ? $_GET['periode'] : NULL); $is_posted=isset($_POST['is_posted']) ? $_POST['is_posted'] : (isset($_GET['is_posted']) ? $_GET['is_posted'] : NULL); $display_date_limite=isset($_POST['display_date_limite']) ? $_POST['display_date_limite'] : (isset($_GET['display_date_limite']) ? $_GET['display_date_limite'] : NULL); $display_heure_limite=isset($_POST['display_heure_limite']) ? $_POST['display_heure_limite'] : (isset($_GET['display_heure_limite']) ? $_GET['display_heure_limite'] : NULL); // Pour refermer la page plutôt que proposer un lien retour dans certains cas $refermer_page=isset($_POST['refermer_page']) ? $_POST['refermer_page'] : (isset($_GET['refermer_page']) ? $_GET['refermer_page'] : NULL); $msg=""; if((isset($is_posted))&&(isset($_POST['no_anti_inject_message_autorisation_exceptionnelle_bull_note']))&&($_SESSION['statut']=='administrateur')) { check_token(); //echo "BLIP"; if (isset($NON_PROTECT["message_autorisation_exceptionnelle_bull_note"])){ $message_autorisation_exceptionnelle_bull_note= traitement_magic_quotes(corriger_caracteres($NON_PROTECT["message_autorisation_exceptionnelle_bull_note"])); } else{ $message_autorisation_exceptionnelle_bull_note=""; } // Contrôle des saisies pour supprimer les sauts de lignes surnuméraires. $message_autorisation_exceptionnelle_bull_note=suppression_sauts_de_lignes_surnumeraires($message_autorisation_exceptionnelle_bull_note); if(!saveSetting('message_autorisation_exceptionnelle_bull_note',$message_autorisation_exceptionnelle_bull_note)) { $msg="Erreur lors de l'enregistrement du message personnalisé.
"; } else { $msg="Enregistrement du message personnalisé effectué.
"; } } if((isset($is_posted))&&(isset($id_classe))&&(isset($id_groupe))&&(isset($periode))&&(isset($display_date_limite))&&(isset($display_heure_limite))) { check_token(); if (preg_match("#([0-9]{2})/([0-9]{2})/([0-9]{4})#", $_POST['display_date_limite'])) { $annee = mb_substr($_POST['display_date_limite'],6,4); $mois = mb_substr($_POST['display_date_limite'],3,2); $jour = mb_substr($_POST['display_date_limite'],0,2); //echo "$jourd/$moisd/$anneed
"; if(!checkdate($mois, $jour, $annee)) { $msg.="ERREUR : La date $jour/$mois/$annee n'est pas valide.
"; } else { if (preg_match("/([0-9]{1,2}):([0-9]{0,2})/", str_ireplace('h',':',$display_heure_limite))) { $heure = mb_substr($_POST['display_heure_limite'],0,2); $minute = mb_substr($_POST['display_heure_limite'],3,2); if(($heure>23)||($heure<0)||($minute<0)||($minute>59)) { $msg.="ERREUR : L'heure $heure/$minute n'est pas valide.
"; } else { $sql="DELETE FROM acces_exceptionnel_matieres_notes WHERE id_groupe='$id_groupe' AND periode='$periode';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); $date_limite_email="$annee/$mois/$jour à $heure:$minute"; $sql="INSERT INTO acces_exceptionnel_matieres_notes SET id_groupe='$id_groupe', periode='$periode', date_limite='$annee-$mois-$jour $heure:$minute:00';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(!$res) { $msg.="ERREUR lors de l'insertion de l'enregistrement.
"; } else { $msg.="Enregistrement de l'autorisation effectué.
"; $complement_texte_mail=""; if(($_SESSION['statut']=='administrateur')||(($_SESSION['statut']=='scolarite')&&(getSettingAOui('PeutDonnerAccesBullAppPeriodeCloseScol')))) { if((isset($_POST['donner_acces_modif_bull_app']))&&($_POST['donner_acces_modif_bull_app']=='y')) { $sql="DELETE FROM matieres_app_delais WHERE id_groupe='$id_groupe' AND periode='$periode';"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); $mode=isset($_POST['mode']) ? $_POST['mode'] : "proposition"; if((isset($mode))&&(!in_array($mode, array('proposition', 'acces_complet')))) { $mode="proposition"; $msg.="Mode de validation de la saisie d'appréciation incorrect.
On opte pour une 'proposition seule' devant être controlée/validée par la suite.
"; } $sql="INSERT INTO matieres_app_delais SET id_groupe='$id_groupe', periode='$periode', date_limite='$annee-$mois-$jour $heure:$minute:00', mode='".$mode."';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(!$res) { $msg.="ERREUR lors de l'insertion de l'enregistrement pour les appréciations des bulletins.
"; } else { $msg.="Enregistrement de l'autorisation pour les appréciations des bulletins effectué.
"; $complement_texte_mail="Vous pourrez aussi corriger les appreciations du bulletin.\n\n"; } } } $envoi_mail_actif=getSettingValue('envoi_mail_actif'); if(($envoi_mail_actif!='n')&&($envoi_mail_actif!='y')) { $envoi_mail_actif='y'; // Passer à 'n' pour faire des tests hors ligne... la phase d'envoi de mail peut sinon ensabler. } if($envoi_mail_actif=='y') { $email_personne_autorisant=""; $nom_personne_autorisant=""; $sql="select nom, prenom, civilite, email from utilisateurs where login = '".$_SESSION['login']."';"; $req=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($req)>0) { $lig_u=mysqli_fetch_object($req); $nom_personne_autorisant=$lig_u->civilite." ".casse_mot($lig_u->nom,'maj')." ".casse_mot($lig_u->prenom,'majf'); $email_personne_autorisant=$lig_u->email; if(check_mail($email_personne_autorisant)) { $tab_param_mail['cc'][]=$email_personne_autorisant; $tab_param_mail['cc_name'][]=$nom_personne_autorisant; $tab_param_mail['replyto']=$email_personne_autorisant; $tab_param_mail['replyto_name']=$nom_personne_autorisant; } } $email_destinataires=""; $designation_destinataires=""; // Recherche des profs du groupe $sql="SELECT DISTINCT u.email, u.civilite, u.nom, u.prenom FROM utilisateurs u, j_groupes_professeurs jgp WHERE jgp.id_groupe='$id_groupe' AND jgp.login=u.login AND u.email!='';"; //echo "$sql
"; $req=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($req)>0) { $lig_u=mysqli_fetch_object($req); $designation_destinataire_courant=remplace_accents($lig_u->civilite." ".$lig_u->nom." ".casse_mot($lig_u->prenom,'majf2'),'all_nospace'); $designation_destinataires.=$designation_destinataire_courant; $email_destinataires.=$designation_destinataires." <".$lig_u->email.">"; $tab_param_mail['destinataire'][]=$lig_u->email; $tab_param_mail['destinataire_name'][]=$designation_destinataire_courant; while($lig_u=mysqli_fetch_object($req)) { $designation_destinataire_courant=remplace_accents($lig_u->civilite." ".$lig_u->nom." ".casse_mot($lig_u->prenom,'majf2'),'all_nospace'); $designation_destinataires.=", ".$designation_destinataire_courant; // Il se passe un truc bizarre avec les suivants //$email_destinataires.=$designation_destinataires." <".$lig_u->email.">"; $email_destinataires.=", ".$lig_u->email; $tab_param_mail['destinataire'][]=$lig_u->email; $tab_param_mail['destinataire_name'][]=$designation_destinataire_courant; } $sujet_mail="[GEPI] Autorisation exceptionnelle de saisie/correction de notes de bulletins"; //$gepiPrefixeSujetMail=getSettingValue("gepiPrefixeSujetMail") ? getSettingValue("gepiPrefixeSujetMail") : ""; //if($gepiPrefixeSujetMail!='') {$gepiPrefixeSujetMail.=" ";} $ajout_header=""; if($email_personne_autorisant!="") { $ajout_header.="Cc: $nom_personne_autorisant <".$email_personne_autorisant.">"; $ajout_header.="\r\n"; $ajout_header.="Reply-to: $nom_personne_autorisant <".$email_personne_autorisant.">\r\n"; } $tab_champs=array('classes'); $current_group=get_group($id_groupe,$tab_champs); $texte_mail="Vous avez jusqu'au $date_limite_email pour saisir/corriger une ou des notes de bulletins pour l'enseignement ".$current_group['name']." (".$current_group['description']." en ".$current_group['classlist_string'].") en période $periode.\n\n"; $message_autorisation_exceptionnelle_bull_note=getSettingValue('message_autorisation_exceptionnelle_bull_note'); if($message_autorisation_exceptionnelle_bull_note=='') { $texte_mail.="Cette autorisation est exceptionnelle.\nIl conviendra de veiller à effectuer les saisies dans les temps une prochaine fois.\n"; } else { $texte_mail.=$message_autorisation_exceptionnelle_bull_note."\n"; } $texte_mail.=$complement_texte_mail; $salutation=(date("H")>=18 OR date("H")<=5) ? "Bonsoir" : "Bonjour"; $texte_mail=$salutation." ".$designation_destinataires.",\n\n".$texte_mail."\nCordialement.\n-- \n".$nom_personne_autorisant; $envoi = envoi_mail($sujet_mail, $texte_mail, $email_destinataires, $ajout_header, "plain", $tab_param_mail); if($envoi) {$msg.="Email expédié à ".htmlspecialchars($email_destinataires)."
";} } } } } } else { $msg = "ATTENTION : L'heure limite n'est pas valide.
L'enregistrement ne peut avoir lieu.
"; } } } else { $msg = "ATTENTION : La date limite n'est pas valide.
L'enregistrement ne peut avoir lieu.
"; } } $style_specifique[] = "lib/DHTMLcalendar/calendarstyle"; $javascript_specifique[] = "lib/DHTMLcalendar/calendar"; $javascript_specifique[] = "lib/DHTMLcalendar/lang/calendar-fr"; $javascript_specifique[] = "lib/DHTMLcalendar/calendar-setup"; //**************** EN-TETE ***************** $titre_page = "Autorisation exceptionnelle de saisie de notes de bulletins"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** //debug_var(); echo "

\n"; if($refermer_page=='y') { echo "Retour Refermer la page \n"; } else { echo "Retour Retour à l'accueil\n"; } if(($_SESSION['statut']=='administrateur')&&(isset($_GET['definir_message']))) { echo " | Autorisation exceptionnelle"; echo "

\n"; echo "

Par défaut le message reçu par un professeur exceptionnellement autorisé à saisir en retard ou corriger des notes de bulletins est le suivant :
\n"; $texte_mail="Bonjour/Bonsoir\n\nVous avez jusqu'au TELLE DATE TELLE HEURE\npour saisir/corriger une ou des notes de bulletins pour l'enseignement XXXXXXXXXX\nen TELLE(S) CLASSE(S) en période NUMERO_PERIODE.\n\n"; $texte_mail.="Cette autorisation est exceptionnelle.\nIl conviendra de veiller à effectuer les saisies dans les temps une prochaine fois.\n"; $texte_mail.="\nCordialement."; echo "

".$texte_mail."
\n"; echo "

Ce message peut être partiellement personnalisé.
Vous pouvez intervenir sur la partie en gras du message.

\n"; $message_autorisation_exceptionnelle_bull_note=getSettingValue('message_autorisation_exceptionnelle_bull_note'); if($message_autorisation_exceptionnelle_bull_note!='') { echo "

Votre message est actuellement personnalisé de la façon suivante :"; $texte_mail="Bonjour/Bonsoir\n\nVous avez jusqu'au TELLE DATE TELLE HEURE\npour saisir/corriger une ou des notes de bulletins pour l'enseignement XXXXXXXXXX\nen TELLE(S) CLASSE(S) en période NUMERO_PERIODE.\n\n"; $texte_mail.="$message_autorisation_exceptionnelle_bull_note\n"; $texte_mail.="\nCordialement."; echo "

".$texte_mail."
\n"; } else { $texte_mail.=$message_autorisation_exceptionnelle_bull_note."\n"; } echo "
\n"; echo "

Message personnalisé :
\n"; echo "\n"; echo "
\n"; echo add_token_field(); echo "\n"; echo "\n"; echo "

\n"; echo "


\n"; require("../lib/footer.inc.php"); die(); } if(!isset($id_classe)) { if($_SESSION['statut']=='administrateur') { echo " | Définir le message"; } echo " | Autoriser la modification d'appréciations des bulletins\n"; echo "

\n"; echo "

Autoriser la modification de moyennes des bulletins

"; //echo "
\n"; // On adapte la liste des classes selon le visiteur if($_SESSION['statut']=='scolarite') { $sql="SELECT DISTINCT c.id,c.classe FROM classes c, j_scol_classes jsc WHERE jsc.id_classe=c.id AND jsc.login='".$_SESSION['login']."' ORDER BY classe"; } elseif($_SESSION['statut']=='administrateur') { $sql="SELECT DISTINCT c.id,c.classe FROM classes c ORDER BY c.classe"; } else { // On ne doit pas arriver là echo "

Statut non autorisé.

"; require("../lib/footer.inc.php"); die(); } $res_clas=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_clas)>0) { echo "

Choisir une classe :

\n"; $tab_txt=array(); $tab_lien=array(); while($lig_clas=mysqli_fetch_object($res_clas)) { $tab_txt[]=$lig_clas->classe; if(isset($id_incident)) { //$tab_lien[]=$_SERVER['PHP_SELF']."?id_classe=".$lig_clas->id."&id_incident=$id_incident"; $tab_lien[]=$_SERVER['PHP_SELF']."?id_classe=".$lig_clas->id.""; } else { $tab_lien[]=$_SERVER['PHP_SELF']."?id_classe=".$lig_clas->id; } } echo "
\n"; tab_liste($tab_txt,$tab_lien,4); echo "
\n"; } } elseif((!isset($id_groupe))||(!isset($periode))) { echo " | Choisir une autre classe\n"; echo " | Autoriser la modification d'appréciations des bulletins\n"; echo "

\n"; echo "

Autoriser la modification de moyennes des bulletins

"; echo "

Pour quel enseignement souhaitez-vous autoriser un enseignant à effectuer des modifications de notes de ses bulletins ?

\n"; $groups=get_groups_for_class($id_classe,"","n"); include("../lib/periodes.inc.php"); $date_courante=time(); $alt=1; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; foreach($groups as $current_group) { $alt=$alt*(-1); echo "\n"; echo "\n"; echo "\n"; echo "\n"; for($i=1;$i<$nb_periode;$i++) { if($ver_periode[$i]=='P') { //echo "\n"; echo "\n"; } elseif($ver_periode[$i]=='O') { echo "\n"; } else { echo "\n"; } } echo "\n"; } echo "
EnseignementsClasse(s)EnseignantsPériodes
".$current_group['name']." (".$current_group['description'].")".$current_group["classlist_string"]."\n"; $sql="SELECT u.login, u.nom, u.prenom, u.civilite FROM utilisateurs u, j_groupes_professeurs j WHERE (u.login = j.login and j.id_groupe = '" . $current_group['id'] . "') ORDER BY u.nom, u.prenom"; $get_profs=mysqli_query($GLOBALS["mysqli"], $sql); $nb = mysqli_num_rows($get_profs); for ($i=0;$i<$nb;$i++){ if($i>0) {echo ",
\n";} $p_login = old_mysql_result($get_profs, $i, "login"); $p_nom = old_mysql_result($get_profs, $i, "nom"); $p_prenom = old_mysql_result($get_profs, $i, "prenom"); $civilite = old_mysql_result($get_profs, $i, "civilite"); echo "$civilite $p_nom $p_prenom"; } echo "
\n"; echo "Période $i\n"; $sql="SELECT UNIX_TIMESTAMP(date_limite) AS date_limite FROM acces_exceptionnel_matieres_notes WHERE id_groupe='".$current_group['id']."' AND periode='$i';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $lig=mysqli_fetch_object($res); if($lig->date_limite>$date_courante) { echo "
"; echo "Autorisation jusqu'au
".strftime("%d/%m/%Y à %H:%M",$lig->date_limite); } } echo "
Période $i closePériode $i ouverte en saisie
\n"; } else { echo " | Choisir une autre classe\n"; echo " | Choisir un autre enseignement de la classe\n"; echo " | Autoriser la modification d'appréciations des bulletins\n"; echo "

\n"; echo "

Autoriser la modification de moyennes des bulletins

"; echo "\n"; echo add_token_field(); $group=get_group($id_groupe); echo "

Vous souhaitez autoriser exceptionnellement un enseignant à effectuer des saisies/corrections de notes de bulletins pour l'enseignement ".$group['name']." (".$group['description']." en ".$group['classlist_string'].") en période $periode.

\n"; $sql="SELECT commentaires, UNIX_TIMESTAMP(date_limite) AS date_limite FROM acces_exceptionnel_matieres_notes WHERE id_groupe='".$group['id']."' AND periode='$periode';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $lig=mysqli_fetch_object($res); $date_limite=$lig->date_limite; $commentaires=$lig->commentaires; $date_courante=time(); //$tab_date_limite=get_date($date_limite); echo "

Une autorisation exceptionnelle de saisie existe pour cet enseignement/période : ".strftime("%d/%m/%Y à %H:%M",$date_limite)."

\n"; $display_date_limite=strftime("%d/%m/%Y",$date_limite); $display_heure_limite=strftime("%H:%M",$date_limite); if($commentaires!="") { echo "
Compte-rendu des modifications effectuées :
".nl2br($commentaires)."
\n"; } if($date_courante>$date_limite) { echo "

Le délais imparti pour la saisie/correction est dépassé.

\n"; } } else { $annee = strftime("%Y"); $mois = strftime("%m"); $jour = strftime("%d"); $display_date_limite=$jour."/".$mois."/".$annee; $date_courante=getdate(); $heure_courante=$date_courante['hours']; $minute_courante=$date_courante['minutes']; if($minute_courante+15>=60) { if($heure_courante+1>=24) { $heure_limite=$heure_courante+1-24; $minute_limite=$minute_courante+15-60; // A charge au couche-tard d'augmenter d'un jour... } else { $heure_limite=$heure_courante+1; $minute_limite=$minute_courante+15-60; } } else { $heure_limite=$heure_courante; $minute_limite=$minute_courante+15; } $display_heure_limite="$heure_limite:$minute_limite"; } echo "

Quelle doit être la date/heure limite de cette autorisation de modification de notes de bulletins ?
\n"; //include("../lib/calendrier/calendrier.class.php"); //$cal = new Calendrier("formulaire", "display_date_limite"); if(isset($refermer_page)) { echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; //echo "get_strPopup('../lib/calendrier/pop.calendrier.php', 350, 170)."\">\"Calendrier\"\n"; echo img_calendrier_js("display_date_limite", "img_bouton_display_date_limite"); echo " à \n"; if(($_SESSION['statut']=='administrateur')||(($_SESSION['statut']=='scolarite')&&(getSettingAOui('PeutDonnerAccesBullAppPeriodeCloseScol')))) { echo "
"; echo "

"; echo "\n"; echo "
"; if(getSettingAOui('autoriser_correction_bulletin')) { echo "Ce premier mode ne présente pas d'intérêt ici puisque vous avez donné globalement le droit (en administrateur dans Gestion générale/Droits d'accès) de proposer des corrections tant que la période n'est pas complètement close.
Seul le mode ci-dessous apporte quelque chose dans votre configuration.
"; } echo "\n"; echo "
"; echo "
"; } echo "\n"; echo "

\n"; // Mail echo "
\n"; if((isset($commentaires))&&($commentaires!="")) { echo "


\n

NOTES : Si vous définissez un nouveau délais, le texte des modifications effectuées (affiché ci-dessus) sera supprimé.
Si vous souhaitez en conserver la trace, prenez soin de copier/coller le contenu vers un bloc-notes,...

\n"; } } echo "


\n"; require("../lib/footer.inc.php"); ?>