00001 <?php
00021 load_module('validation');
00022 load_module('upload');
00023
00092 class zRom_fields extends zCore{
00099 var $value;
00106 var $err_msg;
00113 var $isValid;
00120 var $validationStatus;
00121
00122 function zRom_fields($value, $err_msg, $isValid, $validationStatus){
00123 $this->__construct($value, $err_msg, $isValid, $validationStatus);
00124 }
00133 function __construct($value, $err_msg, $isValid, $validationStatus){
00134 $this->value = $value;
00135 $this->err_msg = $err_msg;
00136 $this->isValid = $isValid;
00137 $this->validationStatus = $validationStatus;
00138 }
00144 function isValid(){
00145 return $this->isValid;
00146 }
00152 function errMsg(){
00153 return $this->err_msg;
00154 }
00155 }
00162 class zRom_form extends validation{
00169 var $items = array();
00170
00177 var $isValid = true;
00178 var $is_submited = false;
00179 var $frm_method;
00180
00181 function zRom_form($method=null){
00182 $this->__construct($method);
00183 }
00184 function __construct($method = null){
00185 parent::__construct($method);
00186
00187 switch($method){
00188 case 'GET':
00189 if(count($_GET) >= 1){
00190 $this->items = $_GET;
00191 $this->is_submited = true;
00192 }else{
00193 $this->is_submited = false;
00194 }
00195 $this->frm_method = '_GET';
00196 break;
00197 case 'POST':
00198 if(count($_POST) >= 1){
00199 $this->items = $_POST;
00200 $this->is_submited = true;
00201 }else{
00202 $this->is_submited = false;
00203 }
00204 $this->frm_method = '_POST';
00205 break;
00206 default:
00207 perror('Invalid method name supplied');
00208 }
00209
00210 }
00217 function initValidator($map_file){
00218
00219 zLogger::debug("Initializing Validation(GET/POST) System reading ".$map_file, 'rom.validation');
00220 $this->isValid = false;
00221 $this->parseCriteria($map_file);
00222 $this->isValid = $this->isValid();
00223 foreach($this->rules as $field_name => $rules){
00224 $field_name = str_replace(' ', '_', $field_name);
00225 $errText = $this->errtext($field_name);
00226 $this->{$field_name} = &new zRom_fields($this->items[$field_name], $errText, $this->isValid($field_name), $this->validationStatus($field_name));
00227 $validString = ($this->isValid($field_name)) ? "Valid" : "InValid";
00228 zLogger::debug("Storing Form Field: $field_name Value:$field_name as $validString ErrText: ".$errText, 'rom.Validation');
00229
00230 }
00231 }
00245 function valueOf($fieldName, $strict=false){
00246 return isset($this->items[$fieldName]) ? $this->items[$fieldName] : ($strict ? false : "");
00247 }
00255 function isSubmitted(){
00256 return $this->is_submited;
00257 }
00258 }
00265 class zRom_upload extends upload{
00272 var $items = array();
00273
00280 var $isValid = true;
00281 var $is_submited = false;
00282 var $frm_method;
00283
00284 function zRom_upload($method=null){
00285 $this->__construct($method);
00286 }
00287 function __construct($method = null){
00288 parent::__construct($method);
00289
00290 if(count($_FILES) >= 1){
00291 $this->items = $_FILES;
00292 $this->is_submited = true;
00293 }else{
00294 $this->is_submited = false;
00295 }
00296
00297 }
00304 function initValidator($map_file){
00305 zLogger::debug("Initializing Validation(FILE) System reading ".$map_file, 'rom.validation');
00306 $this->isValid = false;
00307 $this->parseCriteria($map_file);
00308 $this->isValid = $this->isValid();
00309 foreach($this->rules as $field_name => $rules){
00310
00311 $field_name = str_replace(' ', '_', $field_name);
00312 $errText = $this->errtext($field_name);
00313 $this->{$field_name} =& new zRom_fields($this->items[$field_name], $errText, $this->isValid($field_name), $this->validationStatus($field_name));
00314 $validString = ($this->isValid($field_name)) ? "Valid" : "InValid";
00315 zLogger::debug("Storing Form Field: $field_name Value:$field_name as $validString ErrText: ".$errText, 'rom.Validation');
00316 }
00317 }
00325 function valueOf($fieldName, $strict=false){
00326 return isset($this->items[$fieldName]) ? $this->items[$fieldName] : ($strict ? false : "");
00327 }
00335 function isSubmitted(){
00336 return $this->is_submited;
00337 }
00338 }
00349 class zRom extends zCore{
00355 var $get;
00361 var $post;
00367 var $file;
00373 var $cookie;
00379 var $session;
00385 var $client;
00391 var $server;
00392
00393 function zRom(){
00394 $this->__construct();
00395 }
00400 function __construct(){
00401 $this->get = new zRom_form('GET');
00402 $this->post = new zRom_form('POST');
00403 $this->file = new zRom_upload();
00404 $this->session = new zSession();
00405 $this->cookie = new zCookie();
00406 $this->merge_client();
00407 $this->merge_server();
00408 }
00414 function merge_client(){
00415 $this->client = new stdClass();
00416 $this->client->browser = "Unknown";
00417 $agent = $_SERVER['HTTP_USER_AGENT'];
00418 $this->client->userAgent = $agent;
00419 $this->client->host = $_SERVER['HTTP_HOST'];
00420 $this->client->accept = @$_SERVER['HTTP_ACCEPT'];
00421 $this->client->acceptLanguage = @$_SERVER['HTTP_ACCEPT_LANGUAGE'];
00422 $this->client->acceptCharSet = @$_SERVER['HTTP_ACCEPT_CHARSET'];
00423 $this->client->acceptEncoding = @$_SERVER['HTTP_ACCEPT_ENCODING'];
00424 $this->client->connection = @$_SERVER['HTTP_CONNECTION'];
00425 $this->client->remotePort = $_SERVER['REMOTE_PORT'];
00426 $this->client->remoteAddr = $_SERVER['REMOTE_ADDR'];
00427 $this->client->requestMethod = $_SERVER['REQUEST_METHOD'];
00428 $this->client->request = $_SERVER['REQUEST_METHOD']." ".$_SERVER['REQUEST_URI']." ".$_SERVER['SERVER_PROTOCOL'];
00429 $this->client->version = "Unknown";
00430 $this->client->platform = "Unknown";
00468 switch(true){
00469 case (eregi("win", $agent)):
00470 $this->client->platform = "Windows";
00471 if(!defined('IS_WIN'))define('IS_WIN', "Windows");
00472 if(!defined('IS_WINDOWS'))define('IS_WINDOWS', "Windows");
00473 break;
00474 case (eregi("mac", $agent)):
00475 $this->client->platform = "MacIntosh";
00476 if(!defined('IS_MAC'))define('IS_MAC', "MacIntosh");
00477 if(!defined('IS_MACINTOSH'))define('IS_MACINTOSH', "MacIntosh");
00478 break;
00479 case (eregi("linux", $agent)):
00480 $this->client->platform = "Linux";
00481 if(!defined('IS_LINUX'))define('IS_LINUX', "Linux");
00482 break;
00483 case (eregi("OS/2", $agent)):
00484 $this->client->platform = "OS/2";
00485 if(!defined('IS_OS2'))define('IS_OS2', "OS/2");
00486 break;
00487 case (eregi("BeOS", $agent)):
00488 $this->client->platform = "BeOS";
00489 if(!defined('IS_BEOS'))define('IS_BEOS', "BeOS");
00490 break;
00491 }
00492 if(!defined('CLIENT_OS'))define('CLIENT_OS', $this->client->platform);
00493 if(!defined('IS_WIN'))define('IS_WIN', false);
00494 if(!defined('IS_WINDOWS'))define('IS_WINDOWS', false);
00495 if(!defined('IS_MAC'))define('IS_MAC', false);
00496 if(!defined('IS_MACINTOSH'))define('IS_MACINTOSH', false);
00497 if(!defined('IS_LINUX'))define('IS_LINUX', false);
00498 if(!defined('IS_OS2'))define('IS_OS2', false);
00499 if(!defined('IS_BEOS'))define('IS_BEOS', false);
00500 switch(true){
00501 case eregi("opera",$agent):
00502 if(!defined('IS_OPERA'))define('IS_OPERA', "opera");
00503 $val = stristr($agent, "opera");
00504 if (eregi("/", $val)){
00505 $val = explode("/",$val);
00506 $this->client->browser = "opera";
00507 $val = explode(" ",$val[1]);
00508 $this->client->version = $val[0];
00509 }else{
00510 $val = explode(" ",stristr($val,"opera"));
00511 $this->client->browser = "opera";
00512 $this->client->version = $val[1];
00513 }
00514 break;
00515 case eregi("webtv",$agent):
00516 if(!defined('IS_WEBTV'))define('IS_WEBTV', "webtv");
00517 $val = explode("/",stristr($agent,"webtv"));
00518 $this->client->browser = "webtv";
00519 $this->client->version = $val[1];
00520 break;
00521 case eregi("microsoft internet explorer", $agent):
00522 if(!defined('IS_IE'))define('IS_IE', "microsoft internet explorer");
00523 $this->client->browser = "microsoft internet explorer";
00524 $this->client->version = "1.0";
00525 $var = stristr($agent, "/");
00526 if (ereg("308|425|426|474|0b1", $var)){
00527 $this->client->version = "1.5";
00528 }
00529 break;
00530 case eregi("NetPositive", $agent):
00531 if(!defined('IS_NETPOSITIVE'))define('IS_NETPOSITIVE', "NetPositive");
00532 $val = explode("/",stristr($agent,"NetPositive"));
00533 $this->client->browser = "NetPositive";
00534 $this->client->version = $val[1];
00535 break;
00536 case (eregi("msie",$agent) && !eregi("opera",$agent)):
00537 if(!defined('IS_MSIE'))define('IS_MSIE', "msie");
00538 $val = explode(" ",stristr($agent,"msie"));
00539 $this->client->browser = "msie";
00540 $this->client->version = $val[1];
00541 break;
00542 case (eregi("mspie",$agent) || eregi('pocket', $agent)):
00543 if(!defined('IS_MSPIE'))define('IS_MSPIE', "mspie");
00544 $val = explode(" ",stristr($agent,"mspie"));
00545 $this->client->browser = "mspie";
00546 $this->client->version = "WindowsCE";
00547 if(eregi("mspie", $agent))
00548 $this->client->version = $val[1];
00549 else{
00550 $val = explode("/",$agent);
00551 $this->client->version = $val[1];
00552 }
00553 break;
00554 case eregi("galeon",$agent):
00555 if(!defined('IS_GALEON'))define('IS_GALEON', "galeon");
00556 $val = explode(" ",stristr($agent,"galeon"));
00557 $val = explode("/",$val[0]);
00558 $this->client->browser = "galeon";
00559 $this->client->version = $val[1];
00560 break;
00561 case eregi("Konqueror",$agent):
00562 if(!defined('IS_KONQUEROR'))define('IS_KONQUEROR', "Konqueror");
00563 $val = explode(" ",stristr($agent,"Konqueror"));
00564 $val = explode("/",$val[0]);
00565 $this->client->browser = "Konqueror";
00566 $this->client->version = $val[1];
00567 break;
00568 case eregi("icab",$agent):
00569 if(!defined('IS_ICAB'))define('IS_ICAB', "icab");
00570 $val = explode(" ",stristr($agent,"icab"));
00571 $this->client->browser = 'icab';
00572 $this->client->version = $val[1];
00573 break;
00574 case eregi("omniweb",$agent):
00575 if(!defined('IS_OMNIWEB'))define('IS_OMNIWEB', "omniweb");
00576 $val = explode("/",stristr($agent,"omniweb"));
00577 $this->client->browser = "omniweb";
00578 $this->client->version = $val[1];
00579 break;
00580 case eregi("Phoenix", $agent):
00581 if(!defined('IS_PHOENIX'))define('IS_PHOENIX', "Phoenix");
00582 $this->client->browser = "Phoenix";
00583 $val = explode("/", stristr($agent,"Phoenix/"));
00584 $this->client->version = $val[1];
00585 break;
00586 case eregi("firebird", $agent):
00587 if(!defined('IS_FIREBIRD'))define('IS_FIREBIRD', "Firebird");
00588 $this->client->browser="Firebird";
00589 $val = stristr($agent, "Firebird");
00590 $val = explode("/",$val);
00591 $this->client->version = $val[1];
00592 break;
00593 case eregi("Firefox", $agent):
00594 if(!defined('IS_FIREFOX'))define('IS_FIREFOX', "Firefox");
00595 $this->client->browser="Firefox";
00596 $val = stristr($agent, "Firefox");
00597 $val = explode("/",$val);
00598 $this->client->version = $val[1];
00599 break;
00600 case (eregi("mozilla",$agent) && eregi("rv:[0-9].[0-9][a-b]",$agent) && !eregi("netscape",$agent)):
00601 if(!defined('IS_MOZILLA'))define('IS_MOZILLA', "Mozilla");
00602 $this->client->browser = "Mozilla";
00603 $val = explode(" ",stristr($agent,"rv:"));
00604 eregi("rv:[0-9].[0-9][a-b]",$agent,$val);
00605 $this->client->version = str_replace("rv:","",$val[0]);
00606 break;
00607 case (eregi("mozilla",$agent) && eregi("rv:[0-9]\.[0-9]",$agent) && !eregi("netscape",$agent)):
00608 if(!defined('IS_MOZILLA'))define('IS_MOZILLA', "Mozilla");
00609 $this->client->browser = "Mozilla";
00610 $val = explode(" ",stristr($agent,"rv:"));
00611 eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent,$val);
00612 $this->client->version = str_replace("rv:","",$val[0]);
00613 break;
00614 case eregi("libwww", $agent):
00615 if(eregi("amaya", $agent)){
00616 $val = explode("/",stristr($agent,"amaya"));
00617 if(!defined('IS_AMAYA'))define('IS_AMAYA', "Amaya");
00618 $this->client->browser = "Amaya";
00619 $val = explode(" ", $val[1]);
00620 $this->client->version = $val[0];
00621 }else{
00622 $val = explode("/",$agent);
00623 if(!defined('IS_LYNX'))define('IS_LYNX', "Lynx");
00624 $this->client->browser = "Lynx";
00625 $this->client->version = $val[1];
00626 }
00627 break;
00628 case eregi("safari", $agent):
00629 if(!defined('IS_SAFARI'))define('IS_SAFARI', "Safari");
00630 $this->client->browser = "Safari";
00631 $this->client->version = "";
00632 break;
00633 case eregi("netscape",$agent):
00634 $val = explode(" ",stristr($agent,"netscape"));
00635 $val = explode("/",$val[0]);
00636 if(!defined('IS_NETSCAPE'))define('IS_NETSCAPE', "netscape");
00637 $this->client->browser = "netscape";
00638 $this->client->version = $val[1];
00639 break;
00640 case (eregi("mozilla",$agent) && !eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent)):
00641 $val = explode(" ",stristr($agent,"mozilla"));
00642 $val = explode("/",$val[0]);
00643 if(!defined('IS_NETSCAPE'))define('IS_NETSCAPE', "netscape");
00644 $this->client->browser = "netscape";
00645 $this->client->version = $val[1];
00646 break;
00647 }
00648 if(!defined('CLIENT_BROWSER'))define('CLIENT_BROWSER', $this->client->browser);
00649 if(!defined('IS_OPERA'))define('IS_OPERA', false);
00650 if(!defined('IS_WEBTV'))define('IS_WEBTV', false);
00651 if(!defined('IS_IE'))define('IS_IE', false);
00652 if(!defined('IS_NETPOSITIVE'))define('IS_NETPOSITIVE', false);
00653 if(!defined('IS_MSIE'))define('IS_MSIE', false);
00654 if(!defined('IS_MSPIE'))define('IS_MSPIE', false);
00655 if(!defined('IS_GALEON'))define('IS_GALEON', false);
00656 if(!defined('IS_KONQUEROR'))define('IS_KONQUEROR', false);
00657 if(!defined('IS_ICAB'))define('IS_ICAB', false);
00658 if(!defined('IS_OMNIWEB'))define('IS_OMNIWEB', false);
00659 if(!defined('IS_PHOENIX'))define('IS_PHOENIX', false);
00660 if(!defined('IS_FIREBIRD'))define('IS_FIREBIRD', false);
00661 if(!defined('IS_FIREFOX'))define('IS_FIREFOX', false);
00662 if(!defined('IS_MOZILLA'))define('IS_MOZILLA', false);
00663 if(!defined('IS_AMAYA'))define('IS_AMAYA', false);
00664 if(!defined('IS_LYNX'))define('IS_LYNX', false);
00665 if(!defined('IS_SAFARI'))define('IS_SAFARI', false);
00666 if(!defined('IS_NETSCAPE'))define('IS_NETSCAPE', false);
00667 }
00673 function merge_server(){
00674 $this->server = new stdClass();
00675 $this->server->software = $_SERVER['SERVER_SOFTWARE'];
00676 $this->server->signature = $_SERVER['SERVER_SIGNATURE'];
00677 $this->server->port = $_SERVER['SERVER_PORT'];
00678 $this->server->name = $_SERVER['SERVER_NAME'];
00679 $this->server->address = $_SERVER['SERVER_ADDR'];
00680 $this->server->admin = $_SERVER['SERVER_ADMIN'];
00681 $this->server->protocol = $_SERVER['SERVER_PROTOCOL'];
00682 }
00683 }
00685 ?>