. /** * @package qtype_algebra * @copyright Roger Moore * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Restore plugin class that provides the necessary information * needed to restore one algebra qtype plugin */ class restore_qtype_algebra_plugin extends restore_qtype_plugin { /** * Returns the paths to be handled by the plugin at question level */ protected function define_question_plugin_structure() { $paths = array(); // This qtype uses question_answers, add them. $this->add_question_question_answers($paths); // Add own qtype stuff. $elename = 'algebravariable'; $elepath = $this->get_pathfor('/algebra_variables/algebra_variable'); // We used get_recommended_name() so this works. $paths[] = new restore_path_element($elename, $elepath); $elename = 'algebra'; $elepath = $this->get_pathfor('/algebra'); // We used get_recommended_name() so this works. $paths[] = new restore_path_element($elename, $elepath); return $paths; // And we return the interesting paths. } /** * Process the qtype/algebra element */ public function process_algebra($data) { global $DB; $data = (object)$data; $oldid = $data->id; // Detect if the question is created or mapped. $oldquestionid = $this->get_old_parentid('question'); $newquestionid = $this->get_new_parentid('question'); $questioncreated = $this->get_mappingid('question_created', $oldquestionid) ? true : false; // If the question has been created by restore, we need to create its qtype_algebra_options too. if ($questioncreated) { // Adjust some columns. $data->questionid = $newquestionid; // Insert record. $newitemid = $DB->insert_record('qtype_algebra_options', $data); // Create mapping (needed for decoding links). $this->set_mapping('qtype_algebra_options', $oldid, $newitemid); } // Nothing to remap if the question already existed. } /** * Process the qtype/algebravariable element */ public function process_algebravariable($data) { global $DB; $data = (object)$data; $oldid = $data->id; // Detect if the question is created or mapped. $oldquestionid = $this->get_old_parentid('question'); $newquestionid = $this->get_new_parentid('question'); $questioncreated = $this->get_mappingid('question_created', $oldquestionid) ? true : false; // If the question has been created by restore, we need to create its qtype_algebra_variables too. if ($questioncreated) { // Adjust some columns. $data->questionid = $newquestionid; // Insert record. $newitemid = $DB->insert_record('qtype_algebra_variables', $data); // Create mapping. $this->set_mapping('qtype_algebra_variable', $oldid, $newitemid); } // Nothing to remap if the question already existed. } }