function reponse_item() { global $page; global $item; global $message; $page['message'] = ""; $page['gabarit'] = "administration"; if (isset($_SESSION['role_user']) && droit_acces($item['reponse_item'], $_SESSION['role_user'])) { $page['vue'] = "items/reponse_item.vue.php"; $page['colonne'] = "items/sidebar_item.vue.php"; $page['items'] = liste_item(); if (isset($_GET['id'])) { $id = $_GET['id']; } if (isset($_POST['id_item'])) { $id = $_POST['id_item']; } if (is_proprietaire($id) || is_admin($_SESSION['id_user'])) { $page['dimension'] = liste_dimension(); $page['item'] = get_item($id); $page['item'] = $page['item'][0]; $page['reponses'] = get_reponse_item($id); $page['reponses_score'] = get_reponse_score_item($id); $page['0reponses'] = get_0reponse_item($id); $page['reponse_order'] = array(); if (isset($page['reponses'][0]['nom_reponse'])) { $prec = $page['reponses'][0]['nom_reponse']; $page['reponse_order'][0]['nom_reponse'] = $prec; $i = 0; $nom_rep = array(); $nom_rep[] = $prec; foreach ($page['reponses'] as $key => $rep) { if ($prec != $rep['nom_reponse']) { $i++; $prec = $rep['nom_reponse']; $page['reponse_order'][$i]['nom_reponse'] = $prec; $nom_rep[] = $prec; } $page['reponse_order'][$i]['reponses'][] = $rep; } if (has_resulat_item($id) || on_test($id) || $page['item']['id_etat'] > 2) { $page['message'] = $message['item_edition_disabled']; } } if (isset($_POST['crea_score'])) { if (is_current_version_item($_POST['id_item'], $_POST['revision'])) { if (!has_resulat_item($_POST['id_item']) && !on_test($_POST['id_item']) && $page['item']['id_etat'] <= 2) { update_revision_item($_POST['id_item']); delete_dim_reponse_item($_POST['id_item']); $i = 0; $post = $_POST[$_POST['id_item']]; foreach ($_POST['dim'] as $val) { enregistrement_non_reponse_item($_POST['id_item'], $_POST['dim'][$i], $post['score_0_rep'][$i]); $i++; } if (isset($_POST['radio_elem'])) { enregistrement_nb_rep_max($_POST['id_item'], 1); $o = 0; foreach ($page['reponses'] as $rep) { $post = $_POST[$o]; $i = 0; enregistrer_position_reponse($rep['id_reponse'], $post['position_rep']); foreach ($post['dim'] as $val) { enregistement_dim_rep($_POST['id_item'], $rep['id_reponse'], $post['dim'][$i], $post['score_rep'][$i], $post['score_non_rep'][$i]); $i++; } $o++; } } elseif (isset($_POST['input_text'])) { //enregistrement_nb_rep_max($_POST['id_item'],1); $o = 0; $reponses = explode(';', $_POST['combinaison']); delete_reponse_item($_POST['id_item']); foreach ($reponses as $rep) { $id_rep = enregistrement_reponse_item($_POST['name_item'], $rep, $_POST['id_item']); $post = $_POST[$_POST['id_item']]; $i = 0; foreach ($post['dim'] as $val) { enregistement_dim_rep($_POST['id_item'], $id_rep, $post['dim'][$i], $post['score_rep'][$i], $post['score_non_rep'][$i]); $i++; } $o++; } if ($page['message'] == "") { header("Location: index.php?controleur=item&tache=reponse_item&id=" . $_POST['id_item']); } } elseif (isset($_POST['type_check'])) { $o = 0; foreach ($page['reponses'] as $rep) { $post = $_POST[$o]; enregistrer_position_reponse($rep['id_reponse'], $post['position_rep']); $o++; } if (isset($_POST['nb_rep_max']) && $_POST['nb_rep_max'] >= 2) { enregistrement_nb_rep_max($_POST['id_item'], $_POST['nb_rep_max']); } else { $page['message'] = $message['erreur_nb_max']; } if ($_POST['type_check'] == "combi") { $o = 0; if (isset($_POST['nb_rep_max']) && $_POST['nb_rep_max'] >= 2) { enregistrement_nb_rep_max($_POST['id_item'], $_POST['nb_rep_max']); foreach ($nom_rep as $nom) { $post = $_POST[$o]; $id_combi = enregistrement_combinaison($_POST['id_item']); if (sizeof($_POST[$nom . '_combinaison']) >= 2) { foreach ($_POST[$nom . '_combinaison'] as $combi) { enregistrement_combinaison_reponse($id_combi, $combi); } $i = 0; foreach ($post['dim'] as $val) { if (isset($post['dim'][$i]) && isset($post['score_demi_rep_combi'][$i]) && isset($post['score_non_rep_combi'][$i]) && isset($post['score_rep_combi'][$i])) { enregistement_dim_rep_combi($_POST['id_item'], $id_combi, $post['dim'][$i], $post['score_rep_combi'][$i], $post['score_non_rep_combi'][$i], $post['score_demi_rep_combi'][$i]); } $i++; } } else { $page['message'] = $message['erreur_combi']; } } } if ($page['message'] == "") { header("Location: index.php?controleur=item&tache=reponse_item&id=" . $_POST['id_item']); } } elseif ($_POST['type_check'] == "simple") { if (isset($_POST['nb_rep_max']) && $_POST['nb_rep_max'] >= 1) { $o = 0; enregistrement_nb_rep_max($_POST['id_item'], $_POST['nb_rep_max']); for ($o = 0; $o < sizeof($page['reponses']); $o++) { $post = $_POST[$o]; $i = 0; foreach ($post['dim'] as $val) { if (isset($post['dim'][$i]) && isset($post['score_rep'][$i]) && isset($post['score_non_rep'][$i])) { enregistement_dim_rep($_POST['id_item'], $page['reponses'][$o]['id_reponse'], $post['dim'][$i], $post['score_rep'][$i], $post['score_non_rep'][$i]); } $i++; } } } else { $page['message'] = $message['erreur_nb_max']; } if ($page['message'] == "") { header("Location: index.php?controleur=item&tache=reponse_item&id=" . $_POST['id_item']); } } } elseif (isset($_POST['type_trou']) && $_POST['type_trou'] == "simple") { $o = 0; foreach ($_POST['combinaisons'] as $rep) { $post = $_POST[$_POST['id_item']]; $i = 0; foreach ($post['dims'] as $val) { enregistement_dim_rep($_POST['id_item'], $rep, $post['dims'][$i], $post['score_rep'][$i], $post['score_non_rep'][$i]); $i++; } $o++; } if ($page['message'] == "") { header("Location: index.php?controleur=item&tache=reponse_item&id=" . $_POST['id_item']); } } elseif (isset($_POST['type_trou']) && $_POST['type_trou'] == "combi") { $o = 0; $post = $_POST[$_POST['id_item']]; for ($i = 1; $i <= $_POST['nb_sequence']; $i++) { $id_combi = enregistrement_combinaison($_POST['id_item'], 1); foreach ($_POST['sequence_' . $i] as $combi) { enregistrement_combinaison_reponse($id_combi, $combi); } $x = 0; foreach ($post['dim'] as $val) { enregistement_dim_rep_combi($_POST['id_item'], $id_combi, $post['dim'][$x], $post['score_rep_combi'][$x], $post['score_non_rep_combi'][$x], 0); $x++; } } if ($page['message'] == "") { header("Location: index.php?controleur=item&tache=reponse_item&id=" . $_POST['id_item']); } } } else { $page['message'] = $message['item_edition_disabled']; } } else { $page['message'] = $message['outdated_item']; } } } else { $page['message'] = $message['non_proprietaire']; } } else { $page['vue'] = "erreur_droit.vue.php"; } }
function creer_resultat() { global $page; global $resultat; $page['gabarit'] = "administration"; if (isset($_SESSION['role_user']) && droit_acces($resultat['creer_resultat'], $_SESSION['role_user'])) { $page['vue'] = "resultats/resultat.vue.php"; $page['colonne'] = "resultats/sidebar_resultat.vue.php"; $page['items'] = liste_item(); $page['nid'] = get_nid($_GET['id']); $page['nid'] = $page['nid'][0]['nid_candidat']; $page['tests'] = liste_tests(); if (isset($_POST['test'])) { $page['test'] = get_test($_POST['test']); $page['test'] = $page['test'][0]; $page['test']['contenu_test'] = get_contenu_test_actif($_POST['test']); $i = 0; foreach ($page['test']['contenu_test'] as $key => $content) { if ($content['type'] == 'item') { $item = get_item($content['id_element']); $page['test']['contenu_test'][$i] = $item[0]; $page['test']['contenu_test'][$i]['reponse'] = get_reponse_item($content['id_element']); $i++; } else { //$section=get_section($content['id_element']); //$page['test']['contenu_test'][$key]=$section[0]; //$page['test']['contenu_test'][$i]['type']='section'; $items = get_item_by_section($content['id_element']); foreach ($items as $it) { $page['test']['contenu_test'][$i] = $it; $page['test']['contenu_test'][$i]['reponse'] = get_reponse_item($it['id_item']); $i++; } } } if (isset($_POST['result'])) { $current_revision = 0; $size = sizeof($_POST["id_item_revision"]); foreach ($_POST["id_item_revision"] as $item_rev) { $tab = explode('|', $item_rev); $item = $tab[0]; $revision = $tab[1]; if (is_current_version_item($item, $revision)) { $current_revision++; } } if ($current_revision == $size) { foreach ($_POST["id_item_revision"] as $item_rev) { $tab = explode('|', $item_rev); $item = $tab[0]; $revision = $tab[1]; if (isset($_POST[$item])) { //recuperer dimension 0 reponse $post = $_POST[$item]; $zero_rep = get_0reponse_item($item); $reponse = get_reponse_item($item); if (strpos($reponse[0]['nom_reponse'], 'textarea') !== false) { //enregister textarea sans score enregistrement_reponse($post[$reponse[0]['nom_reponse']], $item, $_POST['test'], $_POST['nid'], $reponse[0]['nom_reponse']); } elseif (isset($post[$reponse[0]['nom_reponse']])) { //voir si combinaison $combi = get_nb_combinaison($item); $nom_reps = get_nom_rep($item); foreach ($nom_reps as $nr) { if (is_array($post[$nr['nom_reponse']])) { foreach ($post[$nr['nom_reponse']] as $rc) { $pos = get_position_rep($rc, $item, $nr['nom_reponse']); enregistrement_reponse($rc, $item, $_POST['test'], $_POST['nid'], $nr['nom_reponse'], $pos); } } else { $pos = get_position_rep($post[$nr['nom_reponse']], $item, $nr['nom_reponse']); enregistrement_reponse($post[$nr['nom_reponse']], $item, $_POST['test'], $_POST['nid'], $nr['nom_reponse'], $pos); } } if (strpos($reponse[0]['nom_reponse'], 'trou') !== false) { //recupere si sequence $nb_sequence = get_nb_sequence($item); if ($nb_sequence != 0) { //j'ai 1 ou +ieurs sequences //si 1 sequence: if ($nb_sequence == 1) { $id_reponses = get_id_reponse_from_combi($item); $combi = get_combi($item); $combi = $combi[0]['id_combinaison']; $nom_reps = get_nom_rep($item); $rep_item = array(); $rep_candidat = array(); foreach ($id_reponses as $rep) { $rep_item[] = $rep['id_reponse']; } //recuperer id_reponse avec nom valeur id_item foreach ($nom_reps as $n) { if (isset($_POST[$n])) { foreach ($_POST[$n] as $r) { $rep_cand = get_reponse_item_val($item, $n, $r); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } } //check nb difference entre 2 tableaux $dif = array_diff($rep_item, $rep_candidat); //recuperer dimension combinaison $dim = get_dim_from_combi($combi); //si 0 => bonne reponse if (sizeof($dif) == 0) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_rep']); } } else { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_non_rep']); } } } else { //si + sequences $nom_reps = get_nom_rep($item); $rep_candidat = array(); //recuperer id_reponse avec nom valeur id_item foreach ($nom_reps as $n) { if (isset($_POST[$n])) { foreach ($_POST[$n] as $r) { $rep_cand = get_reponse_item_val($item, $n, $r); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } } $combi = get_combi($item); $sequence = array(); foreach ($combi as $c) { $reps = get_id_rep_from_sequence($c['id_combinaison']); foreach ($r as $r) { $array_rep[] = $r['id_reponse']; } $sequence[] = $array_rep; } $sequenceok = false; foreach ($sequence as $s) { $dif = array_diff($s, $rep_candidat); if (sizeof($dif) == 0) { $sequenceok = true; } } $dim = get_dim_from_combi($combi[0]['id_combinaison']); if ($sequenceok == true) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_rep']); } } else { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_non_rep']); } } } } else { //point par reponse $nom_reps = get_nom_rep($item); $rep_item = array(); $rep_candidat = array(); $id_reponses = get_id_reponse_from_combi($item); foreach ($id_reponses as $rep) { $rep_item[] = $rep['id_reponse']; } //recuperer id_reponse avec nom valeur id_item foreach ($nom_reps as $n) { if (isset($post[$n['nom_reponse']])) { if (is_array($post[$n['nom_reponse']])) { foreach ($post[$n['nom_reponse']] as $r) { $rep_cand = get_reponse_item_val($item, $n['nom_reponse'], $r); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } else { $rep_cand = get_reponse_item_val($item, $n['nom_reponse'], $post[$n['nom_reponse']]); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } } foreach ($rep_item as $ri) { //recuperer dim avec id_reponse $dim = get_dim_from_reponse($item, $ri); if (in_array($ri, $rep_candidat)) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_rep']); } //bonne reponse } else { //mauvaise_reponse foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_non_rep']); } } } } } else { //teste si combinaison reponse ou reponse simple $nb_combi = get_nb_combinaison($item); if ($nb_combi == 1) { //checkbox 1 combi $id_reponses = get_id_reponse_from_combi($item); $combi = get_combi($item); $combi = $combi[0]['id_combinaison']; $nom_reps = get_nom_rep($item); $rep_item = array(); $rep_candidat = array(); foreach ($id_reponses as $rep) { $rep_item[] = $rep['id_reponse']; } //recuperer id_reponse avec nom valeur id_item foreach ($nom_reps as $n) { if (isset($_POST[$n['nom_reponse']])) { foreach ($_POST[$n] as $r) { $rep_cand = get_reponse_item_val($item, $n, $r); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } } //check nb difference entre 2 tableaux $dif = array_diff($rep_item, $rep_candidat); //recuperer dimension combinaison $dim = get_dim_from_combi($combi); //si 0 => bonne reponse if (sizeof($dif) == 0) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_rep']); } } elseif (sizeof($dif) == 1) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_demi_rep']); } } else { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_non_rep']); } } } else { //recuperer nb_reponse donnee $nb_rep_donne = sizeof($post[$reponse[0]['nom_reponse']]); $nb_rep_attendu = get_nb_rep_attendu($item); //si nb rep > repattendu if ($nb_rep_donne > $nb_rep_attendu) { foreach ($zero_rep as $zero) { enregistrement_score($zero['id_dimension'], $item, $_POST['test'], $_POST['nid'], $zero['score_zero_rep']); } //=> mauvaise reponse } else { //sinon //point par reponse $nom_reps = get_nom_rep($item); $rep_item = array(); $rep_candidat = array(); $id_reponses = get_id_reponse_from_combi($item); foreach ($id_reponses as $rep) { $rep_item[] = $rep['id_reponse']; } //recuperer id_reponse avec nom valeur id_item foreach ($nom_reps as $n) { if (isset($post[$n['nom_reponse']])) { if (is_array($post[$n['nom_reponse']])) { foreach ($post[$n['nom_reponse']] as $r) { $rep_cand = get_reponse_item_val($item, $n['nom_reponse'], $r); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } else { $rep_cand = get_reponse_item_val($item, $n['nom_reponse'], $post[$n['nom_reponse']]); $rep_candidat[] = $rep_cand[0]['id_reponse']; } } } foreach ($rep_item as $ri) { //recuperer dim avec id_reponse $dim = get_dim_from_reponse($item, $ri); if (in_array($ri, $rep_candidat)) { foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_rep']); } //bonne reponse } else { //mauvaise_reponse foreach ($dim as $d) { enregistrement_score($d['id_dim'], $item, $_POST['test'], $_POST['nid'], $d['score_non_rep']); } } } } } } } else { // pas de reponse sur l'item foreach ($zero_rep as $zero) { enregistrement_score($zero['id_dimension'], $item, $_POST['test'], $_POST['nid'], $zero['score_zero_rep']); } } } } header("Location: index.php?controleur=participant&tache=home_candidat"); } else { $page['message'] = $message['outdated_item']; } } } } else { $page['vue'] = "erreur_droit.vue.php"; } }