iTestingId = $oRow->testingId; $this->iVersionId = $oRow->versionId; $this->shWhatWorks = $oRow->whatWorks; $this->shWhatDoesnt = $oRow->whatDoesnt; $this->shWhatNotTested = $oRow->whatNotTested; $this->sTestedDate = $oRow->testedDate; $this->iDistributionId = $oRow->distributionId; $this->sTestedRelease = $oRow->testedRelease; $this->sInstalls = $oRow->installs; $this->sRuns = $oRow->runs; $this->sTestedRating = $oRow->testedRating; $this->sComments = $oRow->comments; $this->sSubmitTime = $oRow->submitTime; $this->iSubmitterId = $oRow->submitterId; $this->sQueued = $oRow->queued; } } } // Creates a new Test Results. function create() { $hResult = query_parameters("INSERT INTO testResults (versionId, whatWorks, whatDoesnt,". "whatNotTested, testedDate, distributionId, testedRelease,". "installs, runs, testedRating, comments, submitterId, queued)". " VALUES('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',". "'?', '?')", $this->iVersionId, $this->shWhatWorks, $this->shWhatDoesnt, $this->shWhatNotTested, $this->sTestedDate, $this->iDistributionId, $this->sTestedRelease, $this->sInstalls, $this->sRuns, $this->sTestedRating, $this->sComments, $_SESSION['current']->iUserId, $this->canEdit() ? "false" : "true"); if($hResult) { $this->iTestingId = mysql_insert_id(); $this->testData($this->iTestingId); $this->SendNotificationMail(); return true; } else { addmsg("Error while creating test results.", "red"); return false; } } // Update Test Results. function update($bSilent=false) { // is the current user allowed to update this test result? $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion) && !(($_SESSION['current']->iUserId == $this->iSubmitterId) && !($this->sQueued == 'false'))) { return; } $oOldTest = new testData($this->iTestingId); /* Nothing changed */ if($this == $oOldTest) return TRUE; if(query_parameters("UPDATE testResults SET versionId = '?', whatWorks = '?', whatDoesnt = '?', whatNotTested = '?', testedDate = '?', distributionId = '?', testedRelease = '?', installs = '?', runs = '?', testedRating = '?', comments = '?' WHERE testingId = '?'", $this->iVersionId, $this->shWhatWorks, $this->shWhatDoesnt, $this->shWhatNotTested, $this->sTestedDate, $this->iDistributionId, $this->sTestedRelease, $this->sInstalls, $this->sRuns, $this->sTestedRating, $this->sComments, $this->iTestingId)) { if(!$bSilent) $this->SendNotificationMail("edit"); return true; } else { addmsg("Error while updating test results", "red"); return false; } } // Delete test results. function delete($bSilent=false) { // is the current user allowed to delete this test result? $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion) && !(($_SESSION['current']->iUserId == $this->iSubmitterId) && !($this->sQueued == 'false'))) { return; } // now delete the test data $sQuery = "DELETE FROM testResults WHERE testingId = '?' LIMIT 1"; if(!($hResult = query_parameters($sQuery, $this->iTestingId))) { addmsg("Error removing the deleted test data!", "red"); } if(!$bSilent) $this->SendNotificationMail("delete"); if($this->iSubmitterId && ($this->iSubmitterId != $_SESSION['current']->iUserId)) $this->mailSubmitter("delete"); return TRUE; } // Move Test Data out of the queue. function unQueue() { // is the current user allowed to delete this test data? $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion)) { return; } // If we are not in the queue, we can't move the test data out of the queue. if(!$this->sQueued == 'true') return false; if(query_parameters("UPDATE testResults SET queued = '?' WHERE testingId = '?'", "false", $this->iTestingId)) { $this->sQueued = 'false'; // we send an e-mail to interested people $this->mailSubmitter("add"); $this->SendNotificationMail(); } } function Reject() { // is the current user allowed to delete this test data? $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion)) { return; } // If we are not in the queue, we can't move the version out of the queue. if(!$this->sQueued == 'true') return false; if(query_parameters("UPDATE testResults SET queued = '?' WHERE testingId = '?'", "rejected", $this->iTestingId)) { $this->sQueued = 'rejected'; // we send an e-mail to interested people $this->mailSubmitter("reject"); $this->SendNotificationMail("reject"); } } function ReQueue() { // is the current user allowed to requeue this data $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion) && !$_SESSION['current']->iUserId == $this->iSubmitterId) { return; } if(query_parameters("UPDATE testResults SET queued = '?' WHERE testingId = '?'", "true", $this->iTestingId)) { $this->sQueued = 'true'; // we send an e-mail to interested people $this->SendNotificationMail(); } } function mailSubmitter($sAction="add") { global $aClean; if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); /* Get the full app/version name to display */ $sName = version::fullName($this->iVersionId); $oVersion = new version($this->iVersionId); switch($sAction) { case "add": $sSubject = "Submitted testing data accepted"; $sMsg = "The testing data you submitted for '$sName' has been ". "accepted by ".$_SESSION['current']->sRealname."."; $sMsg .= $oVersion->objectMakeUrl()."&iTestingId=".$this->iTestingId."\n"; $sMsg .= "Administrators Responce:\n"; break; case "reject": $sSubject = "Submitted testing data rejected"; $sMsg = "The testing data you submitted for '$sName' has ". "been rejected by ".$_SESSION['current']->sRealname."."; $sMsg .= APPDB_ROOT."testResults.php?sSub=view&iTestingId=". $this->iTestingId."\n"; $sMsg .= "Reason given:\n"; break; case "delete": $sSubject = "Submitted testing data deleted"; $sMsg = "The testing data you submitted for '$sName' has ". "been deleted by ".$_SESSION['current']->sRealname."."; $sMsg .= "Reason given:\n"; break; } $sMsg .= $aClean['sReplyText']."\n"; $sMsg .= "We appreciate your help in making the Application ". "Database better for all users."; mail_appdb($oSubmitter->sEmail, $sSubject ,$sMsg); } } function SendNotificationMail($sAction="add",$sMsg=null) { global $aClean; $oVersion = new Version($this->iVersionId); $oApp = new Application($oVersion->iAppId); $sBacklink = $oVersion->objectMakeUrl()."&iTestingId=".$this->iTestingId."\n"; switch($sAction) { case "add": if($this->sQueued == "false") { $sSubject = "Test Results added to version ".$oVersion->sName." of ".$oApp->sName." by ".$_SESSION['current']->sRealname; $sMsg .= $sBacklink; if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); $sMsg .= "This Test data has been submitted by ".$oSubmitter->sRealname."."; $sMsg .= "\n"; } if($aClean['sReplyText']) { $sMsg .= "Appdb admin reply text:\n"; $sMsg .= $aClean['sReplyText']."\n"; // append the reply text, if there is any } addmsg("The test data was successfully added into the database.", "green"); } else // test data queued. { $sSubject = "Test Results submitted for version ".$oVersion->sName." of ".$oApp->sName." by ".$_SESSION['current']->sRealname; $sMsg .= $sBacklink; $sMsg .= "This test data has been queued."; $sMsg .= "\n"; addmsg("The test data you submitted will be added to the database after being reviewed.", "green"); } break; case "edit": $sSubject = "Test Results modified for version ".$oVersion->sName." of ".$oApp->sName." by ".$_SESSION['current']->sRealname; $sMsg .= $sBacklink; addmsg("test data modified.", "green"); break; case "delete": $sSubject = "Test Results deleted for version ".$oVersion->sName." of ".$oApp->sName." by ".$_SESSION['current']->sRealname; // if replyText is set we should report the reason the data was deleted if($aClean['sReplyText']) { $sMsg .= "Reason given:\n"; $sMsg .= $aClean['sReplyText']."\n"; // append the reply text, if there is any } addmsg("test data deleted.", "green"); break; case "reject": $sSubject = "Test Results rejected for version ".$oVersion->sName." of ".$oApp->sName." by ".$_SESSION['current']->sRealname; $sMsg .= $sBacklink; // if replyText is set we should report the reason the data was rejected if($aClean['sReplyText']) { $sMsg .= "Reason given:\n"; $sMsg .= $aClean['sReplyText']."\n"; // append the reply text, if there is any } addmsg("test data rejected.", "green"); break; } $sEmail = User::get_notify_email_address_list(null, $this->iVersionId); if($sEmail) mail_appdb($sEmail, $sSubject ,$sMsg); } function ShowTestResult() { echo '
What works
',"\n";
echo $this->shWhatWorks;
echo '
What does not
',"\n";
echo $this->shWhatDoesnt;
echo '
What was not tested
',"\n";
echo $this->shWhatNotTested;
echo '
Additional Comments
',"\n";
echo $this->sComments;
}
// Show the Test results for a application version
function ShowVersionsTestingTable($link, $iDisplayLimit)
{
global $aClean;
/* escape input parameters */
$link = mysql_real_escape_string($link);
$iDisplayLimit = mysql_real_escape_string($iDisplayLimit);
$showAll = $aClean['showAll'];
$sQuery = "SELECT *
FROM testResults
WHERE versionId = '?'
AND
queued = '?'
ORDER BY testedDate DESC";
if(!$showAll)
$sQuery.=" LIMIT 0,".$iDisplayLimit;
$hResult = query_parameters($sQuery, $this->iVersionId, "false");
if(!$hResult)
return;
$rowsUsed = mysql_num_rows($hResult);
if($rowsUsed == 0)
return;
echo '
Test Results
',"\n";
echo '
| ',"\n"; echo ' | Distribution | ',"\n"; echo 'Test date | ',"\n"; echo 'Wine version | ',"\n"; echo 'Installs? | ',"\n"; echo 'Runs? | ',"\n"; echo 'Rating | ',"\n"; echo 'Submitter | ',"\n"; echo '||
| Current | ',"\n"; } else /* make all non-current rows clickable so clicking on them selects the test as current */ { html_tr_highlight_clickable($link.$oTest->iTestingId, $bgcolor, "", "color2", "underline"); echo '[Show] | ',"\n"; else echo '">Show]',"\n"; } echo '',"\n"; echo $oDistribution->objectMakeLink()."\n"; echo ' | ',"\n"; echo ''.date("M d Y", mysqldatetime_to_unixtimestamp($oTest->sTestedDate)).' | ',"\n"; echo ''.$oTest->sTestedRelease.'  | ',"\n"; echo ''.$oTest->sInstalls.'  | ',"\n"; echo ''.$oTest->sRuns.'  | ',"\n"; echo ''.$oTest->sTestedRating.'  | ',"\n"; echo ''.$oSubmitter->objectMakeLink().'  | ',"\n"; if ($_SESSION['current']->hasAppVersionModifyPermission($oVersion)) { $oObject = new objectManager("testData"); echo 'iTestingId, "Edit Test Results").'">',"\n"; echo 'Edit | ',"\n"; } echo '
| What works | ',"\n"; echo '|
| What does not work | ',"\n"; echo '|
| What was not tested | ',"\n"; echo '|
| Date tested | ',"\n"; echo '|
| YYYY-MM-DD HH:MM:SS | |
| Distribution | ',"\n"; echo 'If yours is not on the list, please add it using the form '. 'below |
| ',"\n"; echo ' | ',"\n"; distribution::make_distribution_list("iDistributionId", $this->iDistributionId); echo ' |
| Tested release | ',"\n"; make_bugzilla_version_list("sTestedRelease", $this->sTestedRelease); echo ' |
| Installs? | ',"\n"; testData::make_Installs_list("sInstalls", $this->sInstalls); echo ' |
| Runs? | ',"\n"; testData::make_Runs_list("sRuns", $this->sRuns); echo ' |
| Rating | ',"\n"; make_maintainer_rating_list("sTestedRating", $this->sTestedRating); echo 'Rating definitions |
| Extra comments | ',"\n"; echo '
This is the list of test results waiting for submission, ". "rejection or deletion.
\n"; echo "To view a submission, click on its name. From that page ". "you can submit it into the AppDB, reject it or delete it.
\n"; } function display() { /* STUB */ return TRUE; } function objectMakeUrl() { $oObject = new objectManager("testData", "Edit Test Results", $this->iTestingId); return $oObject->makeUrl("edit", $this->iTestingId); } function objectMakeLink() { /* STUB */ return TRUE; } function objectDisplayAddItemHelp() { echo "This is the screen for inputing test information so that others "; echo "looking at the database will know \n"; echo "what was working on a particular release of Wine.
\n"; echo "Please be as detailed as you can.
\n"; echo "If you cannot find your distribution in the list of existing "; echo "distributions, please add it in the \n"; echo "provided field.
\n\n"; } } ?>