29a541724f
This has been generated running the following Sniff, part of the Moodle's CodeSniffer standard: - PSR2.Methods.MethodDeclaration It just ensures all the function declarations have the correct order for: - abstract and final. - visibility (public, protected, private). - static. So, all the lines modified by this commit are function declarations and the only changes are in the positions of those keywords.
82 lines
2.8 KiB
PHP
82 lines
2.8 KiB
PHP
<?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/>.
|
|
|
|
/**
|
|
* Exporter based on persistent.
|
|
*
|
|
* @package core
|
|
* @copyright 2015 Damyon Wiese
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
namespace core\external;
|
|
|
|
use coding_exception;
|
|
|
|
/**
|
|
* Abstract exporter based on the persistent model.
|
|
*
|
|
* This automatically fills in the properties of the exporter from those of the persistent.
|
|
*
|
|
* @copyright 2015 Damyon Wiese
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
abstract class persistent_exporter extends exporter {
|
|
|
|
/** @var \core\persistent The persistent object we will export. */
|
|
protected $persistent = null;
|
|
|
|
/**
|
|
* Constructor - saves the persistent object, and the related objects.
|
|
*
|
|
* @param \core\persistent $persistent The persistent object to export.
|
|
* @param array $related - An optional list of pre-loaded objects related to this persistent.
|
|
*/
|
|
public function __construct(\core\persistent $persistent, $related = array()) {
|
|
$classname = static::define_class();
|
|
if (!$persistent instanceof $classname) {
|
|
throw new coding_exception('Invalid type for persistent. ' .
|
|
'Expected: ' . $classname . ' got: ' . get_class($persistent));
|
|
}
|
|
$this->persistent = $persistent;
|
|
|
|
if (method_exists($this->persistent, 'get_context') && !isset($this->related['context'])) {
|
|
$this->related['context'] = $this->persistent->get_context();
|
|
}
|
|
|
|
$data = $persistent->to_record();
|
|
parent::__construct($data, $related);
|
|
}
|
|
|
|
/**
|
|
* Persistent exporters get their standard properties from the persistent class.
|
|
*
|
|
* @return array Keys are the property names, and value their definition.
|
|
*/
|
|
final protected static function define_properties() {
|
|
$classname = static::define_class();
|
|
return $classname::properties_definition();
|
|
}
|
|
|
|
/**
|
|
* Returns the specific class the persistent should be an instance of.
|
|
*
|
|
* @return string
|
|
*/
|
|
protected static function define_class() {
|
|
throw new coding_exception('define_class() must be overidden.');
|
|
}
|
|
}
|