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 -&gt;'.$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.'&amp;ltdata='.$ltdata.'&amp;lmoyennes='.$lmoyennes.'&amp;lcode='.$liste_codes.'&amp;lempreinte='.$liste_empreintes.'&amp;lpoids='.$liste_poids.'&amp;affcomplet='.$affichage_complet.'&amp;titre='.$titre.'&amp;page='.$num_page.'&amp;npages='.$npages);
                echo '<div align="center"><img src="' . $CFG->wwwroot . '/mod/referentiel/graph_certificats.php?d=' . $referentiel_instance->id . '&amp;ltdata=' . $ltdata . '&amp;lmoyennes=' . $lmoyennes . '&amp;lcode=' . $liste_codes . '&amp;lempreinte=' . $liste_empreintes . '&amp;lpoids=' . $liste_poids . '&amp;affcomplet=' . $affichage_complet . '&amp;titre=' . $titre . '&amp;page=' . $num_page . '&amp;npages=' . $npages . '" border="0" title="' . get_string('statcertif', 'referentiel') . '" /></div>' . "\n";
                echo '<br />' . "\n";
            }
        }
    }
}
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 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}&amp;mode=editreferentiel&amp;sesskey=" . sesskey());
                } else {
                    print_error(get_string('creer_referentiel', 'referentiel'), "../../course/view.php?id={$course->id}&amp;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">&nbsp;</span>';
                    $j++;
                }
            }
            $s .= "\n" . '</p>' . "\n";
        }
    }
    return $s;
}
Esempio n. 8
0
 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 "";
}
Esempio n. 11
0
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();
}
Esempio n. 12
0
 /**
  * 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), '|');
 }
Esempio n. 13
0
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">&nbsp;</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}&amp;mode=editreferentiel&amp;sesskey=" . sesskey());
                } else {
                    print_error(get_string('creer_referentiel', 'referentiel'), "../../course/view.php?id={$course->id}&amp;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);
        }
    }
}
Esempio n. 15
0
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>&nbsp;</td>";
                if ($okpoids) {
                    $p .= "<td class='poids'>&nbsp;</td>";
                }
                $e .= "<td class='empreinte'>&nbsp;</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;
}