private function edit()
 {
     if (!current_user_can('wpProQuiz_change_settings')) {
         wp_die(__('You do not have sufficient permissions to access this page.'));
     }
     $mapper = new WpProQuiz_Model_GlobalSettingsMapper();
     $categoryMapper = new WpProQuiz_Model_CategoryMapper();
     $templateMapper = new WpProQuiz_Model_TemplateMapper();
     $view = new WpProQuiz_View_GobalSettings();
     if (isset($this->_post['submit'])) {
         $mapper->save(new WpProQuiz_Model_GlobalSettings($this->_post));
         WpProQuiz_View_View::admin_notices(__('Settings saved', 'wp-pro-quiz'), 'info');
         $toplistDateFormat = $this->_post['toplist_date_format'];
         if ($toplistDateFormat == 'custom') {
             $toplistDateFormat = trim($this->_post['toplist_date_format_custom']);
         }
         $statisticTimeFormat = $this->_post['statisticTimeFormat'];
         if (add_option('wpProQuiz_toplistDataFormat', $toplistDateFormat) === false) {
             update_option('wpProQuiz_toplistDataFormat', $toplistDateFormat);
         }
         if (add_option('wpProQuiz_statisticTimeFormat', $statisticTimeFormat, '', 'no') === false) {
             update_option('wpProQuiz_statisticTimeFormat', $statisticTimeFormat);
         }
         //Email
         //$mapper->saveEmailSettiongs($this->_post['email']);
         //$mapper->saveUserEmailSettiongs($this->_post['userEmail']);
     } else {
         if (isset($this->_post['databaseFix'])) {
             WpProQuiz_View_View::admin_notices(__('Database repaired', 'wp-pro-quiz'), 'info');
             $DbUpgradeHelper = new WpProQuiz_Helper_DbUpgrade();
             $DbUpgradeHelper->databaseDelta();
         }
     }
     $view->settings = $mapper->fetchAll();
     $view->isRaw = !preg_match('[raw]', apply_filters('the_content', '[raw]a[/raw]'));
     $view->category = $categoryMapper->fetchAll();
     $view->categoryQuiz = $categoryMapper->fetchAll(WpProQuiz_Model_Category::CATEGORY_TYPE_QUIZ);
     $view->email = $mapper->getEmailSettings();
     $view->userEmail = $mapper->getUserEmailSettings();
     $view->templateQuiz = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUIZ, false);
     $view->templateQuestion = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUESTION, false);
     $view->toplistDataFormat = get_option('wpProQuiz_toplistDataFormat', 'Y/m/d g:i A');
     $view->statisticTimeFormat = get_option('wpProQuiz_statisticTimeFormat', 'Y/m/d g:i A');
     $view->show();
 }
 private function addEditQuestion($quizId)
 {
     $questionId = isset($_GET['questionId']) ? (int) $_GET['questionId'] : 0;
     if ($questionId) {
         if (!current_user_can('wpProQuiz_edit_quiz')) {
             wp_die(__('You do not have sufficient permissions to access this page.'));
         }
     } else {
         if (!current_user_can('wpProQuiz_add_quiz')) {
             wp_die(__('You do not have sufficient permissions to access this page.'));
         }
     }
     $quizMapper = new WpProQuiz_Model_QuizMapper();
     $questionMapper = new WpProQuiz_Model_QuestionMapper();
     $cateoryMapper = new WpProQuiz_Model_CategoryMapper();
     $templateMapper = new WpProQuiz_Model_TemplateMapper();
     if ($questionId && $questionMapper->existsAndWritable($questionId) == 0) {
         WpProQuiz_View_View::admin_notices(__('Question not found', 'wp-pro-quiz'), 'error');
         return;
     }
     $question = new WpProQuiz_Model_Question();
     if (isset($this->_post['template']) || isset($this->_post['templateLoad']) && isset($this->_post['templateLoadId'])) {
         if (isset($this->_post['template'])) {
             $template = $this->saveTemplate();
         } else {
             $template = $templateMapper->fetchById($this->_post['templateLoadId']);
         }
         $data = $template->getData();
         if ($data !== null) {
             /** @var WpProQuiz_Model_Question $question */
             $question = $data['question'];
             $question->setId($questionId);
             $question->setQuizId($quizId);
         }
     } else {
         if (isset($this->_post['submit'])) {
             if ($questionId) {
                 WpProQuiz_View_View::admin_notices(__('Question edited', 'wp-pro-quiz'), 'info');
             } else {
                 WpProQuiz_View_View::admin_notices(__('Question added', 'wp-pro-quiz'), 'info');
             }
             $question = $questionMapper->save($this->getPostQuestionModel($quizId, $questionId), true);
             $questionId = $question->getId();
         } else {
             if ($questionId) {
                 $question = $questionMapper->fetch($questionId);
             }
         }
     }
     $view = new WpProQuiz_View_QuestionEdit();
     $view->categories = $cateoryMapper->fetchAll();
     $view->quiz = $quizMapper->fetch($quizId);
     $view->templates = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUESTION, false);
     $view->question = $question;
     $view->answerData = $this->setAnswerObject($question);
     $view->header = $questionId ? __('Edit question', 'wp-pro-quiz') : __('New question', 'wp-pro-quiz');
     if ($view->question->isAnswerPointsActivated()) {
         $view->question->setPoints(1);
     }
     $view->show();
 }
 /**
  * @deprecated
  */
 public function createAction()
 {
     if (!current_user_can('wpProQuiz_add_quiz')) {
         wp_die(__('You do not have sufficient permissions to access this page.'));
     }
     $quizMapper = new WpProQuiz_Model_QuizMapper();
     $cateoryMapper = new WpProQuiz_Model_CategoryMapper();
     $templateMapper = new WpProQuiz_Model_TemplateMapper();
     // 		$post = null;
     // 		if(isset($this->_post['submit'])) {
     // 			$questionMapper = new WpProQuiz_Model_QuestionMapper();
     // 			$post = WpProQuiz_Controller_Request::getPost();
     // 			$post['title'] = isset($post['title']) ? trim($post['title']) : '';
     // 			$post['quizId'] = $this->_quizId;
     // 			$clearPost = $this->clearPost($post);
     // 			$post['answerData'] = $clearPost['answerData'];
     // 			if(empty($post['title'])) {
     // 				$count = $questionMapper->count($this->_quizId);
     // 				$post['title'] = sprintf(__('Question: %d', 'wp-pro-quiz'), $count+1);
     // 			}
     // 			if($post['answerType'] === 'assessment_answer') {
     // 				$post['answerPointsActivated'] = 1;
     // 			}
     // 			if(isset($post['answerPointsActivated'])) {
     // 				if(isset($post['answerPointsDiffModusActivated'])) {
     // 					$post['points']	= $clearPost['maxPoints'];
     // 				} else {
     // 					$post['points'] = $clearPost['points'];
     // 				}
     // 			}
     // 			$post['categoryId'] = $post['category'] > 0 ? $post['category'] : 0;
     // 			$questionMapper->save(new WpProQuiz_Model_Question($post));
     // 			WpProQuiz_View_View::admin_notices(__('Question added', 'wp-pro-quiz'), 'info');
     // 			$this->showAction();
     // 			return;
     // 		}
     $this->view = new WpProQuiz_View_QuestionEdit();
     $this->view->question = new WpProQuiz_Model_Question();
     $this->view->categories = $cateoryMapper->fetchAll();
     $this->view->quiz = $quizMapper->fetch($this->_quizId);
     $this->view->data = $this->setAnswerObject();
     $this->view->templates = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUESTION, false);
     $this->view->header = __('New question', 'wp-pro-quiz');
     if ($this->view->question->isAnswerPointsActivated()) {
         $this->view->question->setPoints(1);
     }
     $this->view->show();
 }
 private function addEditQuiz()
 {
     $quizId = isset($_GET['quizId']) ? (int) $_GET['quizId'] : 0;
     if ($quizId) {
         if (!current_user_can('wpProQuiz_edit_quiz')) {
             wp_die(__('You do not have sufficient permissions to access this page.'));
         }
     } else {
         if (!current_user_can('wpProQuiz_add_quiz')) {
             wp_die(__('You do not have sufficient permissions to access this page.'));
         }
     }
     $prerequisiteMapper = new WpProQuiz_Model_PrerequisiteMapper();
     $quizMapper = new WpProQuiz_Model_QuizMapper();
     $formMapper = new WpProQuiz_Model_FormMapper();
     $templateMapper = new WpProQuiz_Model_TemplateMapper();
     $cateoryMapper = new WpProQuiz_Model_CategoryMapper();
     $quiz = new WpProQuiz_Model_Quiz();
     $forms = null;
     $prerequisiteQuizList = array();
     if ($quizId && $quizMapper->exists($quizId) == 0) {
         WpProQuiz_View_View::admin_notices(__('Quiz not found', 'wp-pro-quiz'), 'error');
         return;
     }
     if (isset($this->_post['template']) || isset($this->_post['templateLoad']) && isset($this->_post['templateLoadId'])) {
         if (isset($this->_post['template'])) {
             $template = $this->saveTemplate();
         } else {
             $template = $templateMapper->fetchById($this->_post['templateLoadId']);
         }
         $data = $template->getData();
         if ($data !== null) {
             /** @var WpProQuiz_Model_Quiz $quiz */
             $quiz = $data['quiz'];
             $quiz->setId($quizId);
             $forms = $data['forms'];
             $prerequisiteQuizList = $data['prerequisiteQuizList'];
         }
     } else {
         if (isset($this->_post['submit'])) {
             if (isset($this->_post['resultGradeEnabled'])) {
                 $this->_post['result_text'] = $this->filterResultTextGrade($this->_post);
             }
             $this->_post['categoryId'] = $this->_post['category'] > 0 ? $this->_post['category'] : 0;
             $this->_post['adminEmail'] = new WpProQuiz_Model_Email($this->_post['adminEmail']);
             $this->_post['userEmail'] = new WpProQuiz_Model_Email($this->_post['userEmail']);
             $quiz = new WpProQuiz_Model_Quiz($this->_post);
             $quiz->setId($quizId);
             if (isset($this->_post['plugin'])) {
                 $quiz->getPluginContainer()->set($this->_post['plugin']);
             }
             if ($this->checkValidit($this->_post)) {
                 if ($quizId) {
                     WpProQuiz_View_View::admin_notices(__('Quiz edited', 'wp-pro-quiz'), 'info');
                 } else {
                     WpProQuiz_View_View::admin_notices(__('quiz created', 'wp-pro-quiz'), 'info');
                 }
                 $quizMapper->save($quiz);
                 $quizId = $quiz->getId();
                 $prerequisiteMapper->delete($quizId);
                 if ($quiz->isPrerequisite() && !empty($this->_post['prerequisiteList'])) {
                     $prerequisiteMapper->save($quizId, $this->_post['prerequisiteList']);
                     $quizMapper->activateStatitic($this->_post['prerequisiteList'], 1440);
                 }
                 if (!$this->formHandler($quiz->getId(), $this->_post)) {
                     $quiz->setFormActivated(false);
                     $quizMapper->save($quiz);
                 }
                 $forms = $formMapper->fetch($quizId);
                 $prerequisiteQuizList = $prerequisiteMapper->fetchQuizIds($quizId);
             } else {
                 WpProQuiz_View_View::admin_notices(__('Quiz title or quiz description are not filled', 'wp-pro-quiz'));
             }
         } else {
             if ($quizId) {
                 $quiz = $quizMapper->fetch($quizId);
                 $forms = $formMapper->fetch($quizId);
                 $prerequisiteQuizList = $prerequisiteMapper->fetchQuizIds($quizId);
             }
         }
     }
     $view = new WpProQuiz_View_QuizEdit();
     $view->quiz = $quiz;
     $view->forms = $forms;
     $view->prerequisiteQuizList = $prerequisiteQuizList;
     $view->templates = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUIZ, false);
     $view->quizList = $quizMapper->fetchAllAsArray(array('id', 'name'), $quizId ? array($quizId) : array());
     $view->captchaIsInstalled = class_exists('ReallySimpleCaptcha');
     $view->categories = $cateoryMapper->fetchAll(WpProQuiz_Model_Category::CATEGORY_TYPE_QUIZ);
     $view->header = $quizId ? __('Edit quiz', 'wp-pro-quiz') : __('Create quiz', 'wp-pro-quiz');
     $view->show();
 }
 private function createAction()
 {
     if (!current_user_can('wpProQuiz_add_quiz')) {
         wp_die(__('You do not have sufficient permissions to access this page.'));
     }
     $this->view = new WpProQuiz_View_QuizEdit();
     $this->view->header = __('Create quiz', 'wp-pro-quiz');
     $forms = null;
     $prerequisiteQuizList = array();
     $m = new WpProQuiz_Model_QuizMapper();
     $templateMapper = new WpProQuiz_Model_TemplateMapper();
     if (isset($this->_post['submit'])) {
         if (isset($this->_post['resultGradeEnabled'])) {
             $this->_post['result_text'] = $this->filterResultTextGrade($this->_post);
         }
         $quiz = new WpProQuiz_Model_Quiz($this->_post);
         $quizMapper = new WpProQuiz_Model_QuizMapper();
         if ($this->checkValidit($this->_post)) {
             WpProQuiz_View_View::admin_notices(__('Create quiz', 'wp-pro-quiz'), 'info');
             $quizMapper->save($quiz);
             $id = $quizMapper->getInsertId();
             $prerequisiteMapper = new WpProQuiz_Model_PrerequisiteMapper();
             if ($quiz->isPrerequisite() && !empty($this->_post['prerequisiteList'])) {
                 $prerequisiteMapper->save($id, $this->_post['prerequisiteList']);
                 $quizMapper->activateStatitic($this->_post['prerequisiteList'], 1440);
             }
             if (!$this->formHandler($id, $this->_post)) {
                 $quiz->setFormActivated(false);
                 $quizMapper->save($quiz);
             }
             $this->showAction();
             return;
         } else {
             WpProQuiz_View_View::admin_notices(__('Quiz title or quiz description are not filled', 'wp-pro-quiz'));
         }
     } else {
         if (isset($this->_post['template']) || isset($this->_post['templateLoad'])) {
             if (isset($this->_post['template'])) {
                 $template = $this->saveTemplate();
             } else {
                 $template = $templateMapper->fetchById($this->_post['templateLoadId']);
             }
             $data = $template->getData();
             if ($data !== null) {
                 $quiz = $data['quiz'];
                 $forms = $data['forms'];
                 $prerequisiteQuizList = $data['prerequisiteQuizList'];
             }
         } else {
             $quiz = new WpProQuiz_Model_Quiz();
         }
     }
     $this->view->quiz = $quiz;
     $this->view->prerequisiteQuizList = $prerequisiteQuizList;
     $this->view->quizList = $m->fetchAllAsArray(array('id', 'name'));
     $this->view->captchaIsInstalled = class_exists('ReallySimpleCaptcha');
     $this->view->forms = $forms;
     $this->view->templates = $templateMapper->fetchAll(WpProQuiz_Model_Template::TEMPLATE_TYPE_QUIZ, false);
     $this->view->show();
 }