diff --git a/include/appData.php b/include/appData.php index 407c079..bc3142e 100644 --- a/include/appData.php +++ b/include/appData.php @@ -118,6 +118,22 @@ class appData return TRUE; } + public function objectGetParent($sClass = '') + { + if($this->iVersionId) + return new version($this->iVersionId); + else + return new application($this->iAppId); + } + + public function objectSetParent($iNewId, $sClass = '') + { + if($this->iVersionId) + $this->iVersionId = $iNewId; + else + $this->iAppId = $iNewId; + } + function listSubmittedBy($iUserId, $bQueued = true) { $sExtra = ''; diff --git a/include/bugs.php b/include/bugs.php index 2c2e650..48fbb4e 100644 --- a/include/bugs.php +++ b/include/bugs.php @@ -187,10 +187,20 @@ class Bug } } - //TODO: figure out what we might want to do here but lie and - // return true until then function update() { + $oBug = new bug($this->iLinkId); + + if($this->iVersionId && $this->iVersionId != $oBug->iVersionId) + { + $hResult = query_parameters("UPDATE buglinks SET versionId = '?' + WHERE linkId = '?'", + $this->iVersionId, $this->iLinkId); + + if(!$hResult) + return false; + } + return true; } @@ -278,6 +288,16 @@ class Bug return array(null, null, null); } + public function objectGetParent($sClass = '') + { + return new version($this->iVersionId); + } + + public function objectSetParent($iNewId, $sClass = '') + { + $this->iVersionId = $iNewId; + } + function objectGetChildren($bIncludeDeleted = false) { return array(); diff --git a/include/comment.php b/include/comment.php index ce5a2f2..09c2ab3 100644 --- a/include/comment.php +++ b/include/comment.php @@ -136,13 +136,20 @@ class Comment { */ function update($sSubject=null, $sBody=null, $iParentId=null, $iVersionId=null) { + $oComment = new comment($this->iCommentId); + + if(!$iVersionId && $this->iVersionId != $oComment->iVersionId) + $iVersionId = $this->iVersionId; + if(!$iParentId && $this->iParentId != $oComment->iParentId) + $iParentId = $this->iParentId; + if ($iParentId) { if (!query_parameters("UPDATE appComments SET parentId = '?' WHERE commentId = '?'", $iParentId, $this->iCommentId)) return false; $this->iParentId = $iParentId; - } + } if ($iVersionId) { @@ -523,6 +530,32 @@ class Comment { return array($sSubject, $sMessage, $aRecipients); } + public function objectGetParent($sClass = '') + { + switch($sClass) + { + case 'version': + return new version($this->iVersionId); + + case 'comment': + return new comment($this->iParentId); + } + } + + public function objectSetParent($iNewId, $sClass = '') + { + switch($sClass) + { + case 'version': + $this->iVersionId = $iNewId; + break; + + case 'comment': + $this->iParentId = $iNewId; + break; + } + } + function objectGetChildren($bIncludeDeleted = false) { $aObjects = array(); diff --git a/include/downloadurl.php b/include/downloadurl.php index ca903bb..152fbc4 100644 --- a/include/downloadurl.php +++ b/include/downloadurl.php @@ -63,9 +63,16 @@ class downloadurl return $sReturn; } - public function objectSetParent($iId, $sClass = 'version') + public function objectGetParent($sClass = '') { - $this->iVersionId = $iId; + $oAppData = new appData($this->iId, null, $this); + return $oAppData->objectGetParent(); + } + + public function objectSetParent($iNewId, $sClass = '') + { + $oAppData = new appData($this->iId, null, $this); + return $oAppData->objectSetParent($iNewId, $sClass); } function objectGetChildren($bIncludeDeleted = false) diff --git a/include/maintainer.php b/include/maintainer.php index 1851f91..2acbd5f 100644 --- a/include/maintainer.php +++ b/include/maintainer.php @@ -899,15 +899,52 @@ class maintainer return array($aItemsPerPage, $iDefaultPerPage); } + public function objectGetParent($sClass = '') + { + if($this->iVersionId) + return new version($this->iVersionId); + else + return new application($this->iAppId); + } + + public function objectSetParent($iNewId, $sClass = '') + { + if($this->iVersionId) + $this->iVersionId = $iNewId; + else + $this->iAppId = $iNewId; + } + function objectGetChildren($bIncludeDeleted = false) { /* We have none */ return array(); } - function update() + public function update() { - /* STUB: No updating possible at the moment */ + $oMaintainer = new maintainer($this->iMaintainerId); + + if($this->iVersionId && $oMaintainer->iVersionId != $this->iVersionId) + { + $hResult = query_parameters("UPDATE appMaintainers SET versionId = '?' + WHERE maintainerId = '?'", + $this->iVersionId, $this->iMaintainerId); + + if(!$hResult) + return FALSE; + } + + if($this->iAppId && $oMaintainer->iAppId != $this->iAppId) + { + $hResult = query_parameters("UPDATE appMaintainers SET appId = '?' + WHERE maintainerId = '?'", + $this->iAppId, $this->iMaintainerId); + + if(!$hResult) + return FALSE; + } + return TRUE; } diff --git a/include/monitor.php b/include/monitor.php index e955454..f8a95cf 100644 --- a/include/monitor.php +++ b/include/monitor.php @@ -61,6 +61,22 @@ class Monitor { } } + public function objectGetParent($sClass = '') + { + if($this->iVersionId) + return new version($this->iVersionId); + else + return new application($this->iAppId); + } + + public function objectSetParent($iNewId, $sClass = '') + { + if($this->iVersionId) + $this->iVersionId = $iNewId; + else + $this->iAppId = $iNewId; + } + function objectGetChildren($bIncludeDeleted = false) { /* We have none */ @@ -103,7 +119,28 @@ class Monitor { function update() { - /* Stub */ + $oMonitor = new monitor($this->iMonitorId); + + if($this->iVersionId && $oMonitor->iVersionId != $this->iVersionId) + { + $hResult = query_parameters("UPDATE appMonitors SET versionId = '?' + WHERE monitorId = '?'", + $this->iVersionId, $this->iMonitorId); + + if(!$hResult) + return FALSE; + } + + if($this->iAppId && $oMonitor->iAppId != $this->iAppId) + { + $hResult = query_parameters("UPDATE appMonitors SET appId = '?' + WHERE monitorId = '?'", + $this->iAppId, $this->iMonitorId); + + if(!$hResult) + return FALSE; + } + return TRUE; } diff --git a/include/note.php b/include/note.php index 1558d66..b6153d5 100644 --- a/include/note.php +++ b/include/note.php @@ -378,6 +378,22 @@ class Note { return array(null, null, null); } + public function objectGetParent($sClass = '') + { + if($this->iVersionId) + return new version($this->iVersionId); + else + return new application($this->iAppId); + } + + public function objectSetParent($iNewId, $sClass = '') + { + if($this->iVersionId) + $this->iVersionId = $iNewId; + else + $this->iAppId = $iNewId; + } + function objectGetChildren($bIncludeDeleted = false) { return array(); diff --git a/include/screenshot.php b/include/screenshot.php index e906899..97e393c 100644 --- a/include/screenshot.php +++ b/include/screenshot.php @@ -294,6 +294,18 @@ class screenshot return $this->oScreenshotImage->get_width(); } + public function objectGetParent($sClass = '') + { + $oAppData = new appData($this->iScreenshotId, null, $this); + return $oAppData->objectGetParent(); + } + + public function objectSetParent($iNewId, $sClass = '') + { + $oAppData = new appData($this->iScreenshotId, null, $this); + return $oAppData->objectSetParent($iNewId, $sClass); + } + function objectGetChildren($bIncludeDeleted = false) { /* We have none */ diff --git a/include/url.php b/include/url.php index 5b041cb..93e11ae 100644 --- a/include/url.php +++ b/include/url.php @@ -511,6 +511,18 @@ class Url { return array(null, null, null); } + public function objectGetParent($sClass = '') + { + $oAppData = new appData($this->iUrlId, null, $this); + return $oAppData->objectGetParent(); + } + + public function objectSetParent($iNewId, $sClass = '') + { + $oAppData = new appData($this->iUrlId, null, $this); + return $oAppData->objectSetParent($iNewId, $sClass); + } + function objectGetChildren($bIncludeDeleted = false) { return array(); diff --git a/include/version.php b/include/version.php index 7d4aa55..94b5071 100644 --- a/include/version.php +++ b/include/version.php @@ -1723,18 +1723,19 @@ class version { return $aTests; } - public function objectGetChildren($bIncludeDeleted = false) + public function objectGetChildren($bIncludeDeleted = false, $bRecursive = true) { - return $this->objectGetChildrenClassSpecific('', $bIncludeDeleted); + return $this->objectGetChildrenClassSpecific('', $bIncludeDeleted, $bRecursive); } - public function objectGetChildrenClassSpecific($sClass = '', $bIncludeDeleted = false) + public function objectGetChildrenClassSpecific($sClass = '', $bIncludeDeleted = false, $bRecursive = true) { $aChildren = array(); foreach($this->getTestResults($bIncludeDeleted) as $oTest) { - $aChildren += $oTest->objectGetChildren($bIncludeDeleted); + if($bRecursive) + $aChildren += $oTest->objectGetChildren($bIncludeDeleted); $aChildren[] = $oTest; } @@ -1748,7 +1749,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oMaintainer = new maintainer(0, $oRow); - $aChildren += $oMaintainer->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oMaintainer->objectGetChildren($bIncludeDeleted); $aChildren[] = $oMaintainer; } @@ -1762,7 +1765,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oMonitor = new monitor(0, $oRow); - $aChildren += $oMonitor->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oMonitor->objectGetChildren($bIncludeDeleted); $aChildren[] = $oMonitor; } @@ -1776,7 +1781,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oNote = new note(0, $oRow); - $aChildren += $oNote->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oNote->objectGetChildren($bIncludeDeleted); $aChildren[] = $oNote; } @@ -1790,7 +1797,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oScreenshot = new screenshot(0, $oRow); - $aChildren += $oScreenshot->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oScreenshot->objectGetChildren($bIncludeDeleted); $aChildren[] = $oScreenshot; } @@ -1798,7 +1807,9 @@ class version { foreach($this->get_buglink_ids() as $iBugId) { $oBug = new bug($iBugId); - $aChildren += $oBug->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oBug->objectGetChildren($bIncludeDeleted); $aChildren[] = $oBug; } @@ -1812,7 +1823,8 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oComment = new comment(0, $oRow); - $aChildren += $oComment->objectGetChildren($bIncludeDeleted); + + /* No need to grab child comments since they're all part of the SQL result */ $aChildren[] = $oComment; } @@ -1826,7 +1838,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oUrl = new url(0, $oRow); - $aChildren += $oUrl->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oUrl->objectGetChildren($bIncludeDeleted); $aChildren[] = $oUrl; } @@ -1840,7 +1854,9 @@ class version { while($oRow = mysql_fetch_object($hResult)) { $oDownload = new downloadurl(0, $oRow); - $aChildren += $oDownload->objectGetChildren($bIncludeDeleted); + + if($bRecursive) + $aChildren += $oDownload->objectGetChildren($bIncludeDeleted); $aChildren[] = $oDownload; } @@ -1852,38 +1868,16 @@ class version { /* Keep track of how many items we have updated */ $iCount = 0; - /* Move test results */ - $sQuery = "SELECT * FROM testResults WHERE versionId = '?'"; - $hResult = query_parameters($sQuery, $this->iVersionId); + /* We also move entries marked as deleted */ + $aChildren = $this->objectGetChildren(true, false); - if(!$hResult) - return FALSE; - - while($oRow = query_fetch_object($hResult)) + foreach($aChildren as $oChild) { - $oTestData = new testData($oRow->testingId); - $oTestData->iVersionId = $iNewId; - if($oTestData->update()) + $oChild->objectSetParent($iNewId, 'version'); + if($oChild->update()) $iCount++; else - return FALSE; - } - - /* Move all app data */ - $sQuery = "SELECT * FROM appData WHERE versionId = '?'"; - $hResult = query_parameters($sQuery, $this->iVersionId); - - if(!$hResult) - return FALSE; - - while($oRow = query_fetch_object($hResult)) - { - $oAppData = new appData($oRow->testingId); - $oAppData->iVersionId = $iNewId; - if($oAppData->update(TRUE)) - $iCount++; - else - return FALSE; + return false; } /* Return the number of updated objects if everything was successful */