连接到mts数据库:bugtracker
执行:alter table mantis_tag_table add column project_id int(5) default '0'
打开tag_api.php,红色为修改内容
//为tags增加参数当前项目id
function tag_create( $p_name, $p_user_id = null, $p_description = '' ) {
access_ensure_global_level( config_get( 'tag_create_threshold' ) );
tag_ensure_name_is_valid( $p_name );
tag_ensure_unique( $p_name );
if( null == $p_user_id ) {
$p_used_id = auth_get_current_user_id();
} else {
user_ensure_exists( $p_user_id );
}
$c_user_id = db_prepare_int( $p_user_id );
$c_date_created = db_now();
$t_tag_table = db_get_table( 'mantis_tag_table' );
$f_bug_id = gpc_get_int( 'bug_id' );
$t_bug_data = bug_get( $f_bug_id, true );
$t_project_id = $t_bug_data->project_id;
$query = "INSERT INTO $t_tag_table
( user_id,
name,
description,
date_created,
date_updated,
project_id
)
VALUES
( " . db_param() . ",
" . db_param() . ",
" . db_param() . ",
" . db_param() . ",
" . db_param() . ",
". $t_project_id ."
)";
db_query_bound( $query, Array( $c_user_id, trim( $p_name ), trim( $p_description ), $c_date_created, $c_date_created ) );
return db_insert_id( $t_tag_table );
}
//获取tags时,根据当前project_id获取
function tag_get_candidates_for_bug( $p_bug_id ) {
$t_tag_table = db_get_table( 'mantis_tag_table' );
$t_params = array();
if ( 0 != $p_bug_id ) {
$t_bug_tag_table = db_get_table( 'mantis_bug_tag_table' );
if ( db_is_mssql() ) {
$t_params[] = $p_bug_id;
$query = "SELECT t.id FROM $t_tag_table t
LEFT JOIN $t_bug_tag_table b ON t.id=b.tag_id
WHERE b.bug_id IS NULL OR b.bug_id != " . db_param();
$result = db_query_bound( $query, $t_params );
$t_subquery_results = array();
while( $row = db_fetch_array( $result ) ) {
$t_subquery_results[] = (int)$row;
}
$query = "SELECT id, name, description FROM $t_tag_table WHERE id IN ( " . implode( ', ', $t_subquery_results ) . ')';
} else {
$t_bug_data = bug_get( $p_bug_id, true );
$t_project_id = $t_bug_data->project_id;
$query = "SELECT id, name, description FROM $t_tag_table WHERE id IN (
SELECT t.id FROM $t_tag_table t
LEFT JOIN $t_bug_tag_table b ON t.id=b.tag_id
WHERE b.bug_id IS NULL OR b.bug_id != " . db_param() .
')'."and project_id=".$t_project_id;
}
$t_params[] = $p_bug_id;
}
//如果需要全局tags,将方法tag_get_candidates_for_bug里面的."and project_id=".$t_project_id; 改为."and project_id=".$t_project_id." or project_id=0";
//这样project_id为0的tags为全局tags