ETrashBinBehavior
Adds an ability to mark model as deleted and restore it when needed.
Installing and configuring
Preparing model
There should be an attribute in the model to store deletion flag. For example, "is_removed".
Attaching behavior
function behaviors() { return array( 'trash'=>array( 'class'=>'ext.yiiext.behaviors.model.trashBin.ETrashBinBehavior', // Deletion flag table column name (required) 'trashFlagField'=>'is_removed', // Value that is written to $trashFlagField when model is deleted // Default is 1 'removedFlag'=>1, // Value that is written to $trashFlagField when model is restored // Default is 0 'restoredFlag'=>0, ), ); }
Requirements
API
remove()
Mark model as deleted.
$user=User::model()->findByPk(1); $user->remove(); $user->save();
restore()
Restore deleted model.
// Since deleted models are ignored by default we have to show all models: User::model()->withRemoved(); // or just turn off behavior completely User::model()->disableBehavior('trash'); $user=User::model()->findByPk(1); // if you turned behavior off, don't forget to turn it back on User::model()->enableBehavior('trash'); $user->restore(); $user->save();
getIsRemoved()
Tells if model is marked as deleted.
$user1=User::model()->withRemoved()->findByPk(1); echo $user1->getIsRemoved() ? 'status=removed' : 'status=normal'; $user2=User::model()->withRemoved()->findByPk(2); echo $user2->isRemoved ? 'status=removed' : 'status=normal';
withRemoved()
Allows to search for deleted models.
$users=User::model()->withRemoved()->findAll();
Changelog
0.3
- Doc corrections and English docs (Sam Dark)
0.2
[] Change method isRemoved() to getIsRemoved() [+] Add method filterRemoved() for except finding removed models. [+] Add property $findRemoved to enable or disable find removed models. [+] Unit tests. [+] Add method withRemoved() for find removed models. [] Changed translation category to 'yiiext'. [*] New naming conventions.
0.1
[+] Initial public release.