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         # if caller wants predefined privileges included
00063         if ($IncludePredefined)
00064         {
00065             # get complete list of privilege names
00066             $PrivNames = $this->GetItemNames();
00067         }
00068         else
00069         {
00070             # read in only custom privileges from DB
00071             $PrivNames = parent::GetItemNames();
00072         }
00073 
00074         # if caller requested objects to be returned
00075         if ($ReturnObjects)
00076         {
00077             # convert strings to objects and return to caller
00078             foreach ($PrivNames as $Id => $Name)
00079             {
00080                 $PrivObjects[$Id] = new Privilege($Id);
00081             }
00082             return $PrivObjects;
00083         }
00084         else
00085         {
00086             # return strings to caller
00087             return $PrivNames;
00088         }
00089     }
00090 
00096     public function GetPrivilegeWithName($Name)
00097     {
00098         global $G_PrivDescriptions;
00099 
00100         # predefined privilege constant name
00101         if (in_array($Name, $this->PrivilegeConstants))
00102         {
00103             $Id = array_search($Name, $this->PrivilegeConstants);
00104             $Privilege = new Privilege($Id);
00105 
00106             return $Privilege;
00107         }
00108 
00109         # predefined privilege constant description
00110         if (in_array($Name, $G_PrivDescriptions))
00111         {
00112             $ConstantName = array_search($Name, $G_PrivDescriptions);
00113             $Id = array_search($ConstantName, $this->PrivilegeConstants);
00114             $Privilege = new Privilege($Id);
00115 
00116             return $Privilege;
00117         }
00118 
00119         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
00120 
00121         # custom privilege name
00122         foreach ($CustomPrivileges as $Id => $PrivilegeName)
00123         {
00124             if ($Name == $PrivilegeName)
00125             {
00126                 $Privilege = new Privilege($Id);
00127 
00128                 return $Privilege;
00129             }
00130         }
00131 
00132         return NULL;
00133     }
00134 
00140     public function GetPrivilegeWithValue($Value)
00141     {
00142         global $G_PrivDescriptions;
00143 
00144         # predefined privilege constant name
00145         if (array_key_exists($Value, $this->PrivilegeConstants))
00146         {
00147             $Privilege = new Privilege($Value);
00148 
00149             return $Privilege;
00150         }
00151 
00152         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
00153 
00154         # custom privilege name
00155         foreach ($CustomPrivileges as $Id => $PrivilegeName)
00156         {
00157             if ($Value == $Id)
00158             {
00159                 $Privilege = new Privilege($Id);
00160 
00161                 return $Privilege;
00162             }
00163         }
00164 
00165         return NULL;
00166     }
00167 
00172     public function GetPredefinedPrivilegeConstants()
00173     {
00174         return $this->PrivilegeConstants;
00175     }
00176 
00183     function GetItemNames($SqlCondition = NULL)
00184     {
00185         $Names = parent::GetItemNames($SqlCondition);
00186         $Names = $Names + $GLOBALS["G_PrivDescriptions"];
00187         asort($Names);
00188         return $Names;
00189     }
00190 
00195 
00201     public function PrivilegeNameExists($Name)
00202     {
00203         global $G_PrivDescriptions;
00204 
00205         # predefined privilege constant name
00206         if (in_array($Name, $this->PrivilegeConstants))
00207         {
00208             return TRUE;
00209         }
00210 
00211         # predefined privilege constant description
00212         if (in_array($Name, $G_PrivDescriptions))
00213         {
00214             return TRUE;
00215         }
00216 
00217         $CustomPrivileges = $this->GetPrivileges(FALSE, FALSE);
00218 
00219         # custom privilege name
00220         if (in_array($Name, $CustomPrivileges))
00221         {
00222             return TRUE;
00223         }
00224 
00225         return FALSE;
00226     }
00227 
00233     public function PrivilegeValueExists($Value)
00234     {
00235         # predefined privilege constant name
00236         if (array_key_exists($Value, $this->PrivilegeConstants))
00237         {
00238             return TRUE;
00239         }
00240 
00241         $CustomPrivileges = $this->GetPrivileges(FALSE);
00242 
00243         foreach ($CustomPrivileges as $Privilege)
00244         {
00245             if ($Value == $Privilege->Id())
00246             {
00247                 return TRUE;
00248             }
00249         }
00250 
00251         return FALSE;
00252     }
00253 
00256     # ---- PRIVATE INTERFACE -------------------------------------------------
00257 
00258     private $PrivilegeConstants = array();
00259 
00260 }

CWIS logo doxygen
Copyright 2010 Internet Scout