Re: [gepi-users] Erreur lors de la modification de l'emplacement d'une boîte

Thomas BELLIARD thomas.belliard at free.fr
Mar 24 Oct 19:12:42 CEST 2006


Bonjour,

Je confirme que la modif est correcte, et qu'il s'agit d'un bug
résiduel. C'est désormais corrigé sur le CVS!

Merci :)

Thomas

Nicolas, Do et Olivier a écrit :
> Bonjour à tous,
> 
> Ne pouvant me résoudre à tout réinstaller, j'ai cherché l'origine de
> l'erreur... et il me semble l'avoir trouvée.
> 
> Dans le fichier cahier_notes/add_modif_conteneur.php (version 1.4.3.1),
> ligne 186, la fonction mise_a_jour_moyennes_conteneurs est appelée avec
> comme premier argument $id_classe (qui est un scalaire) alors que,
> manifestement, dans lib/share.inc.php, l'implémentation de la fonction
> mise_a_jour_moyennes_conteneurs s'attend à recevoir un tableau
> ($_current_group).
> 
> Donc j'ai remplacé la ligne :
> 
>     if (!isset($_POST['new_conteneur']))
> mise_a_jour_moyennes_conteneurs($id_classe,
> $periode_num,$id_racine,$id_conteneur,$arret);
> 
> Par :
> 
>     if (!isset($_POST['new_conteneur']))
> mise_a_jour_moyennes_conteneurs($current_group,
> $periode_num,$id_racine,$id_conteneur,$arret);
> 
> ... et ça marche :-)
> 
> Est-ce qu'un développeur peut me confirmer que cette modification est
> correcte ?
> 
> Ci-joint le fichier corrigé.
> 
> Cordialement,
> Nicolas
> 
>> Merci pour vos essais.
>>
>> En l'absence de reproduction de votre part, je suppose que ma base est
>> dans un état incohérent...
>>
>> Je vais être obligé de refaire une installation propre %E
>>
>> ------------------------------------------------------------------------
>>
>> <?php
>> /*
>>  * Last modification  : 04/04/2005
>>  *
>>  * Copyright 2001, 2005 Thomas Belliard, Laurent Delineau, Edouard Hue, Eric Lebrun
>>  *
>>  * This file is part of GEPI.
>>  *
>>  * GEPI is free software; you can redistribute it and/or modify
>>  * it under the terms of the GNU General Public License as published by
>>  * the Free Software Foundation; either version 2 of the License, or
>>  * (at your option) any later version.
>>  *
>>  * GEPI is distributed in the hope that it will be useful,
>>  * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>  * GNU General Public License for more details.
>>  *
>>  * You should have received a copy of the GNU General Public License
>>  * along with GEPI; if not, write to the Free Software
>>  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
>>  */
>>
>> // Initialisations files
>> require_once("../lib/initialisations.inc.php");
>>
>> // Resume session
>> $resultat_session = resumeSession();
>> 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();
>> }
>>
>> //On vérifie si le module est activé
>> if (getSettingValue("active_carnets_notes")!='y') {
>>     die("Le module n'est pas activé.");
>> }
>>
>> isset($id_conteneur);
>> $id_conteneur = isset($_POST["id_conteneur"]) ? $_POST["id_conteneur"] : (isset($_GET["id_conteneur"]) ? $_GET["id_conteneur"] : NULL);
>>
>> isset($mode_navig);
>> $mode_navig = isset($_POST["mode_navig"]) ? $_POST["mode_navig"] : (isset($_GET["mode_navig"]) ? $_GET["mode_navig"] : NULL);
>>
>> isset($id_retour);
>> $id_retour = isset($_POST["id_retour"]) ? $_POST["id_retour"] : (isset($_GET["id_retour"]) ? $_GET["id_retour"] : NULL);
>>
>>
>> if ($id_conteneur)  {
>>     $query = mysql_query("SELECT id_racine FROM cn_conteneurs WHERE id = '$id_conteneur'");
>>     $id_racine = mysql_result($query, 0, 'id_racine');
>> } else if (isset($_POST['id_racine']) or (isset($_GET['id_racine']))) {
>>     $id_racine = isset($_POST['id_racine']) ? $_POST['id_racine'] : (isset($_GET['id_racine']) ? $_GET['id_racine'] : NULL);
>>
>> } else {
>>     header("Location: ../logout.php?auto=1");
>>     die();
>> }
>> // On teste si le carnet de notes appartient bien à la personne connectée
>> if (!(Verif_prof_cahier_notes ($_SESSION['login'],$id_racine))) {
>>     $mess=rawurlencode("Vous tentez de pénétrer dans un carnet de notes qui ne vous appartient pas !");
>>     header("Location: index.php?msg=$mess");
>>     die();
>> }
>>
>>
>>
>> $appel_cahier_notes = mysql_query("SELECT * FROM cn_cahier_notes WHERE id_cahier_notes = '$id_racine'");
>> $id_groupe = mysql_result($appel_cahier_notes, 0, 'id_groupe');
>> $current_group = get_group($id_groupe);
>>
>> $periode_num = mysql_result($appel_cahier_notes, 0, 'periode');
>> include "../lib/periodes.inc.php";
>>
>> // On teste si la periode est vérouillée !
>> if ($ver_periode[$periode_num] != 'N') {
>>     $mess=rawurlencode("Vous tentez de pénétrer dans un carnet de notes dont la période est bloquée !");
>>     header("Location: index.php?msg=$mess");
>>     die();
>> }
>>
>> $matiere_nom = $current_group["matiere"]["nom_complet"];
>> $matiere_nom_court = $current_group["matiere"]["matiere"];
>> $nom_classe = $current_group["classlist_string"];
>>
>>
>>
>> // enregistrement des données
>> if (isset($_POST['ok'])) {
>>     $reg_ok = "yes";
>>     $new='no';
>>     if (isset($_POST['new_conteneur']) and $_POST['new_conteneur'] == 'yes') {
>>         $reg = mysql_query("insert into cn_conteneurs (id_racine,nom_court,parent) values ('$id_racine','nouveau','$id_racine')");
>>         $id_conteneur = mysql_insert_id();
>>         if (!$reg)  $reg_ok = "no";
>>         $new='yes';
>>     }
>>
>>     if (isset($_POST['mode']) and ($_POST['mode']) and ereg("^[12]{1}$", $_POST['mode'])) {
>>         if ($_POST['mode'] == 1) $_SESSION['affiche_tous'] = 'yes';
>>         $reg = mysql_query("UPDATE cn_conteneurs SET mode = '".$_POST['mode']."' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>
>>     if ($_POST['nom_court'])  {
>>         $nom_court = $_POST['nom_court'];
>>
>>     } else {
>>         $nom_court = "Cont. ".$id_conteneur;
>>     }
>>     $reg = mysql_query("UPDATE cn_conteneurs SET nom_court = '".corriger_caracteres($nom_court)."' WHERE id = '$id_conteneur'");
>>     if (!$reg)  $reg_ok = "no";
>>
>>
>>     if ($_POST['nom_complet'])  {
>>         $nom_complet = $_POST['nom_complet'];
>>
>>     } else {
>>         $nom_complet = $nom_court;
>>     }
>>
>>     $reg = mysql_query("UPDATE cn_conteneurs SET nom_complet = '".corriger_caracteres($nom_complet)."' WHERE id = '$id_conteneur'");
>>     if (!$reg)  $reg_ok = "no";
>>
>>     if ($_POST['description'])  {
>>
>>         $reg = mysql_query("UPDATE cn_conteneurs SET description = '".corriger_caracteres($_POST['description'])."' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>     if (isset($_POST['parent']))  {
>>         $parent = $_POST['parent'];
>>
>>         $reg = mysql_query("UPDATE cn_conteneurs SET parent = '".$parent."' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>
>>     if (isset($_POST['coef'])) {
>>         $reg = mysql_query("UPDATE cn_conteneurs SET coef = '" . $_POST['coef'] . "' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     } else {
>>         $reg = mysql_query("UPDATE cn_conteneurs SET coef = '0' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>
>>     if ($_POST['ponderation']) {
>>         $reg = mysql_query("UPDATE cn_conteneurs SET ponderation = '". $_POST['ponderation']."' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     } else {
>>         $reg = mysql_query("UPDATE cn_conteneurs SET ponderation = '0' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>
>>     if (($_POST['precision']) and ereg("^(s1|s5|se|p1|p5|pe)$", $_POST['precision'])) {
>>         $reg = mysql_query("UPDATE cn_conteneurs SET arrondir = '". $_POST['precision']."' WHERE id = '$id_conteneur'");
>>         if (!$reg)  $reg_ok = "no";
>>     }
>>
>>     if (isset($_POST['display_parents'])) {
>>         $display_parents = 1;
>>     } else {
>>         $display_parents = 0;
>>     }
>>     $reg = mysql_query("UPDATE cn_conteneurs SET display_parents = '$display_parents' WHERE id = '$id_conteneur'");
>>     if (!$reg)  $reg_ok = "no";
>>     if (isset($_POST['display_bulletin'])) {
>>         $display_bulletin = 1;
>>     } else {
>>         $display_bulletin = 0;
>>     }
>>     $reg = mysql_query("UPDATE cn_conteneurs SET display_bulletin = '$display_bulletin' WHERE id = '$id_conteneur'");
>>     if (!$reg)  $reg_ok = "no";
>>     //
>>     // Mise à jour des moyennes du conteneur et des conteneurs parent, grand-parent, etc...
>>     //
>>     $arret = 'no';
>>     if (!isset($_POST['new_conteneur'])) mise_a_jour_moyennes_conteneurs($current_group, $periode_num,$id_racine,$id_conteneur,$arret);
>>
>>     if ($reg_ok=='yes') {
>>         if ($new=='yes') $msg = "Nouvel enregistrement réussi.";
>>         else $msg="Les modifications ont été effectuées avec succès.";
>>     } else {
>>         $msg = "Il y a eu un problème lors de l'enregistrement";
>>     }
>>
>>     //
>>     // retour
>>     //
>>     if ($mode_navig == 'retour_saisie') {
>>         header("Location: ./saisie_notes.php?id_conteneur=$id_retour&msg=$msg");
>>         die();
>>     } else if ($mode_navig == 'retour_index') {
>>         header("Location: ./index.php?id_racine=$id_racine&msg=$msg");
>>         die();
>>     }
>> }
>>
>> //-----------------------------------------------------------------------------------
>>
>> if ($id_conteneur)  {
>>     $new_conteneur = 'no';
>>     $appel_conteneur = mysql_query("SELECT * FROM cn_conteneurs WHERE id ='$id_conteneur'");
>>     $id_racine = mysql_result($appel_conteneur, 0, 'id_racine');
>>     $nom_court = mysql_result($appel_conteneur, 0, 'nom_court');
>>     $nom_complet = mysql_result($appel_conteneur, 0, 'nom_complet');
>>     $description = mysql_result($appel_conteneur, 0, 'description');
>>     $mode = mysql_result($appel_conteneur, 0, 'mode');
>>     $coef = mysql_result($appel_conteneur, 0, 'coef');
>>     $arrondir = mysql_result($appel_conteneur, 0, 'arrondir');
>>     $ponderation = mysql_result($appel_conteneur, 0, 'ponderation');
>>     $display_parents = mysql_result($appel_conteneur, 0, 'display_parents');
>>     $display_bulletin = mysql_result($appel_conteneur, 0, 'display_bulletin');
>>     $parent = mysql_result($appel_conteneur, 0, 'parent');
>>     // liste des sous_conteneur
>>     $nom_sous_cont = array();
>>     $id_sous_cont  = array();
>>     $coef_sous_cont = array();
>>     $display_bulletin_sous_cont = array();
>>     $nb_sous_cont = 0;
>>     if ($mode==1) {
>>         // on s'intéresse à tous les conteneurs fils, petit-fils, ...
>>         sous_conteneurs($id_conteneur,$nb_sous_cont,$nom_sous_cont,$coef_sous_cont,$id_sous_cont,$display_bulletin_sous_cont,'all');
>>     } else {
>>         // On s'intéresse uniquement au conteneurs fils
>>         sous_conteneurs($id_conteneur,$nb_sous_cont,$nom_sous_cont,$coef_sous_cont,$id_sous_cont,$display_bulletin_sous_cont,'');
>>     }
>>     $appel_nom_racine = mysql_query("SELECT * FROM cn_conteneurs WHERE id ='$id_racine'");
>>
>>     // Nom du conteneur racine
>>     $nom_racine = mysql_result($appel_nom_racine, 0, 'nom_court');
>>
>>     // Nom du conteneur racine
>>
>> } else {
>>     $nom_court = "Nouvelle boîte";
>>     $nom_complet = '';
>>     $new_conteneur = 'yes';
>>     $coef = "1";
>>     $arrondir = "s1";
>>     $ponderation = "0";
>>     $display_parents = "1";
>>     $display_bulletin = "0";
>>     $parent = '-1';
>>     $mode = '2';
>>     $description = "";
>>     $nb_sous_cont = 0;
>>
>> }
>> //**************** EN-TETE *****************
>> $titre_page = "Carnet de notes - Ajout/modification d'une boîte";
>> require_once("../lib/header.inc");
>> //**************** FIN EN-TETE *****************
>>
>>
>> echo "<DEFANGED_form enctype=\"multipart/form-data\" name= \"formulaire\" action=\"add_modif_conteneur.php\" method=POST>";
>> if ($mode_navig == 'retour_saisie') {
>>     echo "<p><DEFANGED_div class='norme'><p class=bold>|<a href='./saisie_notes.php?id_conteneur=$id_retour'>Retour</a>|";
>> } else {
>>     echo "<p><DEFANGED_div class='norme'><p class=bold>|<a href='index.php?id_racine=$id_racine'>Retour</a>|";
>> }
>> echo "</b>";
>> echo "<p class='bold'> Classe(s) : $nom_classe | Matière : $matiere_nom ($matiere_nom_court)| Période : $nom_periode[$periode_num] <DEFANGED_input type=\"submit\" name='ok' value=\"Enregistrer\" style=\"font-variant: small-caps;\"/></p>";
>>
>>
>> echo "<h2 class='gepi'>Configuration de la boîte $nom_court :</H2>";
>> echo "<table>";
>> echo "<tr><td>Nom court : </td><td><DEFANGED_input type='text' name = 'nom_court' size='40' value = \"".$nom_court."\"></td></tr>";
>> echo "<tr><td>Nom complet : </td><td><DEFANGED_input type='text' name = 'nom_complet' size='40' value = \"".$nom_complet."\"></td></tr>";
>> echo "<tr><td>Description : </td><td><DEFANGED_input type='text' name = 'description' size='40' value = \"".$description."\"></td></tr></table>";
>>
>> if ($parent != 0) {
>>     echo "<br />";
>>     echo "<table><tr><td><h3 class='gepi'>Emplacement de la boîte : </h3></td><td>";
>>     echo "<DEFANGED_select size=1 name=parent>";
>>     $appel_conteneurs = mysql_query("SELECT * FROM cn_conteneurs WHERE id_racine ='$id_racine' order by nom_court");
>>     $nb_cont = mysql_num_rows($appel_conteneurs);
>>     $i = 0;
>>     while ($i < $nb_cont) {
>>         $id_cont = mysql_result($appel_conteneurs, $i, 'id');
>>         if ($id_cont != $id_conteneur) {
>>             $nom_conteneur = mysql_result($appel_conteneurs, $i, 'nom_court');
>>             echo "<option value=$id_cont";
>>             if ($parent == $id_cont) echo " selected ";
>>             echo">$nom_conteneur</DEFANGED_option>";
>>         }
>>         $i++;
>>     }
>>     echo "</DEFANGED_select></td></tr></table>";
>>
>>     echo "<h3 class='gepi'>Coefficient de la boîte $nom_court</H3>";
>>     echo "<table><tr><td>Valeur de la pondération dans le calcul de la moyenne ";
>>     if (isset($nom_racine)) echo "de <b>$nom_racine</b>";
>>     echo"<br /><i>(si 0, la moyenne de <b>$nom_court</b> n'intervient pas dans le calcul de la moyenne du carnet de note)</i>.</td>";
>>     echo "<td><DEFANGED_input type='text' name = 'coef' size='4' value = \"".$coef."\"></td></tr></table>";
>> }
>> if ($nb_sous_cont != 0) {
>>     echo "<h3 class='gepi'>Notes prises en comptes dans le calcul de la moyenne de la boîte $nom_court</H3>";
>>     echo "<table><tr>";
>>     echo "<td>";
>>     echo "la moyenne s'effectue sur toutes les notes contenues à la racine de <b>$nom_court</b> et sur les moyennes de la (des) boîte(s) ";
>>     $i=0;
>>     while ($i < $nb_sous_cont) {
>>         echo "<b>$nom_sous_cont[$i]</b>, ";
>>         $i++;
>>     }
>>     echo "en tenant compte des options dans ce(s) boîte(s).";
>>     echo "</td><td><DEFANGED_input type='radio' name='mode' value='2' "; if ($mode=='2') echo "checked"; echo "></td>";
>>     echo "</tr><tr>";
>>     echo "<td>";
>>     echo "la moyenne s'effectue sur toutes les notes contenues dans <b>$nom_court</b>";
>>     echo " et dans la(les) boîte(s) ";
>>     $i=0;
>>     while ($i < $nb_sous_cont) {
>>         echo "<b>$nom_sous_cont[$i]</b>, ";
>>         $i++;
>>     }
>>     echo "sans tenir compte des options définies dans cette(ces) boîte(s).";
>>     echo "</td><td><DEFANGED_input type='radio' name='mode' value='1' "; if ($mode=='1') echo "checked"; echo "></td>";
>>
>>     echo "</tr></table>";
>> }
>>
>>
>> echo "<h3 class='gepi'>Précision du calcul de la moyenne de $nom_court : </H3>";
>> echo "<table><tr><td>";
>> echo "Arrondir au dixième de point supérieur";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='s1' "; if ($arrondir=='s1') echo "checked"; echo "></td></tr><tr><td>";
>> echo "Arrondir au demi-point supérieur";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='s5' "; if ($arrondir=='s5') echo "checked"; echo "></td></tr><tr><td>";
>> echo "Arrondir au point entier supérieur";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='se' "; if ($arrondir=='se') echo "checked"; echo "></td></tr><tr><td>";
>> echo "Arrondir au dixième de point le plus proche";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='p1' "; if ($arrondir=='p1') echo "checked"; echo "></td></tr><tr><td>";
>> echo "Arrondir au demi-point le plus proche";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='p5' "; if ($arrondir=='p5') echo "checked"; echo "></td></tr><tr><td>";
>> echo "Arrondir au point entier le plus proche";
>> echo "</td><td><DEFANGED_input type='radio' name='precision' value='pe' "; if ($arrondir=='pe') echo "checked"; echo "></td></tr></table>";
>>
>> echo "<h3 class='gepi'>Pondération</H3>";
>> echo "<table><tr><td>";
>> echo "Pour chaque élève, augmente ou diminue de la valeur indiquée ci-contre, le coefficient de la meilleur note de <b>$nom_court</b> :&nbsp;
>> <br /><i>Si la valeur est 0, il n'y a aucune pondération.</i></td>";
>> echo "<td><DEFANGED_input type='text' name = 'ponderation' size='4' value = \"".$ponderation."\"></td></tr></table>";
>>
>> if ($parent != 0) {
>>     //s'il s'agit d'une boite à l'intérieur du conteneur principal, on laisse la possibilité d'afficher la note de la boite sur le bulletin.
>>     echo "<h3 class='gepi'>Affichage de la moyenne de $nom_court :</H3>";
>>     echo "<table><tr><td>";
>>     echo "Faire apparaître la moyenne sur le relevé de notes destiné aux parents";
>>     echo "</td><td><DEFANGED_input type=checkbox name=display_parents "; if ($display_parents == 1) echo " checked"; echo"></td></tr><tr><td>";
>>     echo "Faire apparaître la moyenne sur le bulletin scolaire.
>>     <br /><i>Si la case ci-contre est cochée, la moyenne de cette boîte apparaît sur le bulletin scolaire, en plus de la moyenne générale, à titre d'information.</i>";
>>     echo "</td><td><DEFANGED_input type=checkbox name=display_bulletin"; if ($display_bulletin == 1) echo " checked"; echo"></td></tr></table>";
>> } else {
>>     echo "<DEFANGED_input type=hidden name=display_bulletin value='yes'>";
>> }
>>
>> if ($new_conteneur=='yes')     echo "<DEFANGED_input type=hidden name=new_conteneur value='yes'>";
>> if ($new_conteneur != 'no') echo "<DEFANGED_input type=hidden name=id_racine value='$id_racine'>";
>> echo "<DEFANGED_input type=hidden name=id_conteneur value='$id_conteneur'>";
>> echo "<DEFANGED_input type=hidden name=mode_navig value='$mode_navig'>";
>> echo "<DEFANGED_input type=hidden name=id_retour value='$id_retour'>";
>>
>> echo "<center><DEFANGED_input type=\"submit\" name='ok' value=\"Enregistrer\" style=\"font-variant: small-caps;\"/></center>";
>> echo "</DEFANGED_form>";
>>
>> ?>
>> </body>
>> </html>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gepi-users mailing list
>> gepi-users at lists.adullact.net
>> https://lists.adullact.net/mailman/listinfo/gepi-users

-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: signature_asc.DEFANGED-174653
Type: application/defanged-174653
Taille: 254 octets
Desc: Renamed from 'signature.asc' to
	'signature_asc.DEFANGED-174653'
Url: http://lists.adullact.net/pipermail/gepi-users/attachments/20061024/2b04a63e/signature_asc-0001.bin


Plus d'informations sur la liste de diffusion gepi-users