blob: aaec79b5a5e05735cc950d08a07de20b1ff9bdea [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2006-2013 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Matt Ward (Eclipse Foundation) - initial API and implementation
* Denis Roy (Eclipse Foundation) - 2013 update
*******************************************************************************/
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
# Add'l requires for Bugzilla
require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection.class.php";
require_once("/home/data/httpd/eclipse-php-classes/system/dbconnection_bugs_rw.class.php");
require_once("/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php");
$App = new App(); $Menu = new Menu();
$App->runStdWebAppCacheable();
include("_projectCommon.php");
$Session = $App->useSession(true);
$pageTitle = "Bugzilla Manager";
$pageKeywords = "";
$pageAuthor = "Eclipse Foundation, Inc.";
# Begin buffered output
ob_start();
//set the default debug level nice and low
define('DEBUG',0);
//connect to the foundation db in ro mode, once we know if the uid is a PL/PMC/PD we can open the db in rw mode
$fdbc = new DBConnectionFoundation();
$fdbh = $fdbc->connect();
# Incoming parameters
$_STATE = $App->getHTTPParameter("state");
?>
<div id="maincontent" style="padding:8px;">
<h1 style="padding-top:10px; padding-bottom:20px;"><?= $pageTitle ?></h1>
<?php
include "details.html";
if ( $App->getDBReadOnly() ) {
print("<h3>The database is currently offline for maintanence. Please try again later</h3>");
}
else {
$Friend=$Session->getFriend();
$uid = $_SESSION['uid'] = $Friend->getUID();
//clear the projisclass session variable.
$_SESSION['projisclass'] = '';
debug_msg("PROJECT IS CLASS STATUS: " . $_SESSION['projisclass'], 3 );
//get the pl/m status from the db for this user id
$query = "select COUNT(*) from PeopleProjects where PersonID = '" . $_SESSION['uid'] . "' AND Relation IN ( 'PL','PM','PD' ) AND (InactiveDate is NULL OR InactiveDate >=CURRENT_DATE() );";
debug_msg($query,3);
$result = mysql_query($query, $fdbh);
if($result == FALSE){
debug_msg(mysql_error(), 0);
debug_msg("Please contact the Webmaster about this error. Thank you.",0);
}
$pl = mysql_fetch_array($result);
$_SESSION['ispl'] = $pl["COUNT(*)"];
print "<h2>Bugzilla permissions delegation</h2>";
if( $_SESSION['ispl'] >= 1 ) {//person is a pl,pm or pd(on more than on project)
print("<br /><p>As a Project Lead or PMC member you can grant access to committers to edit bugzilla components, versions and milestones for your project(s)</p>");
//build a drop box of projects for which we are a pl,pm or pd
//100306 $query = "select DISTINCT ProjectID from PeopleProjects where PersonID = '". $_SESSION['uid'] ."' AND Relation IN ( 'PL','PM','PD' ) AND (InactiveDate is NULL OR InactiveDate >= CURRENT_DATE() );";
//Note that PM/PD memebers will see all sub projects of the toplevel project, not just the single toplevel.
$query = "SELECT ProjectID FROM Projects WHERE ( ProjectID IN (SELECT ProjectID FROM PeopleProjects WHERE PersonID ='". $_SESSION['uid'] ."' ";
$query .= " AND Relation IN ('PM','PD','PL') AND (InactiveDate is NULL OR InactiveDate >= CURRENT_DATE() ) ) OR ParentProjectID IN (SELECT ";
$query .= "ProjectID FROM PeopleProjects WHERE PersonID = '". $_SESSION['uid'] ."' AND Relation IN ('PM','PD' ) AND (InactiveDate is NULL OR ";
$query .= "InactiveDate >= CURRENT_DATE() )) ) AND IsActive=1 AND BugsName IS NOT NULL; ";
debug_msg($query, 3);
$result = mysql_query($query, $fdbh);
if($result == FALSE){
debug_msg(mysql_error(), 0);
debug_msg("Please contact the Webmaster about this error. Thank you.",0);
}
print("<form name=\"addcommiter\" method=\"post\" action=\"add_bugzilla_committer.php\">");
print("<select name=\"plonprojects\">");
while ($myrow = mysql_fetch_array($result)) {
echo "<option>" . $myrow["ProjectID"] ."</option>";
}
print("</select> ");
print("<input type=\"submit\" name=\"User\" value=\" Edit permissions ... \">");
}
else {
print "<p>Only Project Leads and PMC members can delegate permissions to committers.</p>";
}
print("</form>");
//check to see if this person has any projects the can edit.
$query = "select COUNT(*) ProjectID from PeopleProjects where PersonID = '" . $_SESSION['uid'] . "';";
debug_msg($query,3);
$result = mysql_query($query, $fdbh);
if($result == FALSE) {
debug_msg(mysql_error(), 0);
debug_msg("Please contact the Webmaster about this error. Thank you.",0);
}
$projects = mysql_fetch_array($result);
debug_msg("count is:" . $projects['ProjectID'] , 2);
if( $projects['ProjectID'] >= 1) {
debug_msg("you're a committer!",1);
//now determine what projects you have access to
$query = "SELECT ProjectID FROM Projects WHERE ( ProjectID IN (SELECT ProjectID FROM PeopleProjects WHERE PersonID ='". $_SESSION['uid'] ."' ";
$query .= " AND ( Relation IN ('PM','PD','PL' ) OR ( Relation='CM' AND EditBugs=1 ) ) AND (InactiveDate is NULL OR InactiveDate >= CURRENT_DATE() ) ) OR ParentProjectID IN (SELECT ";
$query .= "ProjectID FROM PeopleProjects WHERE PersonID = '". $_SESSION['uid'] ."' AND Relation IN ('PM','PD' ) AND (InactiveDate is NULL OR ";
$query .= "InactiveDate >= CURRENT_DATE() )) ) AND IsActive=1 AND BugsName IS NOT NULL; ";
debug_msg($query, 3);
$result = mysql_query($query, $fdbh);
if($result == FALSE) {
debug_msg(mysql_error(), 0);
debug_msg("Please contact the Webmaster about this error. Thank you.",0);
}
//check that you actually have access to something
debug_msg("Num rows: " . mysql_num_rows($result), 2);
print "<br /><br /><h2>Bugzilla management</h2>";
print("<br /><p>Use this interface to edit bugzilla components, add versions and add milestones for your project(s)</p>");
if( mysql_num_rows($result) != 0 ) {
print("<form name=\"editbugs\" method=\"post\" action=\"edit_bugzilla_project.php\">");
print("<select name=\"cmonprojects\">");
while ($myrow = mysql_fetch_array($result)) {
echo "<option>" . $myrow["ProjectID"] ."</option>";
}
print("</select> ");
print('<input type="submit" name="Project" value=" Edit ... ">');
print("</form>");
//Add a message just in case people think they should see somthing and don't.
$text = "<br /><p>If you don't see a project you think you should have access to, please talk to the projects lead or PMC member to have them grant you edit permission.</p>\n\r";
print($text);
} else {
$text = "<p>It looks like you don't have access to edit any bugzilla components.</br>";
$text .= " Talk to the PL or PMC of your project(s)</p>\n\r";
print($text);
}
} else { //Default "you have no access message"
$text = "<p>You don't have access to edit any bugzilla components. Please refer to your Project Lead or PMC for access.</p>\n\r";
print($text);
}
}
$fdbc->disconnect();
echo "</div>";
$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>