appdb/include maintainer.php
WineHQ
wineowner at wine.codeweavers.com
Thu Jul 26 09:42:21 CDT 2007
ChangeSet ID: 31280
CVSROOT: /opt/cvs-commit
Module name: appdb
Changes by: wineowner at winehq.org 2007/07/26 09:42:21
Modified files:
include : maintainer.php
Log message:
Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Speedup maintainer::objectGetEntries and maintainer::objectGetEntriesCount. Use UNION for sql
statements and multipage controls
Patch: http://cvs.winehq.org/patch.py?id=31280
Old revision New revision Changes Path
1.49 1.50 +83 -47 appdb/include/maintainer.php
Index: appdb/include/maintainer.php
diff -u -p appdb/include/maintainer.php:1.49 appdb/include/maintainer.php:1.50
--- appdb/include/maintainer.php:1.49 26 Jul 2007 14:42:21 -0000
+++ appdb/include/maintainer.php 26 Jul 2007 14:42:21 -0000
@@ -165,7 +165,7 @@ class maintainer
var $sMaintainReason;
var $bSuperMaintainer;
var $aSubmitTime; //FIXME: should be 'sSubmitTime'
- var $bQueued;
+ var $bQueued; //FIXME: Should be sQueued
var $sReplyText;
// parameters used in the queued data notification system
@@ -382,45 +382,75 @@ class maintainer
return $hResult;
}
- function ObjectGetEntries($bQueued, $bRejected)
+ function ObjectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0)
{
/* Not implemented */
if($bRejected)
return FALSE;
+ $sLimit = "";
+
+ /* Should we add a limit clause to the query? */
+ if($iRows || $iStart)
+ {
+ $sLimit = " LIMIT ?,?";
+
+ /* Selecting 0 rows makes no sense, so we assume the user wants to select all of them
+ after an offset given by iStart */
+ if(!$iRows)
+ $iRows = maintainer::objectGetEntriesCount($bQueued, $bRejected);
+ }
+
/* Excluding requests for queued apps and versions, as these will be
handled automatically */
- $sQuery = "SELECT DISTINCT appMaintainers.* FROM
- appMaintainers, appFamily, appVersion WHERE
+ $sQuery = "(SELECT DISTINCT appMaintainers.* FROM
+ appMaintainers, appFamily WHERE
appMaintainers.queued = '?'
AND
- appFamily.appId = appVersion.appId
+ appMaintainers.superMaintainer = '1'
AND
- (
- (
- appFamily.appId = appMaintainers.appId
- AND
- appFamily.queued = 'false'
- AND
- appMaintainers.versionId = ''
- )
- OR
- (
- appVersion.versionId = appMaintainers.versionId
- AND
- appVersion.queued = 'false'
- )
- )";
+ appFamily.appId = appMaintainers.appId
+ AND
+ appFamily.queued = 'false') UNION
+ (SELECT DISTINCT appMaintainers.* FROM
+ appMaintainers, appVersion WHERE
+ appMaintainers.queued = '?'
+ AND
+ appMaintainers.versionId = appVersion.versionId
+ AND
+ appMaintainers.superMaintainer = '0'
+ AND
+ appVersion.queued = 'false')$sLimit";
if($bQueued)
{
if($_SESSION['current']->hasPriv("admin"))
- return query_parameters($sQuery, $bQueued ? "true" : "false");
- else
+ {
+ if($sLimit)
+ {
+ return query_parameters($sQuery, $bQueued ? "true" : "false",
+ $bQueued ? "true" : "false",
+ $iStart, $iRows);
+ } else
+ {
+ return query_parameters($sQuery, $bQueued ? "true" : "false",
+ $bQueued ? "true" : "false");
+ }
+ } else
+ {
return NULL;
+ }
} else
{
- return query_parameters($sQuery, $bQueued ? "true" : "false");
+ if($sLimit)
+ {
+ return query_parameters($sQuery, $bQueued ? "true" : "false",
+ $bQueued ? "true" : "false", $iStart, $iRows);
+ } else
+ {
+ return query_parameters($sQuery, $bQueued ? "true" : "false",
+ $bQueued ? "true" : "false");
+ }
}
}
@@ -475,34 +505,33 @@ class maintainer
/* 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
- appMaintainers, appFamily, appVersion WHERE
- appMaintainers.queued = '?'
- AND
- appFamily.appId = appVersion.appId
- AND
- (
- (
- appFamily.appId = appMaintainers.appId
- AND
- appFamily.queued = 'false'
- AND
- appMaintainers.versionId = ''
- )
- OR
- (
- appVersion.versionId = appMaintainers.versionId
- AND
- appVersion.queued = 'false'
- )
- )";
+ $sQuery = "(SELECT COUNT(DISTINCT maintainerId) as count FROM
+ appMaintainers, appFamily WHERE
+ appMaintainers.queued = '?'
+ AND
+ appMaintainers.superMaintainer = '1'
+ AND
+ appFamily.appId = appMaintainers.appId
+ AND
+ appFamily.queued = 'false') UNION
+ (SELECT COUNT(DISTINCT maintainerId) as count FROM
+ appMaintainers, appVersion WHERE
+ appMaintainers.queued = '?'
+ AND
+ appMaintainers.versionId = appVersion.versionId
+ AND
+ appMaintainers.superMaintainer = '0'
+ AND
+ appVersion.queued = 'false')";
- if(!($hResult = query_parameters($sQuery, $bQueued ? "true" : "false")))
+ if(!($hResult = query_parameters($sQuery, $bQueued ? "true" : "false",
+ $bQueued ? "true" : "false")))
return FALSE;
- $oRow = mysql_fetch_object($hResult);
+ for($iCount = 0; $oRow = mysql_fetch_object($hResult);)
+ $iCount += $oRow->count;
- return $oRow->queued_maintainers;
+ return $iCount;
}
/* see how many maintainer entries we have in the database */
@@ -782,6 +811,13 @@ class maintainer
return TRUE;
}
+ function objectGetItemsPerPage($bQueued = false)
+ {
+ $aItemsPerPage = array(25, 50, 100, 200);
+ $iDefaultPerPage = 25;
+ return array($aItemsPerPage, $iDefaultPerPage);
+ }
+
function update()
{
/* STUB: No updating possible at the moment */
More information about the wine-cvs
mailing list