From d14c00e239c6b2e90ca9c7c1af76ebefee5acb2e Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 25 Jan 2012 15:21:37 +1300 Subject: [PATCH 1/2] MDL-31360 Don't use get_in_or_equal if array is empty, tidy up structure of $extracaps array --- lib/accesslib.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index 88ee394e05b..ed61a9e46a7 100644 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -6380,6 +6380,7 @@ class context_module extends context { } $modfile = "$CFG->dirroot/mod/$module->name/lib.php"; + $extracaps = array(); if (file_exists($modfile)) { include_once($modfile); $modfunction = $module->name.'_get_extra_capabilities'; @@ -6387,16 +6388,15 @@ class context_module extends context { $extracaps = $modfunction(); } } - if (empty($extracaps)) { - $extracaps = array(); - } $extracaps = array_merge($subcaps, $extracaps); - - list($extra, $params) = $DB->get_in_or_equal( - $extracaps, SQL_PARAMS_NAMED, 'cap0'); - $extra = "OR name $extra"; - + $extra = ''; + $params = array(); + if (!empty($extracaps)) { + list($extra, $params) = $DB->get_in_or_equal( + $extracaps, SQL_PARAMS_NAMED, 'cap0'); + $extra = "OR name $extra"; + } $sql = "SELECT * FROM {capabilities} WHERE (contextlevel = ".CONTEXT_MODULE." From 2be99ddee8ad423a4b89d0bb7ce8616b2fc4a5fe Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 1 Feb 2012 23:09:49 +1300 Subject: [PATCH 2/2] MDL-31360 use extra param in get_in_or_equal - one less line of code... --- lib/accesslib.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index ed61a9e46a7..9ca574d5232 100644 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -6391,10 +6391,9 @@ class context_module extends context { $extracaps = array_merge($subcaps, $extracaps); $extra = ''; - $params = array(); - if (!empty($extracaps)) { - list($extra, $params) = $DB->get_in_or_equal( - $extracaps, SQL_PARAMS_NAMED, 'cap0'); + list($extra, $params) = $DB->get_in_or_equal( + $extracaps, SQL_PARAMS_NAMED, 'cap0', true, ''); + if (!empty($extra)) { $extra = "OR name $extra"; } $sql = "SELECT *