Differences Between: [Versions 311 and 402] [Versions 311 and 403]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Exporter based on persistent. 19 * 20 * @package core 21 * @copyright 2015 Damyon Wiese 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 namespace core\external; 25 defined('MOODLE_INTERNAL') || die(); 26 27 require_once($CFG->libdir . '/externallib.php'); 28 29 use coding_exception; 30 31 /** 32 * Abstract exporter based on the persistent model. 33 * 34 * This automatically fills in the properties of the exporter from those of the persistent. 35 * 36 * @copyright 2015 Damyon Wiese 37 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 38 */ 39 abstract class persistent_exporter extends exporter { 40 41 /** @var \core\persistent The persistent object we will export. */ 42 protected $persistent = null; 43 44 /** 45 * Constructor - saves the persistent object, and the related objects. 46 * 47 * @param \core\persistent $persistent The persistent object to export. 48 * @param array $related - An optional list of pre-loaded objects related to this persistent. 49 */ 50 public function __construct(\core\persistent $persistent, $related = array()) { 51 $classname = static::define_class(); 52 if (!$persistent instanceof $classname) { 53 throw new coding_exception('Invalid type for persistent. ' . 54 'Expected: ' . $classname . ' got: ' . get_class($persistent)); 55 } 56 $this->persistent = $persistent; 57 58 if (method_exists($this->persistent, 'get_context') && !isset($this->related['context'])) { 59 $this->related['context'] = $this->persistent->get_context(); 60 } 61 62 $data = $persistent->to_record(); 63 parent::__construct($data, $related); 64 } 65 66 /** 67 * Persistent exporters get their standard properties from the persistent class. 68 * 69 * @return array Keys are the property names, and value their definition. 70 */ 71 protected final static function define_properties() { 72 $classname = static::define_class(); 73 return $classname::properties_definition(); 74 } 75 76 /** 77 * Returns the specific class the persistent should be an instance of. 78 * 79 * @return string 80 */ 81 protected static function define_class() { 82 throw new coding_exception('define_class() must be overidden.'); 83 } 84 85 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body