This commit is contained in:
Andrew Nicols 2020-01-07 09:37:05 +08:00
commit 1429ca06a4
16 changed files with 47 additions and 16 deletions

View File

@ -2302,7 +2302,7 @@ class core_competency_privacy_testcase extends provider_testcase {
$this->assertEquals('-', $comp['rating']['rating']);
$comp = $data->competencies[2];
$this->assertEquals($comp4->get('shortname'), $comp['name']);
$this->assertNull($comp['rating']['rating']);
$this->assertNull($comp['rating']);
$data = writer::with_context($u1ctx)->get_data(array_merge($path, ["{$p1a->get('name')} ({$p1a->get('id')})",
get_string('commentsubcontext', 'core_comment')]));
$this->assert_exported_comments(['Hello.', 'It\'s me.', 'After all these years...'], $data->comments);
@ -2320,7 +2320,7 @@ class core_competency_privacy_testcase extends provider_testcase {
$this->assertEquals('C', $comp['rating']['rating']);
$comp = $data->competencies[2];
$this->assertEquals($comp4->get('shortname'), $comp['name']);
$this->assertNull($comp['rating']['rating']);
$this->assertNull($comp['rating']);
// This plan is complete.
$data = writer::with_context($u1ctx)->get_data(array_merge($path, ["{$p1c->get('name')} ({$p1c->get('id')})"]));

View File

@ -120,10 +120,12 @@ class enrol_meta_plugin extends enrol_plugin {
require_once("$CFG->dirroot/enrol/meta/locallib.php");
// Support creating multiple at once.
if (is_array($fields['customint1'])) {
if (isset($fields['customint1']) && is_array($fields['customint1'])) {
$courses = array_unique($fields['customint1']);
} else {
} else if (isset($fields['customint1'])) {
$courses = array($fields['customint1']);
} else {
$courses = array(null); // Strange? Yes, but that's how it's working or instance is not created ever.
}
foreach ($courses as $courseid) {
if (!empty($fields['customint2']) && $fields['customint2'] == ENROL_META_CREATE_GROUP) {

View File

@ -44,7 +44,7 @@ class editor_form extends moodleform {
*/
protected function definition() {
$mform = $this->_form;
$editoroptions = $this->_customdata['editoroptions'];
$editoroptions = $this->_customdata['editoroptions'] ?? null;
// Add header.
$mform->addElement('header', 'myheader', 'Editor in Moodle form');

View File

@ -416,11 +416,16 @@ abstract class file_system {
protected function get_imageinfo_from_path($path) {
$imageinfo = getimagesize($path);
if (!is_array($imageinfo)) {
return false; // Nothing to process, the file was not recognised as image by GD.
}
$image = array(
'width' => $imageinfo[0],
'height' => $imageinfo[1],
'mimetype' => image_type_to_mime_type($imageinfo[2]),
);
if (empty($image['width']) or empty($image['height']) or empty($image['mimetype'])) {
// GD can not parse it, sorry.
return false;

View File

@ -200,7 +200,7 @@ class MoodleQuickForm_duration extends MoodleQuickForm_group {
break;
case 'createElement':
if ($arg[2]['optional']) {
if (!empty($arg[2]['optional'])) {
$caller->disabledIf($arg[0], $arg[0] . '[enabled]');
}
$caller->setType($arg[0] . '[number]', PARAM_FLOAT);

View File

@ -221,6 +221,8 @@ class MoodleQuickForm_filetypes extends MoodleQuickForm_group {
*/
public function validateSubmitValue($value) {
$value = $value ?? ['filetypes' => null]; // A null $value can arrive here. Coalesce, creating the default array.
if (!$this->allowall) {
// Assert that there is an actual list provided.
$normalized = $this->util->normalize_file_types($value['filetypes']);

View File

@ -11,3 +11,12 @@ unzip v2.12.0.zip
cd mustache.php-2.12.0/
mv src /path/to/moodle/lib/mustache/
mv LICENSE /path/to/moodle/lib/mustache/
Local changes:
Note: All this changes need to be reviewed on every upgrade and, if they have
been already applied upstream for the release being used, can be removed
from the list. If still not available upstream, they will need to be re-applied.
- MDL-67114: PHP 7.4 compatibility. Array operations on scalar value.
This corresponds to upstream https://github.com/bobthecow/mustache.php/pull/352

View File

@ -149,7 +149,7 @@ class Mustache_Parser
case Mustache_Tokenizer::T_BLOCK_VAR:
if ($this->pragmaBlocks) {
// BLOCKS pragma is enabled, let's do this!
if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
$token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_BLOCK_ARG;
}
$this->clearStandaloneLines($nodes, $tokens);
@ -275,7 +275,7 @@ class Mustache_Parser
*/
private function checkIfTokenIsAllowedInParent($parent, array $token)
{
if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
throw new Mustache_Exception_SyntaxException('Illegal content in < parent tag', $token);
}
}

View File

@ -2664,11 +2664,15 @@ class Compiler
* @param array $value
* @param boolean $inExp
*
* @return array|\ScssPhp\ScssPhp\Node\Number
* @return null|array|\ScssPhp\ScssPhp\Node\Number
*/
protected function reduce($value, $inExp = false)
{
if (is_null($value)) {
return null;
}
switch ($value[0]) {
case Type::T_EXPRESSION:
list(, $op, $left, $right, $inParens) = $value;

View File

@ -7,5 +7,14 @@ Import procedure:
- Copy all the files from the folder 'src' this directory.
- Copy the license file from the project root.
- Review the local changes defined below, if any. Reapply
them if needed. If already available upstream, please remove
them from the list.
Licensed under MIT, Copyright (c) 2015 Leaf Corcoran.
Currenly using 1.0.2 plus these local changes:
- MDL-67114 : Added basic compatibility with php 7.4. This corresponds to
upstream commit https://github.com/scssphp/scssphp/commit/66675c1553b7e9d7c480d8aaedbf7c72374647cf
that is available in scssphp >= 1.0.4

View File

@ -835,7 +835,7 @@ class core_session_manager_testcase extends advanced_testcase {
$SESSION->recentsessionlocks = $this->sessionlock_history();
$page = \core\session\manager::get_locked_page_at($time);
$this->assertEquals($url, $page['url']);
$this->assertEquals($url, is_array($page) ? $page['url'] : null);
}
/**

View File

@ -10,7 +10,7 @@ class mod_glossary_import_form extends moodleform {
function definition() {
global $CFG;
$mform =& $this->_form;
$cmid = $this->_customdata['id'];
$cmid = $this->_customdata['id'] ?? null;
$mform->addElement('filepicker', 'file', get_string('filetoimport', 'glossary'));
$mform->addHelpButton('file', 'filetoimport', 'glossary');

View File

@ -10,8 +10,8 @@ class mod_wiki_comments_form extends moodleform {
protected function definition() {
$mform = $this->_form;
$current = $this->_customdata['current'];
$commentoptions = $this->_customdata['commentoptions'];
$current = $this->_customdata['current'] ?? null;
$commentoptions = $this->_customdata['commentoptions'] ?? null;
// visible elements
$mform->addElement('editor', 'entrycomment_editor', get_string('comment', 'glossary'), null, $commentoptions);

View File

@ -47,7 +47,7 @@ class wiki_parser_proxy {
return $content;
}
else {
return $content[1];
return is_array($content) ? $content[1] : null;
}
}
else {

View File

@ -701,7 +701,7 @@ class question_usage_by_activity {
// Behaviour vars should not be processed by question type, just add prefix.
$behaviourvars = $this->get_question_attempt($slot)->get_behaviour()->get_expected_data();
foreach (array_keys($responsedata) as $responsedatakey) {
if ($responsedatakey[0] === '-') {
if (is_string($responsedatakey) && $responsedatakey[0] === '-') {
$behaviourvarname = substr($responsedatakey, 1);
if (isset($behaviourvars[$behaviourvarname])) {
// Expected behaviour var found.

View File

@ -181,7 +181,7 @@ class dropbox extends \oauth2_client {
* @throws moodle_exception
*/
protected function check_and_handle_api_errors($data) {
if ($this->info['http_code'] == 200) {
if (!is_array($this->info) or $this->info['http_code'] == 200) {
// Dropbox only returns errors on non-200 response codes.
return;
}