示例#1
0
 public function questions($action, $id, $vars)
 {
     switch ($action) {
         case 'get':
             $vars['active_questions'] = 1;
             // Active le style dans le menu questions
             $questionDAO = new QuestionDAO(BDD::getInstancePDO());
             // Si on veut voir une question précise
             if (!empty($id)) {
                 // On récupère la technote
                 $vars['question'] = $questionDAO->getOne($id);
                 // Si la question existe
                 if ($vars['question'] !== false) {
                     $vars['titrePage'] = $vars['question']->titre;
                     // <h1> de la page
                     $this->vue->display('questions_get_one.twig', $vars);
                 } else {
                     $this->vue->display('404.twig', $vars);
                 }
             } else {
                 // Si on veut faire une recherche de question
                 if (isset($_GET['recherche'])) {
                     $vars['titrePage'] = 'Chercher une question';
                     // <h1> de la page
                     // on recupère la page
                     $page = !empty($_GET['page']) ? $_GET['page'] : 1;
                     // On essaye de récupèrer les questions avec les critères de recherche
                     $res = Question::recherche($_GET, $page);
                     if ($res->success) {
                         $vars['pagination'] = $res->pagination;
                         $vars['questions'] = $res->questions;
                     } else {
                         $vars['res'] = $res;
                     }
                 } else {
                     $vars['titrePage'] = 'Les dernières questions';
                     // <h1> de la page
                     // On récupère la page
                     $page = !empty($_GET['page']) ? $_GET['page'] : 1;
                     $vars['active_questions_all'] = 1;
                     // Active le style dans le sous menu toutes les questions
                     // On récupère le nombre total de questions
                     $count = $questionDAO->getCount();
                     // On créé la pagination
                     $vars['pagination'] = new Pagination($page, $count, NB_QUESTIONS_PAGE, '/questions/get?page=');
                     // On récupère les questions
                     $vars['questions'] = $questionDAO->getLastNQuestions(NB_QUESTIONS_PAGE, $vars['pagination']->debut);
                 }
                 $this->vue->display('questions_get_all.twig', $vars);
             }
             exit;
             /**** ADD ****/
         /**** ADD ****/
         case 'add':
             $vars['active_questions'] = 1;
             // Active le style dans le menu questions
             $vars['active_questions_add'] = 1;
             // Active le style dans le sous menu ajout de questions
             $vars['titrePage'] = 'Poser une question';
             // <h1> de la page
             // On récupère tous les mots clés
             $motCleDAO = new MotCleDAO(BDD::getInstancePDO());
             $vars['motsCles'] = $motCleDAO->getAllActif();
             // Si un formulaire a été envoyé
             if (!empty($_POST)) {
                 // Si le formulaire est valide au niveau faille CSRF
                 if (!empty($_POST['jetonCSRF']) && $_POST['jetonCSRF'] == $_SESSION['jetonCSRF']) {
                     // On essaye d'enregistrer la technote
                     $res = Question::addQuestion($_POST);
                     if ($res->success) {
                         $res->redirect = "/questions/get/{$res->id_question}";
                     }
                     echo json_encode($res);
                     exit;
                 }
             }
             $this->vue->display('questions_add.twig', $vars);
             exit;
             /**** EDIT ****/
         /**** EDIT ****/
         case 'edit':
             $vars['active_questions'] = 1;
             // Active le style dans le menu questions
             $vars['titrePage'] = 'Modifier une question';
             // <h1> de la page
             $questionDAO = new QuestionDAO(BDD::getInstancePDO());
             $vars['question'] = $questionDAO->getOne($id);
             // On récupère tous les mots clés
             $motCleDAO = new MotCleDAO(BDD::getInstancePDO());
             $vars['motsCles'] = $motCleDAO->getAllActif();
             // Si un formulaire a été envoyé
             if (!empty($_POST)) {
                 // Si le formulaire est valide au niveau faille CSRF
                 if (!empty($_POST['jetonCSRF']) && $_POST['jetonCSRF'] == $_SESSION['jetonCSRF']) {
                     // On essaye d'enregistrer la technote
                     $res = Question::editQuestion($_POST, $id);
                     if ($res->success) {
                         $res->redirect = "/questions/get/{$id}";
                     }
                     echo json_encode($res);
                     exit;
                 }
             }
             $this->vue->display('questions_edit.twig', $vars);
             exit;
             /**** DROP ****/
         /**** DROP ****/
         case 'drop':
             if (!empty($_POST)) {
                 // Si le formulaire est valide au niveau faille CSRF
                 if (!empty($_POST['jetonCSRF']) && $_POST['jetonCSRF'] == $_SESSION['jetonCSRF']) {
                     // On essaye d'enregistrer le commentaire
                     $res = Question::dropQuestion($id);
                     if ($res->success) {
                         $res->redirect = "/questions";
                     }
                     echo json_encode($res);
                 }
             }
             exit;
         default:
             $this->vue->display('404.twig', $vars);
             exit;
     }
 }