private function createQuizModel($xml)
 {
     $model = new WpProQuiz_Model_Quiz();
     $model->setName(trim($xml->title));
     $model->setText(trim($xml->text));
     $model->setTitleHidden($xml->title->attributes()->titleHidden == 'true');
     $model->setQuestionRandom($xml->questionRandom == 'true');
     $model->setAnswerRandom($xml->answerRandom == 'true');
     $model->setTimeLimit($xml->timeLimit);
     $model->setResultText($xml->resultText);
     $model->setResultGradeEnabled($xml->resultText);
     $model->setCategoryName(trim($xml->category));
     if (isset($xml->resultText)) {
         $attr = $xml->resultText->attributes();
         if ($attr !== null) {
             $model->setResultGradeEnabled($attr->gradeEnabled == 'true');
             if ($model->isResultGradeEnabled()) {
                 $resultArray = array('text' => array(), 'prozent' => array());
                 foreach ($xml->resultText->text as $result) {
                     $resultArray['text'][] = trim((string) $result);
                     $resultArray['prozent'][] = $result->attributes() === null ? 0 : (int) $result->attributes()->prozent;
                 }
                 $model->setResultText($resultArray);
             } else {
                 $model->setResultText(trim((string) $xml->resultText));
             }
         }
     }
     $model->setShowPoints($xml->showPoints == 'true');
     $model->setBtnRestartQuizHidden($xml->btnRestartQuizHidden == 'true');
     $model->setBtnViewQuestionHidden($xml->btnViewQuestionHidden == 'true');
     $model->setNumberedAnswer($xml->numberedAnswer == 'true');
     $model->setHideAnswerMessageBox($xml->hideAnswerMessageBox == 'true');
     $model->setDisabledAnswerMark($xml->disabledAnswerMark == 'true');
     if (isset($xml->statistic)) {
         $attr = $xml->statistic->attributes();
         if ($attr !== null) {
             $model->setStatisticsOn($attr->activated == 'true');
             $model->setStatisticsIpLock($attr->ipLock);
         }
     }
     if (isset($xml->quizRunOnce)) {
         $model->setQuizRunOnce($xml->quizRunOnce == 'true');
         $attr = $xml->quizRunOnce->attributes();
         if ($attr !== null) {
             $model->setQuizRunOnceCookie($attr->cookie == 'true');
             $model->setQuizRunOnceType($attr->type);
             $model->setQuizRunOnceTime($attr->time);
         }
     }
     if (isset($xml->showMaxQuestion)) {
         $model->setShowMaxQuestion($xml->showMaxQuestion == 'true');
         $attr = $xml->showMaxQuestion->attributes();
         if ($attr !== null) {
             $model->setShowMaxQuestionValue($attr->showMaxQuestionValue);
             $model->setShowMaxQuestionPercent($attr->showMaxQuestionPercent == 'true');
         }
     }
     $model->setEndOnFirstIncorrect($xml->endOnFirstIncorrect == 'true');
     if (isset($xml->toplist)) {
         $model->setToplistActivated($xml->toplist->attributes()->activated == 'true');
         $model->setToplistDataAddPermissions($xml->toplist->toplistDataAddPermissions);
         $model->setToplistDataSort($xml->toplist->toplistDataSort);
         $model->setToplistDataAddMultiple($xml->toplist->toplistDataAddMultiple == 'true');
         $model->setToplistDataAddBlock($xml->toplist->toplistDataAddBlock);
         $model->setToplistDataShowLimit($xml->toplist->toplistDataShowLimit);
         $model->setToplistDataShowIn($xml->toplist->toplistDataShowIn);
         $model->setToplistDataCaptcha($xml->toplist->toplistDataCaptcha == 'true');
         $model->setToplistDataAddAutomatic($xml->toplist->toplistDataAddAutomatic == 'true');
     }
     $model->setShowAverageResult($xml->showAverageResult == 'true');
     $model->setPrerequisite($xml->prerequisite == 'true');
     $model->setQuizModus($xml->quizModus);
     $model->setShowReviewQuestion($xml->showReviewQuestion == 'true');
     $model->setQuizSummaryHide($xml->quizSummaryHide == 'true');
     $model->setSkipQuestionDisabled($xml->skipQuestionDisabled == 'true');
     $model->setEmailNotification($xml->emailNotification);
     $model->setUserEmailNotification($xml->userEmailNotification == 'true');
     $model->setShowCategoryScore($xml->showCategoryScore == 'true');
     $model->setHideResultCorrectQuestion($xml->hideResultCorrectQuestion == 'true');
     $model->setHideResultQuizTime($xml->hideResultQuizTime == 'true');
     $model->setHideResultPoints($xml->hideResultPoints == 'true');
     $model->setAutostart($xml->autostart == 'true');
     $model->setForcingQuestionSolve($xml->forcingQuestionSolve == 'true');
     $model->setHideQuestionPositionOverview($xml->hideQuestionPositionOverview == 'true');
     $model->setHideQuestionNumbering($xml->hideQuestionNumbering == 'true');
     //0.27
     $model->setStartOnlyRegisteredUser($xml->startOnlyRegisteredUser == 'true');
     $model->setSortCategories($xml->sortCategories == 'true');
     $model->setShowCategory($xml->showCategory == 'true');
     if (isset($xml->quizModus)) {
         $attr = $xml->quizModus->attributes();
         if ($attr !== null) {
             $model->setQuestionsPerPage($attr->questionsPerPage);
         }
     }
     if (isset($xml->forms)) {
         $attr = $xml->forms->attributes();
         $model->setFormActivated($attr->activated == 'true');
         $model->setFormShowPosition($attr->position);
     }
     //0.29
     if (isset($xml->adminEmail)) {
         $adminEmail = new WpProQuiz_Model_Email();
         $adminEmail->setTo($xml->adminEmail->to);
         $adminEmail->setFrom($xml->adminEmail->form);
         $adminEmail->setSubject($xml->adminEmail->subject);
         $adminEmail->setHtml($xml->adminEmail->html == 'true');
         $adminEmail->setMessage($xml->adminEmail->message);
         $model->setAdminEmail($adminEmail);
     }
     if (isset($xml->userEmail)) {
         $userEmail = new WpProQuiz_Model_Email();
         $userEmail->setTo($xml->userEmail->to);
         $userEmail->setToUser($xml->userEmail->toUser == 'true');
         $userEmail->setToForm($xml->userEmail->toForm == 'true');
         $userEmail->setFrom($xml->userEmail->form);
         $userEmail->setSubject($xml->userEmail->subject);
         $userEmail->setHtml($xml->userEmail->html == 'true');
         $userEmail->setMessage($xml->userEmail->message);
         $model->setUserEmail($userEmail);
     }
     //Check
     if ($model->getName() == '') {
         return null;
     }
     if ($model->getText() == '') {
         return null;
     }
     return $model;
 }
 private function editAction($id)
 {
     if (!current_user_can('wpProQuiz_edit_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();
     $m = new WpProQuiz_Model_QuizMapper();
     $this->view = new WpProQuiz_View_QuizEdit();
     $this->view->header = __('Edit quiz', 'wp-pro-quiz');
     $forms = $formMapper->fetch($id);
     $prerequisiteQuizList = $prerequisiteMapper->fetchQuizIds($id);
     if ($m->exists($id) == 0) {
         WpProQuiz_View_View::admin_notices(__('Quiz not found', 'wp-pro-quiz'), 'error');
         return;
     }
     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);
         $quiz->setId($id);
         if ($this->checkValidit($this->_post)) {
             WpProQuiz_View_View::admin_notices(__('Quiz edited', 'wp-pro-quiz'), 'info');
             $prerequisiteMapper = new WpProQuiz_Model_PrerequisiteMapper();
             $prerequisiteMapper->delete($id);
             if ($quiz->isPrerequisite() && !empty($this->_post['prerequisiteList'])) {
                 $prerequisiteMapper->save($id, $this->_post['prerequisiteList']);
                 $quizMapper->activateStatitic($this->_post['prerequisiteList'], 1440);
             }
             if (!$this->formHandler($quiz->getId(), $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 = $m->fetch($id);
         }
     }
     $this->view->quiz = $quiz;
     $this->view->prerequisiteQuizList = $prerequisiteQuizList;
     $this->view->quizList = $m->fetchAllAsArray(array('id', 'name'), array($id));
     $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();
 }