iDistributionId = $oRow->distributionId; $this->sName = $oRow->name; $this->sUrl = $oRow->url; $this->sSubmitTime = $oRow->submitTime; $this->iSubmitterId = $oRow->submitterId; $this->sQueued = $oRow->queued; } /* * We fetch Test Result Ids. */ if($_SESSION['current']->hasPriv("admin")) { $sQuery = "SELECT testingId FROM testResults WHERE distributionId = '?' ORDER BY testedRating;" ; } else /* only let users view test results that aren't queued and for apps that */ /* aren't queued or versions that aren't queued */ { $sQuery = "SELECT testingId FROM testResults, appFamily, appVersion WHERE testResults.queued = 'false' AND testResults.versionId = appVersion.versionId AND appFamily.appId = appVersion.appId AND appFamily.queued = 'false' AND appVersion.queued = 'false' AND distributionId = '?' ORDER BY testedRating;"; } if($hResult = query_parameters($sQuery, $this->iDistributionId)) { while($oRow = mysql_fetch_object($hResult)) { $this->aTestingIds[] = $oRow->testingId; } } } // Creates a new distribution. function create() { //Let's not create a duplicate $sQuery = "SELECT * FROM distributions WHERE name = '?'"; $hResult = query_parameters($sQuery, $this->sName); if($hResult && $oRow = mysql_fetch_object($hResult)) { if(mysql_num_rows($hResult)) { addmsg("There was an existing distribution called ".$this->sName.".", "red"); $this->distribution($oRow->distributionId); /* Even though we did not create a new distribution, the caller is provided with a valid distribution object. Thus no special handling is necessary, so we return TRUE */ return TRUE; } } $hResult = query_parameters("INSERT INTO distributions (name, url, submitterId, queued) ". "VALUES ('?', '?', '?', '?')", $this->sName, $this->sUrl, $_SESSION['current']->iUserId, $this->mustBeQueued() ? "true" : "false"); if($hResult) { $this->iDistributionId = mysql_insert_id(); $this->distribution($this->iDistributionId); $this->SendNotificationMail(); return true; } else { addmsg("Error while creating Distribution.", "red"); return false; } } // Update Distribution. function update() { // is the current user allowed to update this Distribution? if(!$_SESSION['current']->hasPriv("admin") && !($_SESSION['current']->iUserId == $this->iSubmitterId)) { return; } if(query_parameters("UPDATE distributions SET name = '?', url = '?' WHERE distributionId = '?'", $this->sName, $this->sUrl, $this->iDistributionId)) { $this->SendNotificationMail("edit"); return true; } else { addmsg("Error while updating Distribution", "red"); return false; } } // Delete Distributution. function delete($bSilent=false) { /* Is the current user allowed to delete this distribution? We allow everyone to delete a queued, empty distribution, because it should be deleted along with the last testData associated with it */ if(!($this->canEdit() || (!sizeof($this->aTestingIds) && $this->sQueued != "false"))) return; /* Check for associated test results */ if(sizeof($this->aTestingIds)) { addmsg("This distribution still has associated test results", "red"); return FALSE; } // now delete the Distribution $sQuery = "DELETE FROM distributions WHERE distributionId = '?' LIMIT 1"; if(!($hResult = query_parameters($sQuery, $this->iDistributionId))) { addmsg("Error removing the Distribution!", "red"); } if(!$bSilent) $this->SendNotificationMail("delete"); $this->mailSubmitter("delete"); return true; } // Move Distribution out of the queue. function unQueue() { /* Check permissions */ if($this->mustBeQueued()) return FALSE; // If we are not in the queue, we can't move the Distribution out of the queue. if(!$this->sQueued == 'true') return false; if(query_parameters("UPDATE distributions SET queued = '?' WHERE distributionId = '?'", "false", $this->iDistributionId)) { $this->sQueued = 'false'; // we send an e-mail to interested people $this->mailSubmitter("unQueue"); $this->SendNotificationMail(); return true; } else { addmsg("Error while unqueueing Distribution", "red"); return false; } } function Reject($bSilent=false) { // is the current user allowed to reject this Distribution? if(!$_SESSION['current']->hasPriv("admin")) { return false; } // If we are not in the queue, we can't move the Distribution out of the queue. if(!$this->sQueued == 'true') return false; return $this->delete(); } function ReQueue() { // is the current user allowed to requeue this data if(!$_SESSION['current']->hasPriv("admin") && !($_SESSION['current']->iUserId == $this->iSubmitterId)) { return false; } if(query_parameters("UPDATE testResults SET queued = '?' WHERE testingId = '?'", "true", $this->iTestingId)) { if(query_parameters("UPDATE distribution SET queued = '?' WHERE distributionId = '?'", "true", $this->iDistributionId)) { $this->sQueued = 'true'; // we send an e-mail to interested people $this->SendNotificationMail(); // the test data has been resubmitted addmsg("The Distribution has been resubmitted", "green"); return true; } } /* something has failed if we fell through to this point without */ /* returning */ addmsg("Error requeueing Distribution", "red"); return false; } function mailSubmitter($sAction="add") { global $aClean; if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); switch($sAction) { case "add": { $sSubject = "Submitted Distribution accepted"; $sMsg = "The Distribution you submitted (".$this->sName.") has been accepted."; } break; case "delete": { $sSubject = "Submitted Distribution deleted"; $sMsg = "The Distribution you submitted (".$this->sName.") has been deleted."; $sMsg .= "Reason given:\n"; $sMsg .= $aClean['sReplyText']."\n"; // append the reply text, if there is any } break; } $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; switch($sAction) { case "add": if($this->sQueued == "false") { $sSubject = "Distribution ".$this->sName." added by ". $_SESSION['current']->sRealname; $sMsg = $this->objectMakeUrl()."\n"; if($this->iSubmitterId) { $oSubmitter = new User($this->iSubmitterId); $sMsg .= "This Distribution has been submitted by ".$oSubmitter->sRealname."."; $sMsg .= "\n"; $sMsg .= "Appdb admin reply text:\n"; $sMsg .= $aClean['sReplyText']."\n"; // append the reply text, if there is any } addmsg("The Distribution was successfully added into the database.", "green"); } else // test data queued. { $sSubject = "Distribution ".$this->sName." submitted by ".$_SESSION['current']->sRealname; $sMsg .= "This test data has been queued."; $sMsg .= "\n"; addmsg("The Distribution you submitted will be added to the database after being reviewed.", "green"); } break; case "edit": $sSubject = "Distribution ".$this->sName." has been modified by ".$_SESSION['current']->sRealname; $sMsg = $this->objectMakeUrl()."\n"; addmsg("Distribution modified.", "green"); break; case "delete": $sSubject = "Distribution ".$this->sName." has been deleted by ".$_SESSION['current']->sRealname; // if sReplyText 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("Distribution deleted.", "green"); break; case "reject": $sSubject = "Distribution '".$this->sName." has been rejected by ". $_SESSION['current']->sRealname; $sMsg = $this->objectMakeUrl()."\n"; // if sReplyText 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("Distribution rejected.", "green"); break; } $sEmail = User::get_notify_email_address_list(null, null); if($sEmail) mail_appdb($sEmail, $sSubject ,$sMsg); } function outputEditor() { echo "
Testing Results for '.$this->sName.'
',"\n";
echo '
| Application Version | ',"\n"; echo 'Submitter | ',"\n"; echo 'Date Submitted | ',"\n"; echo 'Wine version | ',"\n"; echo 'Installs? | ',"\n"; echo 'Runs? | ',"\n"; echo 'Rating | ',"\n"; echo '|
| ',"\n"; echo version::fullName($oVersion->iVersionId).' | ',"\n"; echo '',"\n"; if($_SESSION['current']->isLoggedIn()) { echo $oSubmitter->sEmail ? "sEmail."\">":""; echo $oSubmitter->sRealname; echo $oSubmitter->sEmail ? "":""; } else echo $oSubmitter->sRealname; echo ' | ',"\n"; echo ''.date("M d Y", mysqltimestamp_to_unixtimestamp($oTest->sSubmitTime)).' | ',"\n"; echo ''.$oTest->sTestedRelease.'  | ',"\n"; echo ''.$oTest->sInstalls.'  | ',"\n"; echo ''.$oTest->sRuns.'  | ',"\n"; echo ''.$oTest->sTestedRating.'  | ',"\n"; if ($_SESSION['current']->hasAppVersionModifyPermission($oVersion)) { echo '',"\n"; echo 'Edit | ',"\n"; } echo '