<?php
// votes required to be considered "approved"
$nvotesRequired = 3;
$targetMilestone="3.2.2";
$targetMilestoneJPA="2.3.2";
$debug = false;
// for reference
// See https://dev.eclipse.org/committers/committertools/dbo_bugs_schema.php
// and https://dev.eclipse.org/committers/committertools/dbo_index.php

if ($debug)
{
	ini_set("display_errors", "true");
	error_reporting (E_ALL);
}

require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection_bugs_ro.class.php";

$approvedList = "";
$pendingList = "";

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../../../default_style.css" type="text/css">
<link rel="stylesheet" href="../../wtp.css" type="text/css">
<title>Web Tools 3.2.2 Bugs</title>
</head>
<body>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
	<tr>
		<td width="60%" align="left"><font class="indextop">wtp 3.2.2 pmc
		review bug list</font> <br>
		<font class="indexsub">Web Tools 3.2.2 Bugs for PMC Review</font></td>
		<td width="40%"><img width="207" hspace="50" height="129"
			align="middle" src="../../images/wtplogosmall.jpg"></td>
	</tr>
</table>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
	<tr>
		<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b> <font
			face="Arial,Helvetica" color="#ffffff">Introduction</font></b></td>
	</tr>
	<tr>
		<td valign="top" align="right">&nbsp;</td>
		<td valign="top"><?php
		echo 'This document lists bugs that require PMC approval in WTP ' . $targetMilestone . ' or for Dali ' . $targetMilestoneJPA . '<br />';
		echo '    Currently there is (are) ' . $nvotesRequired . ' vote(s) required for PMC Approval during this phase of development. <br />'
        ?>
		<p>For details, refer to the <a
			href="http://wiki.eclipse.org/index.php/WTP_PMC_Defect_Review">WTP
		PMC Review process.</a> and the <a
			href="http://wiki.eclipse.org/WTP_3.2.x_Maintenance">WTP
		maintenance plan for Helios stream</a>.</p>
		<p>If a bug does not showing up in this list, that you think should
		show up in this list, be sure that
		<ol>
			<li>the bug's milestone target is set and is accurate,</li>
			<li>that status whiteboard has "PMC" in it, and</li>
			<li>that the review flags are for "pmc_approved" (not merely the
			"review" flag).</li>
		</ol>
		If all condidtions are met, and doesn't show up after several minutes
		(say, 30 minutes or so), feel free to send a note to <a
			href="mailto:wtp-releng@eclipse.org">wtp-releng</a> to call attention
		to the problem. It could be a bug in this script.</p>
		</td>
	</tr>
</table>
<br>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
	<tr>
		<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b> <font
			face="Arial,Helvetica" color="#ffffff">Defect List</font></b></td>
	</tr>
</table>
<table align="center" cellpadding="4" width="80%" border="1">
	<tr>
		<th>Count</th>
		<th>Bug</th>
		<th>Review Status</th>
		<!-- <th>Bug Status</th>  -->
		<th>Owner</th>
		<th>Yes</th>
		<th>No</th>
	</tr>
	<?php


	# Connect to database
	$sqlquery = "SELECT
    BUG.bug_id,
    USR.realname,
    USR.login_name,
    BUG.status_whiteboard
    FROM
    bugs AS BUG
    INNER JOIN products AS PROD ON PROD.id = BUG.product_id
    INNER JOIN profiles AS USR ON USR.userid = BUG.assigned_to
    WHERE
    BUG.status_whiteboard like '%PMC%'
    AND
    (
    (
    (BUG.target_milestone like '$targetMilestone%'
    AND BUG.target_milestone not like '$targetMilestone.%')
    AND (
           PROD.name='Web Tools'
        OR PROD.name='Java Server Faces'
        OR PROD.name='JSDT'
        OR PROD.name='WTP Common Tools'
        OR PROD.name='WTP Datatools'
        OR PROD.name='WTP EJB Tools'
        OR PROD.name='WTP Incubator'
        OR PROD.name='WTP Java EE Tools'
        OR PROD.name='WTP Releng'
        OR PROD.name='WTP ServerTools'
        OR PROD.name='WTP Source Editing'
        OR PROD.name='WTP Webservices'
        OR PROD.name='WTP Website'
        )
    )
    OR
    (
    BUG.target_milestone like '$targetMilestoneJPA%'
    AND BUG.target_milestone not like '$targetMilestoneJPA.%'
    AND PROD.name='Dali JPA Tools'
    )
    )
    ORDER BY
    BUG.bug_id";

	$dbc = new DBConnectionBugs();
	$dbh = $dbc->connect();
	$rs = mysql_query($sqlquery, $dbh);

	if(mysql_errno($dbh) > 0) {
		echo "There was an error processing this request <br />".
		$dbc->disconnect();
		exit;
	}
	$rowcount = 0;
	while($myrow = mysql_fetch_assoc($rs))
	{
		$rowcount++;
		if ($debug) {
			echo "Debug: myrow: " ;
			echo print_r($myrow) ;
			echo  " <br />";
		}
		echo "<tr>";
		echo "<td align='right'>".$rowcount."</td>";

		echo "<td align='center'><a href=\"https://bugs.eclipse.org/bugs/show_bug.cgi?id=".$myrow['bug_id']."\">".$myrow['bug_id']."</a></td>";
		echo "<td>";
		$yes = "";
		$no = "";
		$pmc_approved = stripos($myrow['status_whiteboard'], 'PMC_approved');
		$sqlquery3 = "SELECT
                flags.type_id,
                flags.setter_id,
                flags.status
            FROM
                flags
            WHERE
                (flags.setter_id='583'
                OR flags.setter_id='550'
                OR flags.setter_id='12789'
                OR flags.setter_id='17882'
                OR flags.setter_id='18449'
                OR flags.setter_id='26550')
                AND flags.bug_id=".$myrow['bug_id'];

		$rs3 = mysql_query($sqlquery3, $dbh);
		if(mysql_errno($dbh) <= 0)
		{
			$votes=0;
			while($myrow3 = mysql_fetch_assoc($rs3)) {
				if ($debug) {
					echo "Debug: myrow3: " ; echo print_r($myrow3) ; echo  " <br />";
				}
				$sqlquery4 = "SELECT
                                        flagtypes.name
                                      FROM
                                        flagtypes
                                      WHERE
                                        flagtypes.name='pmc_approved'
                                        AND flagtypes.id=".$myrow3['type_id'];

				$rs4 = mysql_query($sqlquery4, $dbh);
				while ($myrow4 = mysql_fetch_assoc($rs4)) {
					if ($debug) {
						echo "Debug: myrow4: " ; echo print_r($myrow4) ; echo  " <br />";
					}
					if($myrow3['setter_id']=="583") {
						$realname="David Williams";
					} else if($myrow3['setter_id']=="550") {
						$realname="Tim deBoer";
					} else if($myrow3['setter_id']=="12789") {
						$realname="Naci Dai";
					} else if($myrow3['setter_id']=="17882") {
						$realname="Neil Hauge";
					} else if($myrow3['setter_id']=="18449") {
						$realname="Raghu Srinivasan";
					} else if ($myrow3['setter_id']=="26550") {
						$realname="Kaloyan Raev";
					} else $realname = "UNKNOWN!";

					if ($myrow3['status']=="+") {
						if (strpos($yes, $realname) === false) {
							if ($votes > 0) {
								$yes = $yes . "<br />" . $realname;
							}
							else {
								$yes = $realname;
							}
							// don't increment, if already veto'd
							if ($votes >= 0) {
								$votes++;
							}
						}
					}
					else if ($pmc_approved === false && $myrow3['status']=="-") {
						if ($vote < 0) {
							$no = $no . "<br>" . $realname;
						}
						else {
							$no = $realname;
						}
						$votes = -1;
						break;
					}
				}
			}

			if ($debug) {
				echo "Debug: votes: $votes required: $nvotesRequired <br />";
			}
			if ($votes < 0) {
				echo "<font color=\"red\"><b>Deferred</b></font>";
			}
			else if ($votes >= $nvotesRequired || (!($pmc_approved === false))) {
				if (strlen($approvedList) > 0) {
					$approvedList=$approvedList . "," . $myrow['bug_id'];
				} else {
					$approvedList=$myrow['bug_id'];
				}
				echo "<font color=\"green\"><b>Approved</b></font>";
			}
			else if ($votes > 0) {
				if (strlen($pendingList) > 0) {
					$pendingList=$pendingList . "," . $myrow['bug_id'];
				} else {
					$pendingList=$myrow['bug_id'];
				}
				// echo "<font color=\"yellow\"><b>Tentatively Approved</b></font>";
				echo "<font color=\"yellow\"><b>Pending...</b></font>";
			}
			else {
				// $votes == 0
				if (strlen($pendingList) > 0) {
					$pendingList=$pendingList . "," . $myrow['bug_id'];
				} else {
					$pendingList=$myrow['bug_id'];
				}
				echo "Pending...";
			}
		}
		else {
			echo "Error occured on sqlquery3: . " . mysql_errno($dbh) . "<br />";
			echo "sqlquery: " . mysql_info($dbh) . "<br />";
		}
		$rs3 = null;

		echo "</td>";


		//echo "<td>";
		//echo "bug status";
		//echo "</td>";


		$owner = $myrow['realname'];
		if (strlen($owner) > 0) {
			echo "<td>".$owner."</td>";
		}
		else {
			echo "<td>".$myrow['login_name']."</td>";
		}
		echo "<td>".$yes."&nbsp;</td>";
		echo "<td>".$no."&nbsp;</td>";
		echo "</tr>";
	}

	$dbc->disconnect();
	$rs = null;
	$dbh = null;
	$dbc = null;
	?>
</table>
	<?php
	if (strlen($pendingList) > 0 || strlen($approvedList) > 0) {
		echo "<p>You can use";
		if (strlen($pendingList) > 0) {
			echo " this <a href=\"https://bugs.eclipse.org/bugs/buglist.cgi?bug_id=" . $pendingList ."\">pending list</a>";
		}
		if (strlen($pendingList) > 0 && strlen($approvedList) > 0) {
			echo " or ";
		}
		if (strlen($approvedList) > 0) {
			echo " this <a href=\"https://bugs.eclipse.org/bugs/buglist.cgi?bug_id=" . $approvedList ."\">approved list</a>";
		}
		echo " for above table to first list all the bugs in that table with the bugzilla web interface, and then narrow or sort the result how ever you would like.</p>";
	}
	?>
</body>
</html>
