public function save(WpProQuiz_Model_Question $question, $auto = false) { $sort = null; if ($auto && $question->getId()) { $statisticMapper = new WpProQuiz_Model_StatisticMapper(); if ($statisticMapper->isStatisticByQuestionId($question->getId())) { $this->setOnlineOff($question->getId()); $question->setQuizId($this->getQuizId($question->getId())); $sort = $this->getSortByQuestionId($question->getId()); $question->setId(0); } } if ($question->getId() != 0) { $this->_wpdb->update($this->_table, array('title' => $question->getTitle(), 'points' => $question->getPoints(), 'question' => $question->getQuestion(), 'correct_msg' => $question->getCorrectMsg(), 'incorrect_msg' => $question->getIncorrectMsg(), 'correct_same_text' => (int) $question->isCorrectSameText(), 'tip_enabled' => (int) $question->isTipEnabled(), 'tip_msg' => $question->getTipMsg(), 'answer_type' => $question->getAnswerType(), 'show_points_in_box' => (int) $question->isShowPointsInBox(), 'answer_points_activated' => (int) $question->isAnswerPointsActivated(), 'answer_data' => $question->getAnswerData(true), 'category_id' => $question->getCategoryId(), 'answer_points_diff_modus_activated' => (int) $question->isAnswerPointsDiffModusActivated(), 'disable_correct' => (int) $question->isDisableCorrect(), 'matrix_sort_answer_criteria_width' => $question->getMatrixSortAnswerCriteriaWidth()), array('id' => $question->getId()), array('%s', '%d', '%s', '%s', '%s', '%d', '%d', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d'), array('%d')); } else { $this->_wpdb->insert($this->_table, array('quiz_id' => $question->getQuizId(), 'online' => 1, 'sort' => $sort !== null ? $sort : $this->getMaxSort($question->getQuizId()) + 1, 'title' => $question->getTitle(), 'points' => $question->getPoints(), 'question' => $question->getQuestion(), 'correct_msg' => $question->getCorrectMsg(), 'incorrect_msg' => $question->getIncorrectMsg(), 'correct_same_text' => (int) $question->isCorrectSameText(), 'tip_enabled' => (int) $question->isTipEnabled(), 'tip_msg' => $question->getTipMsg(), 'answer_type' => $question->getAnswerType(), 'show_points_in_box' => (int) $question->isShowPointsInBox(), 'answer_points_activated' => (int) $question->isAnswerPointsActivated(), 'answer_data' => $question->getAnswerData(true), 'category_id' => $question->getCategoryId(), 'answer_points_diff_modus_activated' => (int) $question->isAnswerPointsDiffModusActivated(), 'disable_correct' => (int) $question->isDisableCorrect(), 'matrix_sort_answer_criteria_width' => $question->getMatrixSortAnswerCriteriaWidth()), array('%d', '%d', '%d', '%s', '%d', '%s', '%s', '%s', '%d', '%d', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d')); $question->setId($this->_wpdb->insert_id); } return $question; }
/** * @param DOMDocument $dom * @param WpProQuiz_Model_Question $question * @return DOMDocument */ private function createQuestionElement($dom, $question) { $qElement = $dom->createElement('question'); $qElement->setAttribute('answerType', $question->getAnswerType()); $qElement->appendChild($title = $dom->createElement('title')); $title->appendChild($dom->createCDATASection($question->getTitle())); $qElement->appendChild($dom->createElement('points', $question->getPoints())); $qElement->appendChild($questionText = $dom->createElement('questionText')); $questionText->appendChild($dom->createCDATASection($question->getQuestion())); $qElement->appendChild($correctMsg = $dom->createElement('correctMsg')); $correctMsg->appendChild($dom->createCDATASection($question->getCorrectMsg())); $qElement->appendChild($incorrectMsg = $dom->createElement('incorrectMsg')); $incorrectMsg->appendChild($dom->createCDATASection($question->getIncorrectMsg())); $qElement->appendChild($tipMsg = $dom->createElement('tipMsg')); $tipMsg->setAttribute('enabled', $this->booleanToTrueOrFalse($question->isTipEnabled())); $tipMsg->appendChild($dom->createCDATASection($question->getTipMsg())); $qElement->appendChild($dom->createElement('category', $question->getCategoryName())); $qElement->appendChild($dom->createElement('correctSameText', $this->booleanToTrueOrFalse($question->isCorrectSameText()))); $qElement->appendChild($dom->createElement('showPointsInBox', $this->booleanToTrueOrFalse($question->isShowPointsInBox()))); $qElement->appendChild($dom->createElement('answerPointsActivated', $this->booleanToTrueOrFalse($question->isAnswerPointsActivated()))); $qElement->appendChild($dom->createElement('answerPointsDiffModusActivated', $this->booleanToTrueOrFalse($question->isAnswerPointsDiffModusActivated()))); $qElement->appendChild($dom->createElement('disableCorrect', $this->booleanToTrueOrFalse($question->isDisableCorrect()))); $answersElement = $dom->createElement('answers'); $answerData = $question->getAnswerData(); if (is_array($answerData)) { foreach ($answerData as $answer) { /** @var WpProQuiz_Model_AnswerTypes $answer */ $answerElement = $dom->createElement('answer'); $answerElement->setAttribute('points', $answer->getPoints()); $answerElement->setAttribute('correct', $this->booleanToTrueOrFalse($answer->isCorrect())); $answerText = $dom->createElement('answerText'); $answerText->setAttribute('html', $this->booleanToTrueOrFalse($answer->isHtml())); $answerText->appendChild($dom->createCDATASection($answer->getAnswer())); $answerElement->appendChild($answerText); $sortText = $dom->createElement('stortText'); $sortText->setAttribute('html', $this->booleanToTrueOrFalse($answer->isSortStringHtml())); $sortText->appendChild($dom->createCDATASection($answer->getSortString())); $answerElement->appendChild($sortText); $answersElement->appendChild($answerElement); } } $qElement->appendChild($answersElement); return $qElement; }
/** * * @param DOMDocument $xml * @return NULL|WpProQuiz_Model_Question */ private function createQuestionModel($xml) { $model = new WpProQuiz_Model_Question(); $model->setTitle(trim($xml->title)); $model->setQuestion(trim($xml->questionText)); $model->setCorrectMsg(trim($xml->correctMsg)); $model->setIncorrectMsg(trim($xml->incorrectMsg)); $model->setAnswerType(trim($xml->attributes()->answerType)); $model->setCorrectSameText($xml->correctSameText == 'true'); $model->setTipMsg(trim($xml->tipMsg)); if (isset($xml->tipMsg) && $xml->tipMsg->attributes() !== null) { $model->setTipEnabled($xml->tipMsg->attributes()->enabled == 'true'); } $model->setPoints($xml->points); $model->setShowPointsInBox($xml->showPointsInBox == 'true'); $model->setAnswerPointsActivated($xml->answerPointsActivated == 'true'); $model->setAnswerPointsDiffModusActivated($xml->answerPointsDiffModusActivated == 'true'); $model->setDisableCorrect($xml->disableCorrect == 'true'); $model->setCategoryName(trim($xml->category)); $answerData = array(); if (isset($xml->answers)) { foreach ($xml->answers->answer as $answer) { $answerModel = new WpProQuiz_Model_AnswerTypes(); $attr = $answer->attributes(); if ($attr !== null) { $answerModel->setCorrect($attr->correct == 'true'); $answerModel->setPoints($attr->points); } $answerModel->setAnswer(trim($answer->answerText)); if ($answer->answerText->attributes() !== null) { $answerModel->setHtml($answer->answerText->attributes()->html); } $answerModel->setSortString(trim($answer->stortText)); if ($answer->stortText->attributes() !== null) { $answerModel->setSortStringHtml($answer->stortText->attributes()->html); } $answerData[] = $answerModel; } } $model->setAnswerData($answerData); //Check if (trim($model->getAnswerType()) == '') { return null; } if (trim($model->getQuestion()) == '') { return null; } if (trim($model->getTitle()) == '') { return null; } if (count($model->getAnswerData()) == 0) { return null; } return $model; }