Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Restore 2.0 for developers

From MoodleDocs
Revision as of 02:35, 10 December 2010 by jerome mouneyrac (talk | contribs) (New page: <code php> →‎* * Structure step to restore one choice activity: class restore_choice_activity_structure_step extends restore_activity_structure_step { protected function define_st...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

/**

* Structure step to restore one choice activity
*/

class restore_choice_activity_structure_step extends restore_activity_structure_step {

   protected function define_structure() {
       $paths = array();
       $userinfo = $this->get_setting_value('userinfo');
       $paths[] = new restore_path_element('choice', '/activity/choice');
       $paths[] = new restore_path_element('choice_option', '/activity/choice/options/option');
       if ($userinfo) {
           $paths[] = new restore_path_element('choice_answer', '/activity/choice/answers/answer');
       }
       // Return the paths wrapped into standard activity structure
       return $this->prepare_activity_structure($paths);
   }
   protected function process_choice($data) {
       global $DB;
       $data = (object)$data;
       $oldid = $data->id;
       $data->course = $this->get_courseid();
       $data->timeopen = $this->apply_date_offset($data->timeopen);
       $data->timeclose = $this->apply_date_offset($data->timeclose);
       $data->timemodified = $this->apply_date_offset($data->timemodified);
       // insert the choice record
       $newitemid = $DB->insert_record('choice', $data);
       // immediately after inserting "activity" record, call this
       $this->apply_activity_instance($newitemid);
   }
   protected function process_choice_option($data) {
       global $DB;
       $data = (object)$data;
       $oldid = $data->id;
       $data->choiceid = $this->get_new_parentid('choice');
       $data->timemodified = $this->apply_date_offset($data->timemodified);
       $newitemid = $DB->insert_record('choice_options', $data);
       $this->set_mapping('choice_option', $oldid, $newitemid);
   }
   protected function process_choice_answer($data) {
       global $DB;
       $data = (object)$data;
       $oldid = $data->id;
       $data->choiceid = $this->get_new_parentid('choice');
       $data->optionid = $this->get_mappingid('choice_option', $oldid);
       $data->userid = $this->get_mappingid('user', $data->userid);
       $data->timemodified = $this->apply_date_offset($data->timemodified);
       $newitemid = $DB->insert_record('choice_answers', $data);
       // No need to save this mapping as far as nothing depend on it
       // (child paths, file areas nor links decoder)
   }
   protected function after_execute() {
       // Add choice related files, no need to match by itemname (just internally handled context)
       $this->add_related_files('mod_choice', 'intro', null);
   }

}

Some specificities