Bonjour,
j'ai voulu activer les crédits pour une classe (gepi 160 et test sur gepi
162)  . Mais je ne pouvais pas saisir les crédits (ni en prof ni en
scolarité) seul un tableau apparaissait avec le nom de l'étudiant.
j'ai repéré d’où provient l'erreur :
Les catégories d'enseignement ne sont pas correctement nettoyées dans la
table j_matieres_categories_classes de ce fait certaines catégories
(categorie_id) existent dans cette table alors qu'elles ont été effacées
dans la table 'matieres_categories' . quand la page saisie
(saisie_ects.php) appelle la fonction   $categories =
$Eleve->getEctsGroupesByCategories($periode_num); cela lève une erreur car
les catégorie_id existent dans une table mais pas dans l'autre.
pour résoudre le problème j'ai donc rajouté un test qui permet de s'assurer
que la catégorie existe bien dans la table 'matière_categorie'.
le code de la fonction getEctsGroupesByCategories de la page
\orm\propel-build\classes\gepi\Eleve.php devient donc le suivant : (ligne
458 et suivantes dans gepi162)

    public function getEctsGroupesByCategories($periode) {
        // On commence par récupérer tous les groupes
        $groupes = $this->getGroupes($periode);
        // Ensuite, il nous faut les catégories. Pour ça, on passe par les
classes.
        $classe = $this->getClasse($periode);
        $categories = array();
        $c = new Criteria();
        $c->add(JCategoriesMatieresClassesPeer::CLASSE_ID,$classe->getId());

$c->addAscendingOrderByColumn(JCategoriesMatieresClassesPeer::PRIORITY);
        foreach(JCategoriesMatieresClassesPeer::doSelect($c) as $j) {
            $cat = $j->getCategorieMatiere();
            //$categories[$cat->getId()] = array(0 => $cat, 1 => array());
            // correction f.Riotte 17/12/2013
            // teste si la categorie existe toujours
            if(isset($cat))
            {
            $categories[$cat->getId()] = array(0 => $cat, 1 => array());
            }
            //fin correction f.Riotte 17/12/2013
        }
        // Maintenant, on mets tout ça ensemble
        foreach($groupes as $groupe) {
            if ($groupe->allowsEctsCredits($classe->getId())) {
                $cat = $groupe->getCategorieMatiere($classe->getId());
                $categories[$cat->getId()][1][$groupe->getId()] = $groupe;
            }
        }

        foreach($categories as $cat) {
            if (count($cat[1]) == 0) {
                $id = $cat[0]->getId();
                unset($categories[$id]);
            }
        }

        // On renvoie un table multi-dimensionnel, qui contient les
catégories
        // dans le bon ordre, et les groupes sous chaque catégorie.
        return $categories;
    }

Peut-être serait-il plus habile de nettoyer la table
j_matieres_categories_classes ?  mais là je ne sais pas trop comment faire .
Cordialement
F.Riotte
_________________________________________________________________________________
Documentation Gepi en ligne : http://www.sylogix.org/projects/gepi/wiki
Pour modifier ou résilier votre abonnement à cette liste :
https://lists.sylogix.net/mailman/listinfo/gepi-users

Répondre à