Пример #1
0
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";
    }
}
Пример #2
0
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";
    }
}