ChangeSet ID: 31091 CVSROOT: /opt/cvs-commit Module name: appdb Changes by: wineowner@winehq.org 2007/04/23 18:31:24
Modified files: . : objectManager.php include : appData.php objectManager.php version.php version_queue.php
Log message: Alexander Nicolaysen Sørnes alex@thehandofagony.com Add a moveChildren method to the objectManager and implement objectMoveChildren for version and version_queue. Use this to move versions.
Patch: http://cvs.winehq.org/patch.py?id=31091
Old revision New revision Changes Path 1.6 1.7 +5 -0 appdb/objectManager.php 1.17 1.18 +23 -0 appdb/include/appData.php 1.15 1.16 +29 -0 appdb/include/objectManager.php 1.120 1.121 +43 -0 appdb/include/version.php 1.6 1.7 +9 -4 appdb/include/version_queue.php
Index: appdb/objectManager.php diff -u -p appdb/objectManager.php:1.6 appdb/objectManager.php:1.7 --- appdb/objectManager.php:1.6 23 Apr 2007 23:31:24 -0000 +++ appdb/objectManager.php 23 Apr 2007 23:31:24 -0000 @@ -64,6 +64,11 @@ if($sErrors === TRUE) if($oObject->iId && $aClean['sAction'] == "delete") $oObject->delete_entry();
+/* Provided the necessary values are present, an object's children may be moved + without any confirmation */ +if($oObject->iId && $aClean['sAction'] == "moveChildren" && $aClean['iNewId']) + $oObject->move_children($aClean['iNewId']); + apidb_header($oObject->sTitle);
/* display a particular element */ Index: appdb/include/appData.php diff -u -p appdb/include/appData.php:1.17 appdb/include/appData.php:1.18 --- appdb/include/appData.php:1.17 23 Apr 2007 23:31:24 -0000 +++ appdb/include/appData.php 23 Apr 2007 23:31:24 -0000 @@ -52,6 +52,29 @@ class appData return $hResult; }
+ function update($bSilent = FALSE) + { + if(!$this->canEdit()) + return FALSE; + + $sQuery = "UPDATE appData SET versionId = '?', appId = '?', sDescription = '?' + WHERE id = '?'"; + $hResult = query_parameters($this->iVersionId, $this->iAppId, + $this->sDescription, $this->iId); + + if(!$hResult) + { + if(!$bResult) + addmsg("Failed to update add data", "red"); + return FALSE; + } + + if(!$bSilent) + addmsg("Updated app data successfully", "green"); + + return TRUE; + } + function listSubmittedBy($iUserId, $bQueued = true) { $hResult = query_parameters("SELECT * FROM appData WHERE Index: appdb/include/objectManager.php diff -u -p appdb/include/objectManager.php:1.15 appdb/include/objectManager.php:1.16 --- appdb/include/objectManager.php:1.15 23 Apr 2007 23:31:24 -0000 +++ appdb/include/objectManager.php 23 Apr 2007 23:31:24 -0000 @@ -220,6 +220,35 @@ class ObjectManager echo "Failure.\n"; }
+ /* Move all the object's children to another object of the same type, and + delete the original object afterwards */ + function move_children($iNewId) + { + $oObject = new $this->sClass($this->iId); + $oNewObject = new $this->sClass($iNewId); + + /* The user needs to have edit rights to both the old and the new object + If you have edit rights to an object then you should have edit rights + to its child objects as well */ + if(!$oObject->canEdit() || !$oNewObject->canEdit()) + return FALSE; + + $iAffected = $oObject->objectMoveChildren($iNewId); + + if($iAffected) + { + $sPlural = ($iAffected == 1) ? "": "s"; + addmsg("Moved $iAffected child object$sPlural", "green"); + } else if($iAfffected === FALSE) + { + /* We don't want to delete this object if some children were not moved */ + addmsg("Failed to move child objects", "red"); + return FALSE; + } + + $this->delete_entry(); + } + /* Display screen for submitting a new entry of given type */ function add_entry($sBackLink, $sErrors = "") { Index: appdb/include/version.php diff -u -p appdb/include/version.php:1.120 appdb/include/version.php:1.121 --- appdb/include/version.php:1.120 23 Apr 2007 23:31:24 -0000 +++ appdb/include/version.php 23 Apr 2007 23:31:24 -0000 @@ -1366,6 +1366,49 @@ class Version { echo "<p>To view a submission, click on its name. ". "From that page you can edit, delete or approve it into the AppDB.</p>\n"; } + + function objectMoveChildren($iNewId) + { + /* 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); + + if(!$hResult) + return FALSE; + + while($oRow = mysql_fetch_object($hResult)) + { + $oTestData = new testData($oRow->testingId); + $oTestData->iVersionId = $iNewId; + if($oTestData->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 = mysql_fetch_object($hResult)) + { + $oAppData = new appData($oRow->testingId); + $oAppData->iVersionId = $iNewId; + if($oAppData->update(TRUE)) + $iCount++; + else + return FALSE; + } + + /* Return the number of updated objects if everything was successful */ + return $iCount; + } }
?> Index: appdb/include/version_queue.php diff -u -p appdb/include/version_queue.php:1.6 appdb/include/version_queue.php:1.7 --- appdb/include/version_queue.php:1.6 23 Apr 2007 23:31:24 -0000 +++ appdb/include/version_queue.php 23 Apr 2007 23:31:24 -0000 @@ -197,10 +197,10 @@ class version_queue array(Comment::get_comment_count_for_versionid( $oVersion->iVersionId), 'align="center"'), html_ahref("Move here", - "admin/adminAppQueue.php?sSub=movetest&sAppType=version&". - "iVersionId=" - .$this->oVersion->iVersionId."&iVersionIdMergeTo=". - $oVersion->iVersionId) + "objectManager.php?sClass=version_queue&bIsQueue=true&". + "sAction=moveChildren&iId=". + $this->oVersion->iVersionId."&iNewId=". + $oVersion->iVersionId."&sTitle=Version+Queue"), ), ($i % 2) ? "color0" : "color1");
@@ -215,6 +215,11 @@ class version_queue { version::objectDisplayQueueProcessingHelp(); } + + function objectMoveChildren($iNewId) + { + return $this->oVersion->objectMoveChildren($iNewId); + } }
?>