Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
application
/
examples
:
GSModel.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php class GSModel extends CI_Model { private static $db2 = null; private static $ccount = 1; private static $db1 = null; private $selectDB = null; private $updateDB = null; protected $strPrpertyForLog = ""; protected $setProperties = array (); protected $setOption = array (); protected $validations = array (); private $isValidationRule = false; protected $tableName = null; protected $primaryKey = null; private $isSelected = false; protected $UpdateRestrictedField=array(); protected $updateWhereExtraField=array(); //public $topic_type = array("S"=>"---Select---","T"=>"Theoritical","P"=>"Practical","B"=>"Both"); static function GetTotalQueries($isInSqlFile=false) { if(!IsDebugMode){ return ""; } $str = ""; if (isset ( GSModel::$db1->queries )) { if($isInSqlFile){ $str .= "<hr/>/*Select Queries*/"; }else{ $str .= "<hr/>Select Queries"; } foreach ( GSModel::$db1->queries as $qur ) { $str .= "<hr/>" . $qur; } } if (isset ( GSModel::$db2->queries )) { if($isInSqlFile){ $str . "<hr/>/*Insert/Update Queries*/"; }else{ $str . "<hr/>Insert/Update Queries"; } foreach ( GSModel::$db2->queries as $qur ) { $str .= "<hr/>" . $qur; } } return $str; } function SetWhereUpdate($property,$value){ $this->updateWhereExtraField[$property]=$value; } function UnsetUpdateRetrictedField(){ foreach ($this->UpdateRestrictedField as $key=>$value){ if(isset($this->setProperties[$key])&& property_exists($this, $key)){ $this->SetWhereUpdate($key, $this->$key); } unset($this->setProperties[$key]); unset($this->setOption[$key]); } } function GetPostValue($name){ $default=""; if(!empty($this->$name)){ $default= $this->$name; } return PostValue($name,$default); } function GetLog() { $parm = func_get_args (); $parm [0] = $this->lang->line ( strtolower ( $parm [0] ) ); if (isset ( $parm [1] ) && substr_count ( $parm [1], "~" ) > 0) { $NewParam = array_merge ( array ($parm [0] ), explode ( "~", $parm [1] ) ); } else { $NewParam = $parm; } if ((count ( $NewParam ) - 1) >= substr_count ( $parm [0], "%s" )) { return call_user_func_array ( "sprintf", $NewParam ); } return "Parametter missing"; } function AddLog($msg = "", $parm, $value = "", $type = "V") { if ($this->Mlog->AddLog ( $msg, $parm, $value, $type )) { return true; } else { return false; } } function IsPropertySet($property) { if (! empty ( $this->setProperties [$property] )) { return true; } else { return false; } } function __construct() { parent::__construct (); $this->load->library ( 'form_validation' ); } function LastInsertedId() { return $this->GetUpdateDB ()->insert_id (); } function InsertBatch($DataArray) { return $this->GetUpdateDB ()->insert_batch ( $this->tableName, $DataArray ); } function AddDebugMsg($str, $status = StatusOk) { if (IsDebugMode) { Mlog::AddDebugMsg ( $str, $status, $this->session, true ); } } function GetDebugMsg() { return Mlog::GetDebugMsg ( $this->session ); } function AddSystemLog($str, $isSession = false) { Mlog::AddSystemLog ( $str, $this->session, $isSession ); } function AddError($error, $isSession = false,$isPTagAdded=false) { Mlog::AddError ( $error, $this->session, $isSession ,$isPTagAdded); } function AddInfo($info, $isSession = false) { Mlog::AddInfo ( $info, $this->session, $isSession ); } function GetError() { Mlog::GetError ( $this->session ); } function GetInfo() { Mlog::GetInfo ( $this->session ); } function GetSysLog() { Mlog::GetSystemLog ( $this->session ); } /*function __destruct() { $data = "----------------------------------------\n"; if (isset ( $this->selectDB->queries )) { $length = count ( $this->selectDB->queries ); for($i = 0; $i < $length; $i ++) { $data .= $this->selectDB->queries [$i] . " \n(takes time =" . $this->selectDB->query_times [$i] . ")\n"; $data .= "\n\n"; } } if (isset ( $this->updateDB->queries )) { $length = count ( $this->updateDB->queries ); for($i = 0; $i < $length; $i ++) { $data .= $this->updateDB->queries [$i] . " (takes time" . $this->updateDB->query_times [$i] . ") at " . date ( "D M j G:i:s T Y" ) . "\n"; $data .= "\n\n"; } } $myFile = BASEPATH . "log/query.log"; $fh = fopen ( $myFile, 'w+' ); fwrite ( $fh, $data ); fclose ( $fh ); }*/ function __call($func, $args) { if (isset ( $args [0] )) { $value = $this->$func; //echo $func."=>".$value."==".$args[0]; if ($value != $args [0] || ($args [0] == '' && $value == null)) { $this->$func = trim($args [0]); if ($func != $this->primaryKey) { $this->setProperties [$func] = $args [0]; } if (isset ( $args [1] )) { $this->setOption [$func] = $args [1]; } } } else { //echo $func; } } public function GetUpdateDB() { if ($this->updateDB == null) { if (GSModel::$db2 == null) { GSModel::$db2 = $this->load->database ( "db2", TRUE ); } $this->updateDB = GSModel::$db2; } return $this->updateDB; } public function GetSelectDB() { if ($this->selectDB == null) { if (GSModel::$db1 == null) { GSModel::$db1 = $this->load->database ( "default", TRUE ); //mysql_query("SET CHARACTER SET utf8"); //mysql_query("SET SESSION collation_connection='utf8_general_ci'"); } $this->selectDB = GSModel::$db1; } return $this->selectDB; } public function Test() { return GSModel::$ccount ++; } function GetLastId() { return $this->GetUpdateDB ()->insert_id (); } function GetFromArray($Data) { //echo "call from ".$this->tableName; $this->isValidationRule = false; foreach ( $Data as $key => $value ) { if (property_exists ( $this, $key )) { $NewValue = $Data [$key]; if (isset ( $Data ["old_" . $key] )) { $oldValue = $Data ["old_" . $key]; if ($oldValue != null) { // echo $oldValue." ".$NewValue; if ($oldValue == $NewValue) continue; } } $this->$key ( $Data [$key] ); //$this->SetValidationRule ( $key ); } } return true; //$this->ValidData (); } function UnSetProperty($property) { $this->$property = null; if (isset ( $this->setProperties [$property] )) { unset ( $this->setProperties [$property] ); } } function GetFromPostData() { //echo "call from ".$this->tableName; $this->isValidationRule = false; foreach ( $_POST as $key => $value ) { if (property_exists ( $this, $key )) { $NewValue = $this->input->post ( $key, true ); $oldValue = $this->input->post ( "old_" . $key, true ); if ($oldValue != null) { if ($oldValue == $NewValue) { $this->$key = $NewValue; }else { $this->$key ( $NewValue ); $this->SetValidationRule ( $key ); } }else { if ($NewValue !== $oldValue){ $this->$key ( $NewValue ); }else{ $this->$key = $NewValue; } $this->SetValidationRule ( $key ); } } } return $this->ValidData (); } function CleanForSession() { $this->selectDB = null; $this->updateDB = null; } function IsPropertySetted() { return count ( $this->setProperties ) > 0 ? true : false; } function GetFromUriData() { //echo "call from ".$this->tableName; $uriData = $this->uri->uri_to_assoc ( 3 ); $this->isValidationRule = false; foreach ( $uriData as $key => $value ) { //echo $value; if (property_exists ( $this, $key )) { $this->$key ( $value ); //$this->SetValidationRule ( $key ); } } //GPrint($this); $this->AddDebugMsg ( "GetFromPostData of " . get_class ( $this ) . " is successed" ); return true; //return $this->ValidData(); } private function SetValidationRule($key = '') { if ($key != '') { if (isset ( $this->validations [$key] ) && $this->validations [$key] ['Rule'] != "") { $this->isValidationRule = true; $this->form_validation->set_rules ( $key, $this->validations [$key] ['Text'], $this->validations [$key] ['Rule'] ); } else { $this->form_validation->set_rules ( $key, '', '' ); } } else { if (count ( $this->setProperties ) > 0) { foreach ( $this->setProperties as $key ) { if (isset ( $this->validations [$key] ) && $this->validations [$key] ['Rule'] != "") { $this->isValidationRule = true; $this->form_validation->set_rules ( $key, $this->validations [$key] ['Text'], $this->validations [$key] ['Rule'] ); } else { $this->form_validation->set_rules ( $key, '', '' ); } } } } } function SetValueFromPostData($postKey, $proprtyName) { $new = $this->input->post ( $postKey ); $old = $this->input->post ( "old_" . $postKey ); if ($new != $old) { $this->$proprtyName ( $new ); } } function Save($isLogEntry = true) { //echo " called from M" . $this->tableName; if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if (! $this->isSelected) { $primaryKey = $this->primaryKey; if ($this->$primaryKey != null && $this->$primaryKey != '') { $this->setProperties [$primaryKey] = $this->$primaryKey; } if (count ( $this->setProperties ) > 0) { foreach ( $this->setProperties as $key => $value ) { if ($key == 'password') { $this->GetUpdateDB ()->set ( 'password', "MD5('" . $this->$key . "')", FALSE ); } else { $this->strPrpertyForLog .= "$key=" . $this->$key . ","; $this->GetUpdateDB ()->set ( $key, $this->$key ); } } if ($this->GetUpdateDB ()->insert ( $this->tableName )) { $this->setProperties = array (); $this->AddDebugMsg ( "Insert/Save of " . get_class ( $this ) . " is successed" ); if ($isLogEntry) /*$this->AddLog ($this->strPrpertyForLog, "A" );*/ return true; } else { $this->AddDebugMsg ( "Insert/Save of" . get_class ( $this ) . " is Failed", StatusError ); return false; } } else { $this->AddSystemLog ( $this->msg->GetMsg ( 's003' ) ); //"Value is not set for insert" ); $this->AddDebugMsg ( "Insert/Save of " . get_class ( $this ) . " is Failed for setProperties is empty", StatusError ); return false; } } else { return $this->Update (); } } function Select($QueryString = '', $id = '') { if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); $this->AddDebugMsg ( "Select of " . get_class ( $this ) . " is Failed for table name is not found", StatusError ); return false; } if ($QueryString != '') $this->GetSelectDB ()->Select ( $QueryString ); if ($id != '') $this->GetSelectDB ()->where ( $this->primaryKey, $id ); else { foreach ( $this->setProperties as $key => $value ) { $this->GetSelectDB ()->where ( $key, $this->$key ); } } $primaryKey = $this->primaryKey; $pData = $this->$primaryKey; if ($pData && $pData != '') { $this->GetSelectDB ()->where ( $primaryKey, $pData ); //echo "Setted $primaryKey = $pData<br/>"; } $data = $this->GetSelectDB ()->get ( $this->tableName )->first_row (); if (!empty($data)) { foreach ( $data as $key => $value ) { $this->$key = $value; } $this->isSelected = true; $this->setProperties = array (); $this->AddDebugMsg ( "Select of " . get_class ( $this ) . " is successed" ); return true; } else { $this->AddDebugMsg ( "Select of " . get_class ( $this ) . " return false for no data found", StatusError ); return false; } } function SelectAllWithLike($QueryString = "", $orderBy = '', $order = 'asc', $limit = 0, $limitStart = 0) { if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if ($QueryString != "") $this->GetSelectDB ()->Select ( $QueryString ); foreach ( $this->setProperties as $key => $value ) { if (isset ( $this->setOption [$key] )) { $this->GetSelectDB ()->where ( $this->$key, '', $this->setOption [$key] ); } else { $this->GetSelectDB ()->like ( $key, $this->$key, 'after' ); } //$this->GetSelectDB ()->where ( $key, $this->$key ); } if ($orderBy != '' && property_exists ( $this, $orderBy )) { if ($order == '') $order = 'asc'; $this->GetSelectDB ()->order_by ( $orderBy, $order ); } if ($limit > 0) { $this->GetSelectDB ()->limit ( $limit, $limitStart ); } $data = $this->GetSelectDB ()->get ( $this->tableName )->result (); if (count ( $data ) > 0) { $allData = null; $i = 0; foreach ( $data as $tm ) { $allData [$i ++] = $this->BindObject ( $tm, true ); } $this->AddDebugMsg ( "SelectAllWithLike of " . get_class ( $this ) . " is successed" ); return $allData; } else { $this->AddDebugMsg ( "SelectAllWithLike of " . get_class ( $this ) . " return null for no data found", StatusError ); return null; } } function SelectAllWithDate($QueryString = "", $orderBy = '', $order = 'asc', $limit = 0, $limitStart = 0, $sDate = "", $eDate = "", $dateName = "") { if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if ($QueryString != "") $this->GetSelectDB ()->Select ( $QueryString ); foreach ( $this->setProperties as $key => $value ) { if (isset ( $this->setOption [$key] )) { $this->GetSelectDB ()->where ( $this->$key, '', $this->setOption [$key] ); } else { $this->GetSelectDB ()->like ( $key, $this->$key, 'after' ); } //$this->GetSelectDB ()->where ( $key, $this->$key ); } if ($sDate != "" && $eDate != "" && $dateName != "") { $whereDate = $dateName . " BETWEEN '" . $sDate . "' AND '" . $eDate . "'"; $this->GetSelectDB ()->where ( $whereDate ); } if ($orderBy != '' && property_exists ( $this, $orderBy )) { if ($order == '') $order = 'asc'; $this->GetSelectDB ()->order_by ( $orderBy, $order ); } if ($limit > 0) { $this->GetSelectDB ()->limit ( $limit, $limitStart ); } $data = $this->GetSelectDB ()->get ( $this->tableName )->result (); if (count ( $data ) > 0) { $allData = null; $i = 0; foreach ( $data as $tm ) { $allData [$i ++] = $this->BindObject ( $tm, true ); } $this->AddDebugMsg ( "SelectAllWithDate of " . get_class ( $this ) . " is successed" ); return $allData; } else { $this->AddDebugMsg ( "SelectAllWithDate of " . get_class ( $this ) . " return null for no data found", StatusError ); return null; } } function SelectAll($QueryString = "", $orderBy = '', $order = 'asc', $limit = 0, $limitStart = 0) { if ($this->tableName == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if ($QueryString != "") $this->GetSelectDB ()->Select ( $QueryString ); foreach ( $this->setProperties as $key => $value ) { if (isset ( $this->setOption [$key] )) { $this->GetSelectDB ()->where ( $this->$key, '', $this->setOption [$key] ); } else { $this->GetSelectDB ()->where ( $key, $this->$key ); } } $pkey=$this->primaryKey; if(isset($this->setOption[$pkey])){ $this->GetSelectDB ()->where ( $this->$pkey, '', $this->setOption [$pkey] ); } if ($orderBy != '' && property_exists ( $this, $orderBy )) { if ($order == '') $order = 'asc'; $this->GetSelectDB ()->order_by ( $orderBy, $order ); } if ($limit > 0) { $this->GetSelectDB ()->limit ( $limit, $limitStart ); } $data = $this->GetSelectDB ()->get ( $this->tableName )->result (); if (count ( $data ) > 0) { $allData = null; $i = 0; foreach ( $data as $tm ) { $allData [$i ++] = $this->BindObject ( $tm, true ); } $this->AddDebugMsg ( "SelectAll of " . get_class ( $this ) . " is found data" ); return $allData; } else { $this->AddDebugMsg ( "SelectAll of " . get_class ( $this ) . " return null for no data found", StatusError ); return null; } } function SelectAllForCSV($QueryString = "", $orderBy = '', $order = 'asc', $limit = 0, $limitStart = 0) { if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if ($QueryString != "") $this->GetSelectDB ()->Select ( $QueryString ); foreach ( $this->setProperties as $key => $value ) { $this->GetSelectDB ()->like ( $key, $this->$key, 'after' ); } if ($orderBy != '' && property_exists ( $this, $orderBy )) { if ($order == '') $order = 'asc'; $this->GetSelectDB ()->order_by ( $orderBy, $order ); } if ($limit > 0) { $this->GetSelectDB ()->limit ( $limit, $limitStart ); } $data = $this->GetSelectDB ()->get ( $this->tableName ); //if (count ( $data ) > 0) { return $data; //} else { // $this->AddDebugMsg ( "SelectAll for CSV of " . get_class ( $this ) . " return null for no data found", StatusError ); // return null; // } } function Update($isForce=false) { if(!$isForce){ $this->UnsetUpdateRetrictedField(); } $this->strPrpertyForLog = ""; if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } // echo count($this->setProperties); if (count ( $this->setProperties ) == 0) { $this->AddError ( $this->msg->GetMsg ( 's003' ) ); //"No change for update."); return false; } $primaryKey = $this->primaryKey; foreach ( $this->setProperties as $key => $value ) { if (isset ( $this->setOption [$key] )) { $this->GetUpdateDB ()->Set ( $key, $this->$key, $this->setOption [$key] ); } else { if ($key == 'password') { $this->GetUpdateDB ()->set ( 'password', "MD5('" . $this->$key . "')", FALSE ); } else { $this->GetUpdateDB ()->set ( $key, $this->$key ); } } $this->strPrpertyForLog .= "$key=" . $this->$key . ","; //$this->GetUpdateDB ()->Set ( $key, $this->$key ); } $isPKeySet = false; foreach ($this->updateWhereExtraField as $key=>$value){ $isWhereSet=true; $this->GetUpdateDB ()->where ( $key, $value); if ($key == $primaryKey){ $isPKeySet = true; } } if (!$isPKeySet) { $this->GetUpdateDB ()->where ( $primaryKey, $this->$primaryKey ); } $this->GetUpdateDB ()->limit(1); if ($this->GetUpdateDB ()->Update ( $this->tableName )) { if($this->GetUpdateDB()->affected_rows()>0){ $this->setProperties = array (); $this->AddDebugMsg ( "update of " . get_class ( $this ) . " is successed" ); return true; }else{ return false; } /*$this->AddLog ($this->strPrpertyForLog, "U" );*/ } else { $this->AddDebugMsg ( "update of " . get_class ( $this ) . " is failed", StatusError ); return false; } } protected function BindObject($obj, $isNew = false) { if ($this->tableName == null ) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return false; } if ($isNew) { $className = "M" . $this->tableName; $newobj = new $className (); foreach ( $obj as $key => $value ) { $newobj->$key = $value; } return $newobj; } else { foreach ( $obj as $key => $value ) { $this->$key = $value; } } } function Delete($stopLimit=false) { $primaryKey = $this->primaryKey; $isPKEYSet=false; if (! empty ( $this->primaryKey )) { $primaryKey = $this->primaryKey; $pData = $this->$primaryKey; if ($pData && $pData != '') { $isPKEYSet=true; $this->GetUpdateDB ()->where ( $primaryKey, $pData ); } } if(count($this->setProperties)>0 && !$isPKEYSet){ return false; } $this->strPrpertyForLog = ""; foreach ( $this->setProperties as $key => $value ) { $this->strPrpertyForLog .= "$key=" . $this->$key . ","; $this->GetUpdateDB ()->where ( $key, $this->$key ); } if(!$stopLimit){$this->GetUpdateDB ()->limit(1);} $data = ($this->GetUpdateDB ()->delete ( $this->tableName )); if ($data) { $this->isSelected = false; $this->setProperties = array (); $this->AddDebugMsg ( "Delete of" . get_class ( $this ) . " is successed" ); /*$this->AddLog ($this->strPrpertyForLog, "D" );*/ return true; } $this->AddDebugMsg ( "Delete of " . get_class ( $this ) . " is failed", StatusError ); return false; } private function ValidData($isURI = false) { if (count ( $this->validations ) > 0 && $this->isValidationRule) { if ($this->form_validation->run () == FALSE) { $this->AddError ( validation_errors (),false,true); if (! $isURI) $data = $_POST; else { $data = $this->uri->uri_to_assoc ( 3 ); } if (count ( $data ) > 0) { foreach ( $data as $key => $value ) { if (isset ( $this->setProperties [$key] )) { if (property_exists ( $this, $key )) { $this->$key = null; unset ( $this->setProperties [$key] ); } } } $this->AddDebugMsg ( "ValidData of " . get_class ( $this ) . " is failed", StatusError ); return false; } else { $this->AddDebugMsg ( "ValidData of " . get_class ( $this ) . " is failed", StatusError ); return false; } } else { $this->AddDebugMsg ( "ValidData of " . get_class ( $this ) . " is successed" ); return true; } } else { return true; } } function CountAll($isLike = false, $sDate = "", $eDate = "", $dateName = "") { if ($this->tableName == null || $this->primaryKey == null) { $this->AddSystemLog ( $this->msg->GetMsg ( 's002' ) ); return 0; } foreach ( $this->setProperties as $key => $value ) { if ($isLike) { $this->GetSelectDB ()->like ( $key, $this->$key, 'after' ); } else { $this->GetSelectDB ()->where ( $key, $this->$key ); } } if ($sDate != "" && $eDate != "" && $dateName != "") { $whereDate = $dateName . " BETWEEN '" . $sDate . "' AND '" . $eDate . "'"; $this->GetSelectDB ()->where ( $whereDate ); } return $this->GetSelectDB ()->count_all_results ( $this->tableName ); } }