1.在mantis_bug_table中增加字段user_id:user_id int(10) UNSIGNED 是 NULL
保证这个user_id字段值更新:
1.在core目录里面的bug_api.php中:
在function bug_create( $p_bug_data ) 函数中
增加$c_lastoperater_id =auth_get_current_user_id();
修改$query 为
$query = "INSERT INTO $t_bug_table
( project_id,
reporter_id, handler_id,
duplicate_id, priority,
severity, reproducibility,
status, resolution,
projection, category,
date_submitted, last_updated,
eta, bug_text_id,
os, os_build,
platform, version,
build,
profile_id, summary, view_state, sponsorship_total, sticky, fixed_in_version ,user_id )
VALUES
( '$c_project_id',
'$c_reporter_id', '$c_handler_id',
'0', '$c_priority',
'$c_severity', '$c_reproducibility',
'$t_status', '$t_resolution',
10, '$c_category',
" . db_now() . "," . db_now() . ",
10, '$t_text_id',
'$c_os', '$c_os_build',
'$c_platform', '$c_version',
'$c_build',
'$c_profile_id', '$c_summary', '$c_view_state', '$c_sponsorship_total', '$c_sticky', '' ,$c_lastoperater_id)";
在function bug_update( $p_bug_id, $p_bug_data, $p_update_extended = false, $p_bypass_mail = false )函数中
增加$c_lastoperater_id =auth_get_current_user_id();
修改$query 为
$query = "UPDATE $t_bug_table
SET project_id='$c_bug_data->project_id',
reporter_id='$c_bug_data->reporter_id',
handler_id='$c_bug_data->handler_id',
duplicate_id='$c_bug_data->duplicate_id',
priority='$c_bug_data->priority',
severity='$c_bug_data->severity',
reproducibility='$c_bug_data->reproducibility',
status='$c_bug_data->status',
resolution='$c_bug_data->resolution',
projection='$c_bug_data->projection',
category='$c_bug_data->category',
eta='$c_bug_data->eta',
os='$c_bug_data->os',
os_build='$c_bug_data->os_build',
platform='$c_bug_data->platform',
version='$c_bug_data->version',
build='$c_bug_data->build',
fixed_in_version='$c_bug_data->fixed_in_version',
view_state='$c_bug_data->view_state',
summary='$c_bug_data->summary',
sponsorship_total='$c_bug_data->sponsorship_total',
sticky='$c_bug_data->sticky'
, user_id=$c_lastoperater_id
WHERE id='$c_bug_id'";
在function bug_assign( $p_bug_id, $p_user_id, $p_bugnote_text='', $p_bugnote_private = false )函数中
增加$c_lastoperater_id =auth_get_current_user_id();
修改$query为
$query = "UPDATE $t_bug_table
SET handler_id='$c_user_id', status='$t_ass_val',user_id=$c_lastoperater_id
WHERE id='$c_bug_id'";
增加
# --------------------
# updates the user_id field
function bug_update_user_id( $p_bug_id ) {
$c_bug_id = db_prepare_int( $p_bug_id );
$c_lastoperate_id =auth_get_current_user_id();
$t_bug_table = config_get( 'mantis_bug_table' );
$query = "UPDATE $t_bug_table
SET user_id= " . $c_lastoperate_id . "
WHERE id='$c_bug_id'";
db_query( $query );
bug_clear_cache( $p_bug_id );
return true;
}
在function bugnote_add ( $p_bug_id, $p_bugnote_text, $p_private = false, $p_type = 0, $p_attr = '', $p_user_id = null )函数中增加
# update bug user_id updated
bug_update_user_id( $p_bug_id );
在有出现history_log_event_special( $p_bug_id, BUGNOTE_ADDED, bugnote_format_id( $t_bugnote_id ) );的地方注意加上这句话
这样就保证了各种操作的时候都能更新这个字段值,输入字段值的问题差不多就这么搞定了。
解决输出问题:
1.在core目录里面的custom_function_api.php中的
function custom_function_default_get_columns_to_view( $p_columns_target = COLUMNS_TARGET_VIEW_PAGE )函数中增加$t_columns[]='user_id';//'user_id';
2.在 core目录里面的columns_api.php中新增
# --------------------
# $p_columns_target: see COLUMNS_TARGET_* in constant_inc.php
function print_column_title_user_id( $p_sort, $p_dir, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE ) {
if ( $p_columns_target != COLUMNS_TARGET_CSV_PAGE ) {
echo '<td>';
print_view_bug_sort_link( lang_get( 'lastoperatername' ), 'user_id', $p_sort, $p_dir, $p_columns_target );
print_sort_icon( $p_dir, $p_sort, 'user_id' );
echo '</td>';
} else {
echo lang_get( 'lastoperatername' );
}
}
和
# --------------------
# $p_columns_target: see COLUMNS_TARGET_* in constant_inc.php
function print_column_user_id( $p_row, $p_columns_target = COLUMNS_TARGET_VIEW_PAGE ) {
echo '<td class="center">';
echo prepare_user_name( $p_row['user_id'] );
echo '</td>';
}
3.在lang目录的strings_chinese_simplified.txt中
新增定义#
$s_lastoperatername ='最近修改人';
然后应该就大功告成了。。。。。。
感谢http://www.futureware.biz/blog/index.php?title=title_1&more=1&c=1&tb=1&pb=1,西西的博客的提示,还有TurboSearcher,呵呵。
因为没有办法做到操作人员更新状态时就会自动更新最近修改人,所以我采用了手动更新这个字段的办法,写了一个update_latest_operater.php,然后:
在代码core/html_api.php中搜索<td class="menu">
增加
# update_latest_operater
if ( access_has_project_level( config_get( 'view_changelog_threshold' ) ) ) {
$t_menu_options[] = '<a href="update_latest_operater.php">' . lang_get( 'update_latest_operater') . '</a>';
}
在lang/strings_chinese_simplified.txt中搜索s_view_bugs_link
增加$s_update_latest_operater='更新最近修改人';
然后用户如果点击和“首页”超链接附近的“更新最近修改人”的超链接(界面太挤了,我把“编辑公告”这个超链接屏蔽了),即可以更新数据库里面的数据,且界面上的“最近修改人”字段就可以显示出信息了。
附:
update_latest_operater.php:
<html>
<body>
<?php
$db = mysql_connect('localhost', 用户名,密码);
mysql_select_db('mantis',$db);
$result = mysql_query("SELECT * FROM mantis_bug_table",$db);
while($r=mysql_fetch_array($result))do{
$id=$r["id"];
$result1=mysql_query("select bug_id,user_id from mantis_bug_history_table where bug_id =".$id." and field_name='status' and new_value=80 order by date_modified desc limit 0,1");
while($r1=mysql_fetch_row($result1))do{
$user_id=$r1[1];
$bug_id=$r1[0];
{
$result2=mysql_query("update mantis_bug_table set latest_operater_id='". $user_id."' where bug_id=".$id."");
}
#print "update mantis_bug_table set latest_operater_id='". $user_id."' where bug_id=".$id."";
#print "<br>";
}while($r1=mysql_fetch_row($result1));
#print $id;
}while ($r = mysql_fetch_array($result));
print "完成了,请".'<a href="view_all_bug_page.php">'."返回</a>";
?>
</body>
</html>