See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 39 and 401]
1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * @package moodlecore 20 * @subpackage backup-plan 21 * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 /** 26 * Implementable class defining the needed stuf for one backup plan 27 * 28 * TODO: Finish phpdocs 29 */ 30 class backup_plan extends base_plan implements loggable { 31 32 protected $controller; // The backup controller building/executing this plan 33 protected $basepath; // Fullpath to dir where backup is created 34 protected $excludingdactivities; 35 36 /** 37 * The role ids to keep in a copy operation. 38 * @var array 39 */ 40 protected $keptroles = array(); 41 42 /** 43 * Constructor - instantiates one object of this class 44 */ 45 public function __construct($controller) { 46 if (! $controller instanceof backup_controller) { 47 throw new backup_plan_exception('wrong_backup_controller_specified'); 48 } 49 $backuptempdir = make_backup_temp_directory(''); 50 $this->controller = $controller; 51 $this->basepath = $backuptempdir . '/' . $controller->get_backupid(); 52 $this->excludingdactivities = false; 53 parent::__construct('backup_plan'); 54 } 55 56 /** 57 * Destroy all circular references. It helps PHP 5.2 a lot! 58 */ 59 public function destroy() { 60 // No need to destroy anything recursively here, direct reset 61 $this->controller = null; 62 // Delegate to base plan the rest 63 parent::destroy(); 64 } 65 66 public function build() { 67 backup_factory::build_plan($this->controller); // Dispatch to correct format 68 $this->built = true; 69 } 70 71 public function get_backupid() { 72 return $this->controller->get_backupid(); 73 } 74 75 public function get_type() { 76 return $this->controller->get_type(); 77 } 78 79 public function get_mode() { 80 return $this->controller->get_mode(); 81 } 82 83 public function get_courseid() { 84 return $this->controller->get_courseid(); 85 } 86 87 public function get_basepath() { 88 return $this->basepath; 89 } 90 91 public function get_logger() { 92 return $this->controller->get_logger(); 93 } 94 95 /** 96 * Gets the progress reporter, which can be used to report progress within 97 * the backup or restore process. 98 * 99 * @return \core\progress\base Progress reporting object 100 */ 101 public function get_progress() { 102 return $this->controller->get_progress(); 103 } 104 105 public function is_excluding_activities() { 106 return $this->excludingdactivities; 107 } 108 109 public function set_excluding_activities() { 110 $this->excludingdactivities = true; 111 } 112 113 /** 114 * Sets the user roles that should be kept in the destination course 115 * for a course copy operation. 116 * 117 * @param array $roleids 118 */ 119 public function set_kept_roles(array $roleids): void { 120 $this->keptroles = $roleids; 121 } 122 123 /** 124 * Get the user roles that should be kept in the destination course 125 * for a course copy operation. 126 * 127 * @return array 128 */ 129 public function get_kept_roles(): array { 130 return $this->keptroles; 131 } 132 133 public function log($message, $level, $a = null, $depth = null, $display = false) { 134 backup_helper::log($message, $level, $a, $depth, $display, $this->get_logger()); 135 } 136 137 /** 138 * Function responsible for executing the tasks of any plan 139 */ 140 public function execute() { 141 if ($this->controller->get_status() != backup::STATUS_AWAITING) { 142 throw new backup_controller_exception('backup_not_executable_awaiting_required', $this->controller->get_status()); 143 } 144 $this->controller->set_status(backup::STATUS_EXECUTING); 145 parent::execute(); 146 $this->controller->set_status(backup::STATUS_FINISHED_OK); 147 148 if ($this->controller->get_type() === backup::TYPE_1COURSE) { 149 // Trigger a course_backup_created event. 150 $otherarray = array('format' => $this->controller->get_format(), 151 'mode' => $this->controller->get_mode(), 152 'interactive' => $this->controller->get_interactive(), 153 'type' => $this->controller->get_type(), 154 'backupid' => $this->controller->get_backupid() 155 ); 156 $event = \core\event\course_backup_created::create(array( 157 'objectid' => $this->get_courseid(), 158 'context' => context_course::instance($this->get_courseid()), 159 'other' => $otherarray 160 )); 161 $event->trigger(); 162 } 163 } 164 } 165 166 /* 167 * Exception class used by all the @backup_plan stuff 168 */ 169 class backup_plan_exception extends base_plan_exception { 170 171 public function __construct($errorcode, $a=NULL, $debuginfo=null) { 172 parent::__construct($errorcode, $a, $debuginfo); 173 } 174 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body