[gepi-users] Suite Problèmes détectés sur la version Gepi-1.5.0 : affectation des élèves à une classe (classes/classes_ajout.php) et impression pdf des bulletins par le professeur principal (bulletin/index.php)

Stephane Boireau (Animateur TICE Bernay/Pont-Audemer) stephane.boireau at ac-rouen.fr
Lun 5 Nov 22:34:18 CET 2007


Bonsoir,

Le lundi 5 novembre 2007 19:36, hugues MALHERBE a écrit :
> Ne sachant pas comment reprendre le fil d'un message déjà ouvert sur
> cette liste, je crée un nouveau message. (Désolé !!).

En principe, il suffit de cliquer sur Répondre au message de réponse que 
t'avais faite Julien.
Ce n'est pas bien grave...
Il vaut mieux cela que cliquer sur Répondre à un autre fil que le bon.


> Je remercie la personne qui a répondu rapidement à mon premier message.
> Mais les réponses données ne me satisfont pas.
>
> Je pense avoir sincérement avoir trouver des problèmes à corriger dans
> le logiciel.
>
> Je reprends notamment le deuxième point :
>
> Pas d'impression possible des bulletins au format pdf à partir du compte du
> professeur principal de la classe.
>
> Je suis reparti d'une nouvelle installation de Gepi 1.5.0 et j'ai créé
> manuellement (sans import) les données suivantes :
>
> Un professeur de mathématiques, un compte scolarité, un élève, une classe
> (le professeur principal de la classe est le professeur de mathématiques)
> J'ai saisi une évaluation notée sur la première période.
> J'ai enregistré la moyenne pour l'élève.
> J'ai paramétré à partir du compte admin les droits d'accès en cochant tous
> les droits possibles pour le professeur principal. J'ai clos la première
> période à partir du compte scolarité.
>
> Si je me connecte avec le compte scolarite, je peux générer le fichier pdf
> des bulletins. Si je me connecte avec le compte professeur, je ne peux pas
> générer le fichier pdf des bulletins.
>
>
> Je suis quasiment certain que le problème vient du fichier
> bulletin/index.php entres les lignes 153 et 162.
>
> En effet pour un compte professeur, la requête sql exécutée est :
>
> $requete_classe = mysql_query('SELECT c.* FROM '.$prefix_base.'classes
> c, '.$prefix_base.'j_eleves_professeurs jep,
> '.$prefix_base.'j_eleves_classes jec, '.
> $prefix_base.'periodes p WHERE ( jep.professeur =
> "'.$_SESSION['login'].'" AND jep.login = jec.login AND jec.id_classe =
> c.id AND p.id_classe = c.id ) GROUP
> BY p.id_classe ORDER BY c.classe');
>
> while ($donner_classe = mysql_fetch_array($requete_classe))
> {
>  $sql_cpt_nb_eleve_1 = "SELECT count(eleves.login) FROM eleves, classes,
> j_eleves_classes WHERE classes.id = ".$donner_classe['id_classe']." AND
> j_eleves_cla
> sses.id_classe=classes.id AND j_eleves_classes.login=eleves.login GROUP
> BY eleves.login";
>  $requete_cpt_nb_eleve_1 =  mysql_query($sql_cpt_nb_eleve_1);
>  $requete_cpt_nb_eleve = mysql_num_rows($requete_cpt_nb_eleve_1);
>   ?><option value="<?php echo $donner_classe['id_classe']; ?>" <?php
> if(!empty($classe) and in_array($donner_classe['id_classe'], $classe)) {
> ?>selected="sel
> ected"<?php } ?>><?php echo $donner_classe['nom_complet']."
> (".$donner_classe['classe'].") "; ?>&nbsp;;&nbsp; Eff : <?php echo
> $requete_cpt_nb_eleve; ?></opt
> ion>
>
> Or le champ $donner_classe['id_classe'] n'existe pas car la table
> "classes" n' a pas de colonne nommée 'id_classe'. La bonne colonne étant
> 'id'.

Sauf que dans le cas où on se présente en scolarité ou en admin, on pourrait 
bien utiliser id_classe... mais comme c.id est aussi dans la sélection, on 
récupère deux fois la même valeur... certaines requêtes pourraient sans doute 
être allégées...


> Si le niveau de debuggage de php permet d'afficher les warning, un
> warning (visible en affichant le source de la page html générée par le
> php) est effectivement affichée sur la ligne 159 :
>
> <b>Warning</b>:  mysql_num_rows(): supplied argument is not a valid MySQL
> result resource in <b>/var/www/html/gepibis/bulletin/index.php</b> on line
> <b>159</b><br />
>
> Une correction est donc nécessaire.
> Et la correction que j'ai proposée dans le post précédent fonctionne, je
> l'ai testée.

Je tâche de voir demain...


> Concernant les droits d'accès présents dans la table "droits", je ne crois
> pas qu'ils sont positionnés à partir de la commande "droits d'accès" du
> compte admin.

En effet.
Ce sont deux couches différentes de gestion des droits.


> Les droits d'accès du compte admin mettent à jour la table "setting".
> Les accès aux différents fichiers de l'application selon le statut de
> l'utilisateur issus de la table "droits" sont initialisés uniquement lors
> de l'installation de la base. (à partir du fichier sql/data_gepi.sql) Et je
> pense donc que 2 modifications sont nécessaires dans ce fichier : lignes
> 467 et 468 :
>
> INSERT INTO `droits` VALUES ('/bulletin/param_bull_pdf.php', 'V', 'F', 'F',
> 'V', 'F', 'F', 'F', 'page de gestion des parametres du bulletin pdf', '');
> INSERT INTO `droits` VALUES
> ('/bulletin/bulletin_pdf_avec_modele_classe.php', 'V', 'F', 'F', 'V', 'F',
> 'F', 'F', 'page generant le bulletin pdf en fonction d u modele affecte a
> la classe ', '');
>
> Il faut changer la troisième colonne à la valeur 'V' si l'on souhaite que
> le professeur principal puisse imprimer les bulletins en pdf ainsi
> qu'accéder au paramètrage pdf.
>
> (Remarque : la confusion vient peut être du fait qu'il n'y a pas de champ
> spécifique pour le professeur principal dans la table droits)

Oui.
Ce qui signifie qu'il faut contrôler dans ces pages si le prof est bien PP et 
s'il tente bien d'accéder à la bonne classe.


> Dernier point :
> J'ai détecté également un autre problème : lors de l'impression des
> bulletins au format pdf avec le modèle d'impression "affiche_tout". Il y a
> un problème au niveau du paramètre "Graphique de niveau".
> Si ce paramètre est positionné (ce qui est le cas dans l'état initial du
> modèle "affiche tout"), et sous certaines conditions que je n'ai pas
> élucidées, on obtient des divisions par 0 dans le fichier
> bulletin/bulletin_pdf_avec_modele_classe.php en lignes 413 et 428, qui
> conduisent à un fichier pdf vide (sans aucun bulletin).
>
> J'ai remarqué que le problème provient d'un test manquant en ligne 2656 :
> $pdf->DiagBarre($X_note_moy_app+$largeur_utilise, $Y_note_moy_app,
> $largeur_niveau[$classe_id], $hauteur_entete_moyenne_general[$classe_id],
> $data_g rap_classe[$id_periode][$id_classe_selection], $place_eleve);
>
> Pour éviter la division par zéro dans la fonction DiagBarre, il faut tester
> au préalable que le paramètre rap_classe[$id_periode][$id_classe_selection]
> est convenable.
> C'est à dire,effectuer le test suivant :
>
> if (array_sum($data_grap[$id_periode][$id_groupe_graph]) != 0) {
>   $pdf->DiagBarre($X_note_moy_app+$largeur_utilise,
> $Y_decal-($espace_entre_matier/2), $largeur_niveau[$classe_id],
> $espace_entre_matier, $data_grap[$id_peri ode][$id_groupe_graph],
> $place_eleve);
> }
>
> Un test similaire est bien effectué  lors d'un précédent appel à la
> fonction DiagBarre dans le même fichier (en ligne 2456).
>
> En espérant que vous prendrez en compte ces différentes remarques.
>
> Je suis certain de mes tests. Ils sont facilement reproductibles.
> Et les corrections que j'ai apportées fonctionnent.

Il ne faut pas hésiter à signaler et proposer...

Euh, juste un truc:
Tu es parti de la dernière archive stable (dont il s'est avéré qu'elle 
comportait encore quelques bugs...) ou de la version comportant déjà un 
certain nombre de corrections?

La version avec les correctifs parus depuis la "stable" est là:
https://projects.sylogix.org/gepi/browser/branches/release-1.5.0
Lien ZipArchive en bas de page.

Merci.
-- 
Stephane Boireau
Animateur TICE Bernay/Pont-Audemer



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