예제 #1
0
 /**
  * returns the modules of an extension from the ontology
  *
  * @access public
  * @author Jerome Bogaerts, <*****@*****.**>
  * @param  string extensionID
  * @return array
  */
 public static function getModules($extensionId)
 {
     $returnValue = array();
     foreach (ControllerHelper::getControllers($extensionId) as $controllerClassName) {
         $shortName = strpos($controllerClassName, '\\') !== false ? substr($controllerClassName, strrpos($controllerClassName, '\\') + 1) : substr($controllerClassName, strrpos($controllerClassName, '_') + 1);
         $uri = funcAcl_models_classes_AccessService::singleton()->makeEMAUri($extensionId, $shortName);
         $returnValue[$uri] = new core_kernel_classes_Resource($uri);
     }
     return (array) $returnValue;
 }
예제 #2
0
 public static function flushExtensionAccess($extensionId)
 {
     self::getCacheImplementation()->remove(self::CACHE_PREFIX_EXTENSION . $extensionId);
     foreach (ControllerHelper::getControllers($extensionId) as $controllerClassName) {
         self::flushControllerAccess($controllerClassName);
     }
 }
예제 #3
0
 private function whiteListExtension($extensionId)
 {
     foreach (ControllerHelper::getControllers($extensionId) as $controllerClassName) {
         $this->whiteListController($controllerClassName);
     }
 }
예제 #4
0
 protected function buildExtensionData(common_ext_Extension $extension, $roleUri, $includedRoleUris)
 {
     $extAccess = funcAcl_helpers_Cache::getExtensionAccess($extension->getId());
     $extAclUri = funcAcl_models_classes_AccessService::singleton()->makeEMAUri($extension->getId());
     $atLeastOneAccess = false;
     $allAccess = in_array($roleUri, $extAccess);
     $inherited = count(array_intersect($includedRoleUris, $extAccess)) > 0;
     $controllers = array();
     foreach (ControllerHelper::getControllers($extension->getId()) as $controllerClassName) {
         $controllerData = $this->buildControllerData($controllerClassName, $roleUri, $includedRoleUris);
         $atLeastOneAccess = $atLeastOneAccess || $controllerData['access'] != self::ACCESS_NONE;
         $controllers[] = $controllerData;
     }
     usort($controllers, function ($a, $b) {
         return strcmp($a['label'], $b['label']);
     });
     $access = $inherited ? 'inherited' : ($allAccess ? 'full' : ($atLeastOneAccess ? 'partial' : 'none'));
     return array('uri' => $extAclUri, 'label' => $extension->getName(), 'access' => $access, 'modules' => $controllers);
 }