Changeset 26330


Ignore:
Timestamp:
06/12/10 14:52:36 (7 years ago)
Author:
flack
Message:

rewrite method for clarity and speed, refs #1848

File:
1 edited

Legend:

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

    r26290 r26330  
    593593        }
    594594
    595         if (   is_null($user_id)
    596             || !$user_id
    597             || $user_id == 'EVERYONE'
    598             || $user_id == 'ANONYMOUS')
    599         {
    600             if (   $this->__privilege['assignee'] != 'EVERYONE'
    601                 && $this->__privilege['assignee'] != 'ANONYMOUS')
    602             {
     595        switch ($this->__privilege['assignee'])
     596        {
     597            case 'EVERYONE':
     598                return true;
     599                break;
     600            case 'ANONYMOUS':
     601                return ($user_id == 'EVERYONE' || $user_id == 'ANONYMOUS');
     602                break;
     603            case 'USERS':
     604                return ($user_id != 'ANONYMOUS' && $user_id != 'EVERYONE');
     605                break;
     606            default:
     607                if ($this->__privilege['assignee'] == $user_id)
     608                {
     609                    return true;
     610                }
     611                else if (strstr($this->__privilege['assignee'], 'group:') !== false)
     612                {
     613                    $user = $_MIDCOM->auth->get_user($user_id);
     614                    if (is_object($user))
     615                    {
     616                       return $user->is_in_group($this->__privilege['assignee']);
     617                    }
     618                }
    603619                return false;
    604             }
    605         }
    606         else
    607         {
    608             if ($this->__privilege['assignee'] == 'ANONYMOUS')
    609             {
    610                 return false;
    611             }
    612             if (    strstr($this->__privilege['assignee'], 'user:') !== false
    613                 && $this->__privilege['assignee'] != $user_id)
    614             {
    615                 return false;
    616             }
    617             if (strstr($this->__privilege['assignee'], 'group:') !== false)
    618             {
    619                 $user = $_MIDCOM->auth->get_user($user_id);
    620                 if (   !is_object($user)
    621                     || !$user->is_in_group($this->__privilege['assignee']))
    622                 {
    623                     return false;
    624                 }
    625             }
    626         }
    627         return true;
     620                break;
     621        }
    628622    }
    629623
Note: See TracChangeset for help on using the changeset viewer.