public static function import($file)
 {
     $fd = fopen($file, 'r');
     $quiz = new QuaranteDeuxCases();
     $quiz->title = fgets($fd);
     $quiz->filename = $file;
     $quiz->savetime = filemtime($file);
     $level_count = 0;
     while (!feof($fd)) {
         $lines = array();
         while (($line = trim(fgets($fd))) != '') {
             $lines[] = $line;
         }
         if (count($lines) > 0) {
             $question = new Question();
             $question->setStatement(array_shift($lines));
             $question->addAnswer(implode(' ', $lines), true);
             $quiz->addQuestion($question, $level_count++);
         }
     }
     while ($level_count < 7) {
         $question = new Question();
         $question->setStatement('');
         $question->addAnswer('', true);
         $quiz->addQuestion($question, $level_count++);
     }
     fclose($fd);
     if (!$quiz->isCompleted()) {
         throw new Exception("Quiz file incomplete");
     }
     return $quiz;
 }
示例#2
0
 public function copy($user_id)
 {
     $this->question = str_replace("\n", " ", $this->question);
     $this->question = str_replace("<br>", " ", $this->question);
     $id = $this->dbInsert('questions', array('item_id' => $this->item_id, 'based_on' => $this->based_on, 'mark' => $this->mark, 'difficulty' => $this->difficulty, 'diff_count' => 0, 'user_id' => $user_id, 'question' => $this->question));
     $copy = new Question();
     $copy->id = $id;
     foreach ($this->answers as $answer) {
         $copy->addAnswer(stripslashes($answer['answer']), stripslashes($answer['explanation']), $answer['is_right']);
     }
     return $id;
 }
示例#3
0
 public static function import($file)
 {
     $quiz = new YouVSTheWorld();
     $quiz->filename = $file;
     $quiz->savetime = filemtime($file);
     $dom = new DOMDocument();
     $dom->loadXML(file_get_contents($file));
     $quiz->title = $dom->getElementsByTagName('defi')->item(0)->getAttribute('titre');
     if ($quiz->title == '') {
         $quiz->title = trim(str_replace(array('YTW', '.xml'), '', basename($file)));
     }
     $questionsnodes = $dom->getElementsByTagName('question');
     foreach ($questionsnodes as $level => $questionnode) {
         $question = new Question();
         foreach ($questionnode->childNodes as $node) {
             switch ($node->nodeName) {
                 case 'texte':
                     $question->setStatement($node->textContent);
                     break;
                 case 'reponse_list':
                     $goodanswerindex = (int) $node->attributes->getNamedItem('rep_valid')->value - 1;
                     $answerindex = 0;
                     $question->setVerified($node->attributes->getNamedItem('verified')->value == 'true');
                     foreach ($node->childNodes as $answer) {
                         if ($answer->nodeName == 'reponse') {
                             $question->addAnswer($answer->textContent, $goodanswerindex == $answerindex++);
                         }
                     }
                     break;
             }
         }
         $quiz->addQuestion($question, $level);
     }
     if (!$quiz->isCompleted()) {
         throw new Exception("Quiz file incomplete");
     }
     return $quiz;
 }
示例#4
0
    public function translateQuestions($old_slide_id, $new_slide_id, $source_arr, $language)
    {
        $questions_array = array();
        $questions = array();
        $translator = new LanguageTranslator('AIzaSyBlwXdmxJZ__ZNScwe4zq5r3qh3ebXb26k');
        $questions_array = $this->dbQuery('SELECT *
			FROM questions INNER JOIN users on questions.user_id = users.id
			WHERE questions.based_on IS NULL AND questions.mark = "accepted" AND questions.item_id=' . $old_slide_id);
        if (count($questions_array)) {
            foreach ($questions_array as $row) {
                $question = new Question();
                $question->createFromID($row['0']);
                $lastId = $question->getLastRevision();
                $lastRevision = new Question();
                $lastRevision->createFromID($lastId);
                $questions[] = $lastRevision;
            }
        }
        if (count($questions)) {
            $source = $source_arr['id'];
            $target_arr = explode('-', $language);
            $target = $target_arr[0];
            foreach ($questions as $question) {
                $answers = array();
                $answers = $question->getAnswers();
                $q = $question->question;
                $question->question = $translator->translate($q, $target, $source);
                $question->item_id = $new_slide_id;
                $question->based_on = NULL;
                $question->user->id = $this->user->id;
                $question->id = $question->create();
                if (count($answers)) {
                    foreach ($answers as $answer) {
                        $q = $answer['answer'];
                        $answer['answer'] = $translator->translate($q, $target, $source);
                        $q = $answer['explanation'];
                        if ($q != '') {
                            $answer['explanation'] = $translator->translate($q, $target, $source);
                        }
                        $question->addAnswer($answer['answer'], $answer['explanation'], $answer['is_right']);
                    }
                }
            }
        }
    }
示例#5
0
 public static function importFromParsedJson(stdClass $object)
 {
     require_once $object->info->type . '.php';
     $quiz = new $object->info->type();
     $quiz->title = $object->title;
     $quiz->filename = $object->filename;
     $quiz->savetime = $object->savetime;
     foreach ($object->questions as $levelnumber => $level) {
         foreach ($level as $questionimport) {
             $question = new Question();
             $question->setStatement($questionimport->statement);
             foreach ($questionimport->answers as $answerindex => $answer) {
                 if ($answerindex < $quiz->answers_by_level[$levelnumber]) {
                     $question->addAnswer($answer, $questionimport->goodanswerindex == $answerindex);
                 }
             }
             $question->setVerified($questionimport->verified);
             $quiz->addQuestion($question, $levelnumber);
         }
     }
     if (!$quiz->isCompleted()) {
         throw new Exception("Invalid quiz data");
     }
     return $quiz;
 }
示例#6
0
 function test_getAnswers()
 {
     //Arrange
     $test_field = "What is their name?";
     $test_description = "What you want to call your character.";
     $test_question = new Question($test_field, $test_description);
     $test_question->save();
     $test_field = "Joe GetAll";
     $test_quest_id = $test_question->getId();
     $test_answer = new Answer($test_field, $test_quest_id);
     $test_answer->save();
     //Act
     $test_question->addAnswer($test_answer->getId());
     //Assert
     $result = $test_question->getAnswers($test_answer->getId());
     $this->assertEquals($test_answer, $result[0]);
 }