<?php
################################### Easy Form Process Class ################################
# easyFormProc v1.1.0
# Author : Nazly Ahmed
# Email : me@nazly.net
# Blog : http://www.nazly.net
# Start Date : 4th August 2005
# Last updated Date : 13th December 2006
# Manual : http://www.nazly.net/easyformproc
############################################################################################
include("functions.validation.inc.php");
class easyFormProc{
var $elements;
var $elTypes;
var $hasFileUpload;
var $submitBtnName;
var $errMsg;
function easyFormProc(){
$this -> elements = array();
$this -> elementDisHTML = array();
$this -> elTypes = array("Text","TextArea","Password","Hidden","Select","Radio","Check","File");
$this -> hasFileUpload = false;
$this -> submitBtnName = "submit";
$this -> errMsg = array();
}
function setElement($name,$data){
if(!isset($this -> elements[$name])){
$this -> elements[$name] = $data;
}
else{
die("ERROR : Element <b>$name</b> already set");
}
}
function setElementValue($name,$value){
if(isset($this -> elements[$name])){
$this -> elements[$name]["value"] = $value;
}
else{
die("ERROR : Element <b>$name</b> doesn't exist");
}
}
function doValidation($validate,$value,$errMsg,$params){
if($validate !== false){
if($params !== false){
if(!$validate($value,$params)){
$this -> errMsg[] = $errMsg;
}
}
else{
if(!$validate($value)){
$this -> errMsg[] = $errMsg;
}
}
}
}
function setTextElement($name,$value = "",$maxLength = 255,$size = 24,$style = "",$validate = false,$errMsg = "",$params = false){
$this -> setElement($name,array("type" => 0,"validate" => $validate,"value" => $value,
"style" => $style,"size" => $size,"maxlength" => $maxLength,
"error" => $errMsg,"params" => $params));
}
function setTextAreaElement($name,$value = "",$cols = 24,$numLines = 8,$style = "",$validate = false,$errMsg = "",$params = false){
$this -> setElement($name,array("type" => 1,"validate" => $validate,"value" => $value,
"cols" => $cols,"rows" => $numLines,"style" => $style,
"error" => $errMsg,"params" => $params));
}
function setPasswordElement($name,$value = "",$maxLength = 255,$size = 24,$style = "",$showDefault=false,$validate = false,$errMsg = ""){
$this -> setElement($name,array("type" => 2,"validate" => $validate,"value" => $value,
"size" => $size,"style" => $style,"maxlength" => $maxLength,
"default"=>$showDefault,"error" => $errMsg));
}
function setHiddenElement($name,$value = ""){
$this -> setElement($name,array("type" => 3,"value" => $value));
}
function setSelectElement($name,$value = array(),$selected = "",$style = "",$height = 1,$mulSelect = false,$validate = false,$errMsg = "",$params = false){
if(!is_array($value))die("ERROR : <b>$name</b> values should be an associative array");
if($mulSelect && (!is_array($selected)))die("ERROR : <b>$name</b> selected values should be an array");
$this -> setElement($name,array("type" => 4,"validate" => $validate,"value" => $selected,
"keys" => $value,"height" => $height,"style" => $style,
"multiple" => $mulSelect,"error" => $errMsg,"params" => $params));
}
function setRadioElement($name,$value = array(),$checked = "",$style = "",$validate = false,$errMsg = "",$params = false){
if(!is_array($value))die("ERROR : <b>$name</b> values should be an associative array");
$this -> setElement($name,array("type" => 5,"keys" => $value,"validate" => $validate,
"value" => $checked,"style" => $style,"error" => $errMsg,"params" => $params));
}
function setCheckElement($name,$value = array(),$checked = array(),$style = "",$validate = false,$errMsg = "",$params = false){
if(!is_array($value))die("ERROR : <b>$name</b> values should be an associative array");
if(!is_array($checked))die("ERROR : <b>$name</b> checked values should be an array");
$this -> setElement($name,array("type" => 6,"validate" => $validate,"value" => $checked,
"keys" => $value,"style" => $style,"error" => $errMsg,"params" => $params));
}
function setFileElement($name,$style = "",$validate = false,$errMsg="",$maxSize = 100,$imgMimeTypes = array()){
$this -> setElement($name,array("type" => 7,"validate" => $validate,"value" => "",
"style" => $style,"error" => $errMsg,"maxsize" => $maxSize,
"mimetypes" => $imgMimeTypes));
$this -> hasFileUpload = true;
}
function processText($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$this -> stripSlashesInVals(trim($_POST[$name])));
$this -> doValidation($this -> elements[$name]["validate"],$this -> elements[$name]["value"],$this -> elements[$name]["error"],$this -> elements[$name]["params"]);
}
return "<input name=\"$name\" type=\"text\" class=\"".$this -> elements[$name]["style"]."\" value=\"".htmlentities($this -> elements[$name]["value"],ENT_QUOTES)."\" size=\"".$this -> elements[$name]["size"]."\" maxlength=\"".$this -> elements[$name]["maxlength"]."\">\n";
}
function processTextArea($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$this -> stripSlashesInVals(trim($_POST[$name])));
$this -> doValidation($this -> elements[$name]["validate"],$this -> elements[$name]["value"],$this -> elements[$name]["error"],$this -> elements[$name]["params"]);
}
return "<textarea name=\"$name\" cols=\"".$this -> elements[$name]["cols"]."\" class=\"".$this -> elements[$name]["style"]."\" rows=\"".$this -> elements[$name]["rows"]."\">".htmlentities($this -> elements[$name]["value"],ENT_QUOTES)."</textarea>\n";
}
function processPassword($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$this -> stripSlashesInVals(trim($_POST[$name])));
if($this -> elements[$name]["validate"] === true){
if(!valNonEmpty($this -> elements[$name]["value"])){
$this -> errMsg[] = $this -> elements[$name]["error"];
}
}
elseif($this -> elements[$name]["validate"] !== false){
if(!$this -> valComparison($name,$this -> elements[$name]["validate"])){
$this -> errMsg[] = $this -> elements[$name]["error"];
}
}
}
$str = "<input name=\"$name\" type=\"password\" class=\"".$this -> elements[$name]["style"]."\" size=\"".$this -> elements[$name]["size"]."\" maxlength=\"".$this -> elements[$name]["maxlength"]."\"";
$str .= ($this -> elements[$name]["default"])?" value=\"".htmlentities($this -> elements[$name]["value"],ENT_QUOTES)."\">":" value=\"\">\n";
return $str;
}
function processHidden($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$this -> stripSlashesInVals(trim($_POST[$name])));
}
return "<input name=\"$name\" type=\"hidden\" value=\"".htmlentities($this -> elements[$name]["value"],ENT_QUOTES)."\">\n";
}
function processSelect($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$_POST[$name]);
$this -> doValidation($this -> elements[$name]["validate"],$this -> elements[$name]["value"],$this -> elements[$name]["error"],$this -> elements[$name]["params"]);
}
$str = "<select class=\"".$this -> elements[$name]["style"]."\"";
$str .= ($this -> elements[$name]["height"]>1)?" size=\"".$this -> elements[$name]["height"]."\"":"";
$str .= ($this -> elements[$name]["multiple"])?" name=\"{$name}[]\" multiple":" name=\"$name\"";
$str .= ">\n";
foreach($this -> elements[$name]["keys"] as $key => $val){
if($this -> elements[$name]["multiple"]){
if(in_array($key,$this -> elements[$name]["value"]))$str .= "<option value=\"$key\" selected>".htmlentities($val,ENT_QUOTES)."</option>\n";
else $str .= "<option value=\"$key\">".htmlentities($val,ENT_QUOTES)."</option>\n";
}
else{
if($this -> elements[$name]["value"] == $key)$str .= "<option value=\"$key\" selected>".htmlentities($val,ENT_QUOTES)."</option>\n";
else $str .= "<option value=\"$key\">".htmlentities($val,ENT_QUOTES)."</option>\n";
}
}
$str .= "</select>";
return $str;
}
function processRadio($name){
if($this -> isPosted()){
if(isset($_POST[$name]))$this -> setElementValue($name,$_POST[$name]);
$this -> doValidation($this -> elements[$name]["validate"],$this -> elements[$name]["value"],$this -> elements[$name]["error"],$this -> elements[$name]["params"]);
}
foreach($this -> elements[$name]["keys"] as $key => $val){
if($this -> elements[$name]["value"] == $key)$str[$key] = "<table><tr align=\"left\" valign=\"middle\"><td><input type=\"radio\" value=\"$key\" name=\"$name\" checked></td><td><span class=\"".$this -> elements[$name]["style"]."\">".htmlentities($val,ENT_QUOTES)."</span></td></tr></table>\n";
else $str[$key] = "<table><tr align=\"left\" valign=\"middle\"><td><input type=\"radio\" value=\"$key\" name=\"$name\"></td><td><span class=\"".$this -> elements[$name]["style"]."\">".htmlentities($val,ENT_QUOTES)."</span></td></tr></table>\n";
}
return $str;
}
function processCheck($name){
if($this -> isPosted()){
$newArr=array();
if(isset($_POST[$name])){
foreach($_POST[$name] as $key=>$val){
$newArr[]=$key;
}
}
$this -> setElementValue($name,$newArr);
$this -> doValidation($this -> elements[$name]["validate"],$this -> elements[$name]["value"],$this -> elements[$name]["error"],$this -> elements[$name]["params"]);
}
foreach($this -> elements[$name]["keys"] as $key => $val){
if(in_array($key,$this -> elements[$name]["value"]))$str[$key] = "<table><tr align=\"left\" valign=\"middle\"><td><input type=\"checkbox\" value=\"1\" name=\"{$name}[$key]\" checked></td><td><span class=\"".$this -> elements[$name]["style"]."\">".htmlentities($val,ENT_QUOTES)."</span></td></tr></table>\n";
else $str[$key] = "<table><tr align=\"left\" valign=\"middle\"><td><input type=\"checkbox\" value=\"1\" name=\"{$name}[$key]\"></td><td><span class=\"".$this -> elements[$name]["style"]."\">".htmlentities($val,ENT_QUOTES)."</span></td></tr></table>\n";
}
return $str;
}
function processFile($name){
if($this -> isPosted()){
$this -> setElementValue($name,$_FILES[$name]);
$retArr = $this -> uploadFile($this -> elements[$name]["value"],$this -> elements[$name]["maxsize"],$this -> elements[$name]["mimetypes"],$this -> elements[$name]["validate"]);
if($retArr["errMsg"]){
$this -> errMsg[] = $this -> elements[$name]["error"]." : ".$retArr["errMsg"];
}
}
$str = "<input name=\"$name\" type=\"file\" class=\"".$this -> elements[$name]["style"]."\">\n";
return $str;
}
function genSubmit($value = "",$style = ""){
$str = "<input type=\"submit\" name=\"".$this -> submitBtnName."\" value=\"$value\" class=\"$style\">";
return $str;
}
function genForm($overWriteDefAction = ""){
$str["start"] = ($overWriteDefAction)?"<form action=\"".$overWriteDefAction."\" method=\"post\"":"<form action=\"".$_SERVER["PHP_SELF"]."\" method=\"post\"";
if($this -> hasFileUpload)$str["start"] .= " enctype=\"multipart/form-data\"";
$str["start"] .= ">\n\n";
$str["end"] = "</form>\n";
return $str;
}
function isPosted(){
if(isset($_POST[$this -> submitBtnName])){
return true;
}
return false;
}
function processForm($subValue,$style = "",$subName = "submit", $overWriteDefAction = ""){
$this -> submitBtnName = $subName;
$str["form"] = $this -> genForm($overWriteDefAction);
$str["submit"] = $this -> genSubmit($subValue,$style);
foreach($this -> elements as $elName => $elVals){
$callFun = "process".$this -> elTypes[$elVals["type"]];
$this -> elementDisHTML[$elName] = $this -> $callFun($elName);
}
return $str;
}
function getDisElementHTML(){
$newArr = array();
foreach($this -> elementDisHTML as $key => $val){
$newArr[$key] = $this -> elementDisHTML[$key];
}
return $newArr;
}
function getPostedElementValues(){
$newArr = array();
if($this -> isPosted() && (!count($this -> errMsg))){
foreach($this -> elementDisHTML as $key => $val){
$newArr[$key] = $this -> elements[$key]["value"];
}
}
return $newArr;
}
function getBrowserSafePostedElementValues(){
$newArr = array();
if($this -> isPosted() && (!count($this -> errMsg))){
foreach($this -> elementDisHTML as $key => $val){
if(is_array($this -> elements[$key]["value"])){
$newArr[$key] = $this -> elements[$key]["value"];
}
else{
$newArr[$key] = htmlentities($this -> elements[$key]["value"],ENT_QUOTES);
}
}
}
return $newArr;
}
function getErrorMsg($errStr = "",$style = ""){
$str = "";
$strArr = array();
foreach($this -> errMsg as $key => $val){
$strArr[] = "<li>$val</li>";
}
if(count($strArr)){
if($errStr)$str .= "<span class=\"$style\">$errStr\n";
$str .= "<ul>";
$str .= implode("\n",$strArr);
$str .= "</ul></span>";
}
return $str;
}
function valComparison($elementName,$comElementName){
if($this -> elements[$elementName]["value"] === $this -> elements[$comElementName]["value"])return true;
return false;
}
function uploadFile($fileFld, $maxSize, $imgMimeTypes, $nullCheck){
$errFun = "";
$fileName = $fileFld["name"];
$fileSize = ceil($fileFld["size"]/1024);
$fileTmpName = $fileFld["tmp_name"];
$fileError = $fileFld["error"];
$fileType = $fileFld["type"];
if($fileError != 0 && $fileError != 4){
$errFun = "Unknown";
}
elseif($fileError != 4){
if($fileSize < 1 || $fileSize > $maxSize){
$errFun = "Max File Size allowed is ".$maxSize."K";
}
else{
if(!in_array($fileType, array_keys($imgMimeTypes))){
$errFun = "Only ".implode(", ", $imgMimeTypes)." files are allowed.";
}
}
}
elseif($nullCheck && $fileError == 4){
$errFun = "Select file..";
}
return array("errMsg" => $errFun, "fileName" => $fileName, "fileTmpName" => $fileTmpName, "fileContType" => $fileType);
}
function stripSlashesInVals($str){
if(get_magic_quotes_gpc()){
return stripslashes($str);
}
return $str;
}
}
?>
|