/** * Insert a new revision * * @param array $data Revision data * @return void */ protected function _insertRevision($status) { $table = $this->getTable(); // Get the row data if ($status == KDatabase::STATUS_UPDATED) { $data = $this->getData(true); } else { $data = $this->getData(); } // Create the new revision $revision = $this->_table->getRow(); $revision->table = $table->getName(); $revision->row = $this->id; $revision->status = $status; $revision->data = (object) $table->filter($data); // Set the created_on and created_by information based on the creatable // or modifiable data in the row itself in cascading order if($this->isCreatable()) { if(isset($this->created_by) && !empty($this->created_by)) { $revision->created_by = $this->created_by; } if(isset($this->created_on) && ($this->created_on != $table->getDefault('created_on'))) { $revision->created_on = $this->created_on; } } if ($this->isModifiable()) { if(isset($this->modified_by) && !empty($this->modified_by)) { $revision->created_by = $this->modified_by; } if(isset($this->modified_on) && ($this->modified_on != $table->getDefault('modified_on'))) { $revision->created_on = $this->modified_on; } } // Store the revision $revision->save(); }