From 804feede10391412fd38769116436f74de89fcae Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Thu, 19 Apr 2012 08:47:06 +0200 Subject: [PATCH] MDL-32477 allow cloning of plugin permissions from core Please note it is discouraged to clone from different plugin type because the upgrade order is not guaranteed. --- lib/accesslib.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index 81c5bca9cc8ed..59927b5ab4bbe 100644 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -2484,6 +2484,7 @@ function update_capabilities($component = 'moodle') { } } // Add new capabilities to the stored definition. + $existingcaps = $DB->get_records_menu('capabilities', array(), 'id', 'id, name'); foreach ($newcaps as $capname => $capdef) { $capability = new stdClass(); $capability->name = $capname; @@ -2494,7 +2495,7 @@ function update_capabilities($component = 'moodle') { $DB->insert_record('capabilities', $capability, false); - if (isset($capdef['clonepermissionsfrom']) && in_array($capdef['clonepermissionsfrom'], $storedcaps)){ + if (isset($capdef['clonepermissionsfrom']) && in_array($capdef['clonepermissionsfrom'], $existingcaps)){ if ($rolecapabilities = $DB->get_records('role_capabilities', array('capability'=>$capdef['clonepermissionsfrom']))){ foreach ($rolecapabilities as $rolecapability){ //assign_capability will update rather than insert if capability exists