function referentiel_print_liste_certificats($initiale, $userids, $mode, $referentiel_instance, $userid_filtre = 0, $gusers, $select_acc = 0, $data_f = NULL, $sql_f_where = '', $sql_f_order = '') { global $DB; global $CFG; global $USER; static $istutor = false; static $isteacher = false; static $isadmin = false; static $isstudent = false; static $iseditor = false; static $isauthor = false; $protocole_link = ''; //MODIF JF 2012/02/18 // 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_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; if (!empty($referentiel_instance->ref_referentiel)) { $referentiel_referentiel = referentiel_get_referentiel_referentiel($referentiel_instance->ref_referentiel); if (!$referentiel_referentiel) { if ($isadmin || $isteacher) { print_error(get_string('creer_referentiel', 'referentiel'), "edit.php?d={$referentiel_instance->id}&mode=editreferentiel&sesskey=" . sesskey()); } else { print_error(get_string('creer_referentiel', 'referentiel'), "../../course/view.php?id={$course->id}&sesskey=" . sesskey()); } } $isreferentielauteur = referentiel_is_author($USER->id, $referentiel_referentiel, !$isstudent); // MODIF JF 2012/02/18 $seuil_certification = $referentiel_referentiel->seuil_certificat; $nb_items = referentiel_get_nb_items($referentiel_referentiel->id); // empreintes $liste_empreintes = referentiel_purge_dernier_separateur(referentiel_get_liste_empreintes_competence($referentiel_referentiel->id), '/'); if ($isadmin || $isreferentielauteur) { $protocole_link = "{$CFG->wwwroot}/mod/referentiel/edit_protocole.php?d={$referentiel_instance->id}&mode=protocole&sesskey=" . sesskey(); } else { $protocole_link = "{$CFG->wwwroot}/mod/referentiel/protocole.php?d={$referentiel_instance->id}&mode=protocole&sesskey=" . sesskey(); } // REGENERER LES CERTIFICATS // MODIF JF 2009/10/23 // referentiel_regenere_certificats($referentiel_instance); // INUTILE DESORMAIS // boite pour selectionner les utilisateurs ? if ($iseditor || $isteacher || $isadmin || $istutor) { if (!empty($select_acc)) { // eleves accompagnes $record_id_users = referentiel_get_accompagnements_teacher($referentiel_instance->id, $course->id, $USER->id); } else { // tous les users possibles (pour la boite de selection) // Get your userids the normal way $record_id_users = referentiel_get_students_course($course->id, 0, 0); //seulement les stagiaires } if ($gusers && $record_id_users) { // liste des utilisateurs du groupe courant // echo "<br />DEBUG :: print_lib_certificat.php :: 740 :: GUSERS<br />\n"; // print_object($gusers); // echo "<br />\n"; $record_users = array_intersect($gusers, array_keys($record_id_users)); // $record_users = array_intersect_assoc($record_id_users, array_keys($gusers)); // echo "<br />DEBUG :: print_lib_certificat.php :: 745 :: RECORD_USERS<br />\n"; // print_r($record_users ); // echo "<br />\n"; // 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; } } echo referentiel_select_users_accompagnes("certificat.php", $mode, $userid_filtre, $select_acc); echo referentiel_select_users_certificat($record_id_users, "certificat.php", $initiale, $mode, $userid_filtre, $select_acc); } else { $userid_filtre = $USER->id; // les étudiants ne peuvent voir que leur fiche } // recuperer les utilisateurs filtres // si $userid_filtre ==0 on retourne tous les utilisateurs du cours et du groupe if (!empty($userid_filtre)) { $record_id_users = referentiel_get_students_course($course->id, $userid_filtre, 0); } else { 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; } } // ALPHABETIQUE if (!empty($userids)) { $t_users_select = explode('_', $userids); $record_id_users = array(); foreach ($t_users_select as $userid) { $a_obj = new stdClass(); $a_obj->userid = $userid; $record_id_users[] = $a_obj; } // DEBUG /* echo "<br />DEBUG :: print_lib_certificat.php :: 2386<br />USERIDS : $userids<br />\n"; print_r($t_users_select); echo "<br />\n"; print_r($record_id_users); exit; */ } if ($record_id_users) { // Afficher // Filtres de selection echo referentiel_entete_filtre($CFG->wwwroot . '/mod/referentiel/certificat.php?d=' . $referentiel_referentiel->id . '&mode=' . $mode . '&sesskey=' . sesskey(), $data_f, false); if (isset($mode) && $mode == 'listcertifsingle') { } else { echo referentiel_print_entete_certificat(); } // MODIF JF 2012/09/20 // ordre d'affichage utilisateurs if (isset($data_f) && isset($data_f->f_auteur) && $data_f->f_auteur == '-1') { $deb = -count($record_id_users) + 1; $fin = 1; } else { $deb = 0; $fin = count($record_id_users); } // Parcours des utilisateurs for ($j = $deb; $j < $fin; $j++) { $i = abs($j); // recupere les enregistrements // recuperation des certificats // ATTENTION // il faut introduire les filtres SQL $records[] = referentiel_certificat_user_select($record_id_users[$i]->userid, $referentiel_instance->ref_referentiel, $sql_f_where, $sql_f_order); } if ($records) { foreach ($records as $record_id) { // afficher la liste d'users // recupere les enregistrements de certificats ou les cree si necessaire $record = referentiel_certificat_user($record_id->userid, $referentiel_instance->ref_referentiel); if ($record) { // MODIF JF 2010/10/07 $isauthor = referentiel_certificat_isowner($record->id); if ($isauthor || $iseditor || $istutor || $isteacher || $isadmin) { if (isset($mode) && $mode == 'listcertifsingle') { referentiel_print_certificat_detail($record, $seuil_certification, $protocole_link); referentiel_menu_certificat_detail($context, $record->id, $referentiel_instance->id, $record->verrou && $isstudent, $record_id->userid, $select_acc, $record->valide); } else { referentiel_print_certificat($record, $nb_items, $liste_empreintes, $seuil_certification, $protocole_link); echo referentiel_menu_certificat($context, $record->id, $referentiel_instance->id, $record->verrou && $isstudent, $record_id->userid, $select_acc, 0, $record->valide); } } } } } } // Afficher if (isset($mode) && $mode == 'listcertifsingle') { // prints ratings options // referentiel_print_ratings($referentiel, $record); // prints ratings options // referentiel_print_comments($referentiel, $record); } else { echo referentiel_print_enqueue_certificat(); } echo '<br /><br />' . "\n"; } }
/** * This function select users * * If select_all == 1 all pedagogies certificates are displayed * Else only course's user certificates are displayed * @param object referentiel_instance instance of referentiel * @param list_userids ;: a list of user from pedagogie * @param userid_filtre int * @param guser Object * @param mode string * @param appli : calling script * @param select_all : int * @param select_acc : int * @param affiche : boolean * @return objects * @todo Finish documenting this function **/ function referentiel_select_liste_certificats($referentiel_instance, $list_pedagoids = '', $userid_filtre = 0, $gusers, $select_acc = 0, $mode = 'listcertif', $appli = 'certificat.php', $select_all = 0, $sql_filtre_where = '', $data_param = NULL) { global $USER; global $existe_pedagos; /// renseigne au niveau de export_certificat static $referentiel_id = NULL; global $DB; // DEBUG // echo "<br />DEBUG :: lib_certificat.php :: 502 :: APPLI : $appli :: MODE : $mode :: LISTE_PEDAGO : $list_pedagoids :: SELECT_ACC : $select_acc :: SELECT_ALL : $select_all\n"; $records = array(); // 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 :: lib_certificat.php :: 438 :: You cannot call this script in that way'); } // Valable pour Moodle 2.1 et Moodle 2.2 //if ($CFG->version < 2011120100) { $context = context_module::instance($cm->id); //} else { // $context = context_module::instance($cm); //} $referentiel_id = $referentiel_instance->ref_referentiel; $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; if (isset($referentiel_id) && $referentiel_id > 0) { $referentiel_referentiel = referentiel_get_referentiel_referentiel($referentiel_id); if (!$referentiel_referentiel) { if ($iseditor) { print_error(get_string('creer_referentiel', 'referentiel'), "edit.php?d={$referentiel_instance->id}&mode=editreferentiel&sesskey=" . sesskey()); } else { print_error(get_string('creer_referentiel', 'referentiel'), "../../course/view.php?id={$course->id}&sesskey=" . sesskey()); } } // Selectionner les utilisateurs pour les boîtes de selection if ($isadmin || $isteacher || $iseditor || $istutor) { if (!empty($select_acc)) { // eleves accompagnes $record_id_users = referentiel_get_accompagnements_teacher($referentiel_instance->id, $course->id, $USER->id); } else { // tous les users possibles (pour la boite de selection) // Get your userids the normal way $record_id_users = referentiel_get_students_course($course->id, 0, 0); //seulement les stagiaires } // tenir compte des groupes pour les boites de selection if ($isadmin && !$select_all || $isteacher || $iseditor || $istutor) { // groupe ? if ($gusers && $record_id_users) { // liste des utilisateurs du groupe courant $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 ($isadmin) { // admin peut tout voir // PEDAGOGIES // DEBUG // variable globale // $existe_pedagos=referentiel_pedagogies_exists($referentiel_instance->ref_referentiel); // DEBUG //if ($existe_pedagos) echo "<br />DEBUG :: lib_certificat.php :: 493 :: EXISTE PEDAGOS :: LISTE_PEDAGO : $list_pedagoids :: SELECT_ACC : $select_acc :: SELECT_ALL : $select_all\n"; //else echo "<br />DEBUG :: lib_certificat.php :: 493 :: EXISTE PAS PEDAGOS :: LISTE_PEDAGO : $list_pedagoids :: SELECT_ACC : $select_acc :: SELECT_ALL : $select_all\n"; echo referentiel_select_all_certificates($referentiel_instance, $appli, $mode, $userid_filtre, $select_acc, $select_all, $existe_pedagos); if ($select_all != 2 || !$existe_pedagos) { echo referentiel_select_users_accompagnes($appli, $mode, $userid_filtre, $select_acc, $select_all); echo referentiel_select_users_certificat($record_id_users, $appli, $mode, $userid_filtre, $select_acc, $select_all); } else { if ($select_all == 2) { echo referentiel_select_pedagogies($referentiel_instance, $appli, $mode, $list_pedagoids, $select_acc, $select_all, $sql_filtre_where, $data_param); } } } else { echo referentiel_select_users_accompagnes($appli, $mode, $userid_filtre, $select_acc, $select_all); echo referentiel_select_users_certificat($record_id_users, $appli, $mode, $userid_filtre, $select_acc, $select_all); } } else { $userid_filtre = $USER->id; // les étudiants ne peuvent voir que leur fiche } // affiche } // if referentiel }