mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
MDL-76583 core_external: Migrate external_settings class
This commit is contained in:
parent
e460e2e43f
commit
ecbb31b160
184
lib/external/classes/external_settings.php
vendored
Normal file
184
lib/external/classes/external_settings.php
vendored
Normal file
@ -0,0 +1,184 @@
|
||||
<?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/>.
|
||||
|
||||
namespace core_external;
|
||||
|
||||
/**
|
||||
* Singleton to handle the external settings.
|
||||
*
|
||||
* We use singleton to encapsulate the "logic"
|
||||
*
|
||||
* @package core_webservice
|
||||
* @copyright 2012 Jerome Mouneyrac
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since Moodle 2.3
|
||||
*/
|
||||
class external_settings {
|
||||
|
||||
/** @var object the singleton instance */
|
||||
public static $instance = null;
|
||||
|
||||
/** @var boolean Should the external function return raw text or formatted */
|
||||
private $raw = false;
|
||||
|
||||
/** @var boolean Should the external function filter the text */
|
||||
private $filter = false;
|
||||
|
||||
/** @var boolean Should the external function rewrite plugin file url */
|
||||
private $fileurl = true;
|
||||
|
||||
/** @var string In which file should the urls be rewritten */
|
||||
private $file = 'webservice/pluginfile.php';
|
||||
|
||||
/** @var string The session lang */
|
||||
private $lang = '';
|
||||
|
||||
/** @var string The timezone to use during this WS request */
|
||||
private $timezone = '';
|
||||
|
||||
/**
|
||||
* Constructor - protected - can not be instanciated
|
||||
*/
|
||||
protected function __construct() {
|
||||
if ((AJAX_SCRIPT == false) && (CLI_SCRIPT == false) && (WS_SERVER == false)) {
|
||||
// For normal pages, the default should match the default for format_text.
|
||||
$this->filter = true;
|
||||
// Use pluginfile.php for web requests.
|
||||
$this->file = 'pluginfile.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return only one instance
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self();
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set raw
|
||||
*
|
||||
* @param boolean $raw
|
||||
*/
|
||||
public function set_raw($raw) {
|
||||
$this->raw = $raw;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get raw
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function get_raw() {
|
||||
return $this->raw;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set filter
|
||||
*
|
||||
* @param boolean $filter
|
||||
*/
|
||||
public function set_filter($filter) {
|
||||
$this->filter = $filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get filter
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function get_filter() {
|
||||
return $this->filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set fileurl
|
||||
*
|
||||
* @param bool $fileurl
|
||||
*/
|
||||
public function set_fileurl($fileurl) {
|
||||
$this->fileurl = $fileurl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get fileurl
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function get_fileurl() {
|
||||
return $this->fileurl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set file
|
||||
*
|
||||
* @param string $file
|
||||
*/
|
||||
public function set_file($file) {
|
||||
$this->file = $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_file() {
|
||||
return $this->file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set lang
|
||||
*
|
||||
* @param string $lang
|
||||
*/
|
||||
public function set_lang($lang) {
|
||||
$this->lang = $lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get lang
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_lang() {
|
||||
return $this->lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set timezone
|
||||
*
|
||||
* @param string $timezone
|
||||
*/
|
||||
public function set_timezone($timezone) {
|
||||
$this->timezone = $timezone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get timezone
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_timezone() {
|
||||
return $this->timezone;
|
||||
}
|
||||
}
|
59
lib/external/tests/external_settings_test.php
vendored
Normal file
59
lib/external/tests/external_settings_test.php
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
<?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/>.
|
||||
|
||||
namespace core_external;
|
||||
|
||||
/**
|
||||
* Unit tests for core_external\external_settings.
|
||||
*
|
||||
* @package core_external
|
||||
* @category test
|
||||
* @copyright 2022 Andrew Lyons <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
|
||||
* @covers \core_external\external_settings
|
||||
*/
|
||||
class external_settings_test extends \advanced_testcase {
|
||||
/**
|
||||
* Tests for external_settings class.
|
||||
*/
|
||||
public function test_external_settings() {
|
||||
|
||||
$settings = external_settings::get_instance();
|
||||
$currentraw = $settings->get_raw();
|
||||
$currentfilter = $settings->get_filter();
|
||||
$currentfile = $settings->get_file();
|
||||
$currentfileurl = $settings->get_fileurl();
|
||||
|
||||
$this->assertInstanceOf(external_settings::class, $settings);
|
||||
|
||||
// Check apis.
|
||||
$settings->set_file('plugin.php');
|
||||
$this->assertEquals('plugin.php', $settings->get_file());
|
||||
$settings->set_filter(false);
|
||||
$this->assertFalse($settings->get_filter());
|
||||
$settings->set_fileurl(false);
|
||||
$this->assertFalse($settings->get_fileurl());
|
||||
$settings->set_raw(true);
|
||||
$this->assertTrue($settings->get_raw());
|
||||
|
||||
// Restore original values.
|
||||
$settings->set_file($currentfile);
|
||||
$settings->set_filter($currentfilter);
|
||||
$settings->set_fileurl($currentfileurl);
|
||||
$settings->set_raw($currentraw);
|
||||
}
|
||||
|
||||
}
|
@ -36,6 +36,7 @@ class_alias(\core_external\external_function_parameters::class, 'external_functi
|
||||
class_alias(\core_external\util::class, 'external_util');
|
||||
class_alias(\core_external\external_files::class, 'external_files');
|
||||
class_alias(\core_external\external_warnings::class, 'external_warnings');
|
||||
class_alias(\core_external\external_settings::class, 'external_settings');
|
||||
|
||||
/**
|
||||
* Generate a token
|
||||
@ -438,170 +439,3 @@ function external_log_token_request($token) {
|
||||
\core\task\manager::reschedule_or_queue_adhoc_task($task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton to handle the external settings.
|
||||
*
|
||||
* We use singleton to encapsulate the "logic"
|
||||
*
|
||||
* @package core_webservice
|
||||
* @copyright 2012 Jerome Mouneyrac
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since Moodle 2.3
|
||||
*/
|
||||
class external_settings {
|
||||
|
||||
/** @var object the singleton instance */
|
||||
public static $instance = null;
|
||||
|
||||
/** @var boolean Should the external function return raw text or formatted */
|
||||
private $raw = false;
|
||||
|
||||
/** @var boolean Should the external function filter the text */
|
||||
private $filter = false;
|
||||
|
||||
/** @var boolean Should the external function rewrite plugin file url */
|
||||
private $fileurl = true;
|
||||
|
||||
/** @var string In which file should the urls be rewritten */
|
||||
private $file = 'webservice/pluginfile.php';
|
||||
|
||||
/** @var string The session lang */
|
||||
private $lang = '';
|
||||
|
||||
/** @var string The timezone to use during this WS request */
|
||||
private $timezone = '';
|
||||
|
||||
/**
|
||||
* Constructor - protected - can not be instanciated
|
||||
*/
|
||||
protected function __construct() {
|
||||
if ((AJAX_SCRIPT == false) && (CLI_SCRIPT == false) && (WS_SERVER == false)) {
|
||||
// For normal pages, the default should match the default for format_text.
|
||||
$this->filter = true;
|
||||
// Use pluginfile.php for web requests.
|
||||
$this->file = 'pluginfile.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return only one instance
|
||||
*
|
||||
* @return \external_settings
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new external_settings;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set raw
|
||||
*
|
||||
* @param boolean $raw
|
||||
*/
|
||||
public function set_raw($raw) {
|
||||
$this->raw = $raw;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get raw
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function get_raw() {
|
||||
return $this->raw;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set filter
|
||||
*
|
||||
* @param boolean $filter
|
||||
*/
|
||||
public function set_filter($filter) {
|
||||
$this->filter = $filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get filter
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function get_filter() {
|
||||
return $this->filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set fileurl
|
||||
*
|
||||
* @param boolean $fileurl
|
||||
*/
|
||||
public function set_fileurl($fileurl) {
|
||||
$this->fileurl = $fileurl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get fileurl
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function get_fileurl() {
|
||||
return $this->fileurl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set file
|
||||
*
|
||||
* @param string $file
|
||||
*/
|
||||
public function set_file($file) {
|
||||
$this->file = $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_file() {
|
||||
return $this->file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set lang
|
||||
*
|
||||
* @param string $lang
|
||||
*/
|
||||
public function set_lang($lang) {
|
||||
$this->lang = $lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get lang
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_lang() {
|
||||
return $this->lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set timezone
|
||||
*
|
||||
* @param string $timezone
|
||||
*/
|
||||
public function set_timezone($timezone) {
|
||||
$this->timezone = $timezone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get timezone
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_timezone() {
|
||||
return $this->timezone;
|
||||
}
|
||||
}
|
||||
|
@ -43,36 +43,6 @@ class externallib_test extends \advanced_testcase {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for external_settings class.
|
||||
*/
|
||||
public function test_external_settings() {
|
||||
|
||||
$settings = \external_settings::get_instance();
|
||||
$currentraw = $settings->get_raw();
|
||||
$currentfilter = $settings->get_filter();
|
||||
$currentfile = $settings->get_file();
|
||||
$currentfileurl = $settings->get_fileurl();
|
||||
|
||||
$this->assertInstanceOf(\external_settings::class, $settings);
|
||||
|
||||
// Check apis.
|
||||
$settings->set_file('plugin.php');
|
||||
$this->assertEquals('plugin.php', $settings->get_file());
|
||||
$settings->set_filter(false);
|
||||
$this->assertFalse($settings->get_filter());
|
||||
$settings->set_fileurl(false);
|
||||
$this->assertFalse($settings->get_fileurl());
|
||||
$settings->set_raw(true);
|
||||
$this->assertTrue($settings->get_raw());
|
||||
|
||||
// Restore original values.
|
||||
$settings->set_file($currentfile);
|
||||
$settings->set_filter($currentfilter);
|
||||
$settings->set_fileurl($currentfileurl);
|
||||
$settings->set_raw($currentraw);
|
||||
}
|
||||
|
||||
public function test_external_format_text() {
|
||||
$settings = \external_settings::get_instance();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user