根据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]