function referentiel_affiche_competences_certificat($separateur1, $separateur2, $liste, $liste_empreintes, $invalide = true) { // Affiche les codes competences en tenant compte de l'empreinte // si detail = true les compétences non validees sont aussi affichees $t_empreinte = explode($separateur1, $liste_empreintes); $s = ''; $tc = array(); $liste = referentiel_purge_dernier_separateur($liste, $separateur1); if (!empty($liste) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste); // DEBUG // echo "<br />CODE <br />\n"; // print_r($tc); $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; if ($tc[$i] != '') { $tcc = explode($separateur2, $tc[$i]); // echo "<br />".$tc[$i]." <br />\n"; // print_r($tcc); // exit; if (isset($tcc[1]) && $tcc[1] >= $t_empreinte[$i]) { $s .= ' <span class="valide"><span class="small"><b>' . $tcc[0] . '</b></span></span>'; } elseif ($invalide == true) { $s .= ' <span class="invalide"><span class="small"><i>' . $tcc[0] . '</i></span></span>'; } } $i++; } } return $s; }
/** * This function returns records of teachers from table referentiel_repartition * * @param id reference instance * @param id course * @param activite list of code item of competences * @return object * @todo Finish documenting this function **/ function referentiel_get_repartition_competences($instanceid, $courseid, $liste_competences, $teachersids) { global $CFG; if (!empty($instanceid) && !empty($courseid) && !empty($liste_competences)) { $t_codes_competence = explode('/', referentiel_purge_dernier_separateur($liste_competences, '/')); foreach ($t_codes_competence as $code_item) { // rechercher les referents associes a cette competence // DEBUG // mtrace("lib_repartitions.php :: referentiel_get_repartition_competences() :: 83\nCODE :$code_item\n"); $t_userids = referentiel_get_repartitions_teacher_by_competence($instanceid, $courseid, $code_item); if ($t_userids) { // DEBUG // mtrace("88 :: COMPARER TEACHERSIDS \n"); // print_r($teachersids); // mtrace("\nAVEC T_USERIDS\n"); // print_r($t_userids); foreach ($t_userids as $teacher) { if (in_array($teacher, $teachersids) == false) { // mtrace("\nAJOUTER $teacher->userid"); $a = new stdClass(); $a->userid = $teacher->userid; $teachersids[] = $a; } } } } } // mtrace("\n101 :: RENVOYER \n"); // print_r($teachersids); return $teachersids; }
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"; } } } }
function certificat_pourcentage($liste_code, $ref_referentiel) { // retourne les pourcentages par competence $separateur1 = '/'; $separateur2 = ':'; global $OK_REFERENTIEL_DATA; global $t_domaine; global $t_domaine_coeff; // COMPETENCES global $t_competence; global $t_competence_coeff; // ITEMS global $t_item_code; global $t_item_coeff; // coefficient poids determine par le modele de calcul (soit poids soit poids / empreinte) global $t_item_domaine; // index du domaine associé à un item global $t_item_competence; // index de la competence associée à un item global $t_item_poids; // poids global $t_item_empreinte; global $t_nb_item_domaine; global $t_nb_item_competence; $t_certif_item_valeur = array(); // table des nombres d'items valides $t_certif_item_coeff = array(); // somme des poids du domaine $t_certif_competence_poids = array(); // somme des poids de la competence $t_certif_domaine_poids = array(); // poids certifies for ($i = 0; $i < count($t_item_code); $i++) { $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; } for ($i = 0; $i < count($t_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; } for ($i = 0; $i < count($t_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; } // affichage $s = ''; // donnees globales du referentiel if ($ref_referentiel) { if (!isset($OK_REFERENTIEL_DATA) || $OK_REFERENTIEL_DATA == false) { $OK_REFERENTIEL_DATA = referentiel_initialise_data_referentiel($ref_referentiel); } if (isset($OK_REFERENTIEL_DATA) && $OK_REFERENTIEL_DATA == true) { // DEBUG // echo "<br />CODE <br />\n"; // referentiel_affiche_data_referentiel($ref_referentiel, $params); // recuperer les items valides $tc = array(); $liste_code = referentiel_purge_dernier_separateur($liste_code, $separateur1); // DEBUG // echo "<br />DEBUG :: print_lib_certificat.php :: 917 :: LISTE : $liste_code<br />\n"; if (!empty($liste_code) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste_code); for ($i = 0; $i < count($t_item_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; } for ($i = 0; $i < count($t_item_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; } $i = 0; while ($i < count($tc)) { $t_cc = explode($separateur2, $tc[$i]); // tableau des items valides if (isset($t_cc[1])) { if (isset($t_item_poids[$i]) && isset($t_item_empreinte[$i])) { if ($t_item_poids[$i] > 0 && $t_item_empreinte[$i] > 0) { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = min($t_cc[1], $t_item_empreinte[$i]); // calculer le taux $coeff = (double) $t_certif_item_valeur[$i] * (double) $t_item_coeff[$i]; // stocker la valeur pour l'item $t_certif_item_coeff[$i] = $coeff; // stocker le taux pour la competence $t_certif_domaine_poids[$t_item_domaine[$i]] += $coeff; // stocker le taux pour le domaine $t_certif_competence_poids[$t_item_competence[$i]] += $coeff; } else { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; // $t_certif_domaine_poids[$t_item_domaine[$i]]+=0.0; // $t_certif_competence_poids[$t_item_competence[$i]]+=0.0; } } } $i++; } /* for ($i=0; $i<count($t_domaine_coeff); $i++){ if ($t_domaine_coeff[$i]){ $s.=$t_domaine[$i].';'; } else{ $s.=$t_domaine[$i].';'; } } $s.="\n"; */ $s .= "<domaines>\n"; for ($i = 0; $i < count($t_domaine_coeff); $i++) { $s .= '<domaine code="' . $t_domaine[$i] . '" pourcent='; if ($t_domaine_coeff[$i]) { $s .= '"' . referentiel_pourcentage($t_certif_domaine_poids[$i], $t_domaine_coeff[$i]) . '%" '; } else { $s .= '"0%" '; } $s .= "/>\n"; } $s .= "</domaines>\n"; /* for ($i=0; $i<count($t_competence); $i++){ $s.=$t_competence[$i].';'; } $s.="\n"; */ $s .= "<competences>\n"; for ($i = 0; $i < count($t_competence); $i++) { $s .= '<competence code="' . $t_competence[$i] . '" pourcent='; if ($t_competence_coeff[$i]) { $s .= '"' . referentiel_pourcentage($t_certif_competence_poids[$i], $t_competence_coeff[$i]) . '%" '; } else { $s .= '"0%" '; } $s .= "/>\n"; } $s .= "</competences>\n"; // ITEMS /* for ($i=0; $i<count($t_item_code); $i++){ if ($t_item_empreinte[$i]){ if ($t_certif_item_valeur[$i]>=$t_item_empreinte[$i]) $s.=$t_item_code[$i].';'; else $s.=$t_item_code[$i].';'; } else{ $s.=';'; } } $s.="\n"; */ $s .= "<items>\n"; for ($i = 0; $i < count($t_item_coeff); $i++) { if ($t_item_empreinte[$i]) { $s .= '<item code="' . $t_item_code[$i] . '" pourcent='; if ($t_certif_item_valeur[$i] >= $t_item_empreinte[$i]) { $s .= '"100%" '; } else { $s .= '"' . referentiel_pourcentage($t_certif_item_valeur[$i], $t_item_empreinte[$i]) . '%" '; } $s .= "/>\n"; } } $s .= "</items>\n"; } } } return $s; }
function affiche_competences_validees($separateur1, $separateur2, $liste, $liste_empreintes, $liste_poids) { $t_empreinte = explode($separateur1, $liste_empreintes); $t_poids = explode('|', $liste_poids); // DEBUG /* print_r($t_empreinte); echo "<br />\n"; print_r($t_poids); echo "<br />\n"; //exit; */ $s = ''; $tc = array(); $liste = referentiel_purge_dernier_separateur($liste, $separateur1); if (!empty($liste) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste); $i = 0; while ($i < count($tc)) { if ($tc[$i] != '') { $tcc = explode($separateur2, $tc[$i]); if (isset($tcc[1]) && $tcc[1] >= $t_empreinte[$i]) { $s .= '<b>' . $tcc[0] . '</b> ' . "\n"; // $s.='<td colspan="3">'.str_replace('#','</td><td><i>',$t_poids[$i]).'</i></td>'."\n"; $s .= ' ' . str_replace('#', '<!--', $t_poids[$i]) . '-->' . "\n"; // $s.='<td>'.$t_empreinte[$i].'</td>'."\n"; $s .= '<br />' . "\n"; } /* else{ $s.='<td> <span class="invalide"><i>'.$tcc[0].'</i></span></td>'."\n"; //$s.='<td>'.referentiel_jauge_activite($tcc[1], $t_empreinte[$i]).'</td>'."\n"; $s.='<td colspan="3">'.str_replace('#','</td><td><i>',$t_poids[$i]).'</i></td>'."\n"; } */ } $i++; } } return $s; }
function referentiel_print_repartition_objectifs($referentiel_instance) { // Affiche les repartitions d'affectations de competences // de cette instance de referentiel global $DB; static $iseditor = false; static $referentiel_id = NULL; if (!empty($referentiel_instance)) { $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 :: grades/print_outcomes.php :: 168 :: 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; $iseditor = has_capability('mod/referentiel:writereferentiel', $context); if (!empty($referentiel_id)) { $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()); } } // codes item $t_codes_competence = explode('/', referentiel_purge_dernier_separateur($referentiel_referentiel->liste_codes_competence, '/')); referentiel_affiche_outcomes($referentiel_instance, $referentiel_referentiel, $course, $context, $t_codes_competence); } } }
function referentiel_affiche_competences_declarees($separateur1, $separateur2, $liste_certificat, $liste_activite, $liste_empreintes) { // Affiche les codes competences declarees en tenant compte de l'empreinte et de la validite // Necessaire à l'affichage des overlib $MAXCOL = 30; // Modif JF 2012/01/30 // Adapter le nombre de colonnes à la taille des codes à afficher $lca = strlen($liste_activite); // echo "<br />Longueur : $lca\n"; if ($lca > 600) { $MAXCOL = round($lca / 20) + 1; } else { if ($lca > 390) { $MAXCOL = round($lca / 13) + 1; } else { if ($lca > 300) { $MAXCOL = round($lca / 10) + 1; } else { if ($lca > 180) { $MAXCOL = round($lca / 6) + 1; } else { if ($lca > 150) { $MAXCOL = round($lca / 5) + 1; } else { $MAXCOL = 30; } } } } } // echo "<br />NB COLONNES : $MAXCOL<br /> \n"; // exit; $t_empreinte = explode($separateur1, $liste_empreintes); $okc = false; $oka = false; $s = ''; $tc = array(); $liste_certificat = referentiel_purge_dernier_separateur($liste_certificat, $separateur1); $liste_activite = referentiel_purge_dernier_separateur($liste_activite, $separateur1); if ((!empty($liste_certificat) || !empty($liste_activite)) && $separateur1 != "" && $separateur2 != "") { if (!empty($liste_certificat)) { $tc = explode($separateur1, $liste_certificat); $okc = true; } if (!empty($liste_activite)) { $ta = explode($separateur1, $liste_activite); $oka = true; } // DEBUG // echo "<br />CODE <br />\n"; // print_r($tc); if ($oka) { $i = 0; $s .= "\n" . '<p>' . "\n"; while ($i < count($ta)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; $tca = explode($separateur2, $ta[$i]); if ($okc) { $tcc = explode($separateur2, $tc[$i]); } // echo "<br />".$tc[$i]." <br />\n"; // print_r($tcc); // exit; if ($i != 0 && $i % $MAXCOL == 0) { //$s.='</tr>'."\n".'<tr>'; $s .= '<br />' . "\n"; } if ($okc && isset($tcc[1]) && $tcc[1] >= $t_empreinte[$i]) { // Overlib $code_s = referentiel_affiche_overlib_un_item($separateur2, $tca[0], "vert"); $s .= '<span class="bold">' . $code_s . '</span> '; } else { if ($okc && isset($tcc[1]) && $tcc[1] > 0) { $code_s = referentiel_affiche_overlib_un_item($separateur2, $tca[0], "orange"); $s .= '<span class="bold">' . $code_s . '</span> '; } else { if (isset($tca[1]) && $tca[1] > 0) { $code_s = referentiel_affiche_overlib_un_item($separateur2, $tca[0], "rouge"); $s .= '<i>' . $code_s . '</i> '; } else { $code_s = referentiel_affiche_overlib_un_item($separateur2, $tca[0], "nondefini"); $s .= $code_s . ' '; } } } $i++; } if ($i > $MAXCOL) { $k = $MAXCOL - $i % $MAXCOL; $j = 0; while ($j < $k) { $s .= '<span class="nondefini"> </span>'; $j++; } } $s .= "\n" . '</p>' . "\n"; } } return $s; }
function affiche_detail_competences($separateur1, $separateur2, $liste, $liste_empreintes, $liste_poids) { $t_empreinte = explode($separateur1, $liste_empreintes); $t_poids = explode('|', $liste_poids); // DEBUG // echo "<br />DEBUG : print_lib_certificat.php :: 105<br />LISTE EMPREINTES : $liste_empreintes<br />\n"; // print_r($t_empreinte); // DEBUG // echo "<br />DEBUG : print_lib_certificat.php :: 108<br />LISTE POIDS : $liste_poids<br />\n"; // print_r($t_poids); // exit; $s = ''; $tc = array(); $liste = referentiel_purge_dernier_separateur($liste, $separateur1); if (!empty($liste) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste); // DEBUG // echo "<br />CODE <br />\n"; // print_r($tc); $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; if ($tc[$i] != '') { $tcc = explode($separateur2, $tc[$i]); // echo "<br />".$tc[$i]." <br />\n"; // print_r($tcc); // exit; // $s.='<tr>'."\n"; if (isset($tcc[1]) && $tcc[1] >= $t_empreinte[$i]) { $s .= $tcc[0]; $s .= $this->jauge_activite($tcc[1], $t_empreinte[$i]); $s .= str_replace('#', ';', $t_poids[$i]) . ';'; } else { $s .= $tcc[0]; $s .= $this->jauge_activite($tcc[1], $t_empreinte[$i]); $s .= str_replace('#', ';', $t_poids[$i]) . ';'; } $s .= $t_empreinte[$i] . ';'; } $i++; } $s .= "\n"; } return $s; }
/** * Function set thresholds for an occurrence * * @param refrefid reference referentiel_referentiel id * @return string * A.1:0/A.2:0/A.3:0/B.1:0/B.2:0/ * @todo Finish documenting this function **/ function referentiel_certificat_valide($competences_certificat, $refrefid) { // ce certificat comporte des pourcentages par domaine et competence // affichage sous forme de tableau et span pour les items // input competences_certificat // A.1-1:0/A.1-2:0/A.1-3:1/A.1-4:0/A.1-5:0/A.2-1:0/A.2-2:0/A.2-3:0/A.3-1:0/A.3-2:1/A.3-3:1/A.3-4:1/B.1-1:0/B.1-2:0/B.1-3:0/B.2-1:0/B.2-2:0/B.2-3:0/B.2-4:0/B.2-5: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/ $return_value = -1; global $OK_REFERENTIEL_DATA; // les données du certificat sont disponibles global $OK_REFERENTIEL_PROTOCOLE; // les données du protocole sont disponibles // DOMAINES global $t_domaine; global $t_domaine_coeff; // COMPETENCES global $t_competence; global $t_competence_coeff; // ITEMS global $t_item_code; global $t_item_coeff; // coefficient poids determine par le modele de calcul (soit poids soit poids / empreinte) global $t_item_domaine; // index du domaine associe a un item global $t_item_competence; // index de la competence associee a un item global $t_item_poids; // poids global $t_item_empreinte; global $t_nb_item_domaine; global $t_nb_item_competence; // MODIF JF 2012/03/26 global $t_competence_domaine; // index du domaine associe a une competence global $t_nb_competence_domaine; // nombre de competence par domaine // tables de protocoles (seuils, item obligatoires, etc. global $protocol_seuil_referentiel; global $protocol_minima_referentiel; global $protocol_t_domaines_oblig; global $protocol_t_domaines_seuil; global $protocol_t_domaines_minima; global $protocol_t_competences_oblig; global $protocol_t_competences_seuil; global $protocol_t_competences_minima; global $protocol_t_items_oblig; global $protocol_timemodified; global $protocol_actif; $separateur1 = '/'; $separateur2 = ':'; $nb_items_valides = 0; // items valides $t_certif_item_valeur = array(); // table des nombres d'items valides $t_certif_item_coeff = array(); // somme des poids du domaine $t_certif_competence_poids = array(); // somme des poids de la competence $t_certif_domaine_poids = array(); // poids certifies // MODIF JF 2012/03/26 $t_certif_competences_valides = array(); // nombre de competences valides $t_certif_domaines_valides = array(); // nombre de domaines valides // donnees globales du referentiel if ($refrefid) { if (!isset($OK_REFERENTIEL_DATA) || $OK_REFERENTIEL_DATA == false) { $OK_REFERENTIEL_DATA = referentiel_initialise_data_referentiel($refrefid); } if (!isset($OK_REFERENTIEL_PROTOCOLE) || $OK_REFERENTIEL_PROTOCOLE == false) { $OK_REFERENTIEL_PROTOCOLE = referentiel_initialise_protocole_referentiel($refrefid); } if (isset($OK_REFERENTIEL_DATA) && $OK_REFERENTIEL_DATA == true && isset($OK_REFERENTIEL_PROTOCOLE) && $OK_REFERENTIEL_PROTOCOLE == true) { // DEBUG /* echo "<br />DEBUG:: lib_protocol.php :: 318 :: PROTOCOL VARIABLES<br />\n"; echo "SEUIL : $protocol_seuil_referentiel<br />\n"; echo "<br />DOMAINES OBLIG<br />\n"; print_object($protocol_t_domaines_oblig); echo "<br />DOMAINES SEUILS<br />\n"; print_object($protocol_t_domaines_seuil); echo "<br />DOMAINES MINIMAS<br />\n"; print_object($protocol_t_domaines_minima); echo "<br />COMPETENCES OBLIG<br />\n"; print_object($protocol_t_competences_oblig); echo "<br />COMPETENCES SEUILS<br />\n"; print_object($protocol_t_competences_seuil); echo "<br />COMPETENCES MINIMAS<br />\n"; print_object($protocol_t_competences_minima); echo "<br />ITEMS OBLIG<br />\n"; print_object($protocol_t_items_oblig); */ if ($protocol_actif) { // Initialisation for ($i = 0; $i < count($t_item_code); $i++) { $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; } for ($i = 0; $i < count($t_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; $t_certif_competences_valides[$i] = 0; } for ($i = 0; $i < count($t_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; $t_certif_domaines_valides[$i] = 0; } // RECUPERER les pourcentages par competence et domaine // en fonction des items valides dans le certificat // DEBUG // echo "<br />DEBUG :: lib_protocole.php :: 329 :: CODE <br />\n"; // referentiel_affiche_data_referentiel($refrefid, NULL); // recuperer les items valides $tc = array(); $liste_code = referentiel_purge_dernier_separateur($competences_certificat, $separateur1); // DEBUG // echo "<br />DEBUG :: lib_protocole.php :: 383 :: LISTE : $liste_code<br />\n"; if (!empty($liste_code) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste_code); for ($i = 0; $i < count($t_item_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; } for ($i = 0; $i < count($t_item_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; } $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; $t_cc = explode($separateur2, $tc[$i]); // tableau des items valides // print_r($t_cc); // echo "<br />\n"; // exit; if (isset($t_cc[1])) { if (isset($t_item_poids[$i]) && isset($t_item_empreinte[$i])) { if ($t_item_poids[$i] > 0 && $t_item_empreinte[$i] > 0) { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = min($t_cc[1], $t_item_empreinte[$i]); // calculer le taux $coeff = (double) $t_certif_item_valeur[$i] * (double) $t_item_coeff[$i]; // stocker la valeur pour l'item $t_certif_item_coeff[$i] = $coeff; // stocker le taux pour la competence $t_certif_competence_poids[$t_item_competence[$i]] += $coeff; // stocker le taux pour le domaine $t_certif_domaine_poids[$t_item_domaine[$i]] += $coeff; if ($t_certif_item_valeur[$i] >= $t_item_empreinte[$i]) { $t_certif_competences_valides[$t_item_competence[$i]]++; $nb_items_valides++; } } else { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; } } } $i++; } /* DOMAINES */ // mettre a jour les minimas // compter les competences valides par domaine for ($i = 0; $i < count($t_competence); $i++) { if (isset($t_certif_competences_valides[$t_competence_domaine[$i]])) { $t_certif_domaines_valides[$t_competence_domaine[$i]]++; } } // Verifier si le certificat est valide // Calculer la valeur des items valides $valeur_items_valides = 0.0; for ($i = 0; $i < count($t_certif_item_coeff); $i++) { $valeur_items_valides += $t_certif_item_coeff[$i]; } // Vérifier si les minimas sont depassés $ok_minima_competence = true; $ok_minima_domaine = true; // Verifier si le seuil est depassé $ok_seuil = true; $ok_competences = true; $ok_domaines = true; $ok_items = true; // $ok_items=true; echo "<br />DEBUG:: lib_protocol.php :: 413 :: DEBUG FORCER le test du PROTOCOLE\n"; //$ok_items=($protocol_seuil_referentiel>0) && ($nb_items_valides>=$protocol_seuil_referentiel); if ($protocol_seuil_referentiel > 0) { $ok_seuil = $valeur_items_valides >= $protocol_seuil_referentiel; } if ($ok_seuil) { $ok_seuil = $nb_items_valides >= $protocol_minima_referentiel; } // 1) Verifier si tous les items obligatoires sont valides $ok_items = true; if ($ok_items) { $i = 0; while ($i < count($protocol_t_items_oblig) && $ok_items) { $t_oblig = explode($separateur2, $protocol_t_items_oblig[$i]); // echo "<br />ITEM_OBLIG<br />\n"; // print_r($t_oblig); if (isset($t_oblig[1])) { if ($t_item_poids[$i] > 0 && $t_item_empreinte[$i] > 0 && $t_oblig[1] > 0) { $ok_items = $ok_items && $t_certif_item_valeur[$i] >= $t_item_empreinte[$i]; } } $i++; } } // 2) Verifier les competences obligatoires $ok_competences_oblig = true; $i = 0; while ($i < count($protocol_t_competences_oblig) && $ok_competences_oblig) { $t_oblig = explode($separateur2, $protocol_t_competences_oblig[$i]); $t_seuil = explode($separateur2, $protocol_t_competences_seuil[$i]); //echo "<br />COMPETENCES_OBLIGS<br />\n"; //print_r($t_oblig); //echo "<br />COMPETENCES_SEUILS<br />\n"; //print_r($t_seuil); if (isset($t_oblig[1]) && $t_oblig[1] > 0 && isset($t_seuil[1])) { $ok_competences_oblig = $ok_competences_oblig && $t_certif_competence_poids[$i] >= $t_seuil[1]; } $i++; } // MODIF JF 2012/03/26 // 3) Puis verifier les competences par rapport aux minimas // cela est utile si aucune compétence n'est obligatoire mais qu'il y a une contrainte du style // pas plus de n items invalides par compétence $ok_competences = $ok_competences_oblig; if ($ok_competences) { $i = 0; while ($i < count($protocol_t_competences_seuil) && $ok_competences) { $t_minima = explode($separateur2, $protocol_t_competences_minima[$i]); if (isset($t_minima[1])) { $ok_competences = $ok_competences && $t_certif_competences_valides[$i] >= $t_minima[1]; } $i++; } } // 4) Puis verifier les competences par rapport aux seuils // cela est utile si aucune compétence n'est obligatoire mais qu'il y a une contrainte du style // la somme ponderees de items suerieure au seuil de la competence if ($ok_competences) { $i = 0; while ($i < count($protocol_t_competences_seuil) && $ok_competences) { $t_seuil = explode($separateur2, $protocol_t_competences_seuil[$i]); if (isset($t_seuil[1])) { $ok_competences = $ok_competences && $t_certif_competence_poids[$i] >= $t_seuil[1]; } $i++; } } // 5) verifier les domaines // if ($ok_competences_oblig){ // Verifier les domaines obligatoire par rapport aux seuils $ok_domaines_oblig = true; $i = 0; while ($i < count($protocol_t_domaines_oblig) && $ok_domaines_oblig) { $t_oblig = explode($separateur2, $protocol_t_domaines_oblig[$i]); $t_seuil = explode($separateur2, $protocol_t_domaines_seuil[$i]); //echo "<br />DOMAINES_OBLIGS<br />\n"; //print_r($t_oblig); //echo "<br />DOMAINES_SEUILS<br />\n"; //print_r($t_seuil); if (isset($t_oblig[1]) && $t_oblig[1] > 0 && isset($t_seuil[1])) { $ok_domaines_oblig = $ok_domaines_oblig && $t_certif_domaine_poids[$i] >= $t_seuil[1]; } $i++; } $ok_domaines = $ok_domaines_oblig; // 6) Verifier les domaines par rapport aux minimas // Cela est utile si aucun domaine n'est obligatoire mais qu'il y a une contrainte du style // pas plus de n competences invalides par domaine $ok_domaines = $ok_domaines_oblig; if ($ok_domaines) { $i = 0; while ($i < count($protocol_t_domaines_seuil) && $ok_domaines) { $t_minima = explode($separateur2, $protocol_t_domaines_minima[$i]); if (isset($t_minima[1])) { $ok_domaines = $ok_domaines && $t_certif_domaines_valides[$i] >= $t_minima[1]; } $i++; } } // 7) Verifier les domaines par rapport aux les seuils // Cela est utile si aucun domaine n'est obligatoire mais qu'il y a une contrainte du style // pas moins de x pourcentage par rapport au seuil du domaine if ($ok_domaines) { $i = 0; while ($i < count($protocol_t_domaines_seuil) && $ok_domaines) { $t_seuil = explode($separateur2, $protocol_t_domaines_seuil[$i]); if (isset($t_seuil[1])) { $ok_domaines = $ok_domaines && $t_certif_domaine_poids[$i] >= $t_seuil[1]; } $i++; } } // DEBUG /* echo "<br />DEBUG :: lib_protocole.php :: 531\n"; if ($ok_items) {echo "<br />ITEMS : TRUE";} else {echo "<br />ITEMS : FALSE";} if ($ok_competences) {echo "<br />COMPETENCE: TRUE";} else {echo "<br />COMPETENCE: FALSE";} if ($ok_domaines) {echo "<br />DOMAINE: TRUE";} else {echo "<br />DOMAINE: FALSE";} */ if ($ok_seuil && $ok_items && $ok_competences && $ok_domaines) { $return_value = 1; } else { $return_value = 0; } } } } } return $return_value; }
function ooffice_write_certification($referentiel_instance, $referentiel_referentiel, $userid = 0, $param, $records_certificats) { global $CFG; global $odt; if ($referentiel_instance && $referentiel_referentiel) { // CERTIFICATS if (isset($referentiel_instance->ref_referentiel) && $referentiel_instance->ref_referentiel > 0) { // les empreintes $liste_empreintes = referentiel_purge_dernier_separateur(referentiel_get_liste_empreintes_competence($referentiel_instance->ref_referentiel), '/'); $liste_poids = referentiel_purge_dernier_separateur(referentiel_get_liste_poids($referentiel_instance->ref_referentiel), '|'); if ($userid > 0) { $record = referentiel_get_certificat_user($userid, $referentiel_instance->ref_referentiel); ooffice_write_certificat($record, $referentiel_instance, $referentiel_referentiel, $liste_empreintes, $liste_poids, $param); } else { if (!$records_certificats) { $records_certificats = referentiel_get_certificats($referentiel_instance->ref_referentiel); } if ($records_certificats) { foreach ($records_certificats as $record) { ooffice_write_certificat($record, $referentiel_instance, $referentiel_referentiel, $liste_empreintes, $liste_poids, $param); } } } // print_r($records_certificats); // exit; } } return ""; }
function referentiel_jauge_competence($liste) { // LISTE de la forme 'CODE''SEPARATEUR2''nombre''SEPARATEUR1''CODE''SEPARATEUR2''nombre' ... // par exemple A.1.1:0/A.1.2:1/A.1.3:0 etc. // separateur $une_jauge = new jauge(); $une_jauge->setJaugeListe(referentiel_purge_dernier_separateur($liste, "/")); $une_jauge->setsetJaugeSep1("/"); $une_jauge->setJaugeSep2(":"); return $une_jauge->retourne_jauge(); }
/** * set the referentiel * @param object referentiel the referentiel object */ function setPoids($referentiel_referentiel) { $this->liste_poids_competence = referentiel_purge_dernier_separateur(referentiel_get_liste_poids($referentiel_referentiel->id), '|'); }
function referentiel_retourne_certificat_consolide($separateur1, $separateur2, $liste_code, $ref_referentiel, $bgcolor, $params = NULL) { // ce certificat comporte des pourcentages par domaine et competence // affichage sous forme de tableau et span pour les items // input liste_code // A.1-1:0/A.1-2:0/A.1-3:1/A.1-4:0/A.1-5:0/A.2-1:0/A.2-2:0/A.2-3:0/A.3-1:0/A.3-2:1/A.3-3:1/A.3-4:1/B.1-1:0/B.1-2:0/B.1-3:0/B.2-1:0/B.2-2:0/B.2-3:0/B.2-4:0/B.2-5: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/ global $OK_REFERENTIEL_DATA; global $t_domaine; global $t_domaine_coeff; // COMPETENCES global $t_competence; global $t_competence_coeff; // ITEMS global $t_item_code; global $t_item_coeff; // coefficient poids determine par le modele de calcul (soit poids soit poids / empreinte) global $t_item_domaine; // index du domaine associe a un item global $t_item_competence; // index de la competence associee a un item global $t_item_poids; // poids global $t_item_empreinte; global $t_nb_item_domaine; global $t_nb_item_competence; $s = ''; // nom des domaines, competences, items $label_d = ""; $label_c = ""; $label_i = ""; if (isset($params) && !empty($params)) { if (isset($params->label_domaine)) { $label_d = $params->label_domaine; } if (isset($params->label_competence)) { $label_c = $params->label_competence; } if (isset($params->label_item)) { $label_i = $params->label_item; } } $t_certif_item_valeur = array(); // table des nombres d'items valides $t_certif_item_coeff = array(); // somme des poids du domaine $t_certif_competence_poids = array(); // somme des poids de la competence $t_certif_domaine_poids = array(); // poids certifies // affichage // donnees globales du referentiel if ($ref_referentiel) { if (!isset($OK_REFERENTIEL_DATA) || $OK_REFERENTIEL_DATA == false) { $OK_REFERENTIEL_DATA = referentiel_initialise_data_referentiel($ref_referentiel); } if (isset($OK_REFERENTIEL_DATA) && $OK_REFERENTIEL_DATA == true) { for ($i = 0; $i < count($t_item_code); $i++) { $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; } for ($i = 0; $i < count($t_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; } for ($i = 0; $i < count($t_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; } // DEBUG // echo "<br />CODE <br />\n"; // referentiel_affiche_data_referentiel($ref_referentiel, $params); // recuperer les items valides $tc = array(); $liste_code = referentiel_purge_dernier_separateur($liste_code, $separateur1); // DEBUG // echo "<br />DEBUG :: print_lib_certificat.php :: 917 :: LISTE : $liste_code<br />\n"; if (!empty($liste_code) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste_code); // DEBUG for ($i = 0; $i < count($t_item_domaine); $i++) { $t_certif_domaine_poids[$i] = 0.0; } for ($i = 0; $i < count($t_item_competence); $i++) { $t_certif_competence_poids[$i] = 0.0; } $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG // echo "<br />".$tc[$i]." <br />\n"; // exit; $t_cc = explode($separateur2, $tc[$i]); // tableau des items valides // print_r($t_cc); // echo "<br />\n"; // exit; if (isset($t_cc[1])) { if (isset($t_item_poids[$i]) && isset($t_item_empreinte[$i])) { if ($t_item_poids[$i] > 0 && $t_item_empreinte[$i] > 0) { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = min($t_cc[1], $t_item_empreinte[$i]); // calculer le taux $coeff = (double) $t_certif_item_valeur[$i] * (double) $t_item_coeff[$i]; // stocker la valeur pour l'item $t_certif_item_coeff[$i] = $coeff; // stocker le taux pour la competence $t_certif_domaine_poids[$t_item_domaine[$i]] += $coeff; // stocker le taux pour le domaine $t_certif_competence_poids[$t_item_competence[$i]] += $coeff; } else { // echo "<br />".min($t_cc[1],$t_item_empreinte[$i]); $t_certif_item_valeur[$i] = 0.0; $t_certif_item_coeff[$i] = 0.0; // $t_certif_domaine_poids[$t_item_domaine[$i]]+=0.0; // $t_certif_competence_poids[$t_item_competence[$i]]+=0.0; } } } $i++; } // DEBUG $nlen = strlen($liste_code); if ($nlen <= MAXLENCODE) { // sous forme de tableau // DOMAINES $s .= '<table width="100%" cellspacing="0" cellpadding="2"><tr valign="top" >' . "\n"; // if (!empty($label_d)){ // $s.='<td width="5%">'.$label_d.'</td>'; //} // else { // $s.='<td $t_certif_item_coeff width="5%">'.get_string('domaine','referentiel').'</td>'; //} for ($i = 0; $i < count($t_domaine_coeff); $i++) { if ($t_domaine_coeff[$i]) { $s .= '<td align="center" colspan="' . $t_nb_item_domaine[$i] . '"><b>' . $t_domaine[$i] . '</b> (' . referentiel_pourcentage($t_certif_domaine_poids[$i], $t_domaine_coeff[$i]) . '%)</td>'; } else { $s .= '<td align="center" colspan="' . $t_nb_item_domaine[$i] . '"><b>' . $t_domaine[$i] . '</b> (0%)</td>'; } } $s .= '</tr>' . "\n"; $s .= '<tr valign="top" >' . "\n"; for ($i = 0; $i < count($t_competence); $i++) { if ($t_competence_coeff[$i]) { $s .= '<td align="center" colspan="' . $t_nb_item_competence[$i] . '"><b>' . $t_competence[$i] . '</b> (' . referentiel_pourcentage($t_certif_competence_poids[$i], $t_competence_coeff[$i]) . '%)</td>' . "\n"; } else { $s .= '<td align="center" colspan="' . $t_nb_item_competence[$i] . '"><b>' . $t_competence[$i] . '</b> (0%)</td>' . "\n"; } } $s .= '</tr>' . "\n"; // ITEMS // DEBUG // echo "<br />$nlen\n"; $s .= '<tr valign="top" >' . "\n"; for ($i = 0; $i < count($t_item_code); $i++) { if ($t_item_empreinte[$i]) { if (isset($t_certif_item_valeur[$i])) { if ($t_certif_item_valeur[$i] >= $t_item_empreinte[$i]) { // $s.='<td'.$bgcolor.'><span class="valide">'.$t_item_code[$i].'</span></td>'."\n"; $s .= '<td class="valide"><span class="valide">' . $t_item_code[$i] . '</span></td>' . "\n"; } else { //$s.='<td'.$bgcolor.'><span class="invalide">'.$t_item_code[$i].'</span></td>'."\n"; $s .= '<td class="invalide"><span class="invalide">' . $t_item_code[$i] . '</span></td>' . "\n"; } } } else { $s .= '<td class="nondefini"><span class="nondefini"><i>' . $t_item_code[$i] . '</i></span></td>' . "\n"; } } $s .= '</tr>' . "\n"; $s .= '<tr valign="top" >' . "\n"; // <td width="5%">'.get_string('coeff','referentiel').'</td>'."\n"; // for ($i=0; $i<count($t_item_coeff); $i++){ for ($i = 0; $i < count($t_item_code); $i++) { if ($t_item_empreinte[$i]) { if (isset($t_certif_item_valeur[$i])) { if ($t_certif_item_valeur[$i] >= $t_item_empreinte[$i]) { // $s.='<td'.$bgcolor.'><span class="valide">100%</span></td>'."\n"; $s .= '<td class="valide"><span class="valide">100%</span></td>' . "\n"; } else { $s .= '<td class="invalide"><span class="invalide">' . referentiel_pourcentage($t_certif_item_valeur[$i], $t_item_empreinte[$i]) . '%</span></td>' . "\n"; } } } else { $s .= '<td class="nondefini"><span class="nondefini"> </span></td>' . "\n"; } } $s .= '</tr></table>' . "\n"; } else { // DOMAINES $s .= '<table width="100%" cellspacing="0" cellpadding="2"> <tr valign="top"><td>' . "\n"; // if (!empty($label_d)){ // $s.='<td width="5%">'.$label_d.'</td>'; //} // else { // $s.='<td $t_certif_item_coeff width="5%">'.get_string('domaine','referentiel').'</td>'; //} for ($i = 0; $i < count($t_domaine_coeff); $i++) { if ($t_domaine_coeff[$i]) { $s .= ' <b>' . $t_domaine[$i] . '</b> (' . referentiel_pourcentage($t_certif_domaine_poids[$i], $t_domaine_coeff[$i]) . '%)'; } else { $s .= ' <b>' . $t_domaine[$i] . '</b> (0%)</span>'; } } $s .= '</td></tr>' . "\n"; $s .= '<tr valign="top"><td>' . "\n"; for ($i = 0; $i < count($t_competence); $i++) { if ($t_competence_coeff[$i]) { $s .= ' <b>' . $t_competence[$i] . '</b> (' . referentiel_pourcentage($t_certif_competence_poids[$i], $t_competence_coeff[$i]) . '%)' . "\n"; } else { $s .= ' <b>' . $t_competence[$i] . '</b> (0%)' . "\n"; } } $s .= '</td></tr>' . "\n"; $s .= '<tr valign="top" ><td>' . "\n"; for ($i = 0; $i < count($t_item_code); $i++) { if ($t_item_empreinte[$i]) { if (isset($t_certif_item_valeur[$i])) { if ($t_certif_item_valeur[$i] >= $t_item_empreinte[$i]) { $s .= '<span class="deverrouille"><span class="valide">' . $t_item_code[$i] . ' (100%)</span></span>' . "\n"; } else { $s .= '<span class="verrouille"><span class="invalide">' . $t_item_code[$i] . ' (' . referentiel_pourcentage($t_certif_item_valeur[$i], $t_item_empreinte[$i]) . '%)</span></span>' . "\n"; } } } else { $s .= '<span class="nondefini"><i>' . $t_item_code[$i] . '</i></span>' . "\n"; } } $s .= '</td></tr></table>' . "\n"; } } } } return $s; }
function referentiel_print_liste_repartitions($referentiel_instance) { // Affiche les repartitions d'affectations de competences de cette instance de referentiel global $DB; static $istutor = false; static $isteacher = false; static $isadmin = false; static $iseditor = false; static $referentiel_id = NULL; if (!empty($referentiel_instance)) { $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 :: print_lib_repartition.php :: 166 :: You cannot call this script in that way'); } // echo "<br />DEBUG :: 220 ::<br />REFERENTIEL_Instance : $referentiel_instance->id <br /> Course_id : $referentiel_instance->course\n"; $context = context_module::instance($cm->id); $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; /* // DEBUG if ($isadmin) echo "Admin "; if ($isteacher) echo "Teacher "; if ($istutor) echo "Tutor "; if ($isstudent) echo "Student "; */ if (!empty($referentiel_id)) { $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()); } } $records_teacher = referentiel_get_teachers_course($course->id); // codes item $t_codes_competence = explode('/', referentiel_purge_dernier_separateur($referentiel_referentiel->liste_codes_competence, '/')); echo referentiel_print_repartition($referentiel_instance->id, $course->id, $context, $t_codes_competence, $records_teacher); } } }
function referentiel_digest_competences_certificat($liste, $referentiel_referentiel_id, $invalide = true) { // affiche les compétences en mode texte $separateur1 = '/'; $separateur2 = ':'; $liste_empreintes = referentiel_get_liste_empreintes_competence($referentiel_referentiel_id); // Affiche les codes competences en tenant compte de l'empreinte // si detail = true les compétences non validees sont aussi affichees $t_empreinte = explode($separateur1, $liste_empreintes); $yes = get_string('yes'); $no = get_string('no'); $s = get_string('competences', 'referentiel') . "<br />\n"; $tc = array(); $liste = referentiel_purge_dernier_separateur($liste, $separateur1); if (!empty($liste) && $separateur1 != "" && $separateur2 != "") { $tc = explode($separateur1, $liste); // DEBUG : cron_lib.php : // echo "<br />CODE <br />\n"; // print_r($tc); $i = 0; while ($i < count($tc)) { // CODE1:N1 // DEBUG : cron_lib.php : // echo "<br />".$tc[$i]." <br />\n"; // exit; if ($tc[$i] != '') { $tcc = explode($separateur2, $tc[$i]); // echo "<br />".$tc[$i]." <br />\n"; // print_r($tcc); // exit; if (isset($tcc[1]) && $tcc[1] >= $t_empreinte[$i]) { $s .= $tcc[0] . ' '; if ($invalide == true) { $s .= ' ' . $tcc[1] . ' [/' . $t_empreinte[$i] . '] : '; $s .= $yes . ' ; '; } } elseif ($invalide == true) { $s .= $tcc[0] . ' '; $s .= ' ' . $tcc[1] . ' [/' . $t_empreinte[$i] . '] : '; $s .= $no . ' ; '; } $s .= "<br /> \n"; } $i++; } } return $s; }
function referentiel_affiche_liste_codes_empreintes_competence_old($separateur, $listecodes, $listeempreintes, $listepoids = '') { // affiche des codes, poids et empreintes dans un tableau // supprime separateur $s = ""; $c = ""; $e = ""; $p = ""; $okpoids = false; $listecodes = referentiel_purge_dernier_separateur($listecodes, $separateur); $maxcol = 30; // Modif JF 2012/01/30 // Adapter le nombre de colonnes � la taille des codes � afficher $lca = strlen($listecodes); // echo "<br />Longueur : $lca\n"; if ($lca > 600) { $maxcol = round($lca / 60) + 1; } else { if ($lca > 400) { $maxcol = round($lca / 40) + 1; } else { if ($lca > 230) { $maxcol = round($lca / 12) + 1; } else { if ($lca > 150) { $maxcol = round($lca / 8) + 1; } else { $maxcol = 30; } } } } // echo "<br />NB COLONNES : $maxcol<br /> \n"; // exit; $listeempreintes = referentiel_purge_dernier_separateur($listeempreintes, $separateur); if (isset($listepoids) && $listepoids != '') { $tpoids = explode($separateur, $listepoids); $okpoids = true; } $tcode = explode($separateur, $listecodes); $tempreinte = explode($separateur, $listeempreintes); if ($tcode && count($tcode) > 0) { $s .= "<table class='referentiel'><tr>"; $i = 0; $col = 0; while ($i < count($tcode)) { if ($col < $maxcol) { $c .= "<td>" . $tcode[$i] . "</td>"; if ($okpoids) { $p .= "<td class='poids'>" . $tpoids[$i] . "</td>"; } $e .= "<td class='empreinte'><i>" . $tempreinte[$i] . "</i></td>"; } else { $c .= "</tr>\n<tr>"; if ($okpoids) { $p .= "</tr>\n<tr>"; } $e .= "</tr>\n<tr>"; $col = -1; } $col++; $i++; } if ($i > $maxcol) { while ($col < $maxcol) { $c .= "<td> </td>"; if ($okpoids) { $p .= "<td class='poids'> </td>"; } $e .= "<td class='empreinte'> </td>"; $col++; } } if ($okpoids) { $s .= $c . "</tr><tr>" . $p . "</tr><tr>" . $e . "</tr>\n"; } else { $s .= $c . "</tr><tr>" . $e . "</tr>\n"; } $s .= "</table>\n"; } return $s; }