У меня настроено так, что обычный пользователь может видеть только свои заявки.
Надо, чтобы он видел не только свои, но и те, в которых он добавили в отслеживающих.
Вопрос - как это сделать?
Отслеживание заявки
Moderators: Developer, Contributor
Re: Отслеживание заявки
Начнем с того, как сделано, чтобы он видел только свои? В мантисе по-умолчанию видны только те у кого есть доступ в проект. но они видят все заявки в группе.
Re: Отслеживание заявки
Настроено в config_inc.php
С юзерами, которые выше reporter все ок, видят и мониторят, все что угодно. Но у нас ослеживающими могут быть и репортеры. Им приходят письма, что они добавлены как наблюдатели, но ни в заявку их не пускает, ни в списках заявок нет.
Перерыл все, так и не нашел "кошерного" пути как это сделать.
Для себя сделал костылем.
В файле /core/access_api.php
поменял строку 427
на
Пользователи теперь имеют возможность заходить в заявки, в которых они отслеживающие.
Далее, чтобы эти заявки появились в списках в файле /core/filter_api.php в районе строки 1273, после строк
засунул это
и следующую строку
изменил на
Готово.
Code: Select all
$g_limit_reporters = ON;
Перерыл все, так и не нашел "кошерного" пути как это сделать.
Для себя сделал костылем.
В файле /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);