blob: 33c74805583128bb11dbbd5febde96eaf87cc23f [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");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/evt_log.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_workaround.class.php");
$App = new App(); $Menu = new Menu();
$App->runStdWebAppCacheable();
include("_projectCommon.php");
$Menu->addMenuItem("Return to project overview", "edit_bugzilla_project.php", "_self");
//turn on/off verbose debuging
define("DEBUG",0);
//turn on(1) or off(0) actual inserts
define("do_inserts",1);
$Session = $App->useSession(true);
$pageTitle = "Bugzilla Manager";
$pageKeywords = "";
$pageAuthor = "Eclipse Foundation, Inc.";
# Begin buffered output
ob_start();
?>
<link rel="stylesheet" type="text/css" href="../css/stylesheet.css" />
<div id="maincontent" style="padding:8px;">
<h1 style="padding-top:10px; padding-bottom:20px;"><?= $pageTitle ?></h1>
<?php
include "details.html";
$Menu->addMenuItem("Select another project", "bugz_manager.php", "_self");
//connect to the foundation db in
$fdbc = new FoundationDBConnectionRW();
$fdbh = $fdbc->connect();
//set the global log options
$evt_log = new EvtLog();
$evt_log->setLogTable("__bugs");
$evt_log->setLogAction("ADD_PROJECTCOMMITTER");
$evt_log->setuid($_SESSION['uid']);
$evt_log->setPK2($_SESSION['project']);
debug_msg("</br>Session project:" . $_SESSION['project'] ." ", 1 );
/*****************************
*
* Name: do_postwork
* Function: does the checks and data inserts. Putting this stuff here lets me use the return function without screwing up the page.
*
* I/O: needs to be passed the db handle.
*
* By: M. Ward
* Date: Feb 22/06
*
******************************/
function do_postwork( ) {
global $bdbh;
global $fdbh;
global $evt_log;
debug_msg("In post section",2);
//check the creds of the person requesting the post, via the session cookie
if( $_SESSION['ispl'] >= 1){
debug_msg("Confirming PL/PM/PD", 2);
//check that the user id *is* pl,pm,pd(I know this has already been done but lets be careful)
//of course this does presume that someone hasn't borked the session file
//the inactive date should either be NULL(default)or set(to something else).
//So if we check for an inactive date >= than the curent date we're ok, less and they shouldn't be here
$query = "SELECT count(*) ProjectID FROM Projects WHERE ( ProjectID IN (SELECT ProjectID FROM PeopleProjects WHERE PersonID ='" . $_SESSION['uid'] . "' AND";
$query .= " Relation IN ('PM','PD','PL' ) AND ProjectID='" . $_SESSION['project'] . "' AND (InactiveDate is NULL OR InactiveDate >= CURRENT_DATE()) ) OR ";
$query .= " ( ParentProjectID IN (SELECT ProjectID FROM PeopleProjects WHERE PersonID = '" . $_SESSION['uid'] . "' AND Relation IN ('PM','PD') AND ";
$query .= " (InactiveDate is NULL OR InactiveDate >= CURRENT_DATE())) AND ProjectID='" . $_SESSION['project'] . "' ) ) 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);
return;
}
$pldata = mysql_fetch_array($result);
if ( $pldata == FALSE )
debug_msg("Fetch Array returned FALSE. Someone should look into this.",3);
//if the person has one or more entries via a pl/m, then in theory the person has the authority for this
debug_msg("PL COUNT is: " . $pldata["ProjectID"], 3);
if($pldata["ProjectID"] >= 1) {
debug_msg("PL/PM/PD Status verifed", 2);
$query = "select DISTINCT PP.PersonID,Peep.FName,Peep.LName from PeopleProjects AS PP left join People as Peep on PP.PersonID = Peep.PersonID where PP.ProjectID = '" . $_SESSION['project'] . "' 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);
return;
}
//now sort through all of the distinct people on the project, since their userids
//are the key values for the post form below
while($myrow = mysql_fetch_array($result)) {
//check that the value is set
if ( checkpost($_POST[$myrow['PersonID']]) ) {
// update query
debug_msg("updating: " . $myrow['PersonID'] . " " . $_POST[$myrow['PersonID']] ."</br>\n\r", 3);
$query = "update PeopleProjects set EditBugs =\"" .$_POST[$myrow['PersonID']];
$query .= "\" where PersonID = \"" .$myrow['PersonID'] . "\" AND ProjectID =\"";
$query .= $_SESSION['project'] ."\"; ";
debug_msg($query,3);
if( do_inserts == 1) {
$update_result = mysql_query($query,$fdbh);
if( $update_result == FALSE ) {
debug_msg(mysql_error(), 0);
debug_msg("Please contact the Webmaster about this error. Thank you.",0);
return;
}
}
} else {
debug_msg("Tried to check: ".$myrow['PersonID'],3);
debug_msg("Failed to confirm the POST value for someone", 2);
debug_msg("Unable to update " . $myrow['PersonID'] . " because of a php failure. Please contact the Webmaster.",0);
}
}
//only log this once, instead of for each pass through the list
$evt_log->setPK1($_SESSION['uid']);
//log the event
$evt_log->insertModLog($_SESSION['uid']);
} else {//close pl query
debug_msg("Failed DB PL check", 2);
return;
}
} else //close bugs pl check
debug_msg("Failed PL check", 2);
}
//check to see if the db is in readonly mode
if ( $App->getDBReadOnly() ) {
$html = "<h3>The database is currently offline for maintanence. Please try again later</h3>";
} else {
//Store the project in the global session cookie
if( checkpost($_POST['plonprojects']) ){
debug_msg("setting session project", 2);
$_SESSION['project'] = $_POST['plonprojects'];
debug_msg("Set Session project:" . $_SESSION['project'] ." ", 2);
}
//This is to print out the contents of the post array, so it's useful for extended debug info
if( defined('DEBUG') && DEBUG > 3 ) {
foreach( $_POST as $key => $post) {
debug_msg("POST key/val: " . $key . "/" . $post, 3);
}
debug_msg("PL:".$_SESSION['ispl']."/UID:".$_SESSION['uid']." ", 3);
}
//check to see if this page is being called due to an internal post command.
if( checkpost($_POST['Submit']) ){
do_postwork();
}
debug_msg("bypassing post section", 2);
//query to get the list of CM's
$query = "select DISTINCT PP.PersonID,Peep.FName,Peep.LName,PP.EditBugs from PeopleProjects AS PP left join People as Peep on PP.PersonID = Peep.PersonID where PP.ProjectID = '" . $_SESSION['project'] . "'";
$query .= "AND (PP.InactiveDate is NULL OR PP.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);
}
?>
Click on a user's name to add/remove them from the bugzilla access for the <?= $_SESSION['project'] ?>
project.</br> When you are done click the submit button to commit your changes.</br>
<form name="committers" method="post" action="add_bugzilla_committer.php" >
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="normal">
<tr class="list_column_header" height=" <?= $App->getDefaultRowHeight() ?>">
<td align="left"><b>Name</b></td>
<td align="left"><b>Can Edit Bugzilla</b></td>
</tr>
<?php
$count = 0;
while($myrow = mysql_fetch_array($result)) {
$fullname = $myrow['FName'] . $myrow['LName'];
//clear out apostrophees from names.
$fullname = preg_replace('[\']','', $fullname);
?>
<tr height="<?= $App->getDefaultRowHeight() ?>" class="data<?= $count % 2 ?>">
<td><a href="javascript:switchCheck('<?= $fullname ?>','<?= $myrow['PersonID'] ?>')"><?= $myrow['FName'] ?> <?= $myrow['LName'] ?> </a></td>
<td><input type="hidden" name="<?= $myrow['PersonID'] ?>" value ="<?= $myrow['EditBugs'] ?>" /><div id ="<?= $fullname ?>" class="
<?php
if( $myrow['EditBugs'] != 0)
$state = "contenton";
else
$state = "contentoff";
?>
<?= $state ?>"><img src="../images/check.gif" border=0 /> </div></td></tr>
<?php
$count++;
}
?>
</table>
<input type="hidden" name="Users" value="true" >
<input type="submit" name="Submit" value="Submit">
</form>
</br><a href="bugz_manager.php">Return to projects</a>
<?php
}
echo $html;
echo "</div>";
$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>