Acts As Versioned Plugin For Akelos Active Records

Acts as versioned plugin for Akelos Active Records

This plugin adds versioning capabilities to you Active Record Models.

Installation

./script/plugin install acts_as_versioned

Enabling versioning in your models

Say you have a Chapter model and you want to keep the latest 20 modifications for each chapter.

Adding the acts as behaviour to your Chapter model

./app/models/chapter.php

<?php
 
class Chapter extends ActiveRecord
{
    var $acts_as = array('versioned' => array('limit'=>10));
}
 
?>

Modifying your ''chapters'' table to add a version number and create a ''chapter_versions'' table

./app/installers/chapter_installer.php

<?php
 
Ak::import('Chapter');
Ak::loadPlugins();
 
class ChapterInstaller extends AkInstaller
{
    function up_1()
    {
        //.....
    }
 
    function up_2()
    {
        $Chapter =& new Chapter();
        $Chapter->versioned->createVersionedTable();
    }
 
    function down_1()
    {
        //.....
    }
 
    function down_2()
    {
        $Chapter =& new Chapter();
        $Chapter->versioned->dropVersionedTable();
    }
}
 
?>

Using your brand new versioning system

  • Behaviour handler
$Chapter->versioned
  • Loads versions, pass true to force a db reload
$Chapter->versioned->load()
  • Rolling back a version
$Chapter->versioned->revertToVersion(3);
  • Same as find() but scoped to older versions
$Chapter->versioned->find();
  • An array with your versions
$Chapter->versions
  • Next versioned item if exists
$Chapter->versions[2]->getNext();
  • Previous versioned item if exists
$Chapter->versions[2]->getPrevious();
 
acts_as_versioned.txt · Last modified: 2008/05/14 13:50 by 79.84.241.99
 

The Akelos Framework was created by Bermi Ferrer and other contributors.
Potions of the code and documentation have been ported from Ruby on Rails.

The Akelos Framework is released under the LGPL license.

"Akelos", "Akelos Framework", and the Akelos logo are trademarks of Bermi Labs All rights reserved.

Wiki driven by DokuWiki