View Issue Details

IDProjectCategoryView StatusLast Update
0015981mantisbtfeaturepublic2019-06-02 15:53
Reporterkelson Assigned Toatrol  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.2.15 
Summary0015981: In "My View", display the table "Reported By Me" when All Project is selected
Description

The use case :
Project A is private
Project B is private
User A hase viewer Access Level
User A belong to Project B as Reporter

So User A can report on project B.
The actual behavior display the table "Reported By Me" for User A only when Project B is selected.
However, User A should be able to see this table when All Project is selected too, because he has reported some issues.

TagsNo tags attached.

Activities

kelson

kelson

2013-06-04 09:22

reporter  

my_view_page.php (5,181 bytes)   
<?php
# MantisBT - a php based bugtracking system

# MantisBT is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# MantisBT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with MantisBT.  If not, see <http://www.gnu.org/licenses/>.

	/**
	 * @package MantisBT
	 * @copyright Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
	 * @copyright Copyright (C) 2002 - 2013  MantisBT Team - mantisbt-dev@lists.sourceforge.net
	 * @link http://www.mantisbt.org
	 */
	 /**
	  * MantisBT Core API's
	  */
	require_once( 'core.php' );

	require_once( 'compress_api.php' );
	require_once( 'filter_api.php' );
	require_once( 'last_visited_api.php' );

	auth_ensure_user_authenticated();

	$t_current_user_id = auth_get_current_user_id();

	# Improve performance by caching category data in one pass
	category_get_all_rows( helper_get_current_project() );

	compress_enable();

	# don't index my view page
	html_robots_noindex();

	html_page_top1( lang_get( 'my_view_link' ) );

	if ( current_user_get_pref( 'refresh_delay' ) > 0 ) {
		html_meta_redirect( 'my_view_page.php', current_user_get_pref( 'refresh_delay' )*60 );
	}

	html_page_top2();

	print_recently_visited();

	$f_page_number		= gpc_get_int( 'page_number', 1 );

	$t_per_page = config_get( 'my_view_bug_count' );
	$t_bug_count = null;
	$t_page_count = null;

	$t_boxes = config_get( 'my_view_boxes' );
	asort ($t_boxes);
	reset ($t_boxes);
	#print_r ($t_boxes);

	$t_project_id = helper_get_current_project();
?>

<div align="center">
<?php
	$t_status_legend_position = config_get( 'status_legend_position' );

	if ( $t_status_legend_position == STATUS_LEGEND_POSITION_TOP || $t_status_legend_position == STATUS_LEGEND_POSITION_BOTH ) {
		html_status_legend();
		echo '<br />';
	}
?>
<table class="hide" border="0" cellspacing="3" cellpadding="0">

<?php
	$t_number_of_boxes = count ( $t_boxes );
	$t_boxes_position = config_get( 'my_view_boxes_fixed_position' );
	$t_counter = 0;

	while (list ($t_box_title, $t_box_display) = each ($t_boxes)) {
		# don't display bugs that are set as 0
		if ($t_box_display == 0) {
			$t_number_of_boxes = $t_number_of_boxes - 1;
		}

		# don't display "Assigned to Me" bugs to users that bugs can't be assigned to
		else if ( $t_box_title == 'assigned' && ( current_user_is_anonymous() OR user_get_assigned_open_bug_count( $t_current_user_id, $t_project_id ) == 0 ) ) {
			$t_number_of_boxes = $t_number_of_boxes - 1;
		}

		# don't display "Monitored by Me" bugs to users that can't monitor bugs
		else if ( $t_box_title == 'monitored' && ( current_user_is_anonymous() OR !access_has_project_level( config_get( 'monitor_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) {
			$t_number_of_boxes = $t_number_of_boxes - 1;
		}

		# don't display "Reported by Me" bugs to users that can't report bugs
		else if ( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) &&
				( current_user_is_anonymous() ) ) {
			$t_number_of_boxes = $t_number_of_boxes - 1;
		}

		# display the box
		else {
			$t_counter++;

			# check the style of displaying boxes - fixed (ie. each box in a separate table cell) or not
			if ( ON == $t_boxes_position ) {
				# for even box number start new row and column
				if ( 1 == $t_counter%2 ) {
					echo '<tr><td valign="top" width="50%">';
					include 'my_view_inc.php';
					echo '</td>';
				}

				# for odd box number only start new column
				else if ( 0 == $t_counter%2 ) {
					echo '<td valign="top" width="50%">';
					include 'my_view_inc.php';
					echo '</td></tr>';
				}
			}
			else if ( OFF == $t_boxes_position ) {
				# start new table row and column for first box
				if ( 1 == $t_counter ) {
					echo '<tr><td valign="top" width="50%">';
				}

				# start new table column for the second half of boxes
				if ( $t_counter == ceil ($t_number_of_boxes/2) + 1 ) {
					echo '<td valign="top" width="50%">';
				}

				# display the required box
				include 'my_view_inc.php';
				echo '<br />';

				# close the first column for first half of boxes
				if ( $t_counter == ceil ($t_number_of_boxes/2) ) {
					echo '</td>';
				}
			}
		}
	}


	# Close the box groups depending on the layout mode and whether an empty cell
	# is required to pad the number of cells in the last row to the full width of
	# the table.
	if ( ON == $t_boxes_position && $t_counter == $t_number_of_boxes && 1 == $t_counter%2 ) {
		echo '<td valign="top" width="50%"></td></tr>';
	} else if ( OFF == $t_boxes_position && $t_counter == $t_number_of_boxes ) {
		echo '</td></tr>';
	}

?>

</table>
<?php
	if ( $t_status_legend_position == STATUS_LEGEND_POSITION_BOTTOM || $t_status_legend_position == STATUS_LEGEND_POSITION_BOTH ) {
		html_status_legend();
	}
?>
</div>

<?php
	html_page_bottom();
my_view_page.php (5,181 bytes)   
kelson

kelson

2013-06-04 09:25

reporter   ~0037080

don't display "Reported by Me" bugs to users that can't report bugs

else if ( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) &&
( current_user_is_anonymous() OR access_has_project_level( config_get( 'report_bug_threshold' ), $t_project_id, $t_current_user_id ) ) ) {

$t_number_of_boxes = $t_number_of_boxes - 1;

}

I think the access_has_project_level check is not necessary.
I remove it and I get the wished behavior.

atrol

atrol

2013-06-04 09:33

developer   ~0037081

Last edited: 2013-06-04 09:36

View 3 revisions

Same applies for "Monitored by Me" and monitor_bug_threshold

The clean solution is to use
access_has_any_project( config_get( 'report_bug_threshold' ), $t_current_user_id )

kelson

kelson

2013-06-05 03:22

reporter   ~0037101

Hi Atrol,

don't display "Reported by Me" bugs to users that can't report bugs

else if ( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) ) &&
( !access_has_any_project( config_get( 'report_bug_threshold' ), $t_current_user_id ) ) ) {

$t_number_of_boxes = $t_number_of_boxes - 1;

}

Is the solution that you have suggested ?

atrol

atrol

2013-06-05 16:13

developer   ~0037108

Is the solution that you have suggested ?
Yes

atrol

atrol

2019-05-20 14:36

developer   ~0062103

This issue will not be fixed in 1.2.x, as this old version is no longer supported.
Meanwhile is It's fixed in verision 2.x

Issue History

Date Modified Username Field Change
2013-06-04 09:19 kelson New Issue
2013-06-04 09:22 kelson File Added: my_view_page.php
2013-06-04 09:25 kelson Note Added: 0037080
2013-06-04 09:33 atrol Note Added: 0037081
2013-06-04 09:33 atrol Status new => confirmed
2013-06-04 09:35 atrol Note Edited: 0037081 View Revisions
2013-06-04 09:36 atrol Note Edited: 0037081 View Revisions
2013-06-05 03:22 kelson Note Added: 0037101
2013-06-05 16:13 atrol Note Added: 0037108
2019-05-20 14:36 atrol Assigned To => atrol
2019-05-20 14:36 atrol Status confirmed => resolved
2019-05-20 14:36 atrol Resolution open => fixed
2019-05-20 14:36 atrol Note Added: 0062103
2019-06-02 15:53 atrol Status resolved => closed