/** * Saves a model * * @param Atomik_Model $model * @return bool */ public function save(Atomik_Model $model) { $builder = $model->getBuilder(); $success = true; $this->_notify($builder, 'BeforeSave', array($model)); $data = array(); foreach ($builder->getFields() as $field) { $data[$field->name] = $field->filterOutput($model->{$field->name}); } if ($model->isNew()) { // insert if (($id = $this->_dbInstance->insert($builder->tableName, $data)) === false) { $success = false; } else { $model->setPrimaryKey($id); } } else { // update $where = array($builder->getPrimaryKeyField()->name => $model->getPrimaryKey()); $success = $this->_dbInstance->update($builder->tableName, $data, $where); } if (!$success) { $this->_notify($builder, 'FailSave', array($model)); return false; } $this->_notify($builder, 'AfterSave', array($model)); return true; }