mon travail avance petit à petit, j'ai reussi à ce qu'il pointe la bonne fiche lorqu'on clique sur le tableau de note.
Le Problème :
Mais le hic c'est que : quand il y a plusieurs notes pour un module: il ne veut plus pointé sur la fiche.
exemple:
Module data 1 |
Module data 2 |
Module data 3 |
|
Murielle |
10 |
2 |
- |
John |
8 |
- |
- |
Jessy |
5 |
- |
- |
Ici quand on clique sur la note bleu 2 de Murielle cela ouvre bien la bonne fiche de Murielle .
Mais quand on clique sur une des notes de la colonne jaune cela n'ouvre rien du tout.
Ce que j'ai changé dans le code : dans grade/ lib.php
AVANT
function grade_get_module_link($course, $cminstance, $modid) {
global $CFG;
$sql = "SELECT cm.id, 1 FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules mm, {$CFG->prefix}grade_item i
WHERE i.modid='".$modid."'
AND i.modid=mm.id
AND cm.instance = i.cminstance
AND i.cminstance=".$cminstance."
AND i.courseid=cm.course AND cm.module=mm.id AND i.courseid=$course";
$temp = get_record_sql($sql);
return $temp;
}
APRES
function grade_get_module_link($course,$cminstance, $modid) {
global $CFG;
$sql = "SELECT dr.id, dr.dataid
FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules mm, {$CFG->prefix}grade_item i,{$CFG->prefix}data_records dr, {$CFG->prefix}data d,{$CFG->prefix}data_ratings drs
WHERE i.modid=$modid
AND i.modid=mm.id
AND cm.instance = i.cminstance
AND cm.instance=d.id
AND d.id=$cminstance
AND i.courseid=cm.course AND cm.module=mm.id AND i.courseid=$course
AND d.course=cm.course
AND dr.id=drs.recordid
AND dr.dataid=d.id
";
$temp = get_record_sql($sql);
return $temp;
}
puis dans le code:
AVANT
$link_id = grade_get_module_link($course->id, $all_categories[$category][$assignment]['cminstance'], $all_categories[$category][$assignment]['modid']);
$link =$CFG->wwwroot.'/mod/'.$all_categories[$category][$assignment]['modname'].'/view.php?id='.$link_id->id;
APRES
$link_id = grade_get_module_link($course->id,$all_categories[$category][$assignment]['cminstance'], $all_categories[$category][$assignment]['modid']);
$link = $CFG->wwwroot.'/mod/'.$all_categories[$category][$assignment]['modname'].'/view.php?d='.$link_id->dataid.'&rid='.$link_id->id;
Mon résonnement
- http://localhost/moodle/mod/data/view.php?d=2&rid=5
comprendre à quoi correspond d et rid pour pointer sur la bonne fiche
-le d corrrespond à : numero de la compétence: dataid de la table data_records
-le rid correspond à : numero de la fiche par rapport à cette compétence : id de la table data_records
Mon debugg m'indique :
Found more than one record in get_record_sql
Notice: Trying to get property of non-object in C:\wamp\www\moodle\grade\lib.php
Notice: Trying to get property of non-object in C:\wamp\www\moodle\grade\lib.php
voilà j'en suis là et je bloque là si vous avez une idée.Je pense qu'il faut peut-être un paramètre en plus dans la fonction comme par exemple le numero de la fiche
exemple : grade_get_module_link($course,$cminstance, $modid, $id) mais je ne vois pas comment l'appeller après dans le code lors du $link_id=.....
Je vous remercie pour votre future réponse
Jennifer