实施行动日志

发布于 2024-12-04 22:18:14 字数 241 浏览 0 评论 0原文

是否有任何类可以对用户的操作进行审核? 我的意思是用户添加、删除或修改记录的操作?

前段时间我使用过 phpmyedit,它有一个“logtable”选项 ($opts['logtable'] = 'changelog';),可以用来“审核”或跟踪该特殊表的活动。

是否可以做到这一点,或者我是否必须在 $f->update() 之前实现它(例如)?

Is there any class available to do auditing of actions of users?
I mean actions that users do with add, delete or modify a record?

Some time ago I've used phpmyedit and It has a "logtable" option ($opts['logtable'] = 'changelog';), that one can use to "audit" or track the activity to that special table.

Is it possible to do this or do I have to implement it (for instance) before $f->update()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反话 2024-12-11 22:18:14

没有这样的类,但我已经实现了好几次了。这涉及“推送”标准 Model_Table 类以将功能包含到所有模型中。这是食谱。

  1. 创建您的审核日志模型类。 Model_AuditLog 可能是一个好名字。
  2. 在 lib/Model/Table.php 中创建文件,根据下面的代码替换所有模型的共同祖先。
  3. 为 beforeUpdate / afterUpdate 和 beforeDelete / afterDelete 编写类似的代码

如果您只对成功操作感兴趣,可以省略“beforeInsert”中的“update”。创建一些测试。不要忘记确保 Model_Audit 不会继承您的类以避免递归。实际上,您可以以不同的方式命名类,只要您记得将其用于模型即可。

Agile Toolkit 将在某个时候通过 Controller 提供无缝审计支持,最有可能在 4.2 中。


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);
    }
}

There is no such class, but I have implemented this several times. This involves "pushing" standard Model_Table class to include functionality into ALL of your models. Here is recipe.

  1. Create your audit log model class. Model_AuditLog probably would be a good name.
  2. Create file in lib/Model/Table.php which replaces common ancestor of all your models based on the code below.
  3. Write similar code for beforeUpdate / afterUpdate and beforeDelete / afterDelete

You can omit "update" from "beforeInsert" if you are only interested in successful operations. Create some tests. Don't forget to make sure Model_Audit does NOT inherit your class to avoid recursion. You can actually name class differently, as long as you remember to use it for the models.

Agile Toolkit will have seamless audit support through Controller at some point, most probably in 4.2.


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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文