public function execute(HTTPRequestCustom $request)
 {
     $this->get_faq_question($request);
     if ($this->faq_question !== null && $this->check_authorizations()) {
         $this->delete_question();
         $code = $this->faq_question->get_id();
     } else {
         $code = -1;
     }
     return new JSONResponse(array('code' => $code, 'questions_number' => $code > 0 ? FaqService::count() : 0));
 }
 private function save()
 {
     $faq_question = $this->get_faq_question();
     $faq_question->set_question($this->form->get_value('question'));
     $faq_question->set_rewrited_question(Url::encode_rewrite($faq_question->get_question()));
     $faq_question->set_id_category($this->form->get_value('id_category')->get_raw_value());
     $faq_question->set_answer($this->form->get_value('answer'));
     if ($faq_question->get_q_order() === null) {
         $number_questions_in_category = FaqService::count('WHERE id_category = :id_category', array('id_category' => $faq_question->get_id_category()));
         $faq_question->set_q_order($number_questions_in_category + 1);
     }
     if (!$this->is_contributor_member() && $this->form->get_value('approved')) {
         $faq_question->approve();
     } else {
         $faq_question->unapprove();
     }
     if ($faq_question->get_id() === null) {
         $id = FaqService::add($faq_question);
     } else {
         $id = $faq_question->get_id();
         FaqService::update($faq_question);
     }
     $this->contribution_actions($faq_question, $id);
     Feed::clear_cache('faq');
     FaqCache::invalidate();
 }