From e9060a68d5d118cbafc507530397ba6272d3accf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Nicolaysen=20S=C3=B8rnes?= Date: Sun, 11 Mar 2007 03:07:43 +0000 Subject: [PATCH] Use object manager to process screenshot queue. Temporary fix for mysql overloading by limiting screenshot processing to submitters. --- include/appData.php | 142 ++++++++++++++++++++++++++- include/screenshot.php | 35 +++++++ include/sidebar_admin.php | 16 ++- include/sidebar_maintainer_admin.php | 10 +- 4 files changed, 190 insertions(+), 13 deletions(-) diff --git a/include/appData.php b/include/appData.php index 37e1c01..1a262ce 100644 --- a/include/appData.php +++ b/include/appData.php @@ -8,6 +8,33 @@ require_once(BASE."include/util.php"); class appData { + var $iId; + var $iAppId; + var $iVersionId; + var $iSubmitterId; + var $sSubmitTime; + + function appData($iId = null, $oRow = null) + { + if(!$iId) + return; + + if(!$oRow) + { + $hResult = query_parameters("SELECT * FROM appData WHERE $iId = '?'", $iId); + $oRow = mysql_fetch_object(); + } + + if($oRow) + { + $this->iSubmitterId = $oRow->submitterId; + $this->iAppId = $oRow->appId; + $this->iVersionId = $oRow->versionId; + $this->sSubmitTime = $oRow->submitTime; + $this->iId = $iId; + } + } + function listSubmittedBy($iUserId, $bQueued = true) { $hResult = query_parameters("SELECT appData.TYPE, appData.appId, @@ -78,10 +105,10 @@ class appData if(($sQueued == "true" || $sQueued == "all") && !appData::canEdit($sType)) return FALSE; - if(($sQueued == "true" || $sQueued == "all") && +/* if(($sQueued == "true" || $sQueued == "all") && !$_SESSION['current']->hasPriv("admin")) { - $sQuery = "SELECT COUNT(DISTINCT id) as count FROM appData, appMaintainers, + $sQuery = "SELECT COUNT(DISTINCT id) as count FROM appData, appMaintainers, appVersion, appFamily WHERE appMaintainers.userId = '?' AND ((((appMaintainers.appId = appFamily.appId) OR appMaintainers.appId = @@ -99,7 +126,7 @@ class appData if($sType) { - $sQuery = " AND type = '?'"; + $sQuery .= " AND type = '?'"; $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, $sType); } else { @@ -111,17 +138,31 @@ class appData appFamily, appVersion WHERE ((appData.appId = appFamily.appId) OR (appData.versionId = appVersion.versionId)) AND appVersion.queued = 'false' AND - appFamily.queued = 'false'"; + appFamily.queued = 'false'";*/ + + $sQuery = "SELECT COUNT(*) as count FROM appData WHERE 1"; if($sQueued == "true" || $sQueued == "false") $sQuery .= " AND appData.queued = '$sQueued'"; + if($_SESSION['current']->hasPriv("admin")) + { if($sType) { $sQuery .= " AND type = '?'"; - $hResult = query_parameters($sQuery,$sType); + $hResult = query_parameters($sQuery, $sType); } else $hResult = query_parameters($sQuery); + } else + { + $sQuery .= " AND submitterId = '?'"; + if($sType) + { + $sQuery .= " AND type = '?'"; + $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, + $sType); + } else + $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId); } if(!$hResult) @@ -131,6 +172,68 @@ class appData return FALSE; return $oRow->count; + + } + + function objectOutputHeader($sClass, $sType) + { + $aCells = array( + "Submission Date", + "Submitter", + "Application", + "Version"); + + if(appData::canEdit($sType)) + $aCells[] = "Action"; + + echo html_tr($aCells, $sClass); + } + + function objectGetEntries($bQueued, $sType) + { + if($bQueued && !appData::canEdit($sType)) + return FALSE; +/* + if($bQueued && !$_SESSION['current']->hasPriv("admin")) + { + $sQuery = "SELECT DISTINCT appData.* FROM appData, appMaintainers, + appVersion, appFamily + WHERE appMaintainers.userId = '?' AND + ((((appMaintainers.appId = appFamily.appId) OR appMaintainers.appId = + appVersion.appId) AND + appMaintainers.superMaintainer = '1' AND (appData.appId = + appMaintainers.appId OR (appData.versionId = appVersion.versionId + AND appVersion.appId = appMaintainers.appId)) + ) OR (appMaintainers.superMaintainer = '0' AND appMaintainers.versionId = + appVersion.versionId AND appMaintainers.versionId = appData.versionId)) + AND appVersion.queued = 'false' AND + appFamily.queued = 'false' AND appData.queued = '?' AND + appData.type = '?'"; + $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, + $bQueued ? "true" : "false", $sType); + } else + { + $sQuery = "SELECT DISTINCT appData.* FROM appData, appFamily, appVersion + WHERE ((appData.appId = appFamily.appId) OR (appData.versionId = + appVersion.versionId)) AND appVersion.queued = 'false' AND + appFamily.queued = 'false' AND appData.queued = '?' AND + appData.type = '?'"; */ + + $sQuery = "SELECT * FROM appData WHERE queued = '?' AND type = '?'"; + + if($_SESSION['current']->hasPriv("admin")) + $hResult = query_parameters($sQuery, $bQueued ? "true" : "false", $sType); + else + { + $sQuery .= " AND submitterId = '?'"; + $hResult = query_parameters($sQuery, $bQueued ? "true" : "false", $sType, + $_SESSION['current']->iUserId); + } + + if(!$hResult) + return FALSE; + + return $hResult; } function canEdit($sType = null) @@ -148,6 +251,35 @@ class appData return FALSE; } } + + function objectOutputTableRow($oObject, $sClass) + { + $oVersion = new Version($this->iVersionId); + + if(!$this->iAppId) + $this->iAppId = $oVersion->iAppId; + + $oApp = new Application($this->iAppId); + $oUser = new User($this->iSubmitterId); + $aCells = array( + print_date(mysqldatetime_to_unixtimestamp($this->sSubmitTime)), + $oUser->sRealname, + $oApp->sName, + $this->iVersionId ? $oVersion->sName : "N/A"); + + if(appData::canEdit($oObject->sClass)) + $aCells[] = "[ iId\">Process ]"; + + echo html_tr($aCells, $sClass); + } + + function objectDisplayQueueProcessingHelp() + { + $sHelp = "

This is a list of application data submitted by users. ". + "Please inspect the data carefully before accepting or rejecting it.

"; + echo $sHelp; + } } ?> diff --git a/include/screenshot.php b/include/screenshot.php index 9fc9c60..051f415 100644 --- a/include/screenshot.php +++ b/include/screenshot.php @@ -508,6 +508,41 @@ class Screenshot { } return $shImg; } + + function objectGetEntries($bQueued) + { + return appData::objectGetEntries($bQueued, "screenshot"); + } + + function objectOutputHeader($sClass) + { + return appData::objectOutputHeader($sClass, "screenshot"); + } + + function canEdit() + { + if($_SESSION['current']->hasPriv("admin") || + maintainer::isUserMaintainer($_SESSION['current'])) + return TRUE; + else + return FALSE; + } + + function objectGetInstanceFromRow($oRow) + { + return new appData($oRow->id, $oRow); + } + + function objectOutputTableRow($oObject, $sClass) + { + $oAppData = new AppData(); + $oAppData->objectOutputTableRow($oObject, $sClass); + } + + function objectDisplayQueueProcessingHelp() + { + return appData::objectDisplayQueueProcessingHelp(); + } } ?> diff --git a/include/sidebar_admin.php b/include/sidebar_admin.php index cc1dc14..9016ed9 100644 --- a/include/sidebar_admin.php +++ b/include/sidebar_admin.php @@ -14,12 +14,18 @@ function global_admin_menu() { "false&sAction=add&sTitle=Add%20Vendor"); $g->addmisc(" "); - $g->add("View App Queue (".$_SESSION['current']->getQueuedAppCount()."/".$_SESSION['current']->getQueuedVersionCount().")", BASE."admin/adminAppQueue.php"); - $g->add("View App Data Queue (".appData::objectGetEntriesCount("true").")", - BASE."admin/adminAppDataQueue.php"); + $g->add("View App Queue (".$_SESSION['current']->getQueuedAppCount()."/". + $_SESSION['current']->getQueuedVersionCount().")", + BASE."admin/adminAppQueue.php"); + $g->add("View Screenshot Queue (".appData::objectGetEntriesCount("true", + "screenshot").")", + BASE."objectManager.php?sClass=screenshot&bIsQueue=true&sTitle=". + "Screenshot%20Queue"); $g->add("View Maintainer Queue (".Maintainer::getQueuedMaintainerCount().")", - BASE."objectManager.php?sClass=maintainer&bIsQueue=true&sTitle=Maintainer%20Queue"); - $g->add("View Maintainer Entries (".Maintainer::getMaintainerCount().")", BASE."admin/adminMaintainers.php"); + BASE."objectManager.php?sClass=maintainer&bIsQueue=true&sTitle=". + "Maintainer%20Queue"); + $g->add("View Maintainer Entries (".Maintainer::getMaintainerCount().")", + BASE."admin/adminMaintainers.php"); $g->add("View Bug Links (".getNumberOfQueuedBugLinks()."/".getNumberOfBugLinks().")", BASE."admin/adminBugs.php"); $g->add("View Test Results Queue (".testData::getNumberOfQueuedTests().")", diff --git a/include/sidebar_maintainer_admin.php b/include/sidebar_maintainer_admin.php index 9d29465..84d0dd5 100644 --- a/include/sidebar_maintainer_admin.php +++ b/include/sidebar_maintainer_admin.php @@ -6,9 +6,13 @@ function global_maintainer_admin_menu() { $g = new htmlmenu("Maintainer Admin"); - - $g->add("View App Queue (".$_SESSION['current']->getQueuedVersionCount().")", BASE."admin/adminAppQueue.php"); - $g->add("View App Data Queue (".appData::objectGetEntriesCount("true").")", BASE."admin/adminAppDataQueue.php"); + + $g->add("View App Queue (".$_SESSION['current']->getQueuedVersionCount().")", + BASE."admin/adminAppQueue.php"); + $g->add("View Screenshot Queue (".appData::objectGetEntriesCount("true", + "screenshot").")", + BASE."objectManager.php?sClass=screenshot&bIsQueue=true&sTitle=". + "Screenshot%20Queue"); $g->done(); }