// role assignments?
capabilities_cleanup($component, $filecaps);
+ // reset static caches
+ is_valid_capability('reset', false);
+
return true;
}
}
}
-function is_valid_capability($capabilityname) {
+/**
+ * Verifies if given capability installed.
+ *
+ * @param string $capabilityname
+ * @param bool $cached
+ * @return book true if capability exists
+ */
+function is_valid_capability($capabilityname, $cached=true) {
static $capsnames = null; // one request per page only
- if (is_null($capsnames)) {
+ if (is_null($capsnames) or !$cached) {
global $DB;
$capsnames = $DB->get_records_menu('capabilities', null, '', 'name, 1');
}
}
$context = empty($this->context) ? get_context_instance(CONTEXT_SYSTEM) : $this->context;
foreach($this->req_capability as $cap) {
- if (has_capability($cap, $context)) {
+ if (is_valid_capability($cap) and has_capability($cap, $context)) {
return true;
}
}
}
$context = empty($this->context) ? get_context_instance(CONTEXT_SYSTEM) : $this->context;
foreach($this->req_capability as $cap) {
- if (has_capability($cap, $context)) {
+ if (is_valid_capability($cap) and has_capability($cap, $context)) {
return true;
}
}