Exemplo n.º 1
0
    /**
     * 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();
    }