当前位置: 首页 > 工具软件 > OneThink > 使用案例 >

onethink 后台添加用户行为日志

钱星辰
2023-12-01

根据onethink的手册里面说的对用户行为进行设计,例如我需要记录什么时间谁下载了什么文章

什么时间和谁原来的日志中都已经提供了相应的代码,只要使用[user|get_nickname]和[time|time_format]就可以获得。

现在就是需要获得下载的文章的内容。

在Application下的Common下的Common中的function.php中写一个 action_log1函数主要是为了获得download_id和get_subject函数。

这个是对action_log1的使用,以及参数配置,重点是第一个参数,第三个参数,最后一个参数。

将这一行放在你想记录的位置,即下载的controller代码位置即可。

action_log1('download','document_download',$id,12,$uid);

下面是action_log1的定义,是基于action_log做的,主要是添加了download_id

function action_log1($action = null, $model = null,$download_id=null, $record_id = null, $user_id = null){

    //参数检查

    if(empty($action) || empty($model) || empty($record_id)){

        return '参数不能为空';

    }

    if(empty($user_id)){

        $user_id = is_login();

    }

    //查询行为,判断是否执行

    $action_info = M('Action')->getByName($action);

    if($action_info['status'] != 1){

        return '该行为被禁用或删除';

    }

    //插入行为日志

    $data['download_id']    =   $download_id;

    $data['action_id']      =   $action_info['id'];

    $data['user_id']        =   $user_id;

    $data['action_ip']      =   ip2long(get_client_ip());

    $data['model']          =   $model;

    $data['record_id']      =   $record_id;

    $data['create_time']    =   NOW_TIME;

    //解析日志规则,生成日志备注

    if(!empty($action_info['log'])){

        if(preg_match_all('/\[(\S+?)\]/', $action_info['log'], $match)){

        $log['download_id'] =   $download_id;

            $log['user']    =   $user_id;

            $log['record']  =   $record_id;

            $log['model']   =   $model;

            $log['time']    =   NOW_TIME;

            $log['data']    =   array('user'=>$user_id,'model'=>$model,'record'=>$record_id,'time'=>NOW_TIME);

            foreach ($match[1] as $value){

                $param = explode('|', $value);

                if(isset($param[1])){

                    $replace[] = call_user_func($param[1],$log[$param[0]]);

                }else{

                    $replace[] = $log[$param[0]];

                }

            }

            $data['remark'] =   str_replace($match[0], $replace, $action_info['log']);

        }else{

            $data['remark'] =   $action_info['log'];

        }

    }else{

        //未定义日志规则,记录操作url

        $data['remark']     =   '操作url:'.$_SERVER['REQUEST_URI'];

    }


    M('ActionLog')->add($data);

    if(!empty($action_info['rule'])){

        //解析行为

        $rules = parse_action($action, $user_id);

        //执行行为

        $res = execute_action($rules, $action_info['id'], $user_id);

    }

}


下面这个函数提供一个id,然后根据id获得数据库中Document_download这个表中相对应的题目subject

function get_subject($id = NULL){

$download=D('Document_download');

$subject=$download->where("id='$id'")->getfield('subject');

return $subject;

}

然后再后台使用这段代码就可以获得了下载文章的题目。

[download_id|get_subject]

 类似资料: