### Eclipse Workspace Patch 1.0 #P moodle-HEAD Index: lib/accesslib.php =================================================================== RCS file: /cvsroot/moodle/moodle/lib/accesslib.php,v retrieving revision 1.259 diff -u -r1.259 accesslib.php --- lib/accesslib.php 22 May 2007 10:09:22 -0000 1.259 +++ lib/accesslib.php 22 May 2007 14:31:10 -0000 @@ -2579,9 +2579,21 @@ return false; } + + if (isset($capdef['clonerolecapsof']) && in_array($capdef['clonerolecapsof'], $storedcaps)){ + if ($rolecapabilities = get_records('role_capabilities', 'capability', $capdef['clonerolecapsof'])){ + foreach ($rolecapabilities as $rolecapability){ + //assign_capability will update rather than insert if capability exists + if (!assign_capability($capname, $rolecapability->permission, + $rolecapability->roleid, $rolecapability->contextid, true)){ + notify('Could not clone capabilities for '.$capname); + } + } + } // Do we need to assign the new capabilities to roles that have the // legacy capabilities moodle/legacy:* as well? - if (isset($capdef['legacy']) && is_array($capdef['legacy']) && + // we ignore legacy key if we have cloned permissions + } else if (isset($capdef['legacy']) && is_array($capdef['legacy']) && !assign_legacy_capabilities($capname, $capdef['legacy'])) { notify('Could not assign legacy capabilities for '.$capname); }