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.
This commit is contained in:
Petr Skoda
2012-04-19 22:12:21 +02:00
parent bd44a3bc02
commit b3f60ef696
+2 -1
View File
@@ -3443,6 +3443,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;
@@ -3453,7 +3454,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