function referentiel_print_graph_certificats($referentiel_instance, $referentiel_referentiel, $gusers, $currentgroup = 0) { global $DB; global $CFG; global $USER; // contexte $cm = get_coursemodule_from_instance('referentiel', $referentiel_instance->id); $course = $DB->get_record('course', array('id' => $cm->course)); if (empty($cm) or empty($course)) { print_error('REFERENTIEL_ERROR 5 :: print_lib_certificat.php :: You cannot call this script in that way'); } $context = context_module::instance($cm->id); $roles = referentiel_roles_in_instance($referentiel_instance->id); $iseditor = $roles->is_editor; $isadmin = $roles->is_admin; $isteacher = $roles->is_teacher; $istutor = $roles->is_tutor; $isstudent = $roles->is_student; $isguest = $roles->is_guest; // codes item $liste_codes = referentiel_purge_dernier_separateur($referentiel_referentiel->liste_codes_competence, '/'); // empreintes $liste_empreintes = referentiel_purge_dernier_separateur($referentiel_referentiel->liste_empreintes_competence, '/'); // poids $liste_poids = referentiel_purge_dernier_separateur($referentiel_referentiel->liste_poids_competence, '/'); // cours ? if (!empty($course)) { $course_name = $course->shortname; } else { $course_name = ""; } // groupes ? if (!empty($currentgroup)) { $group_name = groups_get_group_name($currentgroup); } else { $group_name = ""; } $titre = get_string('certification_etat', 'referentiel'); if (!empty($course_name)) { $titre .= ' (' . $course_name; if (!empty($group_name)) { $titre .= ' - ' . $group_name; } $titre .= ')'; } $titre = str_replace(' ', '_', $titre); // utilisateurs $record_id_users = referentiel_get_students_course($course->id, 0, 0); //seulement les stagiaires // groupes ? if ($gusers && $record_id_users) { $record_users = array_intersect($gusers, array_keys($record_id_users)); // recopier $record_id_users = array(); foreach ($record_users as $record_id) { $a_obj = new stdClass(); $a_obj->userid = $record_id; $record_id_users[] = $a_obj; } } if ($record_id_users) { // Afficher foreach ($record_id_users as $record_id) { // afficher la liste d'users // recupere les enregistrements de certificats ou les cree si necessaire $records_c[] = referentiel_certificat_user($record_id->userid, $referentiel_referentiel->id); } if ($records_c) { // Let's get the datas $separateur1 = '/'; $separateur2 = ':'; $separateur3 = '|'; $t_user = array(); // tableau des userid $t_code = explode($separateur1, $liste_codes); $t_empreinte = explode($separateur1, $liste_empreintes); $t_poids = explode($separateur1, $liste_poids); $moyennes = array(); $t_valides = array(array()); // $t_declarees = array(array()); $user_name_souligne = ""; foreach ($records_c as $record_c) { // pour tous les certificats if ($record_c) { $certificat_id = $record_c->id; $commentaire_certificat = stripslashes($record_c->commentaire_certificat); $synthese_certificat = stripslashes($record_c->synthese_certificat); $competences_certificat = $record_c->competences_certificat; $competences_activites = $record_c->competences_activite; $decision_jury = stripslashes($record_c->decision_jury); $date_decision = $record_c->date_decision; $ref_referentiel = $record_c->ref_referentiel; $user_id = $record_c->userid; $teacherid = $record_c->teacherid; $verrou = $record_c->verrou; $dossier_ferme = $record_c->valide; $evaluation = $record_c->evaluation; $user_name = referentiel_get_user_nom($user_id) . ' ' . referentiel_get_user_prenom($user_id); $user_info = referentiel_get_user_info($user_id); $teacher_info = referentiel_get_user_info($teacherid); // dates $date_decision_info = userdate($date_decision); //$t_user[]=$user_name; $t_user[] = $user_id; // competences validees dans le certificat $tc = array(); $lcc = referentiel_purge_dernier_separateur($competences_certificat, $separateur1); if (!empty($lcc)) { $tc = explode($separateur1, $lcc); // A.1.1:1 A.1.2:1 A.1.3:1 A.1.4:0/A.1.5:0/A.2.1:1/A.2.2:0/A.2.3:0/A.3.1:0/A.3.2:0/A.3.3:0/A.3.4:0/B.1.1:0/B.1.2:0/B.1.3:0/B.2.1:1/B.2.2:1/B.2.3:0/B.2.4:0/B.3.1:0/B.3.2:0/B.3.3:0/B.3.4:0/B.3.5:0/B.4.1:0/B.4.2:0/B.4.3:0/ $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; if ($tc[$i] != '') { $tcc = explode($separateur2, $tc[$i]); // A.1.1 1 if (isset($tcc[1])) { // $t_valides[$userid][]=$tcc[1]; //$t_valides[$user_name][]=min($tcc[1], $t_empreinte[$i]) ; $t_valides[$user_id][] = min($tcc[1], $t_empreinte[$i]); } } $i++; } } /* // competences declarees dans les activites $tc=array(); $lcd=referentiel_purge_dernier_separateur($competences_activites, $separateur1); if (!empty($lcd)){ $tc = explode ($separateur1, $lcd); // A.1.1:1 A.1.2:1 A.1.3:1 A.1.4:0/A.1.5:0/A.2.1:1/A.2.2:0/A.2.3:0/A.3.1:0/A.3.2:0/A.3.3:0/A.3.4:0/B.1.1:0/B.1.2:0/B.1.3:0/B.2.1:1/B.2.2:1/B.2.3:0/B.2.4:0/B.3.1:0/B.3.2:0/B.3.3:0/B.3.4:0/B.3.5:0/B.4.1:0/B.4.2:0/B.4.3:0/ $i=0; while ($i<count($tc)){ // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; if ($tc[$i]!=''){ $tcc=explode($separateur2, $tc[$i]); // A.1.1 1 if (isset($tcc[1])){ $t_declarees[$user_name][]=$tcc[1]; } } $i++; } } */ } } // calculer la moyenne $n = 0; for ($i = 0; $i < count($t_user); $i++) { //$valeurs=$t_valides[$t_user[$i]]; // moyenne $n++; $moyennes = referentiel_somme_valeur($moyennes, $t_valides[$t_user[$i]]); } $moyennes = referentiel_quotient_valeur($moyennes, $n); $lmoyennes = implode("/", $moyennes); // Distribuer les data sur plusieurs images // pagination $page0 = 0; $page1 = 0; $nbuser = count($t_user); $page = 0; $pagemax = min($nbuser, MAXLIGNEGRAPH); $npages = (int) ($nbuser / $pagemax); $reste = (int) ($nbuser % $pagemax); if ($reste) { $npages++; } /* // DEBUG echo "<br />DEBUG :: 1858 :: CODE<br />\n"; print_r($t_code); echo "<br /> EMPREINTES<br />\n"; print_r($t_empreinte); echo "<br /> POIDS<br />\n"; print_r($t_poids); echo "<br />DEBUG :: 1858 :: USERS<br />\n"; print_r($t_user); echo "<br />COMPETENCES VALIDES<br />\n"; for ($i=0; $i<$nbuser; $i++){ echo "<br />User:"******" <br />\n"; print_r($t_valides[$t_user[$i]]); } */ // echo "<br />NBUSER: $nbuser NBPAGES: $npages PAGEMAX: $pagemax\n"; for ($page = 0; $page < $npages; $page++) { // preparer les donnees $t_data = array(array()); $j = 0; for ($j = 0; $j < $pagemax; $j++) { if (isset($t_user[$page * $pagemax + $j])) { $user_name = referentiel_get_user_nom($t_user[$page * $pagemax + $j]) . ' ' . referentiel_get_user_prenom($t_user[$page * $pagemax + $j]); $t_data[$user_name] = $t_valides[$t_user[$page * $pagemax + $j]]; } } // DEBUG //echo "<br />DEBUG :: 1876 :: DATA<br />\n"; //print_r($t_data); //echo "<br />DEBUG :: 1885 :: DATA<br />\n"; $ltdata = ""; foreach ($t_data as $key => $data) { if ($data) { //echo "<br />$key<br />\n"; //print_r($data); $ldata = implode("/", $data); $ltdata .= "{$key}:{$ldata}|"; } } // Afficher //echo '<br />DATA ->'.$ltdata."\n"; $num_page = $page + 1; if ($isteacher || $istutor || $isadmin) { $affichage_complet = 1; } else { $affichage_complet = 0; } //echo "<br />AFFCOMPLET : $affichage_complet\n"; //redirect ($CFG->wwwroot.'/mod/referentiel/graph_certificats.php?d='.$referentiel_instance->id.'&ltdata='.$ltdata.'&lmoyennes='.$lmoyennes.'&lcode='.$liste_codes.'&lempreinte='.$liste_empreintes.'&lpoids='.$liste_poids.'&affcomplet='.$affichage_complet.'&titre='.$titre.'&page='.$num_page.'&npages='.$npages); echo '<div align="center"><img src="' . $CFG->wwwroot . '/mod/referentiel/graph_certificats.php?d=' . $referentiel_instance->id . '&ltdata=' . $ltdata . '&lmoyennes=' . $lmoyennes . '&lcode=' . $liste_codes . '&lempreinte=' . $liste_empreintes . '&lpoids=' . $liste_poids . '&affcomplet=' . $affichage_complet . '&titre=' . $titre . '&page=' . $num_page . '&npages=' . $npages . '" border="0" title="' . get_string('statcertif', 'referentiel') . '" /></div>' . "\n"; echo '<br />' . "\n"; } } } }
/** * This function returns records of certificat from table referentiel_certificat * * If select_all == 1 all certificates are displayed * Else only course's user certificates are displayed * @param object referentiel_instance instance of referentiel * @param user_filtee int * @param guser Object * @param mode string * @param appli : calling script * @param select_all : int * @param select_acc : int * @param force_generation: boolean * @return objects * @todo Finish documenting this function **/ function referentiel_get_liste_certificats($referentiel_instance, $course, $context, $list_userids = '', $userid_filtre = 0, $gusers, $select_acc = 0, $select_all = 0, $force_generation = 0) { global $debug_special; global $USER; static $referentiel_id = NULL; $records = array(); if ($referentiel_instance) { $roles = referentiel_roles_in_instance($referentiel_instance->id); $iseditor = $roles->is_editor; $isadmin = $roles->is_admin; $isteacher = $roles->is_teacher; $istutor = $roles->is_tutor; $isstudent = $roles->is_student; // recuperer les certificats if (!empty($list_userids)) { // liste d'utilisateurs obtenus par les pedagogies if (!empty($force_generation)) { // echo "<br />DEBUG :: lib_certificat.php :: 226 <br />$list_userids\n"; referentiel_force_certificats_from_userslist($list_userids, $referentiel_instance->ref_referentiel); } // resultat triƩ dans l'ordre alphabetique des utilisateurs $records = referentiel_get_certificats_from_userslist($list_userids, $referentiel_instance->ref_referentiel); } else { if ($isadmin && $select_all) { // //tous les certificats // $record_id_users = referentiel_get_all_users_with_certificate($referentiel_instance->ref_referentiel); $records = referentiel_get_certificats_users($referentiel_instance->ref_referentiel); } else { // recuperer les utilisateurs filtres if (!empty($userid_filtre)) { // un seul certificat $record_id_users = referentiel_get_students_course($course->id, $userid_filtre, 0); } else { // teachers :: les certificats du cours seulement if (!empty($select_acc)) { // eleves accompagnes $record_id_users = referentiel_get_accompagnements_teacher($referentiel_instance->id, $course->id, $USER->id); } else { $record_id_users = referentiel_get_students_course($course->id, $userid_filtre, 0); } // groupes ? if ($gusers && $record_id_users) { $record_users = array_intersect($gusers, array_keys($record_id_users)); // recopier $record_id_users = array(); foreach ($record_users as $record_id) { $a_obj = new stdClass(); $a_obj->userid = $record_id; $record_id_users[] = $a_obj; } } } if ($record_id_users) { foreach ($record_id_users as $record_id) { // afficher la liste d'users $records[] = referentiel_certificat_user($record_id->userid, $referentiel_instance->ref_referentiel); } } } } } // if referentiel return $records; }