コード例 #1
0
 public static function fromID($vID)
 {
     //Start by making sure the appropriate record exists
     $db = Zend_Registry::get("db");
     $result = $db->query("SELECT * FROM generated_questions where generated_id=" . $db->quote($vID));
     $row = $result->fetch();
     if ($row['generated_id'] == null) {
         return null;
         //No corresponding record found in database
     }
     //Assuming we have the appropriate records
     $vReturn = new Model_Quiz_GeneratedQuestion();
     $vReturn->generated_id = $row['generated_id'];
     $vReturn->instructions = $row['instructions'];
     $vReturn->question_data = $row['question_data'];
     $vReturn->correct_answer = $row['correct_answer'];
     $vReturn->alt_ans_1 = $row['alt_ans_1'];
     $vReturn->alt_desc_1 = $row['alt_desc_1'];
     $vReturn->alt_ans_2 = $row['alt_ans_2'];
     $vReturn->alt_desc_2 = $row['alt_desc_2'];
     $vReturn->alt_ans_3 = $row['alt_ans_3'];
     $vReturn->alt_desc_3 = $row['alt_desc_3'];
     $vReturn->question_basequestion_id = Model_Quiz_QuestionBase::fromID($row['question_basequestion_id']);
     return $vReturn;
     //Return the result
 }
コード例 #2
0
ファイル: CliController.php プロジェクト: sutantyo/itec810
 /**
  * Generates a bank of questions for a question identifier provided
  * Expects parameters [question_id], [questions_to_generate_num], [max_errors_num]
  */
 public function generatequestionbankAction()
 {
     // Check to see that all the parameters get passed
     $parameters = $this->_getAllParams();
     $check_errors = array();
     foreach (array("question_id" => "Question Identifier", "questions_to_generate_num" => "Number of Questions to Generate", "max_errors_num" => "Maximum number of Errors") as $check_key => $check_text) {
         if (!array_key_exists($check_key, $parameters) || !is_numeric($parameters[$check_key]) || $parameters[$check_key] < 0) {
             $check_errors[] = $check_text . " [" . $check_key . "] was not passed, or not a positive number.";
         }
     }
     if (sizeof($check_errors) > 0) {
         cronlog("The following validation errors occured:");
         foreach ($check_errors as $ce) {
             cronlog($ce);
         }
         exit;
     }
     //cronlog('ok so far');
     $question_base_id = intval($parameters['question_id']);
     $number_of_questions = intval($parameters['questions_to_generate_num']);
     $maximum_errors = intval($parameters['max_errors_num']);
     cronlog("Generating {$number_of_questions} questions from Question Base Identifier {$question_base_id} ; Maximum Error threshold is {$maximum_errors}");
     $vQuestionBase = Model_Quiz_QuestionBase::fromID($question_base_id);
     if (is_null($vQuestionBase)) {
         throw new Exception("The question base identifier passed was invalid");
     }
     $question_counter = 0;
     $error_counter = 0;
     My_Logger::log(__METHOD__ . " number_of_questions: {$number_of_questions}");
     My_Logger::log(__METHOD__ . " maximum_errors: {$maximum_errors}");
     while ($question_counter <= $number_of_questions && $error_counter <= $maximum_errors) {
         My_Logger::log(__METHOD__ . " question_counter: {$question_counter}");
         My_Logger::log(__METHOD__ . " error_counter: {$error_counter}");
         try {
             $vGeneratedQuestion = Model_Quiz_GeneratedQuestion::generateNewFromQuestionBase($vQuestionBase);
         } catch (Exception $e) {
             cronlog("Could not generate question. " . $e->getMessage());
             echo Model_Shell_Debug::getInstance()->getLog();
             $error_counter++;
         }
     }
     cronlog("Finished. Generated " . $question_counter . " questions; " . $error_counter . " errornous questions generated (but discarded)");
 }
コード例 #3
0
 public static function fromID($vID)
 {
     //Start by making sure the appropriate record exists
     $db = Zend_Registry::get("db");
     $result = $db->query("SELECT * FROM question_attempt where attempt_id='" . addslashes($vID) . "'");
     $row = $result->fetch();
     if ($row['attempt_id'] == null) {
         return null;
         //No corresponding record found in database
     }
     //Assuming we have the appropriate records
     $vReturn = new Model_Quiz_QuestionAttempt();
     $vReturn->attempt_id = $row['attempt_id'];
     $vReturn->initial_result = $row['initial_result'];
     $vReturn->secondary_result = $row['secondary_result'];
     $vReturn->question_basequestion_id = Model_Quiz_QuestionBase::fromID($row['question_basequestion_id']);
     $vReturn->attempted_on = strtotime($row['attempted_on']);
     $vReturn->time_started = strtotime($row['time_started']);
     $vReturn->time_finished = strtotime($row['time_finished']);
     $vReturn->quiz_attemptquiz_attempt_id = Model_Quiz_QuizAttempt::fromID($row['quiz_attemptquiz_attempt_id']);
     $vReturn->generated_questionsgenerated_id = Model_Quiz_GeneratedQuestion::fromID($row['generated_questionsgenerated_id']);
     return $vReturn;
     //Return the result
 }
コード例 #4
0
ファイル: QuestionBase.php プロジェクト: sutantyo/itec810
 public static function getAll()
 {
     $db = Zend_Registry::get("db");
     $vReturn = array();
     $result = $db->query("SELECT * FROM question_base");
     $rows = $result->fetchAll();
     foreach ($rows as $row) {
         $vReturn[] = Model_Quiz_QuestionBase::fromID($row['question_id']);
     }
     return $vReturn;
 }
コード例 #5
0
 /**
  * Shows the Question Analysis
  */
 public function questionanalysisAction()
 {
     $file_id = $this->_getParam("file");
     $this->view->file = $file_id;
     // Pointless line to load all the other functions in the GeneratedQuestion File
     // TODO: Fix this PLEASE
     $tmp = new Model_Quiz_GeneratedQuestion();
     // Get All Question Bases
     $this->view->all_question_bases = Model_Quiz_QuestionBase::getAll();
     if (is_null($file_id) || !isset($file_id)) {
         $default_question_base = current($this->view->all_question_bases);
         $file_id = $default_question_base->getID();
     }
     if (!is_null($file_id) && isset($file_id)) {
         $question_base = Model_Quiz_QuestionBase::fromID($file_id);
         $attempts = Model_Quiz_QuestionAttempt::getAllFromQuestionBase($question_base);
         // Generate a sample question
         $config = new Zend_Config_Ini(APPLICATION_PATH . "/configs/application.ini", APPLICATION_ENV);
         $path = $config->xml->import_path;
         //$sample_question = new Model_Shell_GenericQuestion(APPLICATION_PATH . "/../xml/questions/" . $question_base->getXml());
         $sample_question = new Model_Shell_GenericQuestion($path . '/' . $question_base->getXml());
         $this->view->question_base = $question_base;
         $this->view->attempts = $attempts;
         $this->view->sample_question = $sample_question;
     }
 }
コード例 #6
0
ファイル: QuizAttempt.php プロジェクト: sutantyo/itec810
 public function getAttemptedQuestionBases($vConcept, $vDifficulty)
 {
     $db = Zend_Registry::get("db");
     $vReturn = array();
     $sql = "SELECT DISTINCT qb.question_id FROM question_attempt qa, question_base qb, question_concepts qc WHERE qc.conceptsconcept_name=" . $db->quote($vConcept->getID()) . " AND qb.difficulty=" . $db->quote($vDifficulty) . " AND qa.question_basequestion_id=qb.question_id AND qc.question_basequestion_id=qb.question_id AND qa.quiz_attemptquiz_attempt_id=" . $db->quote($this->quiz_attempt_id);
     //echo $sql;
     $result = $db->query($sql);
     $rows = $result->fetchAll();
     foreach ($rows as $row) {
         $vReturn[] = Model_Quiz_QuestionBase::fromID($row['question_id']);
     }
     return $vReturn;
 }