FormField.php
Go to the documentation of this file.
00001 <?PHP 00002 00006 class FormField { 00007 00008 # ---- PUBLIC INTERFACE -------------------------------------------------- 00009 00012 00023 function FormField($Name, $IsRequired, $Label, $ValidFunc, $ValidMsgs) 00024 { 00025 # save field info 00026 $this->MyName = $Name; 00027 $this->MyIsRequired = $IsRequired; 00028 $this->MyLabel = $Label; 00029 $this->MyValidFunc = $ValidFunc; 00030 $this->MyValidMsgs = $ValidMsgs; 00031 00032 # attempt to set value if available 00033 if (isset($_POST[$this->MyName])) 00034 { 00035 $this->MyValue = $_POST[$this->MyName]; 00036 } 00037 elseif (isset($_GET[$this->MyName])) 00038 { 00039 $this->MyValue = $_GET[$this->MyName]; 00040 } 00041 } 00046 00052 function Name($NewVal = NULL) { return $this->GetOrSet("MyName", $NewVal); } 00053 00061 function IsRequired($NewVal = NULL) { return $this->GetOrSet("MyIsRequired", $NewVal); } 00062 00067 function Label($NewVal = NULL) { return $this->GetOrSet("MyLabel", $NewVal); } 00068 00074 function Value($NewVal = NULL) { return $this->GetOrSet("MyValue", $NewVal); } 00075 00080 function IsPassword() { return method_exists($this, "PasswordFormField"); } 00081 00086 00092 function PrintField($DisplayErrorIndicator = FALSE) 00093 { 00094 $this->PrintLabel($DisplayErrorIndicator); 00095 $this->PrintInput($DisplayErrorIndicator); 00096 } 00097 00103 function PrintLabel($DisplayErrorIndicator = FALSE) 00104 { 00105 # print label 00106 print(($DisplayErrorIndicator ? "<span style=\"color: red;\"" : "") 00107 ."<label for=\"".$this->MyName."\">".$this->MyLabel."</label>" 00108 .($DisplayErrorIndicator ? "</span>" : "") 00109 ."\n"); 00110 } 00115 00120 function IsInvalidValue($Value) 00121 { 00122 # assume value is valid 00123 $ErrorCode = 0; 00124 00125 # if custom validation function supplied 00126 if ($this->MyValidFunc) 00127 { 00128 # call custom function and return code 00129 $ValidFunc = $this->MyValidFunc; 00130 $ErrorCode = $ValidFunc($this->MyName, $Value); 00131 } 00132 else 00133 { 00134 # if value is required and none is set 00135 if ($this->MyIsRequired && !strlen($Value) 00136 && !method_exists($this, "PasswordFormField")) 00137 { 00138 # return code indicating missing value 00139 $ErrorCode = 1; 00140 } 00141 } 00142 00143 # return error code (if any) to caller 00144 return $ErrorCode; 00145 } 00146 00152 function GetInvalidValueMessage($ErrorCode) 00153 { 00154 $Messages = array( 00155 0 => "This value is valid.", 00156 1 => "%L is a required value.", 00157 ); 00158 if (isset($this->MyValidMsgs[$ErrorCode])) 00159 { 00160 $Message = $this->MyValidMsgs[$ErrorCode]; 00161 } 00162 else 00163 { 00164 $Message = isset($Messages[$ErrorCode]) 00165 ? $Messages[$ErrorCode] : 00166 "INTERNAL ERROR - Invalid Error Code (Field = %N, Code = %C)"; 00167 } 00168 return $Message; 00169 } 00170 00173 # ---- PRIVATE INTERFACE ------------------------------------------------- 00174 00175 protected $MyName; 00176 protected $MyIsRequired; 00177 protected $MyLabel; 00178 protected $MyValue; 00179 protected $MyValidFunc; 00180 protected $MyValidMsgs; 00181 00182 # convenience function to handle getting and setting of values 00183 private function GetOrSet($ValueName, $NewValue) 00184 { 00185 if ($NewValue !== NULL) 00186 { 00187 $this->{$ValueName} = $NewValue; 00188 } 00189 return $this->{$ValueName}; 00190 } 00191 } 00192 00193 00194 ?>