iTestingId) { $sQuery = "SELECT * FROM testResults WHERE testingId = ".$iTestingId; if($hResult = query_appdb($sQuery)) { $oRow = mysql_fetch_object($hResult); $this->iTestingId = $iTestingId; $this->iVersionId = $oRow->versionId; $this->sWhatWorks = $oRow->whatWorks; $this->sWhatDoesnt = $oRow->whatDoesnt; $this->sWhatNotTested = $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() { // Security, if we are not an administrator or an maintainer the test result must be queued. $oVersion = new Version($oTest->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion)) $this->sQueued = 'true'; else $this->sQueued = 'false'; $aInsert = compile_insert_string(array( 'versionId' => $this->iVersionId, 'whatWorks' => $this->sWhatWorks, 'whatDoesnt' => $this->sWhatDoesnt, 'whatNotTested' => $this->sWhatNotTested, 'testedDate' => $this->sTestedDate, 'distributionId' => $this->iDistributionId, 'testedRelease' => $this->sTestedRelease, 'installs' => $this->sInstalls, 'runs' => $this->sRuns, 'testedRating' => $this->sTestedRating, 'comments' => $this->sComments, 'submitterId' => $_SESSION['current']->iUserId, 'queued' => $this->sQueued )); $sFields = "({$aInsert['FIELDS']})"; $sValues = "({$aInsert['VALUES']})"; if(query_appdb("INSERT INTO testResults $sFields VALUES $sValues", "Error while creating test results.")) { $this->iTestingId = mysql_insert_id(); $this->testData($this->iTestingId); $this->SendNotificationMail(); return true; } else return false; } // Update Test Results. function update($bSilent=false) { // is the current user allowed to update this testing result? $oVersion = new Version($this->iVersionId); if(!$_SESSION['current']->hasPriv("admin") && !$_SESSION['current']->hasAppVersionModifyPermission($oVersion) && !(($_SESSION['current']->iUserId == $this->iSubmitterId) && !($this->sQueued == 'false'))) { return; } $sUpdate = compile_update_string(array( 'versionId' => $this->iVersionId, 'whatWorks' => $this->sWhatWorks, 'whatDoesnt' => $this->sWhatDoesnt, 'whatNotTested' => $this->sWhatNotTested, 'testedDate' => $this->sTestedDate, 'distributionId' => $this->iDistributionId, 'testedRelease' => $this->sTestedRelease, 'installs' => $this->sInstalls, 'runs' => $this->sRuns, 'testedRating' => $this->sTestedRating, 'comments' => $this->sComments)); if(query_appdb("UPDATE testResults SET ".$sUpdate." WHERE testingId = ".$this->iTestingId, "Error while updating test results.")) { if(!$bSilent) $this->SendNotificationMail(); return true; } else return false; } // Delete testing results. function delete($bSilent=false) { // is the current user allowed to delete this testing 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 testing data $sQuery = "DELETE FROM testResults WHERE testingId = ".$this->iTestingId." LIMIT 1"; if(!($hResult = query_appdb($sQuery))) { addmsg("Error removing the deleted testing data!", "red"); } if(!$bSilent) $this->SendNotificationMail("delete"); $this->mailSubmitter("delete"); } // Move Testing Data out of the queue. function unQueue() { // is the current user allowed to delete this testing 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 testing data out of the queue. if(!$this->sQueued == 'true') return false; $sUpdate = compile_update_string(array('queued' => "false")); if(query_appdb("UPDATE testResults SET ".$sUpdate." WHERE testingId = ".$this->iTestingId)) { $this->sQueued = 'false'; // we send an e-mail to intersted people $this->mailSubmitter("unQueue"); $this->SendNotificationMail(); } } function Reject() { // is the current user allowed to delete this testing 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; $sUpdate = compile_update_string(array('queued' => "rejected")); if(query_appdb("UPDATE testResults SET ".$sUpdate." WHERE testingId = ".$this->iTestingId)) { $this->sQueued = 'rejected'; // we send an e-mail to intersted 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; } $sUpdate = compile_update_string(array('queued' => "true")); if(query_appdb("UPDATE testResults SET ".$sUpdate." WHERE testingId = ".$this->iTestingId)) { $this->sQueued = 'true'; // we send an e-mail to intersted people $this->SendNotificationMail(); } } function mailSubmitter($sAction="add") { if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); switch($sAction) { case "add": $sSubject = "Submitted testing data accepted"; $sMsg = "The testing data you submitted (".$oApp->sName." ".$this->sName.") has been accepted."; $sMsg .= APPDB_ROOT."appview.php?versionId=".$this->iVersionId."&iTestingId=".$this->iTestingId."\n"; break; case "reject": $sSubject = "Submitted testing data rejected"; $sMsg = "The testing data you submitted (".$oApp->sName." ".$this->sName.") has been rejected."; $sMsg .= APPDB_ROOT."testResults.php?sub=view&iTestingId=".$this->iTestingId."\n"; $sMsg .= "Reason given:\n"; $sMsg .= $_REQUEST['replyText']."\n"; // append the reply text, if there is any break; case "delete": $sSubject = "Submitted testing data deleted"; $sMsg = "The testing data you submitted (".$oApp->sName." ".$this->sName.") has been deleted."; $sMsg .= "Reason given:\n"; $sMsg .= $_REQUEST['replyText']."\n"; // append the reply text, if there is any break; } $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($sAction="add",$sMsg=null) { $oVersion = new Version($this->iVersionId); $oApp = new Application($oVersion->iAppId); switch($sAction) { case "add": if($this->sQueued == "false") { $sSubject = "Test Results added to version ".$oVersion->sName." of ".$oApp->sName." submitted by ".$_SESSION['current']->sRealname; $sMsg = $sMsg .= APPDB_ROOT."appview.php?versionId=".$this->iVersionId."&iTestingId=".$this->iTestingId."\n"; if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); $sMsg .= "This Testing data has been submitted by ".$oSubmitter->sRealname."."; $sMsg .= "\n"; $sMsg .= "Appdb admin reply text:\n"; $sMsg .= $_REQUEST['replyText']."\n"; // append the reply text, if there is any } addmsg("The testing data was successfully added into the database.", "green"); } else // testing data queued. { $sSubject = "Test Results submitted for version ".$oVersion->sName." of ".$oApp->sName." submitted by ".$_SESSION['current']->sRealname; $sMsg .= APPDB_ROOT."admin/adminTestResults.php?sub=view&iTestingId=".$this->iTestingId."\n"; $sMsg .= "This testing data has been queued."; $sMsg .= "\n"; addmsg("The testing 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." submitted by ".$_SESSION['current']->sRealname; $sMsg .= APPDB_ROOT."admin/adminTestResults.php?sub=view&iTestingId=".$this->iTestingId."\n"; addmsg("testing data modified.", "green"); break; case "delete": $sSubject = "Test Results deleted for version ".$oVersion->sName." of ".$oApp->sName." submitted by ".$_SESSION['current']->sRealname; // if replyText is set we should report the reason the data was deleted if($_REQUEST['replyText']) { $sMsg .= "Reason given:\n"; $sMsg .= $_REQUEST['replyText']."\n"; // append the reply text, if there is any } addmsg("testing data deleted.", "green"); break; case "reject": $sSubject = "Test Results rejected for version ".$oVersion->sName." of ".$oApp->sName." submitted by ".$_SESSION['current']->sRealname; $sMsg .= APPDB_ROOT."admin/adminTestResults.php?sub=view&iTestingId=".$this->iTestingId."\n"; // if replyText is set we should report the reason the data was rejected if($_REQUEST['replyText']) { $sMsg .= "Reason given:\n"; $sMsg .= $_REQUEST['replyText']."\n"; // append the reply text, if there is any } addmsg("testing data rejected.", "green"); break; } $sEmail = get_notify_email_address_list(null, $this->iVersionId); if($sEmail) mail_appdb($sEmail, $sSubject ,$sMsg); } function ShowTestResult($iCurrentTest,$iVersionId) { $hResult = query_appdb("SELECT * FROM testResults WHERE testingId = '".$iCurrentTest."';"); if(!$hResult || mysql_num_rows($hResult) == 0) { $hResult = query_appdb("SELECT * FROM testResults WHERE versionId = '".$iVersionId."' ORDER BY testedDate DESC ;"); if(!$hResult || mysql_num_rows($hResult) == 0) return false; } $oRow = mysql_fetch_object($hResult); echo '

What works
',"\n"; echo $oRow->whatWorks; echo '

What Doesn\'t
',"\n"; echo $oRow->whatDoesnt; echo '

What wasn\'t tested
',"\n"; echo $oRow->whatNotTested; return $oRow->testingId; } // Show the Test results for a application version function ShowVersionsTestingTable($iVersionId, $iCurrentTest, $link) { $hResult = query_appdb("SELECT * FROM testResults WHERE versionId = '".$iVersionId."' ORDER BY testedDate DESC;"); if(!$hResult || mysql_num_rows($hResult) == 0) return; echo '

Testing Results
',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; echo '',"\n"; while($oRow = mysql_fetch_object($hResult)) { $oTest = new testData($oRow->testingId); $oVersion = new version($oTest->iVersionId); $oApp = new application($oVersion->iAppId); $oSubmitter = new User($oTest->iSubmitterId); $oDistribution = new distribution($oTest->iDistributionId); $bgcolor = $oTest->sTestedRating; echo '',"\n"; if ($oTest->iTestingId == $iCurrentTest) echo ' ',"\n"; else echo ' ',"\n"; echo ' ',"\n"; echo ' ',"\n"; echo ' ',"\n"; echo ' ',"\n"; echo ' ',"\n"; echo ' ',"\n"; echo '',"\n"; } echo '
DistributionTest dateWine versionInstalls?Runs?Rating
Current[Show]',"\n"; echo '',"\n"; echo $oDistribution->sName.'',"\n"; echo ' '.date("M d Y", mysqldatetime_to_unixtimestamp($oTest->sTestedDate)).''.$oTest->sTestedRelease.' '.$oTest->sInstalls.' '.$oTest->sRuns.' '.$oTest->sTestedRating.' 
',"\n"; } // show the fields for editing function OutputEditor($sDistribution, $bNewDist=false) { HtmlAreaLoaderScript(array("Test1", "Test2", "Test3")); echo html_frame_start("Testing Form", "90%", "", 0); echo "\n"; // What works echo '',"\n"; echo '',"\n"; // What Does not work echo '',"\n"; echo '',"\n"; // What was not tested echo '',"\n"; echo '',"\n"; // Date Tested echo '',"\n"; echo '',"\n"; echo '',"\n"; // Distribution echo '',"\n"; if ($bNewDist) { echo '',"\n"; echo '',"\n"; } echo '',"\n"; // Version List echo '',"\n"; // Installs echo '',"\n"; // Runs echo '',"\n"; // Rating echo '',"\n"; // extra comments echo '',"\n"; echo '',"\n"; echo ''; echo ''; echo "
What Works

What Does not work

What was not tested

Date Tested

YYYY-MM-DD HH:MM:SS

Distribution
',"\n"; make_distribution_list("iDistributionId", $this->iDistributionId); echo '
Tested Release',"\n"; make_bugzilla_version_list("sTestedRelease", $this->sTestedRelease); echo '
Installs?',"\n"; make_Installs_list("sInstalls", $this->sInstalls); echo '
Runs?',"\n"; make_Runs_list("sRuns", $this->sRuns); echo '
Rating',"\n"; make_maintainer_rating_list("sTestedRating", $this->sTestedRating); echo '
Extra Comments
\n"; echo html_frame_end(); } function CheckOutputEditorInput($sDistribution="") { $errors = ""; $sWhatWorks = trim($_REQUEST['sWhatWorks']); $sWhatDoesnt = trim($_REQUEST['sWhatDoesnt']); $sWhatNotTested = trim($_REQUEST['sWhatNotTested']); $sDistribution = trim($_REQUEST['sDistribution']); if (empty($sWhatWorks)) $errors .= "

  • Please enter what worked.
  • \n"; if (empty($sWhatDoesnt)) $errors .= "
  • Please enter what did not work.
  • \n"; if (empty($sWhatNotTested)) $errors .= "
  • Please enter what was not tested.
  • \n"; if (empty($_REQUEST['sTestedDate'])) $errors .= "
  • Please enter the Date and Time that you tested.
  • \n"; if (empty($_REQUEST['sTestedRelease'])) $errors .= "
  • Please enter the version of Wine that you tested with.
  • \n"; // No Distribution entered, and nothing in the list is selected if (empty($sDistribution) && !$_REQUEST['iDistributionId']) $errors .= "
  • Please enter a Distribution.
  • \n"; if (empty($_REQUEST['sInstalls'])) $errors .= "
  • Please enter whether this application installs or not.
  • \n"; if (empty($_REQUEST['sRuns'])) $errors .= "
  • Please enter whether this application runs or not.
  • \n"; if (empty($_REQUEST['sTestedRating'])) $errors .= "
  • Please enter a Rating based on how well this application runs.
  • \n"; return $errors; } /* retrieves values from $_REQUEST that were output by OutputEditor() */ function GetOutputEditorValues() { if(get_magic_quotes_gpc()) { $this->iTestingId = stripslashes($_REQUEST['iTestingId']); $this->iVersionId = stripslashes($_REQUEST['iVersionId']); $this->sWhatWorks = stripslashes($_REQUEST['sWhatWorks']); $this->sWhatDoesnt = stripslashes($_REQUEST['sWhatDoesnt']); $this->sWhatNotTested = stripslashes($_REQUEST['sWhatNotTested']); $this->sTestedDate = stripslashes($_REQUEST['sTestedDate']); $this->iDistributionId = stripslashes($_REQUEST['iDistributionId']); $this->sTestedRelease = stripslashes($_REQUEST['sTestedRelease']); $this->sInstalls = stripslashes($_REQUEST['sInstalls']); $this->sRuns = stripslashes($_REQUEST['sRuns']); $this->sTestedRating = stripslashes($_REQUEST['sTestedRating']); $this->sComments = stripslashes($_REQUEST['sComments']); } else { $this->iTestingId = $_REQUEST['iTestingId']; $this->iVersionId = $_REQUEST['iVersionId']; $this->sWhatWorks = $_REQUEST['sWhatWorks']; $this->sWhatDoesnt = $_REQUEST['sWhatDoesnt']; $this->sWhatNotTested = $_REQUEST['sWhatNotTested']; $this->sTestedDate = $_REQUEST['sTestedDate']; $this->iDistributionId = $_REQUEST['iDistributionId']; $this->sTestedRelease = $_REQUEST['sTestedRelease']; $this->sInstalls = $_REQUEST['sInstalls']; $this->sRuns = $_REQUEST['sRuns']; $this->sTestedRating = $_REQUEST['sTestedRating']; $this->sComments = $_REQUEST['sComments']; } } function getTestingQueue($sQueued='true') { if($_SESSION['current']->hasPriv("admin")) { $hResult = query_appdb("SELECT * FROM testResults WHERE queued = '".$sQueued."';"); if(!$hResult || mysql_num_rows($hResult) == 0) return; } else { $hResult = query_appdb("SELECT * FROM testResults WHERE queued = '".$sQueued."' AND submitterId = ".$_SESSION['current']->iUserId.";"); if(!$hResult || mysql_num_rows($hResult) == 0) return; } return $hResult; } function ShowListofTests($hResult, $heading="") { //show applist echo html_frame_start($heading,"90%","",0); echo ""; $c = 1; while($oRow = mysql_fetch_object($hResult)) { $oTest = new testData($oRow->testingId); $oVersion = new version($oTest->iVersionId); // dont show testing results of versions that are still queued. if ($oVersion->sQueued == 'false') { $oApp = new application($oVersion->iAppId); $oSubmitter = new User($oTest->iSubmitterId); if ($c % 2 == 1) { $bgcolor = 'color0'; } else { $bgcolor = 'color1'; } echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n\n"; $c++; } } echo "
    Submission Date Submitter Application Version Release Action
    ".print_date(mysqltimestamp_to_unixtimestamp($oTest->sSubmitTime))."\n"; echo $oSubmitter->sEmail ? "sEmail."\">":""; echo $oSubmitter->sRealname; echo $oSubmitter->sEmail ? "":""; echo " ".$oApp->sName."".$oVersion->sName."".$oTest->sTestedRelease."[iTestingId.">process]
    ","\n"; echo html_frame_end(); } } /* Get the number of TestResults in the database */ function getNumberOfQueuedTests() { $sQuery = "SELECT count(*) as num_tests FROM testResults, appVersion WHERE appVersion.versionId=testResults.versionId and appVersion.queued='false' and testResults.queued='true';"; $hResult = query_appdb($sQuery); if($hResult) { $row = mysql_fetch_object($hResult); return $row->num_tests; } return 0; } function make_Installs_list($varname, $cvalue) { echo "\n"; } function make_Runs_list($varname, $cvalue) { echo "\n"; } ?>