20 protected $m_oDB = null;
25 protected $m_sTable =
'table';
31 protected $m_sIdColumn =
'id';
36 protected $m_bAutoID =
true;
41 protected $m_aDefaultValues = [];
46 protected $m_aActualValues = [];
51 protected $m_aRules = [];
56 protected $m_bNewRecord;
61 protected $m_bModified;
84 return $this->m_oDB->GetDB();
95 $this->m_bNewRecord =
true;
96 $this->m_bModified =
false;
97 $this->m_aActualValues = $this->m_aDefaultValues;
107 public function Save($aActualValues = null)
109 if ($aActualValues == null)
111 $aActualValues = $this->m_aActualValues;
113 elseif (is_array($aActualValues))
115 $this->m_aActualValues = $aActualValues;
117 $sID = arr_get($aActualValues, $this->m_sIdColumn,
'');
118 if ($this->m_bModified)
120 if ($this->m_bNewRecord)
124 unset($aActualValues[$this->m_sIdColumn]);
126 $sID = $this->m_oDB->Insert($this->m_sTable, $aActualValues, $this->m_bAutoID, $this->m_sIdColumn);
130 unset($aActualValues[$this->m_sIdColumn]);
131 $this->m_oDB->Update($this->m_sTable, $aActualValues, $this->GenerateWhereID($sID));
133 $this->m_bModified =
false;
147 public function UpdateSave($aActualValues = [], $bModified =
true, $bAutoId =
false)
149 $vID = arr_get($bAutoId ? $this->m_aActualValues : $aActualValues, $this->m_sIdColumn,
'');
150 unset($aActualValues[$this->m_sIdColumn]);
151 $this->m_oDB->Update($this->m_sTable, $aActualValues, $this->GenerateWhereID($vID));
152 $aActualValues[$this->m_sIdColumn] = $vID;
153 $this->
Set($aActualValues, $bModified);
164 public function Set($aActualValues = [], $bModified =
true)
166 $this->m_bModified = $bModified;
167 $this->m_aActualValues = array_merge($this->m_aActualValues, $aActualValues);
168 return $this->m_aActualValues;
179 return $this->m_aActualValues;
190 foreach ($this->m_oDB->Select($this->m_sTable) as $row)
204 public function Load($aWhere = [], $nReturnType = \PDO::FETCH_ASSOC)
206 $oQueryResult = $this->m_oDB->Select($this->m_sTable,
"*", $aWhere);
207 if ($oQueryResult ===
false)
211 $this->m_bNewRecord =
false;
212 $vRecord = $oQueryResult->fetch($nReturnType);
213 if ($vRecord ===
false)
217 return $this->
Set($vRecord,
false);
230 $aWhere = $this->GenerateWhereCondition($sColumn, $sValue);
231 return $this->
Load($aWhere);
243 $aWhere = $this->GenerateWhereID($sValue);
244 return $this->
Load($aWhere);
258 $sID = $this->m_aActualValues[$this->m_sIdColumn];
271 private function GenerateWhereCondition($sColumn, $sValue)
273 return [[$sColumn,
"=", $sValue]];
283 private function GenerateWhereID($sValue)
285 return $this->GenerateWhereCondition($this->m_sIdColumn, $sValue);
296 foreach ($this->m_aActualValues as $sKey => $sValue)
298 foreach (array(
"Original ",
"dOriginal",
"sOriginal",
"sOrig") as $sOriginalPrefix)
300 $sAltKey = substr($sKey, 1);
301 if (isset($this->m_aDefaultValues[
"$sOriginalPrefix$sKey"]))
303 $this->m_aActualValues[
"$sOriginalPrefix$sKey"] = $sValue;
305 elseif (isset($this->m_aDefaultValues[
"$sOriginalPrefix$sAltKey"]))
307 $this->m_aActualValues[
"$sOriginalPrefix$sAltKey"] = $sValue;
322 $oValidationResult = \SimpleValidator\Validator::validate($aActualValues, $this->
GetRules());
323 $oValidationResult->customErrors(load_config(CONFIG_APP_ROOT .
"validator/en.php"));
324 if ($oValidationResult->isSuccess() ==
true)
330 return $oValidationResult->getErrors();
342 return $this->m_aRules;
__construct(\SDExtension\DB\CDataBase $oDB)
UpdateSave($aActualValues=[], $bModified=true, $bAutoId=false)
LoadByValue($sColumn, $sValue)
Set($aActualValues=[], $bModified=true)
Load($aWhere=[], $nReturnType=\PDO::FETCH_ASSOC)
Validate($aActualValues=[])
Save($aActualValues=null)