public function save($model, $id, $data)
{
$oldId = $id;
if (is_null($id)) {
// insert
$newId = $data[$model->id_field] ?: $this->generateNewId($model);
if (isset($model->_table[$this->short_name][$newId])) {
throw $this->exception('This id is already used. Load the model before')->addMoreInfo('id', $data[$model->id_field]);
}
} else {
// update
//unset($model->_table[$this->short_name][$oldId]);
$newId = $id;
//$data[$model->id_field];
$data = array_merge($model->_table[$this->short_name][$newId], $data);
}
$data[$model->id_field] = $newId;
$model->_table[$this->short_name][$newId] = $data;
$model->data = $data;
return $newId;
}