ユーザーのアクションの監査を行うために利用できるクラスはありますか?ユーザーがレコードの追加、削除、または変更を行うアクションを意味しますか?
少し前にphpmyeditを使用しましたが、「logtable
」オプション($opts['logtable'] = 'changelog';
)があり、その特別なテーブルへのアクティビティを「監査」または追跡するために使用できます。
これを行うことは可能ですか、それとも(たとえば)前に実装する必要があります$f->update()
か?
ユーザーのアクションの監査を行うために利用できるクラスはありますか?ユーザーがレコードの追加、削除、または変更を行うアクションを意味しますか?
少し前にphpmyeditを使用しましたが、「logtable
」オプション($opts['logtable'] = 'changelog';
)があり、その特別なテーブルへのアクティビティを「監査」または追跡するために使用できます。
これを行うことは可能ですか、それとも(たとえば)前に実装する必要があります$f->update()
か?
そのようなクラスはありませんが、これを数回実装しました。これには、標準の Model_Table クラスを「プッシュ」して、すべてのモデルに機能を含めることが含まれます。レシピはこちら。
操作の成功のみに関心がある場合は、「beforeInsert」から「update」を省略できます。いくつかのテストを作成します。再帰を避けるために、Model_Audit がクラスを継承しないことを忘れないでください。モデルに使用することを忘れない限り、実際にはクラスに別の名前を付けることができます。
Agile Toolkit は、おそらく 4.2 で、ある時点で Controller を介してシームレスな監査をサポートする予定です。
class Model_Table extends Model_MVCTable {
function beforeInsert($data){
$this->insert_audit = $this->add('Model_Audit')
->set('action','insert');
$this->insert_audit->update();
return parent::beforeInsert($data);
}
function afterInsert($id){
$this->insert_audit->set('is_completed',true)
->update();
return parent::afterInsert($id);
}
}