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> :
>> <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