Отслеживание заявки

MantisBT forum for users who prefer to ask and answer questions in Russian.

Moderators: Developer, Contributor

Post Reply
alphaed
Posts: 43
Joined: 07 Aug 2012, 09:24

Отслеживание заявки

Post by alphaed »

У меня настроено так, что обычный пользователь может видеть только свои заявки.
Надо, чтобы он видел не только свои, но и те, в которых он добавили в отслеживающих.

Вопрос - как это сделать?
Kirill
Posts: 638
Joined: 25 Nov 2007, 08:05
Location: Kaliningrad, RF
Contact:

Re: Отслеживание заявки

Post by Kirill »

Начнем с того, как сделано, чтобы он видел только свои? В мантисе по-умолчанию видны только те у кого есть доступ в проект. но они видят все заявки в группе.
alphaed
Posts: 43
Joined: 07 Aug 2012, 09:24

Re: Отслеживание заявки

Post by alphaed »

Настроено в config_inc.php

Code: Select all

$g_limit_reporters = ON;
С юзерами, которые выше reporter все ок, видят и мониторят, все что угодно. Но у нас ослеживающими могут быть и репортеры. Им приходят письма, что они добавлены как наблюдатели, но ни в заявку их не пускает, ни в списках заявок нет.
Перерыл все, так и не нашел "кошерного" пути как это сделать.
Для себя сделал костылем.

В файле /core/access_api.php
поменял строку 427

Code: Select all

if ( $t_limit_reporters && !bug_is_user_reporter( $p_bug_id, $p_user_id ) && !access_has_project_level( $t_report_bug_threshold + 1, $t_project_id, $p_user_id ) ) {
на

Code: Select all

if ( $t_limit_reporters && !bug_is_user_reporter( $p_bug_id, $p_user_id ) && !access_has_project_level( $t_report_bug_threshold + 1, $t_project_id, $p_user_id ) && !user_is_monitoring_bug( $p_user_id, $p_bug_id )) {
Пользователи теперь имеют возможность заходить в заявки, в которых они отслеживающие.

Далее, чтобы эти заявки появились в списках в файле /core/filter_api.php в районе строки 1273, после строк

Code: Select all

	if(( ON === $t_limit_reporters ) && ( !access_has_project_level( REPORTER + 1, $t_project_id, $t_user_id ) ) ) {
		$c_reporter_id = $c_user_id;
		$t_where_params[] = $c_reporter_id;
засунул это

Code: Select all

$t_bug_monitor_table = db_get_table( 'mantis_bug_monitor_table' );
		$query = "SELECT bug_id FROM $t_bug_monitor_table WHERE user_id=" . db_param();
		$monitored_bugs_result = db_query_bound( $query, Array( $c_user_id ) );
		$t_monitored_bugs_count = db_num_rows( $monitored_bugs_result );
		if( $t_monitored_bugs_count >0 ) {
			$monitored_bug_ids= "OR ($t_bug_table.id in (";
			for( $i = 0;$i < $t_monitored_bugs_count;$i++ ) {
				$monitored_bug_id = db_fetch_array( $monitored_bugs_result );
				$monitored_bug_ids.= $monitored_bug_id['bug_id'].", ";
			}
			$monitored_bug_ids= substr($monitored_bug_ids, 0, -2)."))";
		}else {
			$monitored_bug_ids = "";
		}
и следующую строку

Code: Select all

array_push( $t_where_clauses, "($t_bug_table.reporter_id=" . db_param() . ') ');
изменил на

Code: Select all

array_push( $t_where_clauses, "($t_bug_table.reporter_id=" . db_param() . ') ' . $monitored_bug_ids);
Готово.
Post Reply