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 . '&amp;mode=' . $mode . '&amp;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";
    }
}
     if (isset($activite_id) && $activite_id > 0) {
         //notice_yesno
         if (empty($old_mode)) {
             $old_mode = "listactivityall";
         }
         echo $OUTPUT->confirm(get_string('confirmvalidateactivity', 'referentiel'), 'activite.php?d=' . $referentiel->id . '&amp;select_acc=' . $select_acc . '&amp;approved=' . $activite_id . '&amp;userid=' . $userid . '&amp;confirm=1&amp;mode=' . $old_mode . '&amp;sesskey=' . sesskey(), 'activite.php?d=' . $referentiel->id . '&amp;select_acc=' . $select_acc . '&amp;approved=' . $activite_id . '&amp;userid=' . $userid . '&amp;confirm=0&amp;mode=' . $old_mode . '&amp;sesskey=' . sesskey());
     } else {
         print_print_error(get_string('noactivite', 'referentiel'), "activite.php?d={$referentiel->id}.'&amp;userid='.{$userid}.'&amp;mode='.{$old_mode}.'");
     }
 } else {
     if (isset($mode) && $mode == "desapproveactivity") {
         if (isset($activite_id) && $activite_id > 0) {
             //notice_yesno
             echo $OUTPUT->confirm(get_string('confirmdevalidateactivity', 'referentiel'), 'activite.php?d=' . $referentiel->id . '&amp;select_acc=' . $select_acc . '&amp;approved=' . $activite_id . '&amp;userid=' . $userid . '&amp;confirm=0&amp;mode=' . $old_mode . '&amp;sesskey=' . sesskey(), 'activite.php?d=' . $referentiel->id . '&amp;select_acc=' . $select_acc . '&amp;approved=' . $activite_id . '&amp;userid=' . $userid . '&amp;confirm=1&amp;mode=' . $old_mode . '&amp;sesskey=' . sesskey());
         } else {
             print_print_error(get_string('noactivite', 'referentiel'), "activite.php?d={$referentiel->id}.'&amp;userid='.{$userid}.'&amp;mode='.{$old_mode}.'");
         }
     } else {
         if (isset($mode) && $mode == "commentactivity") {
             $activite_id = $record->id;
             $type_activite = stripslashes($record->type_activite);
             $description_activite = stripslashes($record->description_activite);
             $competences_activite = $record->competences_activite;
             $commentaire_activite = stripslashes($record->commentaire_activite);
             $ref_instance = $record->ref_instance;
             $ref_referentiel = $record->ref_referentiel;
             $ref_course = $record->ref_course;
             $userid = $record->userid;
             $teacherid = $record->teacherid;
             $date_creation = $record->date_creation;
             $date_modif = $record->date_modif;