From ecbb31b160bc3fd3a105a56f8724e3d18c1ec86e Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Wed, 7 Dec 2022 13:14:18 +0800 Subject: [PATCH] MDL-76583 core_external: Migrate external_settings class --- lib/external/classes/external_settings.php | 184 ++++++++++++++++++ lib/external/tests/external_settings_test.php | 59 ++++++ lib/externallib.php | 168 +--------------- lib/tests/externallib_test.php | 30 --- 4 files changed, 244 insertions(+), 197 deletions(-) create mode 100644 lib/external/classes/external_settings.php create mode 100644 lib/external/tests/external_settings_test.php diff --git a/lib/external/classes/external_settings.php b/lib/external/classes/external_settings.php new file mode 100644 index 00000000000..2752f0ac43e --- /dev/null +++ b/lib/external/classes/external_settings.php @@ -0,0 +1,184 @@ +. + +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; + } +} diff --git a/lib/external/tests/external_settings_test.php b/lib/external/tests/external_settings_test.php new file mode 100644 index 00000000000..e08c008f5e2 --- /dev/null +++ b/lib/external/tests/external_settings_test.php @@ -0,0 +1,59 @@ +. + +namespace core_external; + +/** + * Unit tests for core_external\external_settings. + * + * @package core_external + * @category test + * @copyright 2022 Andrew Lyons + * @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); + } + +} diff --git a/lib/externallib.php b/lib/externallib.php index 08dfc341d1a..8e1202bdabd 100644 --- a/lib/externallib.php +++ b/lib/externallib.php @@ -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; - } -} diff --git a/lib/tests/externallib_test.php b/lib/tests/externallib_test.php index 74ac6058449..5e12cd6273e 100644 --- a/lib/tests/externallib_test.php +++ b/lib/tests/externallib_test.php @@ -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();