1.在bug_view_page.php界面中添加安全问题评审按钮,也就是在html_api中增加safety部分,添加代码:
function html_button_bug_safety( $p_bug_id ) {
if ( access_has_bug_level( config_get( 'safety_bug_threshold' ), $p_bug_id ) ) {
html_button( string_get_bug_safety_page(),
lang_get( 'safety_bug_button' ),
array( 'bug_id' => $p_bug_id ) );
}
}
2.在config_ini中设置safety_bug_threshold权限为safetymanager,也就是说只有安全风险管理员才有权利查看和更改safety相关字段。
3.接着,在string.api中添加string_get_bug_safety_page函数,而字符串safety_bug_button需要在lang_chinese_simplified中添加,函数代码:
function string_get_bug_safety_page( $p_user_id = null ) {
return string_get_bug_page ( 'safety', $p_user_id );
}
4.这个添加完毕之后,函数string_get_bug_page会要求两个参数,show_safety和bug_safety_advanced_page。
5.Show_safety需要在config_ini中添加,而bug_safety_advanced_page需要添加,而代码则可以从bug_update_advanced_page中得到想法,删除掉update界面的其它代码,只保留自定义字段的部分,而其中<!-- Custom Fields -->
<?php
$t_custom_fields_found = false;
$t_related_custom_field_ids = custom_field_get_linked_ids( $t_bug->project_id );
foreach( $t_related_custom_field_ids as $t_id ) {
$t_def = custom_field_get_definition( $t_id );
if( ( $t_def['display_safety'] && !$t_def['advanced'] ) && custom_field_has_write_access( $t_id, $f_bug_id ) ) {
$t_custom_fields_found = true;
?>
6.需要更改display_safety部分,这个字段由于没有添加到数据库,需要在数据库中添加此字段,方法是使用phpmyadmin打开mantis数据库,找到manage_custom_field_table,添加display_safety字段,类型和默认值以及长度都和display_update一致即可。
而使用到advanced_page的时候需要用到advanced_safety字段,数据库中依然没有,因此需要在mantis_user_pref_table中添加advanced_safety字段,类型默认值等等和advanced_safety一致。
7.在html_api中找到html_buttons_view_bug_page函数,在其中添加:
echo '<td class="center">';
html_button_bug_safety( $p_bug_id );
echo '</td>';
此代码为了让safety_button显示在bug中。
8.至此,添加按钮以及新的界面完成,接下来,需要做自定义字段的代码。
首先,在manage_custom_field_edit_page.php中添加
<tr <?php echo helper_alternate_class() ?>>
<td class="category">
<?php echo lang_get( 'custom_field_display_safety' ) ?>
</td>
<td>
<input type="checkbox" name="display_safety" value="1" <?php check_checked( $t_definition['display_safety'] ) ?> />
</td>
</tr>
然后在custom_field_api.php中添加
$c_display_safety = db_prepare_bool( $p_def_array['display_safety'] );
if( array_key_exists( 'release_note', $p_def_array ) ) {
if ( !$t_update_something ) {
$t_update_something = true;
} else {
$query .= ', ';
}
$query .= " display_safety ='$c_ display_safety '";
}
最后在manage_custom_field_update.php中添加
$t_values['display_safety '] = gpc_get_bool( ' display_safety ' );
9.代码添加完毕之后,需要在自定义字段中添加感兴趣的字段,选中其中的:在创建问题时显示,在更新问题时显示,在设置完全问题时显示。如果前两个不选择的话,会出现写入数据库错误的情况,至此,安全问题评审按钮的添加工作结束。