Revision #8 was created by wei on Feb 14, 2009, 10:27:17 PM.
Update code highlighting
Content
A simple and effective way to keep track what your users are doing within your application is to log their activities related to database modifications. You can log whenever a record was inserted, changed or deleted, and also when and by which user this was done. For a [CActiveRecord] Model you could use a behavior for this purpose. This way you will be able to add log functionality to ActiveRecords very easily.
First of all you have to create a table for the log-lines in the database. Here is an example (MySQL):
[sql]
CREATE TABLE ActiveRecordLog (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
description VARCHAR(255) NULL,
[...]
```php
class ActiveRecordLogableBehavior extends CActiveRecordBehavior {
private $_oldattributes = array();
public function afterSave($event)
{
if (!$this->Owner->isNewRecord) {
// new attributes
[...]
// compare old and new foreach ($newattributes as $name => $value) {
if (!empty($oldattributes)) {
$old = $oldattributes[$name];
public function afterFind($event)
{
// Save old values
[...]
```php
public function behaviors() {
return array(
// Classname => path to Class
'ActiveRecordLogableBehavior'=>
'application.behaviors.ActiveRecordLogableBehavior',
);
} }
```