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; $this->sResolution = $oRow->resolution; } } } } } /** * 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; if(mysql_num_rows(query_bugzilladb($sQuery, "checking bugzilla")) == 0) { addmsg("There is no bug in Bugzilla with that bug number.", "red"); return false; } /* Check for Duplicates */ $sQuery = "SELECT * FROM buglinks WHERE versionId = ".$iVersionId; if($hResult = query_appdb($sQuery,"looking for duplicates")) { while($oRow = mysql_fetch_object($hResult)) { if($oRow->bug_id == $iBug_id) { addmsg("The Bug link has already been submitted.", "red"); return false; } } } /* 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.")) { /* The following should work but it does not! */ $this->iLinkId = mysql_insert_id(); $this->bug($this->iLinkId); /* 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 */ $this->SendNotificationMail(); 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) $this->SendNotificationMail(true); } 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(); $this->SendNotificationMail(); // 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"; $sMsg = "The Bug Link you submitted for ".lookup_app_name($this->iAppId)." ".lookup_version_name($this->iVersionId)." has been accepted."; } else { $sSubject = "Submitted Bug Link rejected"; $sMsg = "The Bug Link you submitted for ".lookup_app_name($this->iAppId)." ".lookup_version_name($this->iVersionId)." has been rejected."; } $sMsg .= $_REQUEST['replyText']."\n"; $sMsg .= "We appreciate your help in making the Application Database better for all users."; mail_appdb($oSubmitter->sEmail, $sSubject ,$sMsg); } } function SendNotificationMail($bDeleted=false) { if(!$bDeleted) { if(!$this->bQueued) { $sSubject = "Bug Link for ".lookup_app_name($this->iAppId)." ".lookup_version_name($this->iVersionId)." added by ".$_SESSION['current']->sRealname; $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. { $sSubject = "Bug Link for ".lookup_app_name($this->iAppId)." ".lookup_version_name($this->iVersionId)." submitted by ".$_SESSION['current']->sRealname; $sMsg = APPDB_ROOT."appview.php?versionId=".$this->iVersionId."\n"; $sMsg .= "This Bug Link has been queued."; $sMsg .= "\n"; addmsg("The Bug Link you submitted will be added to the database after being reviewed.", "green"); } } else // Bug Link deleted. { $sSubject = "Bug Link for ".lookup_app_name($this->iAppId)." ".lookup_version_name($this->iVersionId)." deleted by ".$_SESSION['current']->sRealname; $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); // 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 "
\n"; } echo html_frame_start("Known bugs","98%",'',0); echo "\n\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if($bCanEdit == true) { echo " \n"; echo " \n"; } echo "\n\n"; $c = 0; foreach($aBuglinkIds as $iBuglinkId) { $oBuglink = new bug($iBuglinkId); // set row color $bgcolor = ($c % 2 == 0) ? "color0" : "color1"; //display row echo "\n"; echo "\n"; echo "\n"; echo "","\n"; echo "","\n"; echo "\n"; if($bCanEdit == true) { echo "\n"; if ($oBuglink->bQueued) { echo "\n"; } else { echo "\n"; } } echo "\n\n"; $c++; } if($_SESSION['current']->isLoggedIn()) { echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; } echo '
Bug #DescriptionStatusResolutionOther Apps affecteddeletechecked
".$oBuglink->iBug_id."".$oBuglink->sShort_desc."".$oBuglink->sBug_status."".$oBuglink->sResolution."View[delete][OK]Yes
',"\n"; echo '
',"\n"; echo html_frame_end(); } ?>