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/>./*** Define all the backup steps that will be used by the backup_reengagement_activity_task** @package mod_reengagement* @author Peter Bulmer <peter.bulmer@catlayst.net.nz>* @copyright 2016 Catalyst IT {@link http://www.catalyst.net.nz}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();require_once($CFG->dirroot . '/mod/reengagement/backup/moodle2/restore_reengagement_stepslib.php');/*** Task that provides all the settings and steps to perform one complete restore of the activity.** @package mod_reengagement* @author Peter Bulmer <peter.bulmer@catlayst.net.nz>* @copyright 2016 Catalyst IT {@link http://www.catalyst.net.nz}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class restore_reengagement_activity_task extends restore_activity_task {/*** Define (add) particular settings this activity can have*/protected function define_my_settings() {// No particular settings for this activity.}/*** Define (add) particular steps this activity can have.*/protected function define_my_steps() {// The reengagement only has one structure step.$this->add_step(new restore_reengagement_activity_structure_step('reengagement_structure', 'reengagement.xml'));}/*** Define the contents in the activity that must be* processed by the link decoder*/public static function define_decode_contents() {$contents = array();$contents[] = new restore_decode_content('reengagement', 'emailcontent');$contents[] = new restore_decode_content('reengagement', 'emailcontentmanager');$contents[] = new restore_decode_content('reengagement', 'emailcontentthirdparty');return $contents;}/*** Define the decoding rules for links belonging* to the activity to be executed by the link decoder*/public static function define_decode_rules() {$rules = array();$rules[] = new restore_decode_rule('STANDDOWNVIEWBYID', '/mod/reengagement/view.php?id=$1', 'course_module');$rules[] = new restore_decode_rule('STANDDOWNINDEX', '/mod/reengagement/index.php?id=$1', 'course');return $rules;}/*** Define the restore log rules that will be applied* by the {@see restore_logs_processor} when restoring* reengagement logs. It must return one array* of {@see restore_log_rule} objects*/public static function define_restore_log_rules() {$rules = array();return $rules;}/*** Define the restore log rules that will be applied* by the {@see restore_logs_processor} when restoring* course logs. It must return one array* of {@see restore_log_rule} objects** Note this rules are applied when restoring course logs* by the restore final task, but are defined here at* activity level. All them are rules not linked to any module instance (cmid = 0)*/public static function define_restore_log_rules_for_course() {$rules = array();// Fix old wrong uses (missing extension).$rules[] = new restore_log_rule('reengagement', 'view all', 'index?id={course}', null,null, null, 'index.php?id={course}');$rules[] = new restore_log_rule('reengagement', 'view all', 'index.php?id={course}', null);return $rules;}/*** The reengagement module has a suppresstarget which is a cmid, we need to update that accordingly, however,* in certain cases, that course may be restored to our target course* After the reengagement itself is restored, so we do the cmid mapping fix after the restore has finished.*/public function after_restore() {global $DB;$id = $this->get_activityid();$course = $this->get_courseid();$reengagement = $DB->get_record('reengagement', array('id' => $id));if (empty($reengagement)) {// Unexpected, but nothing needs doing.return;}if (empty($reengagement->suppresstarget)) {// Restored activity didn't have a targeted activity. Nothing needs mapping.return;}// Find the mapping between old course_module id and new course_module id.$map = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'course_module', $reengagement->suppresstarget);if ($map) {$newid = $map->newitemid;// Update cmid if the mapping exists.$reengagement->suppresstarget = $newid;$DB->update_record('reengagement', $reengagement);} else {// If there is no new cm, then the course we are targeting is not included in the backup// put out a log warning and set a target of 0. not much else we can do here// nb: according to wiki doc these logs go nowhere!$this->get_logger()->process("Failed to restore the suppressed email target in reengagement: '$id'. " ."Backup and restore of this item will not work correctly unless you include the required activity "."in the restore to course:$course.", backup::LOG_ERROR);$reengagement->suppresstarget = 0;$DB->update_record('reengagement', $reengagement);}}}