Merge branch 'MDL-67167-master' of git://github.com/jleyva/moodle

This commit is contained in:
Sara Arjona 2019-11-09 08:50:15 +01:00
commit 75bf9a3ab8
2 changed files with 15 additions and 8 deletions

View file

@ -71,7 +71,7 @@ class core_block_external extends external_api {
new external_single_structure( new external_single_structure(
array( array(
'name' => new external_value(PARAM_RAW, 'Name.'), 'name' => new external_value(PARAM_RAW, 'Name.'),
'value' => new external_value(PARAM_RAW, 'Value.'), 'value' => new external_value(PARAM_RAW, 'JSON encoded representation of the config value.'),
'type' => new external_value(PARAM_ALPHA, 'Type (instance or plugin).'), 'type' => new external_value(PARAM_ALPHA, 'Type (instance or plugin).'),
) )
), ),
@ -125,7 +125,7 @@ class core_block_external extends external_api {
foreach ((array) $data as $name => $value) { foreach ((array) $data as $name => $value) {
$block['configs'][] = [ $block['configs'][] = [
'name' => $name, 'name' => $name,
'value' => $value, 'value' => json_encode($value), // Always JSON encode, we may receive non-scalar values.
'type' => $type, 'type' => $type,
]; ];
} }

View file

@ -177,6 +177,9 @@ class core_block_externallib_testcase extends externallib_advanced_testcase {
$blocks = $page->blocks->get_blocks_for_region($page->blocks->get_default_region()); $blocks = $page->blocks->get_blocks_for_region($page->blocks->get_default_region());
$block = end($blocks); $block = end($blocks);
$block = block_instance('html', $block->instance); $block = block_instance('html', $block->instance);
$nonscalar = [
'something' => true,
];
$configdata = (object) [ $configdata = (object) [
'title' => $title, 'title' => $title,
'text' => [ 'text' => [
@ -184,6 +187,7 @@ class core_block_externallib_testcase extends externallib_advanced_testcase {
'text' => $body, 'text' => $body,
'format' => $bodyformat, 'format' => $bodyformat,
], ],
'nonscalar' => $nonscalar
]; ];
$block->instance_config_save((object) $configdata); $block->instance_config_save((object) $configdata);
$filename = 'img.png'; $filename = 'img.png';
@ -215,17 +219,20 @@ class core_block_externallib_testcase extends externallib_advanced_testcase {
$this->assertEquals($newblock, $result['blocks'][0]['name']); $this->assertEquals($newblock, $result['blocks'][0]['name']);
$configcounts = 0; $configcounts = 0;
foreach ($result['blocks'][0]['configs'] as $config) { foreach ($result['blocks'][0]['configs'] as $config) {
if ($config['type'] = 'plugin' && $config['name'] == 'allowcssclasses' && $config['value'] == 0) { if ($config['type'] = 'plugin' && $config['name'] == 'allowcssclasses' && $config['value'] == json_encode('0')) {
$configcounts++; $configcounts++;
} else if ($config['type'] = 'instance' && $config['name'] == 'text' && $config['value'] == $body) { } else if ($config['type'] = 'instance' && $config['name'] == 'text' && $config['value'] == json_encode($body)) {
$configcounts++; $configcounts++;
} else if ($config['type'] = 'instance' && $config['name'] == 'title' && $config['value'] == $title) { } else if ($config['type'] = 'instance' && $config['name'] == 'title' && $config['value'] == json_encode($title)) {
$configcounts++; $configcounts++;
} else if ($config['type'] = 'instance' && $config['name'] == 'format' && $config['value'] == 0) { } else if ($config['type'] = 'instance' && $config['name'] == 'format' && $config['value'] == json_encode('0')) {
$configcounts++;
} else if ($config['type'] = 'instance' && $config['name'] == 'nonscalar' &&
$config['value'] == json_encode($nonscalar)) {
$configcounts++; $configcounts++;
} }
} }
$this->assertEquals(4, $configcounts); $this->assertEquals(5, $configcounts);
} }
/** /**
@ -261,7 +268,7 @@ class core_block_externallib_testcase extends externallib_advanced_testcase {
// Check the configuration returned for this default block. // Check the configuration returned for this default block.
if ($block['name'] == 'recentlyaccessedcourses') { if ($block['name'] == 'recentlyaccessedcourses') {
$this->assertEquals('displaycategories', $block['configs'][0]['name']); $this->assertEquals('displaycategories', $block['configs'][0]['name']);
$this->assertEquals(0, $block['configs'][0]['value']); $this->assertEquals(json_encode('0'), $block['configs'][0]['value']);
$this->assertEquals('plugin', $block['configs'][0]['type']); $this->assertEquals('plugin', $block['configs'][0]['type']);
} }
} }