<?php
# Mantis - a php based bugtracking system
# Mantis 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.
#
# Mantis 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 Mantis.  If not, see <http://www.gnu.org/licenses/>.

/**
 * @package MantisBT
 * @version $Id$
 * @copyright Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
 * @copyright Copyright (C) 2002 - 2009  Mantis Team   - mantisbt-dev@lists.sourceforge.net
 * @link http://www.mantisbt.org
 */

/**
 * Mantis Core API's
 */
require_once( '../core.php' );

$t_core_path = config_get( 'core_path' );

require_once( $t_core_path . 'graph_api.php' );

# Grab Data
# ---
$t_project_id = helper_get_current_project();

$critical_count_arr = array(
	2,
);
$high_count_arr = array(
	2,
);
$medium_count_arr = array(
	2,
);
$low_count_arr = array(
	2,
);
$none_count_arr = array(
	2,
);
$duplicate_count_arr = array(
	2,
);

$critical_count_arr[0] = 0;
$critical_count_arr[1] = 0;
$critical_count_arr[2] = 0;
$high_count_arr[0] = 0;
$high_count_arr[1] = 0;
$high_count_arr[2] = 0;
$medium_count_arr[0] = 0;
$medium_count_arr[1] = 0;
$medium_count_arr[2] = 0;
$low_count_arr[0] = 0;
$low_count_arr[1] = 0;
$low_count_arr[2] = 0;
$none_count_arr[0] = 0;
$none_count_arr[1] = 0;
$none_count_arr[2] = 0;
$duplicate_count_arr[0] = 0;
$duplicate_count_arr[1] = 0;
$duplicate_count_arr[2] = 0;

$severity_arr = explode( ',', $g_severity_enum_string );
$severity_count = count( $severity_arr );

# GET OPEN
for( $i = 0;$i < $severity_count;$i++ ) {
	$t_severity_arr = explode( ':', $severity_arr[$i] );
	$t_severity = $t_severity_arr[0];
	$query = "SELECT COUNT(*) as count
			FROM mantis_bug_table
			WHERE project_id=" . db_param() . " AND
					status<80 AND
					severity=" . db_param();
	$result = db_query_bound( $query, Array( $t_project_id, $t_severity ) );
	$count = db_result( $result, 0, 0 );
	switch( $t_severity ) {
		case 20:
			$critical_count_arr[0] = $count;
			break;
		case 30:
			$high_count_arr[0] = $count;
			break;
		case 40:
			$medium_count_arr[0] = $count;
			break;
		case 50:
			$low_count_arr[0] = $count;
			break;
		case 60:
			$none_count_arr[0] = $count;
			break;
		case 70:
			$duplicate_count_arr[0] = $count;
			break;
	}
}

# GET RESOLVED
for( $i = 0;$i < $severity_count;$i++ ) {
	$t_severity_arr = explode( ':', $severity_arr[$i] );
	$t_severity = $t_severity_arr[0];
	$query = "SELECT COUNT(*) as count
			FROM mantis_bug_table
			WHERE project_id=" . db_param() . " AND
					status=80 AND
					severity=" . db_param();
	$result = db_query_bound( $query, Array( $t_project_id, $t_severity ) );
	$count = db_result( $result, 0, 0 );

	switch( $t_severity ) {
		case 20:
			$critical_count_arr[1] = $count;
			break;
		case 30:
			$high_count_arr[1] = $count;
			break;
		case 40:
			$medium_count_arr[1] = $count;
			break;
		case 50:
			$low_count_arr[1] = $count;
			break;
		case 60:
			$none_count_arr[1] = $count;
			break;
		case 70:
			$duplicate_count_arr[1] = $count;
			break;
	}
}

# GET CLOSED
for( $i = 0;$i < $severity_count;$i++ ) {
	$t_severity_arr = explode( ':', $severity_arr[$i] );
	$t_severity = $t_severity_arr[0];
	$query = "SELECT COUNT(*) as count
			FROM mantis_bug_table
			WHERE project_id=" . db_param() . " AND
					status=90 AND
					severity=" . db_param();
	$result = db_query_bound( $query, Array( $t_project_id, $t_severity ) );
	$count = db_result( $result, 0, 0 );

	switch( $t_severity ) {
		case 20:
			$critical_count_arr[2] = $count;
			break;
		case 30:
			$high_count_arr[2] = $count;
			break;
		case 40:
			$medium_count_arr[2] = $count;
			break;
		case 50:
			$low_count_arr[2] = $count;
			break;
		case 60:
			$none_count_arr[2] = $count;
			break;
		case 70:
			$duplicate_count_arr[2] = $count;
			break;
	}
}

$proj_name = project_get_field( $t_project_id, 'name' );

# Setup Graph
# ---
$graph = new Graph( 800, 600, 'auto' );
$graph->SetColor( "whitesmoke" );
$graph->SetScale( "textlin" );
$graph->SetShadow();
$graph->img->SetMargin( 40, 30, 40, 40 );

$graph->xaxis->SetTickLabels( array( 'Open', 'Resolved', 'Closed' ) );
$graph->xaxis->title->Set( "Status" );
$graph->xaxis->title->SetFont( FF_FONT1, FS_BOLD );

$graph->title->Set( "Severity vs. Status Distribution: $proj_name" );
$graph->title->SetFont( FF_FONT1, FS_BOLD );

# Create graph
$bplot1 = new BarPlot( $critical_count_arr );
$bplot2 = new BarPlot( $high_count_arr );
$bplot3 = new BarPlot( $medium_count_arr );
$bplot4 = new BarPlot( $low_count_arr );
$bplot5 = new BarPlot( $none_count_arr );
$bplot6 = new BarPlot( $duplicate_count_arr );

$bplot1->SetFillColor( "slateblue" );
$bplot2->SetFillColor( "maroon" );
$bplot3->SetFillColor( "lightgoldenrodyellow" );
$bplot4->SetFillColor( "paleturquoise" );
$bplot5->SetFillColor( "palegreen3" );
$bplot6->SetFillColor( "sienna2" );

$bplot1->SetShadow();
$bplot2->SetShadow();
$bplot3->SetShadow();
$bplot4->SetShadow();
$bplot5->SetShadow();
$bplot6->SetShadow();

$bplot1->SetLegend( 'Critical' );
$bplot2->SetLegend( 'High' );
$bplot3->SetLegend( 'Medium' );
$bplot4->SetLegend( 'Low' );
$bplot5->SetLegend( 'None' );
$bplot6->SetLegend( 'Duplicate' );

$bplot1->value->Show();
$bplot2->value->Show();
$bplot3->value->Show();
$bplot4->value->Show();
$bplot5->value->Show();
$bplot6->value->Show();

$bplot1->value->SetFont( FF_FONT1 );
$bplot2->value->SetFont( FF_FONT1 );
$bplot3->value->SetFont( FF_FONT1 );
$bplot4->value->SetFont( FF_FONT1 );
$bplot5->value->SetFont( FF_FONT1 );
$bplot6->value->SetFont( FF_FONT1 );

$bplot1->value->SetColor( "black", "darkred" );
$bplot2->value->SetColor( "black", "darkred" );
$bplot3->value->SetColor( "black", "darkred" );
$bplot4->value->SetColor( "black", "darkred" );
$bplot5->value->SetColor( "black", "darkred" );
$bplot6->value->SetColor( "black", "darkred" );

$bplot1->value->SetFormat( '%d' );
$bplot2->value->SetFormat( '%d' );
$bplot3->value->SetFormat( '%d' );
$bplot4->value->SetFormat( '%d' );
$bplot5->value->SetFormat( '%d' );
$bplot6->value->SetFormat( '%d' );

$gbarplot = new GroupBarPlot( array( $bplot1, $bplot2, $bplot3, $bplot4, $bplot5, $bplot6 ) );

$gbarplot->SetWidth( 0.9 );
$graph->Add( $gbarplot );

$graph->Stroke();
