/** * Given an object containing all the necessary referentiel, * (defined by the form in add.html) this function * will create a new instance and return the id number * of the new instance. * * @param object $instance An object from the form in add.html * @return int The id of the newly inserted referentiel record **/ function referentiel_add_referentiel_domaines($form) { global $USER; global $DB; // La premiere creation permet aussi la saisie d'un domaine, d'une compétence et d'un item $referentiel_referentiel_id = 0; // temp added for debugging // echo "<br />DEBUG :: lib.php :: 3364:: ADD INSTANCE CALLED"; // DEBUG // print_object($form); // echo "<br />"; // saisie d'un referentiel if (isset($form->name) && $form->name != "" && isset($form->code_referentiel) && $form->code_referentiel != "") { // creer $referentiel_referentiel = new object(); $referentiel_referentiel->name = $form->name; $referentiel_referentiel->code_referentiel = $form->code_referentiel; $referentiel_referentiel->description_referentiel = $form->description_referentiel; $referentiel_referentiel->url_referentiel = $form->url_referentiel; $referentiel_referentiel->seuil_certificat = $form->seuil_certificat; $referentiel_referentiel->nb_domaines = $form->nb_domaines; $referentiel_referentiel->liste_codes_competence = $form->liste_codes_competence; $referentiel_referentiel->liste_empreintes_competence = $form->liste_empreintes_competence; // Modif JF 2009/10/16 if (isset($form->liste_poids_competence)) { $referentiel_referentiel->liste_poids_competence = $form->liste_poids_competence; } else { $referentiel_referentiel->liste_poids_competence = ''; } $referentiel_referentiel->timemodified = time(); if (isset($form->local) && $form->local != 0 && isset($form->course) && $form->course != 0) { $referentiel_referentiel->local = $form->course; } else { $referentiel_referentiel->local = 0; } $referentiel_referentiel->logo_referentiel = $form->logo_referentiel; // Modif JF 2012/06/02 if (isset($form->label_domaine)) { $referentiel_referentiel->label_domaine = $form->label_domaine; } else { $referentiel_referentiel->label_domaine = ''; } if (isset($form->label_competence)) { $referentiel_referentiel->label_competence = $form->label_competence; } else { $referentiel_referentiel->label_competence = ''; } if (isset($form->label_item)) { $referentiel_referentiel->label_item = $form->label_item; } else { $referentiel_referentiel->label_item = ''; } // traitements speciaux if (isset($form->mail_auteur_referentiel) && $form->mail_auteur_referentiel != '') { $referentiel_referentiel->mail_auteur_referentiel = $form->mail_auteur_referentiel; } else { // Modif JF 2009/10/16 if (isset($USER->email) && $USER->email != '') { $referentiel_referentiel->mail_auteur_referentiel = $USER->email; } else { $referentiel_referentiel->mail_auteur_referentiel = ''; } } // Modif JF 2009/10/16 if (isset($form->old_pass_referentiel)) { // mot de passe stocke au format Crypte MD5() $referentiel_referentiel->old_pass_referentiel = $form->old_pass_referentiel; } else { $referentiel_referentiel->old_pass_referentiel = ''; } if (isset($form->pass_referentiel) && trim($form->pass_referentiel) != '') { // mot de passe changé // MD5 $referentiel_referentiel->pass_referentiel = md5($form->pass_referentiel); } // DEBUG // echo "<br />DEBUG :: lib.php :: 221"; // print_object($referentiel_referentiel); // echo "<br />"; if ($referentiel_referentiel_id = $DB->insert_record("referentiel_referentiel", $referentiel_referentiel)) { // echo "REFERENTIEL ID : $referentiel_referentiel_id<br />"; /* ***************** // MODIF JF 2012/03/06 // saisie de l'instance // cela n'est pas necessaire à ce niveau // on le fait dans les scripts appelants if (!empty($form->instance)){ referentiel_associe_referentiel_instance($form->instance, $referentiel_referentiel_id); } else{ $referentiel = new object(); $referentiel->name=($form->name_instance); $referentiel->description_instance=($form->description_instance); $referentiel->label_domaine=($form->label_domaine); $referentiel->label_competence=($form->label_competence); $referentiel->label_item=($form->label_item); $referentiel->date_instance = time(); $referentiel->course=$form->course; $referentiel->ref_referentiel=$referentiel_referentiel_id; // DEBUG // echo "<br />DEBUG :: lib.php :: 240"; // print_object($referentiel); // echo "<br />"; $referentiel_id = $DB->insert_record("referentiel", $referentiel); } ******************************************* */ // saisie du domaine $domaine = new object(); $domaine->ref_referentiel = $referentiel_referentiel_id; if (empty($form->code_domaine)) { $form->code_domaine = get_string('c_domaine', 'referentiel') . '.' . $form->num_domaine; } $domaine->code_domaine = $form->code_domaine; if (empty($form->description_domaine)) { $form->description_domaine = get_string('a_completer', 'referentiel'); } $domaine->description_domaine = $form->description_domaine; $domaine->num_domaine = $form->num_domaine; $domaine->nb_competences = $form->nb_competences; // MODIF JF 2012/02/20 if (isset($form->type_domaine)) { $domaine->type_domaine = $form->type_domaine; } else { $domaine->type_domaine = 0; } if (isset($form->seuil_domaine)) { $domaine->seuil_domaine = $form->seuil_domaine; } else { $domaine->seuil_domaine = 0.0; } // MODIF JF 2012/03/26 if (isset($form->minima_domaine)) { $domaine->minima_domaine = $form->minima_domaine; } else { $domaine->minima_domaine = 0; } // DEBUG // echo "<br />DEBUG :: lib.php :: 253"; // print_object($domaine); // echo "<br />"; $domaine_id = $DB->insert_record("referentiel_domaine", $domaine); // echo "DOMAINE ID / $domaine_id<br />"; if ($domaine_id > 0) { $competence = new object(); $competence->ref_domaine = $domaine_id; if (empty($form->code_competence)) { $form->code_competence = get_string('c_competence', 'referentiel') . '.' . $form->num_domaine . '.' . $form->num_competence; } $competence->code_competence = $form->code_competence; if (empty($form->description_competence)) { $form->description_competence = get_string('a_completer', 'referentiel'); } $competence->description_competence = $form->description_competence; $competence->num_competence = $form->num_competence; $competence->nb_item_competences = $form->nb_item_competences; // MODIF JF 2012/02/20 if (isset($form->type_competence)) { $competence->type_competence = $form->type_competence; } else { $competence->type_competence = 0; } if (isset($form->seuil_competence)) { $competence->seuil_competence = $form->seuil_competence; } else { $competence->seuil_competence = 0.0; } // MODIF JF 2012/03/26 if (isset($form->minima_competence)) { $competence->minima_competence = $form->minima_competence; } else { $competence->minima_competence = 0; } // DEBUG // echo "<br />DEBUG :: lib.php :: 268"; // print_object($competence); // echo "<br />"; $competence_id = $DB->insert_record("referentiel_competence", $competence); // echo "COMPETENCE ID / $competence_id<br />"; if ($competence_id > 0) { $item = new object(); $item->ref_referentiel = $referentiel_referentiel_id; $item->ref_competence = $competence_id; if (empty($form->code_item)) { $form->code_item = get_string('c_item', 'referentiel') . '.' . $form->num_domaine . '.' . $form->num_competence . '.' . $form->num_item; } $item->code_item = $form->code_item; if (empty($form->description_item)) { $form->description_item = get_string('a_completer', 'referentiel'); } $item->description_item = $form->description_item; $item->type_item = $form->type_item; $item->poids_item = $form->poids_item; $item->empreinte_item = $form->empreinte_item; $item->num_item = $form->num_item; // DEBUG // echo "<br />DEBUG :: lib.php :: 283"; // print_object($item); // echo "<br />"; $item_id = $DB->insert_record("referentiel_item_competence", $item); // echo "ITEM ID / $item_id<br />"; } } } if ($referentiel_referentiel_id > 0) { // MODIF JF 2009/10/16 $liste_codes_competence = referentiel_new_liste_codes_competence($referentiel_referentiel_id); referentiel_set_liste_codes_competence($referentiel_referentiel_id, $liste_codes_competence); $liste_empreintes_competence = referentiel_new_liste_empreintes_competence($referentiel_referentiel_id); referentiel_set_liste_empreintes_competence($referentiel_referentiel_id, $liste_empreintes_competence); $liste_poids_competence = referentiel_new_liste_poids_competence($referentiel_referentiel_id); referentiel_set_liste_poids_competence($referentiel_referentiel_id, $liste_poids_competence); // MODIF JF 2012/03/04 referentiel_recalcule_cle_referentiel($referentiel_referentiel_id); // MODIF JF 2012/02/25 referentiel_initialise_protocole_referentiel($referentiel_referentiel_id); } # May have to add extra stuff in here # } else { return get_string('erreur_creation', 'referentiel'); // "Name and code mandatory"; } return $referentiel_referentiel_id; }
function referentiel_affiche_protocole($refrefid, $instanceid = 0) { // tables de protocoles (seuils, item obligatoires, etc. // recupere les labels des domaine, compoetence, item if (!empty($instanceid)) { $labels = referentiel_get_labels_instance($instanceid); } else { $labels = referentiel_get_labels_occurrence($refrefid); } 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_commentaire; global $protocol_timemodified; global $protocol_actif; global $OK_REFERENTIEL_PROTOCOLE; // les données du protocole sont disponibles global $OK_REFERENTIEL_DATA; // les données du certificat sont disponibles // REFERENTIEL global $max_minimum_referentiel; global $max_seuil_referentiel; // 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; // Ajout pour le protocole des minimas global $t_competence_domaine; // index du domaine assicie a une competence global $t_nb_competence_domaine; // nombre de competences par domaine global $t_nb_item_competence; // nombre d'item par competences global $t_competence_minima; // INUTILE ? global $t_domaine_minima; // INUTILE ? $s = ''; $separateur1 = '/'; $separateur2 = ':'; 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) { if (!empty($protocol_t_items_oblig) && !empty($protocol_t_competences_oblig) && !empty($protocol_t_domaines_oblig) && !empty($protocol_t_competences_seuil) && !empty($protocol_t_domaines_seuil)) { if (empty($protocol_commentaire)) { $protocol_commentaire = get_string('aide_protocole_completer', 'referentiel'); } // Mise en page du tableau $nbmaxlignes = 20; if ($max_minimum_referentiel >= 60) { $nbmaxlignes = 30; } $nlig = $max_minimum_referentiel; $maxlig = min($nbmaxlignes, round($nlig / 2, 0)); $ncol = round($nlig / $maxlig, 0); $nligc = count($protocol_t_competences_oblig); $ncolc = round($nligc / $maxlig, 0); $ncol += $ncolc; $nligd = count($protocol_t_domaines_oblig); $ncold = round($nligd / $maxlig, 0); $ncol += $ncold; $s .= '<div align="center">' . "\n"; if ($protocol_actif) { if ($protocol_timemodified) { $s .= '<span class="surligne">' . get_string('protocole_active', 'referentiel') . ' ' . get_string('depuis', 'referentiel', userdate($protocol_timemodified)) . '</span>' . "\n"; } else { $s .= '<span class="surligne">' . get_string('protocole_active', 'referentiel') . '</span>' . "\n"; } } else { if ($protocol_timemodified) { $s .= '<span class="surligne">' . get_string('protocole_desactive', 'referentiel') . ' ' . get_string('depuis', 'referentiel', userdate($protocol_timemodified)) . '</span>' . "\n"; } else { $s .= '<span class="surligne">' . get_string('protocole_desactive', 'referentiel') . '</span>' . "\n"; } } $s .= '<table class="centree">' . "\n"; $s .= '<tr valign="top"> <th>' . get_string('minima_certificat', 'referentiel') . '</th></tr>' . "\n"; $s .= '<tr valign="top"> <td> <b>' . $protocol_minima_referentiel . '</b> / <i>' . $max_minimum_referentiel . '</i> (' . get_string('aide_minima', 'referentiel') . ')'; $s .= '</td></tr>'; $s .= '<tr valign="top"> <th>' . get_string('seuil_certificat', 'referentiel') . '</th> </tr> <tr valign="top"> <td> <b>' . $protocol_seuil_referentiel . '</b> / <i>' . $max_seuil_referentiel . '</i> (' . get_string('aide_seuil', 'referentiel') . ') </td></tr> <tr valign="top"> <th colspan="' . $ncol . '">' . get_string('commentaire', 'referentiel') . '</th></tr>' . "\n"; $s .= '<tr valign="top"> <td colspan="' . $ncol . '"> ' . nl2br(stripslashes($protocol_commentaire)) . "\n"; $s .= '</td></tr>' . "\n"; $s .= '</table>' . "\n"; // ITEMS $label_i = $labels->item; $expression = str_replace(get_string('itemo', 'referentiel'), $label_i, get_string('item_obligatoires', 'referentiel')); $s .= '<table>' . "\n"; $s .= '<tr valign="top"><td>' . "\n"; $s .= '<table class="referentiel"> <tr valign="top"> <th colspan="4" class="item">' . $expression . '</th> </tr>' . "\n"; $i = 0; $k = 0; $n = count($protocol_t_items_oblig); while ($i < $n) { $t_oblig = explode($separateur2, $protocol_t_items_oblig[$i]); if (!empty($t_oblig[1])) { $s .= '<tr valign="top"><td>' . $t_oblig[0] . '</td><td><i>' . get_string('yes') . '</i></td>' . "\n"; } else { $s .= '<tr valign="top"><td>' . $t_oblig[0] . '</td><td><i>' . get_string('no') . '</i></td>' . "\n"; } $s .= '<td><i>' . $t_item_poids[$i] . '</i></td><td>' . $t_item_empreinte[$i] . '</td></tr>' . "\n"; $i++; $k++; if ($k == $maxlig && $i < $n) { $s .= '</table></td><td>' . "\n"; $s .= '<table class="referentiel"> <tr valign="top"> <th colspan="4" class="item">' . $expression . '</th> </tr>' . "\n"; $k = 0; } } $s .= '</table></td><td>' . "\n"; // COMPETENCES $label_c = $labels->competence; $expression = str_replace(get_string('compo', 'referentiel'), $label_c, get_string('competences_oblig_seuil', 'referentiel')); $comp_th = str_replace('[', '<th colspan="2">', $expression); $comp_th = str_replace(']', '</th>', $comp_th); $s .= '<table class="activite"> <tr>' . $comp_th . '</tr>' . "\n"; $i = 0; $k = 0; $n = count($protocol_t_competences_oblig); while ($i < $n) { $t_oblig = explode($separateur2, $protocol_t_competences_oblig[$i]); $t_minima = explode($separateur2, $protocol_t_competences_minima[$i]); $t_seuil = explode($separateur2, $protocol_t_competences_seuil[$i]); $s .= '<tr valign="top"><td>' . $t_oblig[0] . '</td><td>'; if (!empty($t_oblig[1])) { $s .= '<i>' . get_string('yes') . '</i>'; } else { $s .= '<i>' . get_string('no') . '</i>'; } $s .= '</td>'; if ($t_minima[1] > 0) { $s .= '<td class="blue">'; } else { $s .= '<td>'; } $s .= $t_minima[1] . "\n"; $s .= '</td><td><i>' . $t_nb_item_competence[$i] . '</i>'; $s .= '</td>'; if ($t_seuil[1] > 0) { $s .= '<td class="blue">'; } else { $s .= '<td>'; } $s .= $t_seuil[1] . "\n"; $s .= '</td><td><i>' . $t_competence_coeff[$i] . '</i>'; $s .= '</td></tr>' . "\n"; $i++; $k++; if ($k == $maxlig && $i < $n) { $s .= '</table></td><td>' . "\n"; $s .= '<table class="activite"> <tr valign="top"> <tr>' . $comp_th . '</tr> </tr>' . "\n"; $k = 0; } } $s .= '</table></td><td>' . "\n"; // DOMAINES $label_d = $labels->domaine; $expression = str_replace(get_string('domo', 'referentiel'), $label_d, get_string('domaines_oblig_seuil', 'referentiel')); $dom_th = str_replace('[', '<th colspan="2">', $expression); $dom_th = str_replace(']', '</th>', $dom_th); $s .= '<table class="domaine"> <tr>' . $dom_th . '</tr>' . "\n"; $i = 0; $k = 0; $n = count($protocol_t_domaines_oblig); while ($i < $n) { $t_oblig = explode($separateur2, $protocol_t_domaines_oblig[$i]); $t_minima = explode($separateur2, $protocol_t_domaines_minima[$i]); $t_seuil = explode($separateur2, $protocol_t_domaines_seuil[$i]); $s .= '<tr valign="top"><td>' . $t_oblig[0] . '</td><td>'; if (!empty($t_oblig[1])) { $s .= '<i>' . get_string('yes') . '</i>'; } else { $s .= '<i>' . get_string('no') . '</i>'; } $s .= '</td>'; if ($t_minima[1] > 0) { $s .= '<td class="green">'; } else { $s .= '<td>'; } $s .= $t_minima[1] . "\n"; $s .= '</td><td><i>' . $t_nb_competence_domaine[$i] . '</i>'; $s .= '</td>'; if ($t_seuil[1] > 0) { $s .= '<td class="green">'; } else { $s .= '<td>'; } $s .= $t_seuil[1] . "\n"; $s .= '</td><td><i>' . $t_domaine_coeff[$i] . '</i>'; $s .= '</td></tr>' . "\n"; $i++; $k++; if ($k == $maxlig && $i < $n) { $s .= '</table></td><td>' . "\n"; $s .= '<table class="domaine"> <tr valign="top"> <tr>' . $dom_th . '</tr>' . "\n"; $k = 0; } } $s .= '</table> </td></tr>' . "\n"; $s .= '</table>' . "\n"; $s .= '</div>' . "\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; }