MDL-67114 core: php74 fix. Fix use of scalar as array in core

There are various places where it's not guaranteed that the
variable being used is array, and instead, can be null, bool, int...

We need to check that because php74 warns about it.

Where possible we have used the coalesce operator as
replacement for isset() ternary operations.
This commit is contained in:
Eloy Lafuente (stronk7) 2019-11-02 20:03:40 +01:00
parent a6e544e825
commit 4621917c62
12 changed files with 22 additions and 13 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

@ -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;
}