Performance improvements to version and application classes. Reduce the amount of queries to
what is necessary during object creation. The only use of all but one of the arrays we were fetching during version and application construction was in ::delete() so we can just retrieve them there. Speed screenshot class up by only querying for necessary columns, not select *
This commit is contained in:
@@ -117,7 +117,7 @@ function display_move_test_to_versions_table($aVersionsIds,$icurrentVersionId)
|
|||||||
echo " <td>".util_trim_description($oVersion->sDescription)."</td>\n";
|
echo " <td>".util_trim_description($oVersion->sDescription)."</td>\n";
|
||||||
echo " <td align=center>".$oVersion->sTestedRating."</td>\n";
|
echo " <td align=center>".$oVersion->sTestedRating."</td>\n";
|
||||||
echo " <td align=center>".$oVersion->sTestedRelease."</td>\n";
|
echo " <td align=center>".$oVersion->sTestedRelease."</td>\n";
|
||||||
echo " <td align=center>".sizeof($oVersion->aCommentsIds)."</td>\n";
|
echo " <td align=center>".Comment::get_comment_count_for_versionid($oVersion->iVersionId)."</td>\n";
|
||||||
echo "</tr>\n\n";
|
echo "</tr>\n\n";
|
||||||
|
|
||||||
$c++;
|
$c++;
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ class Application {
|
|||||||
var $sSubmitTime;
|
var $sSubmitTime;
|
||||||
var $iSubmitterId;
|
var $iSubmitterId;
|
||||||
var $aVersionsIds; // an array that contains the versionId of every version linked to this app.
|
var $aVersionsIds; // an array that contains the versionId of every version linked to this app.
|
||||||
var $aUrlsIds; // an array that contains the screenshotId of every url linked to this version
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor, fetches the data.
|
* constructor, fetches the data.
|
||||||
@@ -77,24 +76,6 @@ class Application {
|
|||||||
$this->aVersionsIds[] = $oRow->versionId;
|
$this->aVersionsIds[] = $oRow->versionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch urlsIds.
|
|
||||||
*/
|
|
||||||
$this->aUrlsIds = array();
|
|
||||||
$sQuery = "SELECT id
|
|
||||||
FROM appData
|
|
||||||
WHERE type = 'url'
|
|
||||||
AND appId = '?'";
|
|
||||||
|
|
||||||
if($hResult = query_parameters($sQuery, $iAppId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aUrlsIds[] = $oRow->id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +200,24 @@ class Application {
|
|||||||
$oVersion = new Version($iVersionId);
|
$oVersion = new Version($iVersionId);
|
||||||
$oVersion->delete($bSilent);
|
$oVersion->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aUrlsIds as $iUrlId)
|
|
||||||
|
|
||||||
|
/* fetch urlsIds */
|
||||||
|
$aUrlsIds = array();
|
||||||
|
$sQuery = "SELECT id
|
||||||
|
FROM appData
|
||||||
|
WHERE type = 'url'
|
||||||
|
AND appId = '?'";
|
||||||
|
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iAppId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aUrlsIds[] = $oRow->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($aUrlsIds as $iUrlId)
|
||||||
{
|
{
|
||||||
$oUrl = new Url($iUrlId);
|
$oUrl = new Url($iUrlId);
|
||||||
$oUrl->delete($bSilent);
|
$oUrl->delete($bSilent);
|
||||||
|
|||||||
@@ -187,6 +187,16 @@ class Comment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_comment_count_for_versionid($iVersionId)
|
||||||
|
{
|
||||||
|
$sQuery = "SELECT count(*) as cnt from appComments where versionId = '?'";
|
||||||
|
$hResult = query_parameters($sQuery, $iVersionId);
|
||||||
|
if(!$hResult) return 0;
|
||||||
|
|
||||||
|
$oRow = mysql_fetch_object($hResult);
|
||||||
|
return $oRow->cnt;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class static functions
|
* class static functions
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -307,12 +307,13 @@ class Screenshot {
|
|||||||
*
|
*
|
||||||
* $bFormatting == false turns off all extranious formatting applied to the returned image html
|
* $bFormatting == false turns off all extranious formatting applied to the returned image html
|
||||||
*/
|
*/
|
||||||
function get_screenshot_img($iAppId = null, $iVersionId = null, $bFormatting = true)
|
function get_screenshot_img($iAppId = null, $iVersionId = null,
|
||||||
|
$bFormatting = true)
|
||||||
{
|
{
|
||||||
// we want a random screenshots for this app
|
// we want a random screenshots for this app
|
||||||
if($iAppId && !$iVersionId)
|
if($iAppId && !$iVersionId)
|
||||||
{
|
{
|
||||||
$hResult = query_parameters("SELECT appData.*, RAND() AS rand
|
$hResult = query_parameters("SELECT appData.id, appData.description, RAND() AS rand
|
||||||
FROM appData, appVersion
|
FROM appData, appVersion
|
||||||
WHERE appData.versionId = appVersion.versionId
|
WHERE appData.versionId = appVersion.versionId
|
||||||
AND appVersion.appId = '?'
|
AND appVersion.appId = '?'
|
||||||
@@ -321,7 +322,7 @@ function get_screenshot_img($iAppId = null, $iVersionId = null, $bFormatting = t
|
|||||||
ORDER BY rand", $iAppId);
|
ORDER BY rand", $iAppId);
|
||||||
} else if ($iVersionId) // we want a random screenshot for this version
|
} else if ($iVersionId) // we want a random screenshot for this version
|
||||||
{
|
{
|
||||||
$hResult = query_parameters("SELECT *, RAND() AS rand
|
$hResult = query_parameters("SELECT id, description, RAND() AS rand
|
||||||
FROM appData
|
FROM appData
|
||||||
WHERE versionId = '?'
|
WHERE versionId = '?'
|
||||||
AND type = 'image'
|
AND type = 'image'
|
||||||
|
|||||||
@@ -25,13 +25,6 @@ class Version {
|
|||||||
var $iSubmitterId;
|
var $iSubmitterId;
|
||||||
var $sDate;
|
var $sDate;
|
||||||
var $sQueued;
|
var $sQueued;
|
||||||
var $aNotesIds; // an array that contains the noteId of every note linked to this version
|
|
||||||
var $aCommentsIds; // an array that contains the commentId of every comment linked to this version
|
|
||||||
var $aScreenshotsIds; // an array that contains the screenshotId of every screenshot linked to this version
|
|
||||||
var $aUrlsIds; // an array that contains the screenshotId of every url linked to this version
|
|
||||||
var $aBuglinkIds; // an array that contains the buglinkId of every bug linked to this version
|
|
||||||
var $aTestingIds; // an array that contains the testingId of every test result linked to this version
|
|
||||||
var $aMonitorIds; // an array that contains the monitorId of every monitor linked to this version
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor, fetches the data.
|
* constructor, fetches the data.
|
||||||
@@ -67,105 +60,6 @@ class Version {
|
|||||||
$this->sQueued = $oRow->queued;
|
$this->sQueued = $oRow->queued;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch notesIds.
|
|
||||||
*/
|
|
||||||
$this->aNotesIds = array();
|
|
||||||
$sQuery = "SELECT noteId
|
|
||||||
FROM appNotes
|
|
||||||
WHERE versionId = '?'";
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aNotesIds[] = $oRow->noteId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch commentsIds.
|
|
||||||
*/
|
|
||||||
$this->aCommentsIds = array();
|
|
||||||
$sQuery = "SELECT commentId
|
|
||||||
FROM appComments
|
|
||||||
WHERE versionId = '?'";
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aCommentsIds[] = $oRow->commentId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch screenshotsIds and urlsIds.
|
|
||||||
*/
|
|
||||||
$this->aScreenshotsIds = array();
|
|
||||||
$this->aUrlsIds = array();
|
|
||||||
$sQuery = "SELECT id, type
|
|
||||||
FROM appData
|
|
||||||
WHERE versionId = '?'";
|
|
||||||
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
if($oRow->type="image")
|
|
||||||
$this->aScreenshotsIds[] = $oRow->id;
|
|
||||||
else
|
|
||||||
$this->aUrlsIds[] = $oRow->id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch Bug linkIds.
|
|
||||||
*/
|
|
||||||
$this->aBuglinkIds = array();
|
|
||||||
$sQuery = "SELECT *
|
|
||||||
FROM buglinks
|
|
||||||
WHERE versionId = '?'
|
|
||||||
ORDER BY bug_id";
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aBuglinkIds[] = $oRow->linkId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch Test Results Ids.
|
|
||||||
*/
|
|
||||||
$this->aTestingIds = array();
|
|
||||||
$sQuery = "SELECT *
|
|
||||||
FROM testResults
|
|
||||||
WHERE versionId = '?'
|
|
||||||
ORDER BY testingId";
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aTestingIds[] = $oRow->testingId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We fetch monitor Ids.
|
|
||||||
*/
|
|
||||||
$this->aMonitorIds = array();
|
|
||||||
$sQuery = "SELECT *
|
|
||||||
FROM appMonitors
|
|
||||||
WHERE versionId = '?'
|
|
||||||
ORDER BY monitorId";
|
|
||||||
if($hResult = query_parameters($sQuery, $iVersionId))
|
|
||||||
{
|
|
||||||
while($oRow = mysql_fetch_object($hResult))
|
|
||||||
{
|
|
||||||
$this->aMonitorIds[] = $oRow->monitorId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,43 +181,129 @@ class Version {
|
|||||||
if(!$_SESSION['current']->canDeleteVersion($this))
|
if(!$_SESSION['current']->canDeleteVersion($this))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* fetch notesIds */
|
||||||
|
$aNotesIds = array();
|
||||||
|
$sQuery = "SELECT noteId
|
||||||
|
FROM appNotes
|
||||||
|
WHERE versionId = '?'";
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aNotesIds[] = $oRow->noteId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* remove all of the items this version contains */
|
/* remove all of the items this version contains */
|
||||||
foreach($this->aNotesIds as $iNoteId)
|
foreach($aNotesIds as $iNoteId)
|
||||||
{
|
{
|
||||||
$oNote = new Note($iNoteId);
|
$oNote = new Note($iNoteId);
|
||||||
$oNote->delete($bSilent);
|
$oNote->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aCommentsIds as $iCommentId)
|
|
||||||
|
|
||||||
|
/* We fetch commentsIds. */
|
||||||
|
$aCommentsIds = array();
|
||||||
|
$sQuery = "SELECT commentId
|
||||||
|
FROM appComments
|
||||||
|
WHERE versionId = '?'";
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aCommentsIds[] = $oRow->commentId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($aCommentsIds as $iCommentId)
|
||||||
{
|
{
|
||||||
$oComment = new Comment($iCommentId);
|
$oComment = new Comment($iCommentId);
|
||||||
$oComment->delete($bSilent);
|
$oComment->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aScreenshotsIds as $iScreenshotId)
|
|
||||||
|
|
||||||
|
/* fetch screenshotsIds and urlsIds */
|
||||||
|
$aScreenshotsIds = array();
|
||||||
|
$aUrlsIds = array();
|
||||||
|
$sQuery = "SELECT id, type
|
||||||
|
FROM appData
|
||||||
|
WHERE versionId = '?'";
|
||||||
|
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
if($oRow->type="image")
|
||||||
|
$aScreenshotsIds[] = $oRow->id;
|
||||||
|
else
|
||||||
|
$aUrlsIds[] = $oRow->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($aScreenshotsIds as $iScreenshotId)
|
||||||
{
|
{
|
||||||
$oScreenshot = new Screenshot($iScreenshotId);
|
$oScreenshot = new Screenshot($iScreenshotId);
|
||||||
$oScreenshot->delete($bSilent);
|
$oScreenshot->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aUrlsIds as $iUrlId)
|
foreach($aUrlsIds as $iUrlId)
|
||||||
{
|
{
|
||||||
$oUrl = new Url($iUrlId);
|
$oUrl = new Url($iUrlId);
|
||||||
$oUrl->delete($bSilent);
|
$oUrl->delete($bSilent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach($this->aBuglinkIds as $iBug_id)
|
foreach($this->aBuglinkIds as $iBug_id)
|
||||||
{
|
{
|
||||||
$oBug = new bug($iBug_id);
|
$oBug = new bug($iBug_id);
|
||||||
$oBug->delete($bSilent);
|
$oBug->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aTestingIds as $iTestId)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* fetch Test Results Ids */
|
||||||
|
$aTestingIds = array();
|
||||||
|
$sQuery = "SELECT *
|
||||||
|
FROM testResults
|
||||||
|
WHERE versionId = '?'
|
||||||
|
ORDER BY testingId";
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aTestingIds[] = $oRow->testingId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($aTestingIds as $iTestId)
|
||||||
{
|
{
|
||||||
$oTest = new testData($iTestId);
|
$oTest = new testData($iTestId);
|
||||||
$oTest->delete($bSilent);
|
$oTest->delete($bSilent);
|
||||||
}
|
}
|
||||||
foreach($this->aMonitorIds as $iMonitorId)
|
|
||||||
|
|
||||||
|
/* fetch monitor Ids */
|
||||||
|
$aMonitorIds = array();
|
||||||
|
$sQuery = "SELECT *
|
||||||
|
FROM appMonitors
|
||||||
|
WHERE versionId = '?'
|
||||||
|
ORDER BY monitorId";
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aMonitorIds[] = $oRow->monitorId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($aMonitorIds as $iMonitorId)
|
||||||
{
|
{
|
||||||
$oMonitor = new Monitor($iMonitorId);
|
$oMonitor = new Monitor($iMonitorId);
|
||||||
$oMonitor->delete($bSilent);
|
$oMonitor->delete($bSilent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// remove any maintainers for this version so we don't orphan them
|
// remove any maintainers for this version so we don't orphan them
|
||||||
$hResult = query_parameters("DELETE from appMaintainers WHERE versionId='?'", $this->iVersionId);
|
$hResult = query_parameters("DELETE from appMaintainers WHERE versionId='?'", $this->iVersionId);
|
||||||
if(!$hResult)
|
if(!$hResult)
|
||||||
@@ -520,6 +500,27 @@ class Version {
|
|||||||
mail_appdb($sEmail, $sSubject ,$sMsg);
|
mail_appdb($sEmail, $sSubject ,$sMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_buglink_ids()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* We fetch Bug linkIds.
|
||||||
|
*/
|
||||||
|
$aBuglinkIds = array();
|
||||||
|
$sQuery = "SELECT *
|
||||||
|
FROM buglinks
|
||||||
|
WHERE versionId = '?'
|
||||||
|
ORDER BY bug_id";
|
||||||
|
if($hResult = query_parameters($sQuery, $this->iVersionId))
|
||||||
|
{
|
||||||
|
while($oRow = mysql_fetch_object($hResult))
|
||||||
|
{
|
||||||
|
$aBuglinkIds[] = $oRow->linkId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $aBuglinkIds;
|
||||||
|
}
|
||||||
|
|
||||||
/* output html and the current versions information for editing */
|
/* output html and the current versions information for editing */
|
||||||
/* if $editParentApplication is true that means we need to display fields */
|
/* if $editParentApplication is true that means we need to display fields */
|
||||||
/* to let the user change the parent application of this version */
|
/* to let the user change the parent application of this version */
|
||||||
@@ -802,7 +803,7 @@ class Version {
|
|||||||
|
|
||||||
echo html_frame_end();
|
echo html_frame_end();
|
||||||
|
|
||||||
view_version_bugs($this->iVersionId, $this->aBuglinkIds);
|
view_version_bugs($this->iVersionId, $this->get_buglink_ids());
|
||||||
|
|
||||||
/* display the notes for the application */
|
/* display the notes for the application */
|
||||||
$hNotes = query_parameters("SELECT noteId FROM appNotes WHERE versionId = '?'",
|
$hNotes = query_parameters("SELECT noteId FROM appNotes WHERE versionId = '?'",
|
||||||
@@ -901,7 +902,7 @@ class Version {
|
|||||||
echo " <td>".util_trim_description($oVersion->sDescription)."</td>\n";
|
echo " <td>".util_trim_description($oVersion->sDescription)."</td>\n";
|
||||||
echo " <td align=center>".$oVersion->sTestedRating."</td>\n";
|
echo " <td align=center>".$oVersion->sTestedRating."</td>\n";
|
||||||
echo " <td align=center>".$oVersion->sTestedRelease."</td>\n";
|
echo " <td align=center>".$oVersion->sTestedRelease."</td>\n";
|
||||||
echo " <td align=center>".sizeof($oVersion->aCommentsIds)."</td>\n";
|
echo " <td align=center>".Comment::get_comment_count_for_versionid($oVersion->iVersionId)."</td>\n";
|
||||||
echo "</tr>\n\n";
|
echo "</tr>\n\n";
|
||||||
|
|
||||||
$c++;
|
$c++;
|
||||||
|
|||||||
Reference in New Issue
Block a user