コード例 #1
0
 private function show($rules)
 {
     $out = false;
     if (isset($rules['always'])) {
         $out = $rules['always'];
     }
     if (isset($rules['logged'])) {
         $out = $rules['logged'] ? is_object($this->user) : !is_object($this->user);
     }
     if (is_object($this->user) && isset($rules['in_role'])) {
         if (!is_array($rules['in_role'])) {
             $rules['in_role'] = array($rules['in_role']);
         }
         foreach ($rules['in_role'] as $role) {
             $out |= $this->user->hasRole($role);
         }
     }
     if (is_object($this->user)) {
         if (isset($rules['out_role'])) {
             if (!is_array($rules['out_role'])) {
                 $rules['out_role'] = array($rules['out_role']);
             }
             $test = true;
             foreach ($rules['out_role'] as $role) {
                 $test &= !$this->user->hasRole($role);
             }
             $out = $test;
         }
         if (isset($rules['license'])) {
             $active = $this->user->getActiveLicenses();
             foreach ($rules['license'] as $gruppo => $licenses) {
                 if (isset($active[$gruppo])) {
                     $out &= in_array($active[$gruppo], $licenses);
                 } else {
                     $out = false;
                 }
             }
         }
     }
     return $out;
 }