现在的位置: 首页 > 综合 > 正文

mantisbt 增加项目级tags功能

2013年03月01日 ⁄ 综合 ⁄ 共 2033字 ⁄ 字号 评论关闭

连接到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

抱歉!评论已关闭.