From a7ce4231bed32068222a7f6a912d73eb460c692c Mon Sep 17 00:00:00 2001 From: Eloy Lafuente Date: Mon, 19 Jul 2010 13:59:54 +0000 Subject: [PATCH] MDL-21432 backup - added role parser processor to be used on prechecks/execution --- .../restore_roles_parser_processor.class.php | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 backup/util/helper/restore_roles_parser_processor.class.php diff --git a/backup/util/helper/restore_roles_parser_processor.class.php b/backup/util/helper/restore_roles_parser_processor.class.php new file mode 100644 index 00000000000..f051af9e8a5 --- /dev/null +++ b/backup/util/helper/restore_roles_parser_processor.class.php @@ -0,0 +1,57 @@ +. + +/** + * @package moodlecore + * @subpackage backup-helper + * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require_once($CFG->dirroot.'/backup/util/xml/parser/processors/grouped_parser_processor.class.php'); + +/** + * helper implementation of grouped_parser_processor that will + * load all the contents of one roles.xml (roles description) file to the backup_ids table + * storing the whole structure there for later processing. + * Note: only "needed" roles are loaded (must have roleref record in backup_ids) + * + * TODO: Complete phpdocs + */ +class restore_roles_parser_processor extends grouped_parser_processor { + + protected $restoreid; + + public function __construct($restoreid) { + $this->restoreid = $restoreid; + parent::__construct(array()); + // Set the paths we are interested on, returning all them grouped under user + $this->add_path('/roles_definition/role'); + } + + protected function dispatch_chunk($data) { + // Received one role chunck, we are going to store it into backup_ids + // table, with name = role + $itemname = 'role'; + $itemid = $data['tags']['id']; + $info = $data['tags']; + // Only load it if needed (exist same roleref itemid in table) + if (restore_dbops::get_backup_ids_record($this->restoreid, 'roleref', $itemid)) { + restore_dbops::set_backup_ids_record($this->restoreid, $itemname, $itemid, 0, null, $info); + } + } +} -- 2.43.0