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 }