From c54558157129025cc16cbb1b2aac7ecdbf53d7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Nicolaysen=20S=C3=B8rnes?= Date: Sat, 24 Mar 2007 18:30:16 +0000 Subject: [PATCH] objectManager, add rejection support. Add support in objectManager for handling rejected data. --- admin/adminScreenshots.php | 3 ++- appdbStats.php | 2 +- include/appData.php | 22 +++++++++++++--- include/application.php | 8 +++--- include/distribution.php | 14 +++++++--- include/maintainer.php | 12 +++++++-- include/objectManager.php | 39 ++++++++++++++++++---------- include/screenshot.php | 5 ++-- include/sidebar.php | 2 +- include/sidebar_admin.php | 9 ++++--- include/sidebar_maintainer_admin.php | 4 +-- include/testData.php | 14 +++++----- include/vendor.php | 8 ++++-- objectManager.php | 13 ++++++++-- unit_test/test_om_objects.php | 2 +- viewScreenshots.php | 5 ++-- 16 files changed, 113 insertions(+), 49 deletions(-) diff --git a/admin/adminScreenshots.php b/admin/adminScreenshots.php index b0b78d4..1cdf659 100644 --- a/admin/adminScreenshots.php +++ b/admin/adminScreenshots.php @@ -64,7 +64,8 @@ if($aClean['iPage']) $currentPage = $aClean['iPage']; $ItemsPerPage = min($ItemsPerPage,100); -$totalPages = ceil(appData::objectGetEntriesCount("all", "screenshot")/$ItemsPerPage); +$totalPages = ceil(appData::objectGetEntriesCount("all", false, + "screenshot")/$ItemsPerPage); $currentPage = min($currentPage,$totalPages); $offset = (($currentPage-1) * $ItemsPerPage); diff --git a/appdbStats.php b/appdbStats.php index 228ba09..50762e6 100644 --- a/appdbStats.php +++ b/appdbStats.php @@ -74,7 +74,7 @@ echo "\n\n"; /* Display the number of images */ echo "\n"; echo " Screenshots:\n"; -echo " ".appData::objectGetEntriesCount("false", "screenshot")."\n"; +echo " ".appData::objectGetEntriesCount("false", false, "screenshot")."\n"; echo "\n\n"; echo "\n\n"; diff --git a/include/appData.php b/include/appData.php index 70a038e..cf4e6dd 100644 --- a/include/appData.php +++ b/include/appData.php @@ -104,8 +104,18 @@ class appData return $hResult; } - function objectGetEntriesCount($sQueued, $sType = null) + function objectGetEntriesCount($sQueued, $bRejected, $sType = null) { + /* Not implemented for appData */ + if($bRejected) + return FALSE; + + /* Compatibility with objectManager */ + if($sQueued === true) + $sQueued = "true"; + if($sQueued === false) + $sQueued = "false"; + if(($sQueued == "true" || $sQueued == "all") && !appData::canEdit($sType)) return FALSE; @@ -210,8 +220,12 @@ class appData return $aCells; } - function objectGetEntries($bQueued, $iRows = 0, $iStart = 0, $sType) + function objectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0, $sType) { + /* Not implemented for appData */ + if($bRejected) + return FALSE; + if($bQueued && !appData::canEdit($sType)) return FALSE; @@ -268,7 +282,7 @@ class appData { if(!$iRows) $iRows = appData::objectGetEntriesCount($bQueued ? "true" : "false", - $sType); + $bRejected, $sType); $sQuery .= " LIMIT ?,?"; $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, $bQueued ? "true" : "false", $sType, @@ -300,7 +314,7 @@ class appData { if(!$iRows) $iRows = appData::objectGetEntriesCount($bQueued ? "true" : "false", - $sType); + $bRejected, $sType); $sQuery .= " LIMIT ?,?"; $hResult = query_parameters($sQuery, $bQueued ? "true" : "false", $sType, $iStart, $iRows); diff --git a/include/application.php b/include/application.php index cf32280..c728c64 100644 --- a/include/application.php +++ b/include/application.php @@ -838,19 +838,21 @@ class Application { return $sLink; } - function objectGetEntries($bQueued) + function objectGetEntries($bQueued, $bRejected) { $sQuery = "SELECT * FROM appFamily WHERE appFamily.queued = '?'"; + $sQueued = objectManager::getQueueString($bQueued, $bRejected); + if($bQueued && !application::canEdit()) { $sQuery .= "AND appFamily.submitterId = '?'"; - $hResult = query_parameters($sQuery, $bQueued ? "true" : "false", + $hResult = query_parameters($sQuery, $sQueued, $_SESSION['current']->iUserId); } else { - $hResult = query_parameters($sQuery, $bQueued ? "true" : "false"); + $hResult = query_parameters($sQuery, $sQueued); } if(!$hResult) diff --git a/include/distribution.php b/include/distribution.php index 73fbbaa..2c1a09a 100644 --- a/include/distribution.php +++ b/include/distribution.php @@ -367,8 +367,12 @@ class distribution { } /* Get the total number of Distributions in the database */ - function objectGetEntriesCount($bQueued) + function objectGetEntriesCount($bQueued, $bRejected) { + /* Not implemented */ + if($bRejected) + return FALSE; + $hResult = query_parameters("SELECT count(distributionId) as num_dists FROM distributions WHERE queued='?'", $bQueued ? "true" : "false"); @@ -410,8 +414,12 @@ class distribution { return $aCells; } - function objectGetEntries($bQueued, $iRows = 0, $iStart = 0) + function objectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0) { + /* Not implemented */ + if($bRejected) + return FALSE; + /* Only users with edit privileges are allowed to view queued items, so return NULL in that case */ if($bQueued && !distribution::canEdit()) @@ -419,7 +427,7 @@ class distribution { /* If row limit is 0 we want to fetch all rows */ if(!$iRows) - $iRows = distribution::objectGetEntriesCount($bQueued); + $iRows = distribution::objectGetEntriesCount($bQueued, $bRejected); $sQuery = "SELECT * FROM distributions WHERE queued = '?' ORDER BY name LIMIT ?,?"; diff --git a/include/maintainer.php b/include/maintainer.php index 37a722b..ce81c16 100644 --- a/include/maintainer.php +++ b/include/maintainer.php @@ -193,8 +193,12 @@ class maintainer return $hResult; } - function ObjectGetEntries($bQueued) + function ObjectGetEntries($bQueued, $bRejected) { + /* Not implemented */ + if($bRejected) + return FALSE; + /* Excluding requests for queued apps and versions, as these will be handled automatically */ $sQuery = "SELECT DISTINCT maintainerId, appMaintainers.submitTime FROM @@ -273,8 +277,12 @@ class maintainer return $aAppsMaintained; } - function objectGetEntriesCount($bQueued) + function objectGetEntriesCount($bQueued, $bRejected) { + /* Not implemented */ + if($bRejected) + return FALSE; + /* Excluding requests for queued apps and versions, as these are handled automatically. One SELECT for super maintainers, one for maintainers. */ $sQuery = "SELECT COUNT(DISTINCT maintainerId) as queued_maintainers FROM diff --git a/include/objectManager.php b/include/objectManager.php index a59f8a1..6bbbe5b 100644 --- a/include/objectManager.php +++ b/include/objectManager.php @@ -9,6 +9,7 @@ class ObjectManager var $bIsQueue; var $sTitle; var $iId; + var $bIsRejected; function ObjectManager($sClass, $sTitle = "list", $iId = false) { @@ -58,27 +59,23 @@ class ObjectManager $this->checkMethods(array("ObjectGetEntries", "ObjectGetHeader", "ObjectGetInstanceFromRow", "ObjectOutputTableRow", "canEdit")); - + $oObject = new $this->sClass(); /* query the class for its entries */ /* We pass in $this->bIsQueue to tell the object */ /* if we are requesting a list of its queued objects or */ /* all of its objects */ - $hResult = call_user_func(array($this->sClass, - "objectGetEntries"), $this->bIsQueue); + $hResult = $oObject->objectGetEntries($this->bIsQueue, $this->sIsRejected); /* did we get any entries? */ if(mysql_num_rows($hResult) == 0) { - $sIsQueue = $this->bIsQueue ? "true" : "false"; - if($this->bIsQueue) echo "
The queue for '$this->sClass' is empty
"; else echo "
No entries of '$this->sClass' are present
"; - echo "
sClass&bIsQueue=$sIsQueue&sTitle=". - urlencode($this->sTitle)."&sAction=add\">Add an entry?
"; + echo "
makeUrl("add", false, + "Add $this->sClass entry")."\">Add an entry?
"; return; } @@ -104,9 +101,8 @@ class ObjectManager $oObject = new $this->sClass(); if($oObject->canEdit()) { - echo "

sClass&sAction=add&sTitle=Add\">". - "Add entry\n"; + echo "

makeUrl("add", false, + "Add $this->sClass")."\">Add entry\n"; } } @@ -127,7 +123,9 @@ class ObjectManager echo ''; echo ''; echo ''; + 'value='.($this->bIsQueue ? "true" : "false").' />'; + echo ''; $oObject = new $this->sClass($this->iId); @@ -307,6 +305,7 @@ class ObjectManager $sAction = "&sAction=$sAction"; $sIsQueue = $this->bIsQueue ? "true" : "false"; + $sIsRejected = $this->bIsRejected ? "true" : "false"; if(!$sTitle) $sTitle = $this->sTitle; @@ -314,7 +313,7 @@ class ObjectManager $sTitle = urlencode($sTitle); return APPDB_ROOT."objectManager.php?bIsQueue=$sIsQueue&sClass=$this->sClass". - "&sTitle=$sTitle$sId$sAction"; + "&sTitle=$sTitle$sId$sAction&bIsRejected=$sIsRejected"; } /* Get id from form data */ @@ -337,6 +336,20 @@ class ObjectManager echo html_tr($aCells, $sClass); } + + function getQueueString($bQueued, $bRejected) + { + if($bQueued) + { + if($bRejected) + $sQueueString = "rejected"; + else + $sQueueString = "true"; + } else + $sQueueString = "false"; + + return $sQueueString; + } } ?> diff --git a/include/screenshot.php b/include/screenshot.php index bea521b..7b8ad5b 100644 --- a/include/screenshot.php +++ b/include/screenshot.php @@ -513,9 +513,10 @@ class Screenshot { return $shImg; } - function objectGetEntries($bQueued, $iRows = 0, $iStart = 0) + function objectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0) { - return appData::objectGetEntries($bQueued, $iRows, $iStart, "screenshot"); + return appData::objectGetEntries($bQueued, $bRejected, $iRows, $iStart, + "screenshot"); } function objectGetHeader() diff --git a/include/sidebar.php b/include/sidebar.php index 912826b..1a59db0 100644 --- a/include/sidebar.php +++ b/include/sidebar.php @@ -28,7 +28,7 @@ function global_sidebar_menu() $g->add("Submit Application", BASE."appsubmit.php?sSub=view&sAppType=application"); $g->add("Help & Documentation", BASE."help/"); $g->add("AppDB Stats", BASE."appdbStats.php"); - $g->add("View Distributions (".distribution::objectGetEntriesCount(false).")", BASE."objectManager.php?sClass=distribution&bIsQueue=false&sTitle=View%20Distributions"); + $g->add("View Distributions (".distribution::objectGetEntriesCount(false, false).")", BASE."objectManager.php?sClass=distribution&bIsQueue=false&sTitle=View%20Distributions"); $g->add("View Vendors (".getNumberOfvendors().")", BASE."objectManager.php?sClass=vendor&bIsQueue=false&sTitle=View%20Vendors"); $g->add("Email your suggestions for improving the AppDB", "mailto:appdb@winehq.org"); $g->done(); diff --git a/include/sidebar_admin.php b/include/sidebar_admin.php index fa1810f..ec8a53d 100644 --- a/include/sidebar_admin.php +++ b/include/sidebar_admin.php @@ -20,20 +20,21 @@ function global_admin_menu() { $g->add("View Version Queue (".$_SESSION['current']->getQueuedVersionCount().")", BASE."admin/adminAppQueue.php"); $g->add("View Screenshot Queue (".appData::objectGetEntriesCount("true", - "screenshot").")", + false, "screenshot").")", BASE."objectManager.php?sClass=screenshot&bIsQueue=true&sTitle=". "Screenshot%20Queue"); - $g->add("View Maintainer Queue (".Maintainer::objectGetEntriesCount(true).")", + $g->add("View Maintainer Queue (".Maintainer::objectGetEntriesCount(true, false).")", 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::objectGetEntriesCount(true).")", + $g->add("View Test Results Queue (".testData::objectGetEntriesCount(true, false).")", BASE."objectManager.php?sClass=testData&bIsQueue=true&sTitle=". "Test%20Results%20Queue"); - $g->add("View Distribution Queue (".distribution::objectGetEntriesCount(true).")", + $g->add("View Distribution Queue (".distribution::objectGetEntriesCount(true, + false).")", BASE."objectManager.php?sClass=distribution&bIsQueue=true&sTitle=". "Distribution%20Queue"); diff --git a/include/sidebar_maintainer_admin.php b/include/sidebar_maintainer_admin.php index a14d588..074c69c 100644 --- a/include/sidebar_maintainer_admin.php +++ b/include/sidebar_maintainer_admin.php @@ -10,10 +10,10 @@ function global_maintainer_admin_menu() { $g->add("View Version Queue (".$_SESSION['current']->getQueuedVersionCount().")", BASE."admin/adminAppQueue.php"); $g->add("View Screenshot Queue (".appData::objectGetEntriesCount("true", - "screenshot").")", + false, "screenshot").")", BASE."objectManager.php?sClass=screenshot&bIsQueue=true&sTitle=". "Screenshot%20Queue"); - $g->add("View Test Results Queue (".testData::objectGetEntriesCount(true).")", + $g->add("View Test Results Queue (".testData::objectGetEntriesCount(true, false).")", BASE."objectManager.php?sClass=testData&bIsQueue=true&sTitle=". "Test%20Results%20Queue"); $g->done(); diff --git a/include/testData.php b/include/testData.php index 7c36004..b25e1a3 100644 --- a/include/testData.php +++ b/include/testData.php @@ -754,9 +754,10 @@ class testData{ return $sReturn; } - function objectGetEntriesCount($bQueued) + function objectGetEntriesCount($bQueued, $bRejected) { $oTest = new testData(); + $sQueued = objectManager::getQueueString($bQueued, $bRejected); if($bQueued && !$oTest->canEdit()) { if($oTest->canEditSome()) @@ -777,7 +778,7 @@ class testData{ AND testResults.queued = '?'"; $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, - $bQueued ? "true": "false"); + $sQueued); } } else { @@ -788,7 +789,7 @@ class testData{ appVersion.queued = 'false' AND testResults.queued = '?'"; - $hResult = query_parameters($sQuery, $bQueued ? "true" : "false"); + $hResult = query_parameters($sQuery, $sQueued); } if(!$hResult) @@ -800,9 +801,10 @@ class testData{ return $oRow->count; } - function objectGetEntries($bQueued) + function objectGetEntries($bQueued, $bRejected) { $oTest = new testData(); + $sQueued = objectManager::getQueueString($bQueued, $bRejected); if($bQueued && !$oTest->canEdit()) { if($oTest->canEditSome()) @@ -823,7 +825,7 @@ class testData{ AND testResults.queued = '?'"; $hResult = query_parameters($sQuery, $_SESSION['current']->iUserId, - $bQueued ? "true": "false"); + $sQueued); } } else { @@ -833,7 +835,7 @@ class testData{ appVersion.queued = 'false' AND testResults.queued = '?' ORDER by testingId"; - $hResult = query_parameters($sQuery, $bQueued ? "true" : "false"); + $hResult = query_parameters($sQuery, $sQueued); } if(!$hResult) diff --git a/include/vendor.php b/include/vendor.php index e848cf2..c9a9fb0 100644 --- a/include/vendor.php +++ b/include/vendor.php @@ -148,11 +148,15 @@ class Vendor { echo "\n"; } - function objectGetEntries($bQueued, $iRows = 0, $iStart = 0) + function objectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0) { /* Vendor queueing is not implemented yet */ if($bQueued) - return NULL; + return FALSE; + + /* Not implemented */ + if($bRejected) + return FALSE; if(!$iRows) $iRows = getNumberOfVendors(); diff --git a/objectManager.php b/objectManager.php index c18970f..89415d9 100644 --- a/objectManager.php +++ b/objectManager.php @@ -25,9 +25,18 @@ if(!class_exists($aClean['sClass'])) $oObject = new objectManager($aClean['sClass'], $aClean['sTitle'], $aClean['iId']); -if($aClean['bIsQueue'] == 'true') $oObject->bIsQueue = true; -else $oObject->bIsQueue = false; +if($aClean['bIsQueue'] == 'true') + $oObject->bIsQueue = true; +else + $oObject->bIsQueue = false; +/* If it is rejected it is defined as queued */ +if($aClean['bIsRejected'] == 'true') +{ + $oObject->bIsRejected = true; + $oObject->bIsQueue = true; +} else + $oObject->bIsRejected = false; $oOtherObject = new $oObject->sClass($oObject->iId); diff --git a/unit_test/test_om_objects.php b/unit_test/test_om_objects.php index 255c1e3..c6abdd0 100644 --- a/unit_test/test_om_objects.php +++ b/unit_test/test_om_objects.php @@ -88,7 +88,7 @@ function test_class($sClassName, $aTestMethods) /* Should return 1 or more, since there may be entries present already */ $iExpected = 1; - $hResult = $oTestObject->objectGetEntries(false); + $hResult = $oTestObject->objectGetEntries(false, false); $iReceived = mysql_num_rows($hResult); $oTestObject->delete(); if($iExpected > $iReceived) diff --git a/viewScreenshots.php b/viewScreenshots.php index 8626c9a..4a445c8 100644 --- a/viewScreenshots.php +++ b/viewScreenshots.php @@ -22,7 +22,8 @@ if($aClean['iPage']) $currentPage = $aClean['iPage']; $ItemsPerPage = min($ItemsPerPage,100); -$totalPages = ceil(appData::objectGetEntriesCount("false", "screenshot")/$ItemsPerPage); +$totalPages = ceil(appData::objectGetEntriesCount("false", false, + "screenshot")/$ItemsPerPage); $currentPage = min($currentPage,$totalPages); $offset = (($currentPage-1) * $ItemsPerPage); @@ -57,7 +58,7 @@ echo ""; echo ""; /* query for all of the Screenshots in assending order */ -$Ids = appData::objectGetEntries(false, $ItemsPerPage, $offset, "screenshot"); +$Ids = appData::objectGetEntries(false, false, $ItemsPerPage, $offset, "screenshot"); $c = 1; echo "
\n"; while ($oRow = mysql_fetch_object($Ids))