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(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } //pour gérer le verrouillage de la période depuis le fichier Vérif_bulletins.php $classe=isset($_GET['classe']) ? $_GET['classe'] : 0; $periode=isset($_GET['periode']) ? $_GET['periode'] : 0; // quelle action après le verrouillage ? $action_apres=isset($_GET['action']) ? $_GET['action'] : NULL; //debug_var(); if((isset($_GET['mode']))&&($_GET['mode']="change_verrouillage")&& (isset($_GET['id_classe']))&&(preg_match("/[0-9]{1,}/", $_GET['id_classe']))&& (isset($_GET['num_periode']))&&(preg_match("/[0-9]{1,}/", $_GET['num_periode']))&& (isset($_GET['etat']))&&(in_array($_GET['etat'], array("O", "P", "N")))) { check_token(); $sql="SELECT verouiller, date_fin FROM periodes p, j_scol_classes jsc WHERE jsc.login='".$_SESSION['login']."' AND jsc.id_classe=p.id_classe AND p.id_classe='".$_GET['id_classe']."' AND p.num_periode='".$_GET['num_periode']."';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $lig=mysqli_fetch_object($res); if ($lig->date_fin==0) {//la date de fin n'est pas renseignee, on la renseigne $sql="UPDATE periodes SET verouiller='".$_GET['etat']."', date_verrouillage=NOW(), date_fin=NOW() WHERE (num_periode='".$_GET['num_periode']."' and id_classe='".$_GET['id_classe']."')"; } else { $sql="UPDATE periodes SET verouiller='".$_GET['etat']."', date_verrouillage=NOW() WHERE (num_periode='".$_GET['num_periode']."' and id_classe='".$_GET['id_classe']."')"; } $res=mysqli_query($GLOBALS["mysqli"], $sql); if (!$res) { echo "KO"; } else { echo "Période ".$traduction_verrouillage_periode[$_GET['etat']].""; } } else { echo "KO"; } die(); } /* elseif((isset($_POST['mode']))&&($_POST['mode']="change_verrouillage")&& (isset($_POST['id_classe']))&&(preg_match("/[0-9]{1,}/", $_POST['id_classe']))&& (isset($_POST['etat']))&&(is_array($_POST['etat']))) { // Verrouillage depuis visualisation/affiche_eleve.php check_token(); foreach($etat as $num_periode => $current_etat) { if(!preg_match("/[0-9]{1,}/", $num_periode)) { echo "ERREUR : Le numéro de période $num_periode est invalide."; } elseif(!in_array($current_etat, array("O", "P", "N"))) { if($current_etat!="") { echo "ERREUR en période $num_periode, l'état $current_etat est invalide."; } } else { echo "P$num_periode: "; $sql="SELECT verouiller, date_fin FROM periodes p, j_scol_classes jsc WHERE jsc.login='".$_SESSION['login']."' AND jsc.id_classe=p.id_classe AND p.id_classe='".$_POST['id_classe']."' AND p.num_periode='".$num_periode."';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $lig=mysqli_fetch_object($res); if ($lig->date_fin==0) {//la date de fin n'est pas renseignee, on la renseigne $sql="UPDATE periodes SET verouiller='".$current_etat."', date_verrouillage=NOW(), date_fin=NOW() WHERE (num_periode='".$num_periode."' and id_classe='".$_GET['id_classe']."')"; } else { $sql="UPDATE periodes SET verouiller='".$current_etat."', date_verrouillage=NOW() WHERE (num_periode='".$num_periode."' and id_classe='".$_GET['id_classe']."')"; } $res=mysqli_query($GLOBALS["mysqli"], $sql); if (!$res) { echo "KO"; } else { echo "Période ".$traduction_verrouillage_periode[$current_etat].""; } } else { echo "KO"; } } echo "
"; } die(); } */ elseif((isset($_POST['mode']))&&($_POST['mode']="change_verrouillage")&& (isset($_POST['id_classe']))&&(preg_match("/[0-9]{1,}/", $_POST['id_classe']))&& (isset($_POST['chaine_etat']))&&(is_string($_POST['chaine_etat']))) { // Verrouillage depuis visualisation/affiche_eleve.php check_token(); $etat=array(); $tab=explode("|", $_POST['chaine_etat']); for($loop=0;$loop"; } } foreach($etat as $num_periode => $current_etat) { if(!preg_match("/[0-9]{1,}/", $num_periode)) { echo "ERREUR : Le numéro de période $num_periode est invalide."; } elseif(!in_array($current_etat, array("O", "P", "N"))) { if($current_etat!="") { echo "ERREUR en période $num_periode, l'état $current_etat est invalide."; } } else { echo "Période $num_periode : "; $sql="SELECT verouiller, date_fin FROM periodes p, j_scol_classes jsc WHERE jsc.login='".$_SESSION['login']."' AND jsc.id_classe=p.id_classe AND p.id_classe='".$_POST['id_classe']."' AND p.num_periode='".$num_periode."';"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { $lig=mysqli_fetch_object($res); if ($lig->date_fin==0) {//la date de fin n'est pas renseignee, on la renseigne $sql="UPDATE periodes SET verouiller='".$current_etat."', date_verrouillage=NOW(), date_fin=NOW() WHERE (num_periode='".$num_periode."' and id_classe='".$_POST['id_classe']."')"; } else { $sql="UPDATE periodes SET verouiller='".$current_etat."', date_verrouillage=NOW() WHERE (num_periode='".$num_periode."' and id_classe='".$_POST['id_classe']."')"; } $res=mysqli_query($GLOBALS["mysqli"], $sql); if (!$res) { echo "KO"; } else { echo "Période ".$traduction_verrouillage_periode[$current_etat].""; } } else { echo "KO"; } } echo "
"; } echo "

Rafraichissez la page pour prendre en compte les modifications.

"; die(); } if (isset($_POST['deverouillage_auto_periode_suivante'])) { check_token(); if (!saveSetting("deverouillage_auto_periode_suivante", $_POST['deverouillage_auto_periode_suivante'])) { $msg .= "Erreur lors de l'enregistrement de deverouillage_auto_periode_suivante !"; $reg_ok = 'no'; } } if (isset($_POST['ok'])) { check_token(); $pb_reg_ver = 'no'; //$calldata = sql_query("SELECT DISTINCT c.id, c.classe FROM classes c, periodes p WHERE p.id_classe = c.id ORDER BY classe"); $calldata = sql_query("SELECT DISTINCT c.id, c.classe FROM classes c, periodes p, j_scol_classes jsc WHERE p.id_classe = c.id AND jsc.id_classe=c.id AND jsc.login='".$_SESSION['login']."' ORDER BY classe"); if ($calldata) { for ($k = 0; ($row = sql_row($calldata, $k)); $k++) { $id_classe = $row[0]; $periode_query = sql_query("SELECT verouiller, date_fin, date_conseil_classe FROM periodes WHERE id_classe = '$id_classe' ORDER BY num_periode"); $nb_periode = sql_count($periode_query) + 1 ; if ($periode_query) { for ($i = 0; ($row_per = sql_row($periode_query, $i)); $i++) { $nom_classe = "cl_".$id_classe."_".$i; //echo "\$nom_classe=$nom_classe
"; //echo "\$row_per[0]=$row_per[0]
"; $t = $i+1; //if (isset($_POST[$nom_classe])) { if ((isset($_POST[$nom_classe]))&&($_POST[$nom_classe]!=$row_per[0])) { //$register = sql_query("UPDATE periodes SET verouiller='".$_POST[$nom_classe]."' WHERE (num_periode='".$t."' and id_classe='".$id_classe."')"); if ($row_per[1] == 0) {//la date de fin n'est pas renseignee, on la renseigne $register = sql_query("UPDATE periodes SET verouiller='".$_POST[$nom_classe]."', date_verrouillage=NOW(), date_fin=NOW() WHERE (num_periode='".$t."' and id_classe='".$id_classe."')"); if (!$register) {$pb_reg_ver = 'yes';} } else { $register = sql_query("UPDATE periodes SET verouiller='".$_POST[$nom_classe]."', date_verrouillage=NOW() WHERE (num_periode='".$t."' and id_classe='".$id_classe."')"); if (!$register) {$pb_reg_ver = 'yes';} } } if ((isset($_POST["date_fin_".$nom_classe]))&&($_POST["date_fin_".$nom_classe]!="")) { try { $date_fin = new DateTime(str_replace("/",".",$_POST["date_fin_".$nom_classe])); $date_fin->setTime(23,59,59); if ($date_fin->format('U') != $row_per[1]) { $register = sql_query("UPDATE periodes SET date_fin='".$date_fin->format('Y-m-d')."' WHERE (num_periode='".$t."' and id_classe='".$id_classe."')"); if (!$register) {$pb_reg_ver = 'yes';} } } catch (Exception $x) { } } if ((isset($_POST["date_conseil_".$nom_classe]))&&($_POST["date_conseil_".$nom_classe]!="")) { try { $date_conseil = new DateTime(str_replace("/",".",$_POST["date_conseil_".$nom_classe])); $date_conseil->setTime(23,59,59); if ($date_conseil->format('U') != $row_per[1]) { $register = sql_query("UPDATE periodes SET date_conseil_classe='".$date_conseil->format('Y-m-d')."' WHERE (num_periode='".$t."' and id_classe='".$id_classe."')"); if (!$register) {$pb_reg_ver = 'yes';} } } catch (Exception $x) { } } } } } } // Déverrouillage de la période suivante si le bouton radio est à Oui. //if ((($action_apres == 'retour') OR ($action_apres == 'imprime_html') OR ($action_apres == 'imprime_pdf') OR ($action_apres == 'rien')) AND isset($_POST['deverouillage_auto_periode_suivante'])) { if ((($action_apres == 'retour') OR ($action_apres == 'imprime_bull') OR ($action_apres == 'rien')) AND isset($_POST['deverouillage_auto_periode_suivante'])) { if (($_POST['deverouillage_auto_periode_suivante'])=='y') { //recherche du nombre de période pour la classe $sql_periode = "SELECT * FROM periodes WHERE id_classe='$classe';"; $result_periode = mysqli_query($GLOBALS["mysqli"], $sql_periode); $nb_periodes_classe = mysqli_num_rows($result_periode); //echo $nb_periodes_classe; $periode_en_cours = $periode; $periode_suivante = $periode+1; //Pour la période modifiée on récupère son état $etat_periode=old_mysql_result($result_periode, $periode-1, "verouiller"); //echo "
".$etat_periode; //echo "
".$periode_en_cours; //echo "
".$nb_periodes_classe; //si l'état est P ou O on dévérouille totalement la période +1 (di elle existe !) if (($etat_periode=='P') OR $etat_periode=='O') { if ($periode_en_cours < $nb_periodes_classe) { //echo "
On déverrouille $periode_suivante"; //$sql_maj_periode_suivante = "UPDATE periodes SET verouiller='N' WHERE (num_periode='".$periode_suivante."' and id_classe='".$classe."')"; //$sql_maj_periode_suivante = "UPDATE periodes SET verouiller='N', date_verrouillage='".time()."' WHERE (num_periode='".$periode_suivante."' and id_classe='".$classe."')"; $sql_maj_periode_suivante = "UPDATE periodes SET verouiller='N', date_verrouillage=NOW() WHERE (num_periode='".$periode_suivante."' and id_classe='".$classe."')"; //echo "
".$sql_maj_periode_suivante; $result_maj_periode_suivante = mysqli_query($GLOBALS["mysqli"], $sql_maj_periode_suivante); if (!$result_maj_periode_suivante) {$pb_reg_ver = 'yes';} } } } } if ($pb_reg_ver == 'no') { $msg = "Les modifications ont été enregistrées (".strftime("%d/%m/%Y à %H:%M:%S").").
"; } else { $msg = "Il y a eu un problème lors de l'enregistrement des données.
"; } if ($action_apres == 'retour') { header("Location: ./verif_bulletins.php"); } //if ($action_apres == 'imprime_html') { if ($action_apres == 'imprime_bull') { //header("Location: ./index.php?id_classe=$classe"); //echo "Location: ./bull_index.php?tab_id_classe[0]=$classe&tab_periode_num[0]=$periode&choix_periode_num=fait"; header("Location: ./bull_index.php?tab_id_classe[0]=$classe&tab_periode_num[0]=$periode&choix_periode_num=fait"); } /* if ($action_apres == 'imprime_pdf') { //header("Location: ./index.php?format=pdf"); header("Location: ./bull_index.php?tab_id_classe[0]=$classe&tab_periode_num[0]=$periode&choix_periode_num=fait"); } */ } $style_specifique[] = "lib/DHTMLcalendar/calendarstyle"; $javascript_specifique[] = "lib/DHTMLcalendar/calendar"; $javascript_specifique[] = "lib/DHTMLcalendar/lang/calendar-fr"; $javascript_specifique[] = "lib/DHTMLcalendar/calendar-setup"; $themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?'; //**************** EN-TETE ************************************** $titre_page = "Verrouillage et déverrouillage des périodes"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ********************************** //debug_var(); ?> Retour Retour"; if($_SESSION['statut']=='scolarite') { echo " | Visualisation et impression des bulletins"; } if(($_SESSION['statut']=='scolarite')&&(getSettingValue('GepiScolImprBulSettings')=='yes')) { echo " | Paramétrage des bulletins"; } if(acces("/bulletin/verif_bulletins.php", $_SESSION['statut'])) { echo " | Vérification bulletins"; } if(acces("/classes/dates_classes.php", $_SESSION['statut'])) { echo "| Événements classe"; } echo "

\n"; $texte_deverrouiller = urlencode("Déverrouiller"); $texte_verrouiller_part = urlencode("Verrouiller part."); $texte_verrouiller_tot = urlencode("Verrouiller tot."); // si la classe et la période sont définies (on vient de verif_bulletiin.php) if (!(($classe != 0) AND ($periode !=0))) { // On va chercher les classes déjà existantes, et on les affiche. $max_per = sql_query1("SELECT num_periode FROM periodes ORDER BY num_periode DESC LIMIT 1"); //$calldata = sql_query("SELECT DISTINCT c.id, c.classe FROM classes c, periodes p WHERE p.id_classe = c.id ORDER BY classe"); $calldata = mysqli_query($GLOBALS["mysqli"], "SELECT DISTINCT c.id, c.classe FROM classes c, periodes p, j_scol_classes jsc WHERE p.id_classe = c.id AND jsc.id_classe=c.id AND jsc.login='".$_SESSION['login']."' ORDER BY classe"); $nombreligne = sql_count($calldata); echo "Total : $nombreligne classes\n"; } echo "
  • Lorsqu'une période est déverrouillée, le remplissage de toutes les rubriques (notes, appréciations, avis) est autorisé, la visualisation des bulletins simples est autorisée mais la visualisation et l'impression des bulletins officiels sont impossibles.

  • Lorsqu'une période est verrouillée partiellement, seuls le remplissage et/ou la modification de l'avis du conseil de classe"; if ($gepiSettings['active_mod_ects'] == 'y') echo " et des crédits ECTS "; echo " sont possibles. La visualisation et l'impression des bulletins officiels sont autorisées.

  • Lorsqu'une période est verrouillée totalement, le remplissage et la modification du bulletin pour la période concernée sont impossibles. la visualisation et l'impression sont autorisées.
  • \n"; echo "
\n"; echo "

\n"; // si la classe et la période sont définies (on vient de verif_bulletin.php) if (($classe != 0) AND ($periode !=0)) { echo "
\n"; echo add_token_field(); echo "\n"; //echo "\n\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; // Affichage de la classe (nom court) $sql_classe = "SELECT classe FROM classes WHERE id = '$classe'"; $requete_classe = sql_query($sql_classe); $donner_modele = mysqli_fetch_array($requete_classe); $nom_court_classe = $donner_modele['classe']; echo "\n"; $sql_periode = "SELECT nom_periode, verouiller FROM periodes WHERE (id_classe = '$classe' AND num_periode='$periode')"; $periode_query = sql_query($sql_periode); $nb_periode = sql_count($periode_query) + 1 ; $j = 0; //ajustement de l'indice periode 1, 2 , 3 dans la base en réalité : 0, 1, 2 $indice_periode = $periode-1; if ($periode_query) for ($i = 0; ($row_per = sql_row($periode_query, $i)); $i++) { $nom_classe = "cl_".$classe."_".$indice_periode; echo "\n"; //echo ""; echo "\n"; echo "\n"; echo "\n"; $j++; } echo "
 
 \n"; echo "\"Déverrouiller\"\"Verrouiller\"Verrouiller
$nom_court_classe "; echo "".ucfirst($row_per[0]).""; //echo "
\n
\n"; // Option de déverrouillage automatique echo "
\n\n"; echo "\n"; echo "\n\n\n
\nProcéder également au déverrouillage automatique de la période suivante
lors du verrouillage partiel ou total de la période ci-dessus : "; echo "\n
\n"; echo "\n"; echo "\n"; echo "\n
\n
\n"; if ($action_apres == 'rien') { echo "
\n"; //} elseif ($action_apres == 'imprime_html') { } elseif ($action_apres == 'imprime_bull') { echo "
\n"; } /* elseif ($action_apres == 'imprime_pdf') { echo "
\n"; } */ elseif ($action_apres == 'retour') { echo "
\n"; } echo "
\n"; } else { if ($nombreligne != 0) { $tab_dates_prochains_conseils=array(); $date_courante=strftime("%Y-%m-%d %H:%M:%S"); $sql="SELECT DISTINCT ddec.id_ev, ddec.id_classe, ddec.date_evenement FROM d_dates_evenements dde, d_dates_evenements_classes ddec WHERE dde.type='conseil_de_classe' AND dde.id_ev=ddec.id_ev AND dde.date_debut<='$date_courante' AND ddec.date_evenement>='$date_courante' ORDER BY date_evenement DESC;"; $res_cc=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_cc)>0) { while($lig_cc=mysqli_fetch_object($res_cc)) { $tab_dates_prochains_conseils[$lig_cc->id_classe]=formate_date($lig_cc->date_evenement,"y2","court"); } } echo "
"; echo add_token_field(); echo "

\n"; //echo ""; echo "
\n"; echo "\n"; for ($i = 0; $i < $max_per; $i++) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; if(getSettingValue("active_module_absence")=="2"){ echo "\n"; } echo "\n"; } if(count($tab_dates_prochains_conseils)>0) { echo "\n"; } echo "\n"; //$flag = 0; $alt=1; if ($calldata) { for ($k = 0; ($row = sql_row($calldata, $k)); $k++) { $precedente_date_fin="0000-00-00 00:00:00"; $id_classe = $row[0]; $classe = $row[1]; $alt=$alt*(-1); echo "\n"; echo "\n"; $periode_query = sql_query("SELECT nom_periode, verouiller, date_fin, date_conseil_classe FROM periodes WHERE id_classe = '$id_classe' ORDER BY num_periode"); $nb_periode = sql_count($periode_query) + 1 ; $j = 0; if ($periode_query) { for ($i = 0; ($row_per = sql_row($periode_query, $i)); $i++) { $nom_classe = "cl_".$id_classe."_".$i; echo "\n"; if ($row_per[1] == "N") { echo "\n"; } elseif ($row_per[1] == "P") { echo "\n"; } elseif ($row_per[1] == "O") { echo "\n"; } else { // Ca ne devrait pas arriver echo "\n"; } //echo ""; echo "\n"; echo "\n"; echo "\n"; if(getSettingValue("active_module_absence")=="2"){ if($precedente_date_fin>$row_per[2]) { echo "\n"; } // Conseil de classe echo "\n"; $j++; } } for ($i = $j; $i < $max_per; $i++) echo "\n"; if(count($tab_dates_prochains_conseils)>0) { echo "\n"; } echo "\n"; } } echo "
 \n"; echo "Tout déverrouiller
\n"; echo "Tout verrouiller partiellement
\n"; echo "Tout verrouiller totalement\n"; echo "
\"Déverrouiller\"\"Verrouiller\"VerrouillerDate FinDate Conseil de classeDate du prochain
conseil de classe
\n"; echo "$classe "; echo "".ucfirst($row_per[0])."OuvertPartiel.closClos "; //echo ""; } else { echo ""; } $precedente_date_fin=$row_per[2]; echo ""; echo '  '; echo " "; echo '  '; echo "     "; if(isset($tab_dates_prochains_conseils[$id_classe])) { echo $tab_dates_prochains_conseils[$id_classe]; } else { echo "-"; } echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "\n"; echo "
\n"; echo "

Remarques :

  • Si vous ne voyez pas toutes les classes, il se peut que certaines classes ne vous soient pas associées.
    Demandez alors à un compte administrateur de vous associer des classes dans Gestion des bases/Gestion des classes/Paramétrage scolarité

  • "; if(getSettingValue("active_module_absence")=="2"){ echo "
  • Il est possible de mettre à jour d'un coup, en compte administrateur, les dates de fin de période depuis le paramétrage du module Emploi du temps : Menu Gestion/Gestion du calendrier/Mettre à jour les dates de fin de période pour le module Absences, d'après les dates de périodes de cours ci-dessous.

  • Notez bien que les dates indiquées ne correspondent pas à des dates de verrouillage automatique des périodes.
    Ces dates sont juste prises en compte dans le module Absences pour proposer les bonnes listes d'élèves à une date donnée.

  • "; } echo "
  • Il est possible d'autoriser exceptionnellement un professeur à saisir des notes dans des carnets de notes ou dans les bulletins ou à saisir des appréciations dans les bulletins sans devoir ouvrir la période en saisie pour tous les professeurs.

\n"; } else { echo "

Attention : aucune classe n'a été définie dans la base GEPI !
Ou alors aucune classe ne vous est associée (demandez alors à un compte administrateur de vous associer des classes dans Gestion des bases/Gestion des classes/Paramétrage scolarité)

\n"; } } //else echo "


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