Exemplo n.º 1
0
 /**
  * @return array of all policies data
  */
 public static function getAllModulePoliciesDataByPermitable(Permitable $permitable)
 {
     $data = array();
     $modules = Module::getModuleObjects();
     foreach ($modules as $module) {
         if ($module instanceof SecurableModule) {
             $moduleClassName = get_class($module);
             $policies = $moduleClassName::getPolicyNames();
             $policyLabels = $moduleClassName::getTranslatedPolicyLabels();
             $reflectionClass = new ReflectionClass($moduleClassName);
             $constants = $reflectionClass->getConstants();
             if (!empty($policies)) {
                 foreach ($policies as $policy) {
                     if (!isset($policyLabels[$policy])) {
                         throw new NotSupportedException();
                     }
                     $explicit = $permitable->getExplicitActualPolicy($moduleClassName, $policy);
                     $inherited = $permitable->getInheritedActualPolicy($moduleClassName, $policy);
                     $effective = $permitable->getEffectivePolicy($moduleClassName, $policy);
                     $constantId = array_search($policy, $constants);
                     $data[$moduleClassName][$constantId] = array('displayName' => $policyLabels[$policy], 'explicit' => $explicit, 'inherited' => $inherited, 'effective' => $effective);
                 }
             }
         }
     }
     return $data;
 }