2005-07-13 01:13:46 +00:00
< ? php
/******************************************/
/* bug class and related functions */
/******************************************/
/**
* Bug Link class for handling Bug Links and thumbnails
*/
class Bug {
var $iLinkId ;
var $iBug_id ;
var $sShort_desc ;
var $sBug_status ;
var $sResolution ;
var $iVersionId ;
var $iAppId ;
var $sSubmitTime ;
var $iSubmitterId ;
var $bQueued ;
/**
* Constructor , fetches the data and bug objects if $ilinkId is given .
*/
function bug ( $iLinkId = null )
{
// we are working on an existing Bug
if ( is_numeric ( $iLinkId ))
{
$sQuery = " SELECT buglinks.*, appVersion.appId AS appId
FROM buglinks , appVersion
WHERE buglinks . versionId = appVersion . versionId
AND linkid = " . $iLinkId ;
if ( $hResult = query_appdb ( $sQuery ))
{
$oRow = mysql_fetch_object ( $hResult );
$this -> iLinkId = $iLinkId ;
$this -> iAppId = $oRow -> appId ;
$this -> iBug_id = $oRow -> bug_id ;
$this -> iVersionId = $oRow -> versionId ;
$this -> bQueued = ( $oRow -> queued == " true " ) ? true : false ;
$this -> sSubmitTime = $oRow -> submitTime ;
$this -> iSubmitterId = $oRow -> submitterId ;
/* lets fill in some blanks */
if ( $this -> iBug_id )
{
$sQuery = " SELECT *
FROM bugs
WHERE bug_id = " . $this->iBug_id ;
if ( $hResult = query_bugzilladb ( $sQuery ))
{
$oRow = mysql_fetch_object ( $hResult );
$this -> sShort_desc = $oRow -> short_desc ;
$this -> sBug_status = $oRow -> bug_status ;
2005-08-13 01:54:15 +00:00
$this -> sResolution = $oRow -> resolution ;
2005-07-13 01:13:46 +00:00
}
}
}
}
}
/**
* Creates a new Bug .
*/
function create ( $iVersionId = null , $iBug_id = null )
{
$oVersion = new Version ( $iVersionId );
// Security, if we are not an administrator or a maintainer, the Bug must be queued.
if ( ! ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ) || $_SESSION [ 'current' ] -> isMaintainer ( $oVersion -> iVersionId ) || $_SESSION [ 'current' ] -> isSuperMaintainer ( $oVersion -> iAppId )))
{
$this -> bQueued = true ;
} else
{
$this -> bQueued = false ;
}
/* lets check for a valid bug id */
if ( ! is_numeric ( $iBug_id ))
{
addmsg ( $iBug_id . " is not a valid bug number. " , " red " );
return false ;
}
/* check that bug # exists in bugzilla*/
$sQuery = " SELECT *
FROM bugs
WHERE bug_id = " . $iBug_id ;
2005-07-16 20:02:17 +00:00
if ( mysql_num_rows ( query_bugzilladb ( $sQuery , " checking bugzilla " )) == 0 )
2005-07-13 01:13:46 +00:00
{
addmsg ( " There is no bug in Bugzilla with that bug number. " , " red " );
return false ;
}
/* Check for Duplicates */
$sQuery = " SELECT *
FROM buglinks
WHERE versionId = " . $iVersionId ;
2005-07-16 20:02:17 +00:00
if ( $hResult = query_appdb ( $sQuery , " looking for duplicates " ))
2005-07-13 01:13:46 +00:00
{
while ( $oRow = mysql_fetch_object ( $hResult ))
{
if ( $oRow -> bug_id == $iBug_id )
{
addmsg ( " The Bug link has already been submitted. " , " red " );
return false ;
}
}
2005-07-16 20:02:17 +00:00
}
2005-07-13 01:13:46 +00:00
/* passed the checks so lets insert the puppy! */
$aInsert = compile_insert_string ( array ( 'versionId' => $iVersionId ,
'bug_id' => $iBug_id ,
'queued' => $this -> bQueued ? " true " : " false " ,
'submitterId' => $_SESSION [ 'current' ] -> iUserId ));
$sFields = " ( { $aInsert [ 'FIELDS' ] } ) " ;
$sValues = " ( { $aInsert [ 'VALUES' ] } ) " ;
if ( query_appdb ( " INSERT INTO buglinks $sFields VALUES $sValues " , " Error while creating a new Bug link. " ))
{
2005-07-16 20:02:17 +00:00
/* The following should work but it does not! */
2005-07-13 01:13:46 +00:00
$this -> iLinkId = mysql_insert_id ();
$this -> bug ( $this -> iLinkId );
2005-07-16 20:02:17 +00:00
/* Start of hack to get around the previous not working */
$sQuery = " SELECT buglinks.*, appVersion.appId AS appId
FROM buglinks , appVersion
WHERE buglinks . versionId = appVersion . versionId
AND buglinks . versionId = " . $iVersionId . "
AND buglinks . bug_id = " . $iBug_id ;
if ( $hResult = query_appdb ( $sQuery ))
{
$oRow = mysql_fetch_object ( $hResult );
$this -> bug ( $oRow -> linkId );
}
/*End of Hack */
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ();
2005-07-13 01:13:46 +00:00
return true ;
} else
{
return false ;
}
}
/**
* Deletes the Bug from the database .
* and request its deletion from the filesystem ( including the thumbnail ) .
*/
function delete ( $bSilent = false )
{
$sQuery = " DELETE FROM buglinks
WHERE linkId = " . $this->iLinkId ;
if ( $hResult = query_appdb ( $sQuery ))
{
if ( ! $bSilent )
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ( true );
2005-07-13 01:13:46 +00:00
}
if ( $this -> iSubmitterId )
{
$this -> mailSubmitter ( true );
}
}
/**
* Move Bug out of the queue .
*/
function unQueue ()
{
// If we are not in the queue, we can't move the Bug out of the queue.
if ( ! $this -> bQueued )
return false ;
$sUpdate = compile_update_string ( array ( 'queued' => " false " ));
if ( query_appdb ( " UPDATE buglinks SET " . $sUpdate . " WHERE linkId= " . $this -> iLinkId ))
{
$this -> bQueued = false ;
// we send an e-mail to intersted people
$this -> mailSubmitter ();
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ();
2005-07-13 01:13:46 +00:00
// the Bug has been unqueued
addmsg ( " The Bug has been unqueued. " , " green " );
}
}
function mailSubmitter ( $bRejected = false )
{
if ( $this -> iSubmitterId )
{
$oSubmitter = new User ( $this -> iSubmitterId );
if ( ! $bRejected )
{
$sSubject = " Submitted Bug Link accepted " ;
2005-07-16 20:02:17 +00:00
$sMsg = " The Bug Link you submitted for " . lookup_app_name ( $this -> iAppId ) . " " . lookup_version_name ( $this -> iVersionId ) . " has been accepted. " ;
2005-07-13 01:13:46 +00:00
} else
{
$sSubject = " Submitted Bug Link rejected " ;
2005-07-16 20:02:17 +00:00
$sMsg = " The Bug Link you submitted for " . lookup_app_name ( $this -> iAppId ) . " " . lookup_version_name ( $this -> iVersionId ) . " has been rejected. " ;
2005-07-13 01:13:46 +00:00
}
$sMsg .= $_REQUEST [ 'replyText' ] . " \n " ;
$sMsg .= " We appreciate your help in making the Application Database better for all users. " ;
mail_appdb ( $oSubmitter -> sEmail , $sSubject , $sMsg );
}
}
2005-09-30 01:55:51 +00:00
function SendNotificationMail ( $bDeleted = false )
2005-07-13 01:13:46 +00:00
{
if ( ! $bDeleted )
{
if ( ! $this -> bQueued )
{
2006-01-23 02:13:47 +00:00
$sSubject = " Link between Bug " . $this -> iBug_id . " and " . lookup_app_name ( $this -> iAppId ) . " " . lookup_version_name ( $this -> iVersionId ) . " added by " . $_SESSION [ 'current' ] -> sRealname ;
2005-07-13 01:13:46 +00:00
$sMsg = APPDB_ROOT . " appview.php?versionId= " . $this -> iVersionId . " \n " ;
if ( $this -> iSubmitterId )
{
$oSubmitter = new User ( $this -> iSubmitterId );
$sMsg .= " This Bug Link has been submitted by " . $oSubmitter -> sRealname . " . " ;
$sMsg .= " \n " ;
}
addmsg ( " The Bug Link was successfully added into the database. " , " green " );
} else // Bug Link queued.
{
2006-01-23 02:13:47 +00:00
$sSubject = " Link between Bug " . $this -> iBug_id . " and " . lookup_app_name ( $this -> iAppId ) . " " . lookup_version_name ( $this -> iVersionId ) . " submitted by " . $_SESSION [ 'current' ] -> sRealname ;
2005-07-13 01:13:46 +00:00
$sMsg = APPDB_ROOT . " appview.php?versionId= " . $this -> iVersionId . " \n " ;
$sMsg .= " This Bug Link has been queued. " ;
$sMsg .= " \n " ;
2005-07-16 20:02:17 +00:00
addmsg ( " The Bug Link you submitted will be added to the database after being reviewed. " , " green " );
2005-07-13 01:13:46 +00:00
}
} else // Bug Link deleted.
{
2006-01-23 02:13:47 +00:00
$sSubject = " Link between Bug " . $this -> iBug_id . " and " . lookup_app_name ( $this -> iAppId ) . " " . lookup_version_name ( $this -> iVersionId ) . " deleted by " . $_SESSION [ 'current' ] -> sRealname ;
2005-07-13 01:13:46 +00:00
$sMsg = APPDB_ROOT . " appview.php?versionId= " . $this -> iVersionId . " \n " ;
addmsg ( " Bug Link deleted. " , " green " );
}
$sEmail = get_notify_email_address_list ( null , $this -> iVersionId );
if ( $sEmail )
{
mail_appdb ( $sEmail , $sSubject , $sMsg );
}
}
}
/*
* Bug Link functions that are not part of the class
*/
function view_version_bugs ( $iVersionId = null , $aBuglinkIds )
{
$bCanEdit = FALSE ;
$oVersion = new Version ( $iVersionId );
2005-07-16 20:02:17 +00:00
2005-07-13 01:13:46 +00:00
// Security, if we are an administrator or a maintainer, we can remove or ok links.
if (( $_SESSION [ 'current' ] -> hasPriv ( " admin " ) ||
$_SESSION [ 'current' ] -> isMaintainer ( $oVersion -> iVersionId ) ||
$_SESSION [ 'current' ] -> isSuperMaintainer ( $oVersion -> iAppId )))
{
$bCanEdit = TRUE ;
}
//start format table
if ( $_SESSION [ 'current' ] -> isLoggedIn ())
{
echo " <form method=post action='appview.php?versionId= " . $iVersionId . " '> \n " ;
}
echo html_frame_start ( " Known bugs " , " 98% " , '' , 0 );
echo " <table width= \" 100% \" border= \" 0 \" cellpadding= \" 3 \" cellspacing= \" 1 \" > \n \n " ;
echo " <tr class=color4> \n " ;
echo " <td align=center width= \" 80 \" >Bug #</td> \n " ;
echo " <td>Description</td> \n " ;
echo " <td align=center width= \" 80 \" >Status</td> \n " ;
echo " <td align=center width= \" 80 \" >Resolution</td> \n " ;
echo " <td align=center width= \" 80 \" >Other Apps affected</td> \n " ;
if ( $bCanEdit == true )
{
echo " <td align=center width= \" 80 \" >delete</td> \n " ;
echo " <td align=center width= \" 80 \" >checked</td> \n " ;
}
echo " </tr> \n \n " ;
$c = 0 ;
foreach ( $aBuglinkIds as $iBuglinkId )
{
$oBuglink = new bug ( $iBuglinkId );
// set row color
$bgcolor = ( $c % 2 == 0 ) ? " color0 " : " color1 " ;
//display row
echo " <tr class= $bgcolor > \n " ;
echo " <td align=center><a href=' " . BUGZILLA_ROOT . " show_bug.cgi?id= " . $oBuglink -> iBug_id . " '> " . $oBuglink -> iBug_id . " </a></td> \n " ;
echo " <td> " . $oBuglink -> sShort_desc . " </td> \n " ;
echo " <td align=center> " . $oBuglink -> sBug_status . " </td> " , " \n " ;
echo " <td align=center> " . $oBuglink -> sResolution . " </td> " , " \n " ;
echo " <td align=center><a href='viewbugs.php?bug_id= " . $oBuglink -> iBug_id . " '>View</a></td> \n " ;
if ( $bCanEdit == true )
{
echo " <td align=center>[<a href='appview.php?sub=delete&buglinkId= " . $oBuglink -> iLinkId . " &versionId= " . $oBuglink -> iVersionId . " '>delete</a>]</td> \n " ;
if ( $oBuglink -> bQueued )
{
echo " <td align=center>[<a href='appview.php?sub=unqueue&buglinkId= " . $oBuglink -> iLinkId . " &versionId= " . $oBuglink -> iVersionId . " '>OK</a>]</td> \n " ;
} else
{
echo " <td align=center>Yes</td> \n " ;
}
}
echo " </tr> \n \n " ;
$c ++ ;
}
if ( $_SESSION [ 'current' ] -> isLoggedIn ())
{
2005-07-16 20:02:17 +00:00
echo '<input type="hidden" name="versionId" value="' . $iVersionId . '">' , " \n " ;
2005-07-13 01:13:46 +00:00
echo '<tr class=color3><td align=center>' , " \n " ;
echo '<input type="text" name="buglinkId" value="' . $_REQUEST [ 'buglinkId' ] . '" size="8"></td>' , " \n " ;
echo '<td><input type="submit" name="sub" value="Submit a new bug link."></td>' , " \n " ;
2005-07-30 03:15:50 +00:00
echo '<td colspan=6></td></tr></form>' , " \n " ;
2005-07-13 01:13:46 +00:00
}
echo '</table>' , " \n " ;
echo html_frame_end ();
}
?>