Add validation for loadIdsFor function.

This commit is contained in:
davidcallizaya
2017-03-02 14:18:55 -04:00
parent ba68b4f04b
commit 05a477f95d

View File

@@ -5674,27 +5674,38 @@ class Processes
return $oData; return $oData;
} }
private function loadIdsFor($modelClass, $uidTableField, $idTableField, &$data) private function loadIdsFor($modelClass, $uidTableField, $idTableField,
&$data)
{ {
if (empty($data)) { if (empty($data)) {
return $data; return $data;
} }
if (!is_array($data)) { if (!is_array($data)) {
throw new Exception("Invalid input data form $modelClass($key)" . G::json_encode($data)); throw new Exception("Invalid input data form $modelClass($key)".G::json_encode($data));
} }
$uidField = explode('.', $uidTableField)[1]; $uidTableFieldArray = explode('.', $uidTableField);
$idField = explode('.', $idTableField)[1]; $idTableFieldArray = explode('.', $idTableField);
if (count($uidTableFieldArray) !== 2) {
throw new Exception('Invalid argument $uidTableField, expected a "TABLE.COLUMN" string');
}
if (count($idTableFieldArray) !== 2) {
throw new Exception('Invalid argument $idTableField, expected a "TABLE.COLUMN" string');
}
$uidField = $uidTableFieldArray[1];
$idField = $idTableFieldArray[1];
if (isset($data[$uidField])) { if (isset($data[$uidField])) {
//$data is an single row //$data is an single row
$model = new $modelClass(); $model = new $modelClass();
$row = $model->load($data[$uidField]); $row = $model->load($data[$uidField]);
$data[$idField] = $model->getByName($idTableField, BasePeer::TYPE_COLNAME); $data[$idField] = $model->getByName($idTableField,
BasePeer::TYPE_COLNAME);
} else { } else {
//$data is an array of row //$data is an array of row
foreach ($data as &$dataRow) { foreach ($data as &$dataRow) {
$model = new $modelClass(); $model = new $modelClass();
$row = $model->load($dataRow[$uidField]); $row = $model->load($dataRow[$uidField]);
$dataRow[$idField] = $model->getByName($idTableField, BasePeer::TYPE_COLNAME); $dataRow[$idField] = $model->getByName($idTableField,
BasePeer::TYPE_COLNAME);
} }
} }
return $data; return $data;