protected function initResponse() { $this->response = $this->quiz->getResponseByAccount($this->app->session->account); if ($this->response instanceof InquisitionResponse) { // efficiently load question options for response values $this->response->values->loadAllSubDataObjects('question_option', $this->app->db, 'select * from InquisitionQuestionOption where id in (%s)', SwatDBClassMap::get('InquisitionQuestionOptionWrapper')); // efficiently load question bindings for response values $question_bindings = $this->response->values->loadAllSubDataObjects('question_binding', $this->app->db, 'select * from InquisitionInquisitionQuestionBinding where id in (%s)', SwatDBClassMap::get('InquisitionInquisitionQuestionBindingWrapper')); // efficiently load questions for question bindings if ($question_bindings instanceof InquisitionInquisitionQuestionBindingWrapper) { $question_bindings->loadAllSubDataObjects('question', $this->app->db, 'select * from InquisitionQuestion where id in (%s)', SwatDBClassMap::get('InquisitionQuestionWrapper')); } // index responses by question binding id foreach ($this->response->values as $value) { $binding_id = $value->question_binding->id; $this->response_values_by_binding_id[$binding_id] = $value; } } }
protected function getResponse(InquisitionInquisition $quiz) { $response = $quiz->getResponseByAccount($this->app->session->account); // get new response if (!$response instanceof CMEQuizResponse) { $class_name = SwatDBClassMap::get('CMEQuizResponse'); $response = new $class_name(); $response->account = $this->app->session->account; $response->inquisition = $quiz; $response->createdate = new SwatDate(); $response->createdate->toUTC(); $wrapper = SwatDBClassMap::get('InquisitionResponseValueWrapper'); $response->values = new $wrapper(); $response->setDatabase($this->app->db); } return $response; }