/** * Takes a set of form data ($Form->_PostValues), validates them, and * inserts or updates them to the datatabase. * * @param array $FormPostValues An associative array of $Field => $Value pairs that represent data posted * from the form in the $_POST or $_GET collection. * @param array $Settings If a custom model needs special settings in order to perform a save, they * would be passed in using this variable as an associative array. * @return unknown */ public function Save($FormPostValues, $Settings = FALSE) { // Define the primary key in this model's table. $this->DefineSchema(); // See if a primary key value was posted and decide how to save $PrimaryKeyVal = GetValue($this->PrimaryKey, $FormPostValues, FALSE); $Insert = $PrimaryKeyVal === FALSE ? TRUE : FALSE; if ($Insert) { $this->AddInsertFields($FormPostValues); } else { $this->AddUpdateFields($FormPostValues); } // Validate the form posted values if ($this->Validate($FormPostValues, $Insert) === TRUE) { $Fields = $this->Validation->ValidationFields(); $Fields = RemoveKeyFromArray($Fields, $this->PrimaryKey); // Don't try to insert or update the primary key if ($Insert === FALSE) { $this->Update($Fields, array($this->PrimaryKey => $PrimaryKeyVal)); } else { $PrimaryKeyVal = $this->Insert($Fields); } } else { $PrimaryKeyVal = FALSE; } return $PrimaryKeyVal; }