protected function define_structure() { // To know if we are including userinfo $userinfo = $this->get_setting_value('userinfo'); // Define each element separated $rcontent = new backup_nested_element('rcontent', array('id'), array('course', 'name', 'intro', 'introformat', 'levelid', 'whatgrade', 'popup', 'popup_options', 'frame', 'width', 'height', 'timecreated', 'timemodified', 'levelcode', 'isbn', 'unitcode', 'activitycode')); $grades = new backup_nested_element('grades'); $grade = new backup_nested_element('grade', array('id'), array('userid', 'rcontentid', 'grade', 'mingrade', 'maxgrade', 'attempt', 'maxattempts', 'starttime', 'totaltime', 'maxtotaltime', 'status', 'comments', 'urlviewresults', 'sumweights', 'timecreated', 'timemodified', 'unitcode', 'activitycode')); $grades_details = new backup_nested_element('grades_details'); $grade_detail = new backup_nested_element('grade_detail', array('id'), array('userid', 'rcontentid', 'code', 'typeid', 'description', 'grade', 'mingrade', 'maxgrade', 'starttime', 'totaltime', 'maxtotaltime', 'attempt', 'maxattempts', 'weight', 'urlviewresults', 'timecreated', 'timemodified', 'unitcode', 'activitycode')); $track_credentials = new backup_nested_element('track_credentials'); $track_credential = new backup_nested_element('track_credential', array('id'), array('username', 'password', 'publisherid', 'timecreated', 'timemodified')); // Build the tree $rcontent->add_child($grades); $grades->add_child($grade); $grade->add_child($grades_details); $grades_details->add_child($grade_detail); $rcontent->add_child($track_credentials); $track_credentials->add_child($track_credential); // Define sources //$rcontent->set_source_table('rcontent', array('id' => backup::VAR_ACTIVITYID)); $rcontent->set_source_sql('SELECT rc.*,rlevel.code as levelcode, rcb.isbn as isbn, unit.code as unitcode, activity.code as activitycode FROM {rcontent} rc LEFT outer JOIN {rcommon_level} rlevel on rlevel.id=rc.levelid LEFT outer JOIN {rcommon_books} rcb on rcb.id=rc.bookid and rcb.levelid=rc.levelid LEFT outer JOIN {rcommon_books_units} unit on unit.id=rc.unitid and unit.bookid=rc.bookid LEFT outer JOIN {rcommon_books_activities} activity on activity.id=rc.activityid and activity.bookid=rc.bookid and activity.unitid = rc.unitid WHERE rc.id = ?', array(backup::VAR_ACTIVITYID)); // Use set_source_sql for other calls as set_source_table returns records in reverse order // and order is important for several rcontent fields - esp rcontent_scoes. $grade->set_source_sql(' SELECT rg.*, unit.code as unitcode, activity.code as activitycode FROM {rcontent_grades} rg INNER JOIN {rcontent} rc ON rc.id=rg.rcontentid LEFT outer JOIN {rcommon_books_units} unit on unit.id=rc.unitid and unit.bookid=rc.bookid LEFT outer JOIN {rcommon_books_activities} activity on activity.id=rc.activityid and activity.bookid=rc.bookid and activity.unitid = rc.unitid WHERE rg.rcontentid = :rcontent ORDER BY rg.id', array('rcontent' => backup::VAR_PARENTID)); $grade_detail->set_source_sql(' SELECT rc.*, unit.code as unitcode, activity.code as activitycode FROM {rcontent_grades_details} rg INNER JOIN {rcontent} rc ON rc.id=rg.rcontentid LEFT outer JOIN {rcommon_books_units} unit on unit.id=rc.unitid and unit.bookid=rc.bookid LEFT outer JOIN {rcommon_books_activities} activity on activity.id=rc.activityid and activity.bookid=rc.bookid and activity.unitid = rc.unitid WHERE rg.rcontentid = :rcontent ORDER BY rg.id', array('rcontent' => backup::VAR_PARENTID)); $track_credentials->set_source_sql(' SELECT * FROM {rcontent_track_credentials} ORDER BY id', array()); // Define id annotations $grade->annotate_ids('user', 'userid'); $grade_detail->annotate_ids('user', 'userid'); // Define file annotations $rcontent->annotate_files('mod_rcontent', 'intro', null); // This file area hasn't itemid // Return the root element (rcontent), wrapped into standard activity structure return $this->prepare_activity_structure($rcontent); }
/** * Define the structure for the links block. * @return void */ protected function define_structure() { // Define each element separated. $link = new backup_nested_element('link', null, array('id', 'linktext', 'url', 'notes', 'defaultshow', 'department')); // Define sources. $link->set_source_sql("SELECT * FROM {block_links}", array()); // Annotations (none). // Return the root element (links), wrapped into standard block structure. return $this->prepare_block_structure($link); }
protected function define_structure() { // Define each element separated $module = new backup_nested_element('module', array('id', 'version'), array('modulename', 'sectionid', 'sectionnumber', 'idnumber', 'added', 'score', 'indent', 'visible', 'visibleold', 'groupmode', 'groupingid', 'groupmembersonly', 'completion', 'completiongradeitemnumber', 'completionview', 'completionexpected', 'availablefrom', 'availableuntil', 'showavailability')); $availinfo = new backup_nested_element('availability_info'); $availability = new backup_nested_element('availability', array('id'), array('sourcecmid', 'requiredcompletion', 'gradeitemid', 'grademin', 'grademax')); // Define the tree $module->add_child($availinfo); $availinfo->add_child($availability); // Set the sources $module->set_source_sql(' SELECT cm.*, m.version, m.name AS modulename, s.id AS sectionid, s.section AS sectionnumber FROM {course_modules} cm JOIN {modules} m ON m.id = cm.module JOIN {course_sections} s ON s.id = cm.section WHERE cm.id = ?', array(backup::VAR_MODID)); $availability->set_source_table('course_modules_availability', array('coursemoduleid' => backup::VAR_MODID)); // Define annotations $module->annotate_ids('grouping', 'groupingid'); // Return the root element ($module) return $module; }