Search:

# CWIS Developers Documentation

- Main Page
- Classes
- Files

- File List
- File Members

# PrivilegeFactory.php

Go to the documentation of this file.

    00001 <?PHP
    00002
    00003 #
    00004 #   FILE:  PrivilegeFactory.php
    00005 #
    00006 #   METHODS PROVIDED:
    00007 #       PrivilegeFactory()
    00008 #           - constructor
    00009 #       SomeMethod($SomeParameter, $AnotherParameter)
    00010 #           - short description of method
    00011 #
    00012 #   AUTHOR:  Edward Almasy
    00013 #
    00014 #   Part of the Collection Workflow Integration System
    00015 #   Copyright 2007 Edward Almasy and Internet Scout
    00016 #   http://scout.wisc.edu
    00017 #
    00018
    00024 class PrivilegeFactory extends ItemFactory {
    00025
    00026     # ---- PUBLIC INTERFACE --------------------------------------------------
    00027
    00030
    00032     public function PrivilegeFactory()
    00033     {
    00034         $this->ItemFactory("Privilege", "CustomPrivileges", "Id", "Name");
    00035
    00036         $AllConstants = get_defined_constants(TRUE);
    00037         $UserConstants = $AllConstants["user"];
    00038
    00039         foreach ($UserConstants as $Name => $Value)
    00040         {
    00041             if (strpos($Name, "PRIV_") === 0)
    00042             {
    00043                 $this->PrivilegeConstants[$Value] = $Name;
    00044             }
    00045         }
    00046     }
    00047
    00052
    00060     public function GetPrivileges($IncludePredefined = TRUE, $ReturnObjects = TRUE)
    00061     {
    00062         # read custom privileges in from DB
    00063         $PrivNames = $this->GetItemNames();
    00064
    00065         # add in predefined privileges if requested
    00066         if ($IncludePredefined)
    00067         {
    00068             global $G_PrivDescriptions;
    00069             $PrivNames = $G_PrivDescriptions + $PrivNames;
    00070         }
    00071
    00072         # if caller requested objects to be returned
    00073         if ($ReturnObjects)
    00074         {
    00075             # convert strings to objects and return to caller
    00076             foreach ($PrivNames as $Id => $Name)
    00077             {
    00078                 $PrivObjects[$Id] = new Privilege($Id);
    00079             }
    00080             return $PrivObjects;
    00081         }
    00082         else
    00083         {
    00084             # return strings to caller
    00085             return $PrivNames;
    00086         }
    00087     }
    00088
    00094     public function GetPrivilegeWithName($Name)
    00095     {
    00096         global $G_PrivDescriptions;
    00097
    00098         # predefined privilege constant name
    00099         if (in_array($Name, $this->PrivilegeConstants))
    00100         {
    00101             $Id = array_search($Name, $this->PrivilegeConstants);
    00102             $Privilege = new Privilege($Id);
    00103
    00104             return $Privilege;
    00105         }
    00106
    00107         # predefined privilege constant description
    00108         if (in_array($Name, $G_PrivDescriptions))
    00109         {
    00110             $ConstantName = array_search($Name, $G_PrivDescriptions);
    00111             $Id = array_search($ConstantName, $this->PrivilegeConstants);
    00112             $Privilege = new Privilege($Id);
    00113
    00114             return $Privilege;
    00115         }
    00116
    00117         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
    00118
    00119         # custom privilege name
    00120         foreach ($CustomPrivileges as $Id => $PrivilegeName)
    00121         {
    00122             if ($Name == $PrivilegeName)
    00123             {
    00124                 $Privilege = new Privilege($Id);
    00125
    00126                 return $Privilege;
    00127             }
    00128         }
    00129
    00130         return NULL;
    00131     }
    00132
    00138     public function GetPrivilegeWithValue($Value)
    00139     {
    00140         global $G_PrivDescriptions;
    00141
    00142         # predefined privilege constant name
    00143         if (array_key_exists($Value, $this->PrivilegeConstants))
    00144         {
    00145             $Privilege = new Privilege($Value);
    00146
    00147             return $Privilege;
    00148         }
    00149
    00150         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
    00151
    00152         # custom privilege name
    00153         foreach ($CustomPrivileges as $Id => $PrivilegeName)
    00154         {
    00155             if ($Value == $Id)
    00156             {
    00157                 $Privilege = new Privilege($Id);
    00158
    00159                 return $Privilege;
    00160             }
    00161         }
    00162
    00163         return NULL;
    00164     }
    00165
    00170     public function GetPredefinedPrivilegeConstants()
    00171     {
    00172         return $this->PrivilegeConstants;
    00173     }
    00174
    00179
    00185     public function PrivilegeNameExists($Name)
    00186     {
    00187         global $G_PrivDescriptions;
    00188
    00189         # predefined privilege constant name
    00190         if (in_array($Name, $this->PrivilegeConstants))
    00191         {
    00192             return TRUE;
    00193         }
    00194
    00195         # predefined privilege constant description
    00196         if (in_array($Name, $G_PrivDescriptions))
    00197         {
    00198             return TRUE;
    00199         }
    00200
    00201         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
    00202
    00203         # custom privilege name
    00204         if (in_array($Name, $CustomPrivileges))
    00205         {
    00206             return TRUE;
    00207         }
    00208
    00209         return FALSE;
    00210     }
    00211
    00217     public function PrivilegeValueExists($Value)
    00218     {
    00219         # predefined privilege constant name
    00220         if (array_key_exists($Value, $this->PrivilegeConstants))
    00221         {
    00222             return TRUE;
    00223         }
    00224
    00225         $CustomPrivileges = $this->GetPrivileges(FALSE);
    00226
    00227         foreach ($CustomPrivileges as $Privilege)
    00228         {
    00229             if ($Value == $Privilege->Id())
    00230             {
    00231                 return TRUE;
    00232             }
    00233         }
    00234
    00235         return FALSE;
    00236     }
    00237
    00240     # ---- PRIVATE INTERFACE -------------------------------------------------
    00241
    00242     private $PrivilegeConstants = array();
    00243
    00244 }