Я начинаю публикацию небольших стаей про настройку багтрекера Mantis. В данный момент времени я настраиваю багтрекер для удобной работы и интересные вещи, с которыми приходится сталкиваться, буду выносить в статьи.
По умолчанию Мантис отправляет в теле письма всю информацию об ошибке. Там содержится огромное количество лишней информации. Выглядит это так: вам добавили один комментарий к ошибке, а в письме вы получаете все атрибуты бага, полное описание, шаги воспроизведения, все остальные комментарии, сделанные до этого, и всю историю работ над данной записью.
В настройках багтрекера данных вещи отсутствуют, так что придется лезть в код. Нам нужен файл core\email_api.php
Убираем лишние атрибуты
В настройках по умолчанию письмо выглядит так:
Чтобы сократить этот список находим строчки:
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reporter' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_handler' );
$t_message .= $user_get_name( $t_bugnote->reporter_id );
$t_message .= $t_email_separator1 . " \n";
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_project' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_bug' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_category' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reproducibility' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_severity' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_priority' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_status' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_target_version' );
И комментируем лишние для нас вещи:
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reporter' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_handler' );
//$t_message .= $user_get_name( $t_bugnote->reporter_id );
$t_message .= $t_email_separator1 . " \n";
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_project' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_bug' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_category' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reproducibility' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_severity' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_priority' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_status' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_target_version' );
Теперь письмо выглядит следующим образом:
Убираем историю работы над ошибкой
Файл тот же, ищем код:
# put history data
if(( ON == config_get( 'history_default_visible' ) ) && access_compare_level( $t_user_access_level, config_get( 'view_history_threshold' ) ) ) {
$t_bug_data['history'] = history_get_raw_events_array( $p_bug_id, $p_user_id );}
Тут я не исследовал глубоко использование всех переменных и решил завести свою — mail_history_default_visible
В файле config_inc.php добавляем строку:
$mail_history_default_visible = OFF;
И приведенные выше строки меняем на такие (изменение выделено цветом):
if(( ON == config_get( 'mail_history_default_visible' ) ) && access_compare_level( $t_user_access_level, config_get( 'view_history_threshold' ) ) ) {
$t_bug_data['history'] = history_get_raw_events_array( $p_bug_id, $p_user_id );}
Убираем лишние комментарии
Ищем строчки
# format bugnotes
foreach( $p_visible_bug_data['bugnotes'] as $t_bugnote ) {
Здесь идет набор всех комментариев в тело письма. Нам же нужно показать только последний. Для этого переходим от цикла к одному последнему элементу массива.
//foreach( $p_visible_bug_data['bugnotes'] as $t_bugnote ) {
$t_bugnote = array_pop($p_visible_bug_data['bugnotes']);
И комментируем последнюю закрывающую фигурную скобку ‘}’, что осталась от цикла foreach(…)
Шаги воспроизведения
Если нужно убрать описание повторения ошибки из письма, то можно закомментировать строку кода вот в таком операторе if()
if ( !is_blank( $p_visible_bug_data['email_steps_to_reproduce'] ) ) {
//$t_message .= "\n" . lang_get( 'email_steps_to_reproduce' ) . ": \n" . $p_visible_bug_data['email_steps_to_reproduce'] . "\n";
}
Теперь, после всех необходимых настроек, письма от Мантиса стали гораздо более аккуратные и легкочитаемые.