<?
	/*
	 * Create by 	: 	Anuchit Parnsatit
	 * Create Date 	: 	14 March 2006
	 * Create For	: 	Class data, extends from connect_db, contains basic method
	 * 				 	takes for all tables in database and derived to another classes
	 * 					for another module. 
	 */
	 
	include("db.class.php");
	include("method.class.php");
	
	class data extends connect_db{
		var $id;
		var $conn;
		var $data;
		var $cmd;
		var $cond;
		var $field;
		var $value;
		var $table;
		var $result;
		var $method;
		var $running;
		var $log_con;

		function data($table){
			$this->conn=new connect_db();
			$this->method=new method();
			$this->table=$table;
			$this->validateUser();
		}

		function validateUser(){
			global $_SESSION;
			$prog=$_SERVER['PHP_SELF'];
			$arr=explode('/', $prog);
			if((empty($_REQUEST[access]))&&($arr[sizeof($arr)-1]!='index.php')&&($arr[sizeof($arr)-1]!='register.php')&&($arr[sizeof($arr)-1]!='index2.php')&&($arr[sizeof($arr)-1]!='access.php')&&($_REQUEST[showTable]!='1')){
				if(!empty($_REQUEST[user_id])&&!$_POST){
					$this->login($_REQUEST[user_id]);
				}else	if(empty($_SESSION['user_id'])){
					$this->method->alert('คุณยังไม่ได้ login เข้าสู่ระบบ/คุณไม่ได้ใช้งานระบบนานเกินไป กรุณา login เข้าสู่ระบบใหม่');
					$this->method->go('index.php');
					exit;
				}
			}
		}

		function setCondition($req){
			$this->conn=new connect_db();
			$this->log_con=$req;
			$this->cmd="SHOW FIELDS FROM ".$this->table;
			$this->conn->send_cmd($this->cmd);
			while($this->data=$this->conn->getdata_array()){
				if(!empty($req[$this->data['Field']])){
					$this->cond.=" AND ".$this->data['Field']."='".$req[$this->data['Field']]."'";
				}
			}
		}

		function clearCondition(){
			$this->cond='';
		}
		
		function allData(){
			$this->cmd="SELECT * FROM ".$this->table." WHERE 1 ".$this->cond;
			$this->conn->send_cmd($this->cmd);
			$i=0;
			while($this->result=$this->conn->getdata_array()){
				$this->data[$i]=$this->result;
				$i++;
			}
			$this->data[0]['rows']=$i;
			$this->conn->free_result();
			$this->clearCondition();
			return $this->data;
		}

		function echoCmd(){
			$this->cmd="SELECT * FROM ".$this->table." WHERE 1 ".$this->cond;
			$this->conn->send_cmd($this->cmd);
			$this->data=$this->conn->getdata_array();
			echo '<br><br>'.$this->cmd; //exit;
			$this->conn->free_result();
			$this->clearCondition();
			return $this->data;
		}

		function getData(){
			$this->cmd="SELECT * FROM ".$this->table." WHERE 1 ".$this->cond;
			$this->conn->send_cmd($this->cmd);
			$this->data=$this->conn->getdata_array();
			//echo '<br><br>'.$this->cmd; exit;
			$this->conn->free_result();
			$this->clearCondition();
			return $this->data;
		}
		
		function pageData($page=0,$limit=0, $order=''){
			$this->cmd="SELECT * FROM ".$this->table." WHERE 1 ".$this->cond.$order;
			//echo $this->cmd.'<br>';
			if($page>0){
				$total=$this->conn->send_cmd($this->cmd);
				$start=($page-1)*$limit;
				$this->cmd.=" LIMIT ".$start.", ".$limit."";
				$this->conn->send_cmd($this->cmd);
				$numPage=ceil($total/$limit);
			}else{
				$total=$this->conn->send_cmd($this->cmd);
			}
			$i=0;
			while($this->result=$this->conn->getdata_array()){
				$this->data[$i]=$this->result;
				$i++;
			}
			$this->data[0]['rows']=$i;
			$this->data[0]['total']=$total;
			$this->data[0]['numPage']=$numPage;
			$this->data[0]['start']=$start;
			$this->conn->free_result();
			return $this->data;
		}
		
		
		
		function getCmdData($cmd){
			$this->conn=new connect_db();
			$this->conn->send_cmd($cmd);
			$this->data=$this->conn->getdata_array();
			$this->conn->free_result();
			return $this->data;
		}
		
		function getAllCmdData($cmd, $page=0,$limit=0){
			$con=new connect_db();
			if($page>0){
				$total=$con->send_cmd($cmd);
				$start=($page-1)*$limit;
				$cmd.=" LIMIT ".$start.", ".$limit."";
				$numPage=ceil($total/$limit);
				$con->send_cmd($cmd);
			}else{
				$total=$con->send_cmd($cmd);
			}
			$i=0;
			while($this->result=$con->getdata_array()){
				$this->data[$i]=$this->result;
				$i++;
			}
			$this->data[0]['rows']=$i;
			$this->data[0]['total']=$total;
			$this->data[0]['numPage']=$numPage;
			$this->data[0]['start']=$start;
			$con->free_result();
			//$con->close();
			return $this->data;
		}
		
		function getTmpCmdData($cmd, $key){
			$con=new connect_db();
			$total=$con->send_cmd($cmd);
			$i=0;
			while($this->result=$con->getdata_array()){
				$this->data[$this->result[$key]]=$this->result;
				$i++;
			}
			$this->data[0]['rows']=$i;
			$this->data[0]['total']=$total;
			$con->free_result();
			//$con->close();
			return $this->data;
		}

		function countData(){
			$this->cmd="SELECT * FROM ".$this->table." WHERE 1 ".$this->cond;
			return $this->conn->send_cmd($this->cmd);
		}

		function addField($req){
			global $pregSlash;
			$this->conn=new connect_db($this->db);
			if($this->table!='pcourt')
				$req['court_running']=$this->method->getCourt();
			if($this->table=='psentnotice')
				$req['court_running']=$_REQUEST['send_notice_court_running'];
			$this->cmd="SHOW FULL FIELDS FROM ".$this->table;
			$this->conn->send_cmd($this->cmd);
			while($this->data=$this->conn->getdata_array()){
				if(($this->data['Field']!='create_dep_code')&&($this->data['Field']!='create_user_id')&&($this->data['Field']!='create_user')&&($this->data['Field']!='create_date')&&($this->data['Field']!='update_user_id')&&($this->data['Field']!='update_user')&&($this->data['Field']!='last_update_date')&&($this->data['Field']!='last_update_time')){
					//echo $this->data['Field'].':'.isset($req[$this->data['Field']]).':\''.$req[$this->data['Field']].'\':'.$this->data['Null'].'<br>';
					//if(isset($req[$this->data['Field']])&&((($this->data['Field']=='')&&($this->data['Null']=='YES'))||($req[$this->data['Field']]!=''))){
					if(isset($req[$this->data['Field']])&&((($this->data['Null']=='YES'))||($req[$this->data['Field']]!=''))){
						//echo $this->data['Field'].':'.isset($req[$this->data['Field']]).':\''.$req[$this->data['Field']].'\':'.$this->data['Null'].'<br>';
		
						if($req[$this->data['Field']]!=''){
							if(preg_match('/datetime/i', $this->data['Type'])){
								//$req[$this->data['Field']]=$req[$this->data['Field']];
								if(preg_match('~/~', $req[$this->data['Field']]))
									$req[$this->data['Field']]=$this->method->cvDateTime($req[$this->data['Field']]);
								//echo $pregSlash.':'.$req[$this->data['Field']].':'.$this->data['Type'].'<br>';
							}else if(preg_match('/date/i', $this->data['Type'])){
								if(preg_match('~/~', $req[$this->data['Field']]))
									$req[$this->data['Field']]=$this->method->cvDate($req[$this->data['Field']]);
								//echo $pregSlash.':'.$req[$this->data['Field']].':'.$this->data['Type'].'<br>';
							}else if(preg_match('/float/i', $this->data['Type'])){
								$req[$this->data['Field']]=str_replace(',', '', $req[$this->data['Field']]);
							}else if(preg_match('/int/i', $this->data['Type'])){
								$req[$this->data['Field']]=str_replace(',', '', $req[$this->data['Field']]);
							}else if(preg_match('/double/i', $this->data['Type'])){
								$req[$this->data['Field']]=str_replace(',', '', $req[$this->data['Field']]);
							}
						}else/* if($req[$this->data['Field']]=='')*/{
							if($this->data['Null']=='NO')
								$req[$this->data['Field']]="";
							else
								$req[$this->data['Field']]="NULL";
							//echo $this->data['Field'].':'.isset($req[$this->data['Field']]).':\''.$req[$this->data['Field']].'\':'.$this->data['Null'].'<br>';
						}
						$this->field[sizeof($this->field)]=$this->data['Field'];
						if(preg_match('/encode/i', $this->data['Comment'])&&($req[$this->data['Field']]!="NULL")){
							$this->value[sizeof($this->value)]=$this->mcrypt->encode($req[$this->data['Field']]);
						}else{
							$req[$this->data['Field']]=str_replace('<br>', "\n", $req[$this->data['Field']]);
							$this->value[sizeof($this->value)]=$req[$this->data['Field']];
						}
					}else if(isset($req[$this->data['Field']])&&($this->data['Null']=='NO')){
						//echo $this->data['Field'].':'.$req[$this->data['Field']].'<br>';
						$this->field[sizeof($this->field)]=$this->data['Field'];
						$this->value[sizeof($this->value)]='';
					}
					//echo $this->data['Field'].':'.$this->data['Type'].':\''.$req[$this->data['Field']].'\':'.$this->data['Null'].'<br>';
				}
			}
		}

		function insertData(){
			$this->cmd="INSERT INTO ".$this->table."(";
			for($i=0;$i<sizeof($this->field);$i++){
				if($i==0)
					$this->cmd.=$this->field[$i];
				else
					$this->cmd.=", ".$this->field[$i];
			}
			$this->cmd.=") VALUES (";
			for($i=0;$i<sizeof($this->value);$i++){
				if($this->value[$i]!='NULL')
					if($i==0)
						$this->cmd.="'".$this->value[$i]."'";
					else
						$this->cmd.=", '".$this->value[$i]."'";
				else
					if($i==0)
						$this->cmd.="".$this->value[$i]."";
					else
						$this->cmd.=", ".$this->value[$i]."";
			}
			$this->cmd.=")";
			//if($this->table=='pnotice')
			//echo $this->cmd.'<br>'; exit;
			$this->result=$this->conn->send_cmd($this->cmd);
			$this->running=$this->conn->get_id();
			unset($this->field);
			unset($this->value);
			if($this->running)
				return $this->running;
			else
				return $this->result;
		}
		
		function echoInsert(){
			$this->cmd="INSERT INTO ".$this->table."(";
			for($i=0;$i<sizeof($this->field);$i++){
				if($i==0)
					$this->cmd.=$this->field[$i];
				else
					$this->cmd.=", ".$this->field[$i];
			}
			$this->cmd.=") VALUES (";
			for($i=0;$i<sizeof($this->value);$i++){
				if($this->value[$i]!='NULL')
					if($i==0)
						$this->cmd.="'".$this->value[$i]."'";
					else
						$this->cmd.=", '".$this->value[$i]."'";
				else
					if($i==0)
						$this->cmd.="".$this->value[$i]."";
					else
						$this->cmd.=", ".$this->value[$i]."";
			}
			$this->cmd.=")";
			echo $this->cmd.'<br><br>';
			unset($this->field);
			unset($this->value);
		}

		function getRunning(){
			return $this->running;
		}

		function updateData(){
			$this->cmd="UPDATE ".$this->table." SET ";
			for($i=0;$i<sizeof($this->field);$i++){
				if($this->value[$i]!='NULL')
					if($i==0)
						$this->cmd.=$this->field[$i]."='".$this->value[$i]."'";
					else
						$this->cmd.=", ".$this->field[$i]."='".$this->value[$i]."'";
				else
					if($i==0)
						$this->cmd.=$this->field[$i]."=".$this->value[$i]."";
					else
						$this->cmd.=", ".$this->field[$i]."=".$this->value[$i]."";
			}
			$this->cmd.=" WHERE 1";
			$this->cmd.=$this->cond;
			//if(($this->table)=='pcase')
			//echo $this->cmd.'<br>'; exit;
			if(empty($this->cond)){
				//$this->method->alert('เกิดข้อผิดพลาด ไม่สามารถแก้ไขได้');
				//echo $this->cmd.'<br>'; exit;
			}else
				$this->result=$this->conn->send_cmd($this->cmd);
			unset($this->field);
			unset($this->value);
			$this->clearCondition();
			return $this->result;
		}
		function echoUpdate(){
			$this->cmd="UPDATE ".$this->table." SET ";
			for($i=0;$i<sizeof($this->field);$i++){
				if($this->value[$i]!='NULL')
					if($i==0)
						$this->cmd.=$this->field[$i]."='".$this->value[$i]."'";
					else
						$this->cmd.=", ".$this->field[$i]."='".$this->value[$i]."'";
				else
					if($i==0)
						$this->cmd.=$this->field[$i]."=".$this->value[$i]."";
					else
						$this->cmd.=", ".$this->field[$i]."=".$this->value[$i]."";
			}
			$this->cmd.=" WHERE 1";
			$this->cmd.=$this->cond;
			echo $this->cmd.'<br><br>'; 
			unset($this->field);
			unset($this->value);
			$this->clearCondition();
		}

		function deleteData($alert=0){
			if(!empty($this->cond)){
				$this->cmd=" DELETE FROM ".$this->table." WHERE 1 ".$this->cond;
				//echo $this->cmd.'<br>'; exit;
				$this->result=$this->conn->send_cmd($this->cmd);
			}
			$this->clearCondition();
		}

		function echoDelete(){
			if(!empty($this->cond)){
				$this->cmd=" DELETE FROM ".$this->table." WHERE 1 ".$this->cond;
				echo $this->cmd.'<br>'; //exit;
				//$this->result=$this->conn->send_cmd($this->cmd);
			}
			$this->clearCondition();
		}
		
		function getCourt(){
			return $this->method->getCourt();
		}
		
		function sendCmd($cmd){
			return $this->conn->send_cmd($cmd);
		}


		function alert($msg){
			echo '<script language="javascript">';
			echo '	alert("'.$msg.'");';
			echo '</script>';		
		}
	}
	
	include("log.class.php");



?>

