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);
 }
Example #2
0
    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);
    }
Example #3
0
 /**
  * Return only one instance
  *
  * @return object
  */
 public static function get_instance()
 {
     if (self::$instance === null) {
         self::$instance = new external_settings();
     }
     return self::$instance;
 }
Example #4
0
 /**
  * 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);
     }
 }
Example #5
0
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.