AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Support for backup API** @package gradingform_rubric* @copyright 2011 David Mudrak <david@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();/*** Defines rubric backup structures** @package gradingform_rubric* @copyright 2011 David Mudrak <david@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class backup_gradingform_rubric_plugin extends backup_gradingform_plugin {/*** Declares rubric structures to append to the grading form definition*/protected function define_definition_plugin_structure() {// Append data only if the grand-parent element has 'method' set to 'rubric'$plugin = $this->get_plugin_element(null, '../../method', 'rubric');// Create a visible container for our data$pluginwrapper = new backup_nested_element($this->get_recommended_name());// Connect our visible container to the parent$plugin->add_child($pluginwrapper);// Define our elements$criteria = new backup_nested_element('criteria');$criterion = new backup_nested_element('criterion', array('id'), array('sortorder', 'description', 'descriptionformat'));$levels = new backup_nested_element('levels');$level = new backup_nested_element('level', array('id'), array('score', 'definition', 'definitionformat'));// Build elements hierarchy$pluginwrapper->add_child($criteria);$criteria->add_child($criterion);$criterion->add_child($levels);$levels->add_child($level);// Set sources to populate the data$criterion->set_source_table('gradingform_rubric_criteria',array('definitionid' => backup::VAR_PARENTID));$level->set_source_table('gradingform_rubric_levels',array('criterionid' => backup::VAR_PARENTID));// no need to annotate ids or files yet (one day when criterion definition supports// embedded files, they must be annotated here)return $plugin;}/*** Declares rubric structures to append to the grading form instances*/protected function define_instance_plugin_structure() {// Append data only if the ancestor 'definition' element has 'method' set to 'rubric'$plugin = $this->get_plugin_element(null, '../../../../method', 'rubric');// Create a visible container for our data$pluginwrapper = new backup_nested_element($this->get_recommended_name());// Connect our visible container to the parent$plugin->add_child($pluginwrapper);// Define our elements$fillings = new backup_nested_element('fillings');$filling = new backup_nested_element('filling', array('id'), array('criterionid', 'levelid', 'remark', 'remarkformat'));// Build elements hierarchy$pluginwrapper->add_child($fillings);$fillings->add_child($filling);// Set sources to populate the data// Binding criterionid to ensure it's existence$filling->set_source_sql('SELECT rf.*FROM {gradingform_rubric_fillings} rfJOIN {grading_instances} gi ON gi.id = rf.instanceidJOIN {gradingform_rubric_criteria} rc ON rc.id = rf.criterionid AND gi.definitionid = rc.definitionidWHERE rf.instanceid = :instanceid',array('instanceid' => backup::VAR_PARENTID));// no need to annotate ids or files yet (one day when remark field supports// embedded fileds, they must be annotated here)return $plugin;}}