/** * saves the current attempt class * * @return bool */ public function save() { global $DB; // first save the question usage by activity object \question_engine::save_questions_usage_by_activity($this->quba); // add the quba id as the questionengid // this is here because for new usages there is no id until we save it $this->attempt->questionengid = $this->quba->get_id(); $this->attempt->timemodified = time(); if (isset($this->attempt->id)) { // update the record try { $DB->update_record('activequiz_attempts', $this->attempt); } catch (\Exception $e) { error_log($e->getMessage()); return false; // return false on failure } } else { // insert new record try { $newid = $DB->insert_record('activequiz_attempts', $this->attempt); $this->attempt->id = $newid; } catch (\Exception $e) { return false; // return false on failure } } return true; // return true if we get here }
protected function delete_quba() { question_engine::delete_questions_usage_by_activity($this->quba->get_id()); $this->quba = null; }
/** * Update a question_usages row to refect any changes in a usage (but not * any of its question_attempts. * @param question_usage_by_activity $quba the usage that has changed. */ public function update_questions_usage_by_activity(question_usage_by_activity $quba) { $record = new stdClass(); $record->id = $quba->get_id(); $record->contextid = $quba->get_owning_context()->id; $record->component = $quba->get_owning_component(); $record->preferredbehaviour = $quba->get_preferred_behaviour(); $this->db->update_record('question_usages', $record); }