Changeset 26390


Ignore:
Timestamp:
06/18/10 14:59:05 (7 years ago)
Author:
flack
Message:

cache scope, refs #1848

Location:
branches/developers/flack/acltuning/midcom.core/midcom
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/developers/flack/acltuning/midcom.core/midcom/core/privilege.php

    r26368 r26390  
    4545        'privilegename'=> '',
    4646        'assignee' => null,
     47        'scope' => -1,
    4748        'classname' => '',
    4849        'value' => null
     
    125126    {
    126127        return isset($this->__privilege[$property]);
     128    }
     129
     130    private function _get_scope()
     131    {
     132        $scope = -1;
     133
     134        switch ($this->__privilege['assignee'])
     135        {
     136            case 'EVERYONE':
     137                $scope = MIDCOM_PRIVILEGE_SCOPE_EVERYONE;
     138                break;
     139            case 'USERS':
     140                $scope = MIDCOM_PRIVILEGE_SCOPE_USERS;
     141                break;
     142            case 'ANONYMOUS':
     143                $scope = MIDCOM_PRIVILEGE_SCOPE_ANONYMOUS;
     144                break;
     145            default:
     146                $assignee = $this->get_assignee();
     147                if (! $assignee)
     148                {
     149                    debug_push_class(__CLASS__, __FUNCTION__);
     150                    debug_print_r('Could not resolve the assignee of this privilege:', $this);
     151                    debug_pop();
     152                }
     153                $scope = $assignee->scope;
     154                break;
     155        }
     156
     157        return $scope;
    127158    }
    128159
     
    514545                continue;
    515546            }
     547            $privilege_object->scope = $privilege_object->_get_scope();
    516548            $return[] = $privilege_object;
    517549        }
     
    679711        $this->classname = $this->__privilege_object->classname;
    680712        $this->value = $this->__privilege_object->value;
     713        $this->scope = $this->_get_scope();
    681714    }
    682715
  • branches/developers/flack/acltuning/midcom.core/midcom/services/auth/acl.php

    r26387 r26390  
    10831083        {
    10841084            if (   $privilege->privilegename != $privilegename
     1085                ||  $privilege->scope <= $last_scope
    10851086                || !$privilege->does_privilege_apply($user_id))
    10861087            {
     
    10881089            }
    10891090
    1090             switch ($privilege->assignee)
    1091             {
    1092                 case 'EVERYONE':
    1093                     $scope = MIDCOM_PRIVILEGE_SCOPE_EVERYONE;
    1094                     break;
    1095                 case 'USERS':
    1096                     $scope = MIDCOM_PRIVILEGE_SCOPE_USERS;
    1097                     break;
    1098                 case 'ANONYMOUS':
    1099                     $scope = MIDCOM_PRIVILEGE_SCOPE_ANONYMOUS;
    1100                     break;
    1101                 default:
    1102                     $assignee = $privilege->get_assignee();
    1103                     if (! $assignee)
    1104                     {
    1105                         debug_push_class(__CLASS__, __FUNCTION__);
    1106                         debug_print_r('Could not resolve the assignee of this privilege, skipping it:', $privilege);
    1107                         debug_pop();
    1108                         // Skip broken privileges.
    1109                         continue;
    1110                     }
    1111                     $scope = $assignee->scope;
    1112 
    1113                     break;
    1114             }
    1115 
    1116             //skip this privilege, we have a better one already
    1117             if ($scope <= $last_scope)
    1118             {
    1119                 continue;
    1120             }
    1121 
    1122             $last_scope = $scope;
     1091            $last_scope = $privilege->scope;
    11231092            $content_privilege = $privilege;
    11241093        }
Note: See TracChangeset for help on using the changeset viewer.