public function test_external_format_string() { $this->resetAfterTest(); $settings = external_settings::get_instance(); $currentraw = $settings->get_raw(); $currentfilter = $settings->get_filter(); // Enable multilang filter to on content and heading. filter_set_global_state('multilang', TEXTFILTER_ON); filter_set_applies_to_strings('multilang', 1); $filtermanager = filter_manager::instance(); $filtermanager->reset_caches(); $settings->set_raw(true); $settings->set_filter(true); $context = context_system::instance(); $test = '<span lang="en" class="multilang">EN</span><span lang="fr" class="multilang">FR</span> ' . '<script>hi</script> <h3>there</h3>!'; $correct = $test; $this->assertSame($correct, external_format_string($test, $context->id)); $settings->set_raw(false); $settings->set_filter(false); $test = '<span lang="en" class="multilang">EN</span><span lang="fr" class="multilang">FR</span> ' . '<script>hi</script> <h3>there</h3>?'; $correct = 'ENFR hi there?'; $this->assertSame($correct, external_format_string($test, $context->id)); $settings->set_filter(true); $test = '<span lang="en" class="multilang">EN</span><span lang="fr" class="multilang">FR</span> ' . '<script>hi</script> <h3>there</h3>@'; $correct = 'EN hi there@'; $this->assertSame($correct, external_format_string($test, $context->id)); // Filters can be opted out. $test = '<span lang="en" class="multilang">EN</span><span lang="fr" class="multilang">FR</span> ' . '<script>hi</script> <h3>there</h3>%'; $correct = 'ENFR hi there%'; $this->assertSame($correct, external_format_string($test, $context->id, false, ['filter' => false])); $settings->set_raw($currentraw); $settings->set_filter($currentfilter); }
public function test_external_format_string() { $settings = external_settings::get_instance(); $currentraw = $settings->get_raw(); $currentfilter = $settings->get_filter(); $settings->set_raw(true); $context = context_system::instance(); $test = '$$ \pi $$ <script>hi</script> <h3>there</h3>'; $correct = $test; $this->assertSame(external_format_string($test, $context->id), $correct); $settings->set_raw(false); $test = '$$ \pi $$<script>hi</script> <h3>there</h3>'; $correct = '$$ \pi $$hi there'; $this->assertSame(external_format_string($test, $context->id), $correct); $settings->set_raw($currentraw); $settings->set_filter($currentfilter); }
/** * Return only one instance * * @return object */ public static function get_instance() { if (self::$instance === null) { self::$instance = new external_settings(); } return self::$instance; }
/** * Intercept some moodlewssettingXXX $_GET and $_POST parameter * that are related to the web service call and are not the function parameters */ protected function set_web_service_call_settings() { global $CFG; // Default web service settings. // Must be the same XXX key name as the external_settings::set_XXX function. // Must be the same XXX ws parameter name as 'moodlewssettingXXX'. $externalsettings = array('raw' => false, 'fileurl' => true, 'filter' => false); // Load the external settings with the web service settings. $settings = external_settings::get_instance(); foreach ($externalsettings as $name => $default) { $wsparamname = 'moodlewssetting' . $name; // Retrieve and remove the setting parameter from the request. $value = optional_param($wsparamname, $default, PARAM_BOOL); unset($_GET[$wsparamname]); unset($_POST[$wsparamname]); $functioname = 'set_' . $name; $settings->{$functioname}($value); } }
require_once(__DIR__ . '/../../config.php'); require_once($CFG->libdir . '/externallib.php'); define('PREFERRED_RENDERER_TARGET', RENDERER_TARGET_GENERAL); $rawjson = file_get_contents('php://input'); $requests = json_decode($rawjson, true); if ($requests === null) { $lasterror = json_last_error_msg(); throw new coding_exception('Invalid json in request: ' . $lasterror); } $responses = array(); // Defines the external settings required for Ajax processing. $settings = external_settings::get_instance(); $settings->set_file('pluginfile.php'); $settings->set_fileurl(true); $settings->set_filter(true); $settings->set_raw(false); foreach ($requests as $request) { $response = array(); $methodname = clean_param($request['methodname'], PARAM_ALPHANUMEXT); $index = clean_param($request['index'], PARAM_INT); $args = $request['args']; $response = external_api::call_external_function($methodname, $args, true); $responses[$index] = $response; if ($response['error']) { // Do not process the remaining requests.