%PDF- %PDF-
| Direktori : /www/loslex_o/tracker/ |
| Current File : /www/loslex_o/tracker/my_view_page.php |
<?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/>.
/**
* My View Page
*
* @package MantisBT
* @copyright Copyright 2000 - 2002 Kenzaburo Ito - kenito@300baud.org
* @copyright Copyright 2002 MantisBT Team - mantisbt-dev@lists.sourceforge.net
* @link http://www.mantisbt.org
*
* @uses core.php
* @uses access_api.php
* @uses authentication_api.php
* @uses category_api.php
* @uses compress_api.php
* @uses config_api.php
* @uses constant_inc.php
* @uses current_user_api.php
* @uses gpc_api.php
* @uses helper_api.php
* @uses html_api.php
* @uses lang_api.php
* @uses print_api.php
* @uses user_api.php
*/
require_once( 'core.php' );
require_api( 'access_api.php' );
require_api( 'authentication_api.php' );
require_api( 'category_api.php' );
require_api( 'compress_api.php' );
require_api( 'config_api.php' );
require_api( 'constant_inc.php' );
require_api( 'current_user_api.php' );
require_api( 'gpc_api.php' );
require_api( 'helper_api.php' );
require_api( 'html_api.php' );
require_api( 'lang_api.php' );
require_api( 'print_api.php' );
require_api( 'user_api.php' );
require_api( 'layout_api.php' );
require_css( 'status_config.php' );
auth_ensure_user_authenticated();
$t_current_user_id = auth_get_current_user_id();
$t_current_project_id = helper_get_current_project();
# Improve performance by caching category data in one pass
category_get_all_rows( $t_current_project_id );
compress_enable();
# don't index my view page
html_robots_noindex();
layout_page_header_begin( lang_get( 'my_view_link' ) );
$t_refresh_delay = current_user_get_pref( 'refresh_delay' );
if( $t_refresh_delay > 0 ) {
html_meta_redirect( 'my_view_page.php?refresh=true', $t_refresh_delay * 60 );
}
layout_page_header_end();
layout_page_begin( __FILE__ );
$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;
# The projects that need to be evaluated are those that will be included in the filters
# used for each box. At this point, those filter are created for "current" project, and
# may include subprojects, or not, based on the default "_view_type" property
# Unless these following checks are redesigned to account for the actual filters used,
# we will assume if subprojects are included by inspecting a default filter for current project.
if( $t_current_project_id == ALL_PROJECTS ) {
$t_project_ids_to_check = null;
} else {
# this creates a filter with the specific project informes, in the same way that
# those that will be used later for the boxes
$t_test_filter = filter_ensure_valid_filter( array( FILTER_PROPERTY_PROJECT_ID => [$t_current_project_id]) );
$t_project_ids_to_check = filter_get_included_projects( $t_test_filter );
}
# Retrieve the boxes to display
# - exclude hidden boxes per configuration (order == 0)
# - remove boxes that do not make sense in the user's context (access level)
$t_boxes = array_filter( config_get( 'my_view_boxes' ) );
$t_anonymous_user = current_user_is_anonymous();
foreach( $t_boxes as $t_box_title => $t_box_display ) {
if( # Remove "Assigned to Me" box for users that can't handle issues
( $t_box_title == 'assigned'
&& ( $t_anonymous_user
|| !access_has_any_project_level('handle_bug_threshold', $t_project_ids_to_check, $t_current_user_id )
)
) ||
# Remove "Monitored by Me" box for users that can't monitor issues
( $t_box_title == 'monitored'
&& ( $t_anonymous_user
|| !access_has_any_project_level( 'monitor_bug_threshold', $t_project_ids_to_check, $t_current_user_id )
)
) ||
# Remove display of "Reported by Me", "Awaiting Feedback" and
# "Awating confirmation of resolution" boxes for users that can't report bugs
( in_array( $t_box_title, array( 'reported', 'feedback', 'verify' ) )
&& ( $t_anonymous_user
|| !access_has_any_project_level( 'report_bug_threshold', $t_project_ids_to_check, $t_current_user_id )
)
)
) {
unset( $t_boxes[$t_box_title] );
}
}
asort( $t_boxes );
$t_timeline_view_threshold_access = access_has_any_project_level( config_get( 'timeline_view_threshold' ), $t_project_ids_to_check, $t_current_user_id );
$t_timeline_view_class = ( $t_timeline_view_threshold_access ) ? "col-md-7" : "col-md-6";
?>
<div class="col-xs-12 <?php echo $t_timeline_view_class ?>">
<?php
define( 'MY_VIEW_INC_ALLOW', true );
# Determine the box number where column 2 should start
# Use shift-right bitwise operator to divide by 2 as integer
$t_column2_start = ( count( $t_boxes ) + 1 ) >> 1;
$t_counter = 0;
foreach( $t_boxes as $t_box_title => $t_box_display ) {
# If timeline is OFF, display boxes on 2 columns
if( !$t_timeline_view_threshold_access && $t_counter++ == $t_column2_start ) {
# End of 1st column
echo '</div>';
echo '<div class="col-xs-12 col-md-6">';
}
include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'my_view_inc.php' );
echo '<div class="space-10"></div>';
}
?>
</div>
<?php if( $t_timeline_view_threshold_access ) { ?>
<div class="col-xs-12 col-md-5">
<?php
# Build a simple filter that gets all bugs for current project
$g_timeline_filter = array();
$g_timeline_filter[FILTER_PROPERTY_HIDE_STATUS] = array( META_FILTER_NONE );
$g_timeline_filter = filter_ensure_valid_filter( $g_timeline_filter );
include( $g_core_path . 'timeline_inc.php' );
?>
<div class="space-10"></div>
</div>
<?php }
layout_page_end();