Nodes for child queues are now built
authorAlexander Ebert <ebert@woltlab.com>
Fri, 4 Nov 2011 21:28:58 +0000 (22:28 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Fri, 4 Nov 2011 21:28:58 +0000 (22:28 +0100)
wcfsetup/install/files/lib/system/package/PackageInstallationNodeBuilder.class.php

index 7e2e8066ed53830e29275472b3ecf831b5286a3b..48f30a9fe92071b2e046aecc21624f9c070ce3e9 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\system\package;
 use wcf\data\package\installation\queue\PackageInstallationQueue;
 use wcf\data\package\installation\queue\PackageInstallationQueueEditor;
+use wcf\data\package\installation\queue\PackageInstallationQueueList;
 use wcf\system\Callback;
 use wcf\system\WCF;
 use wcf\util\FileUtil;
@@ -79,6 +80,9 @@ class PackageInstallationNodeBuilder {
                
                // optional packages
                $this->buildOptionalNodes();
+               
+               // child queues
+               $this->buildChildQueues();
        }
        
        /**
@@ -544,6 +548,23 @@ class PackageInstallationNodeBuilder {
                }
        }
        
+       /**
+        * Recursively build nodes for child queues.
+        */
+       protected function buildChildQueues() {
+               $queueList = new PackageInstallationQueueList();
+               $queueList->getConditionBuilder->add("package_installation_queue.parentQueueID = ?", array($this->installation->queue->queueID));
+               $queueList->sqlLimit = 0;
+               $queueList->readObjects();
+               
+               foreach ($queueList as $queue) {
+                       $installation = new PackageInstallationDispatcher($queue);
+                       $installation->nodeBuilder->setParentNode($this->node);
+                       $installation->nodeBuilder->buildNodes();
+                       $this->node = $installation->nodeBuilder->getCurrentNode();
+               }
+       }
+       
        /**
         * Returns a short SHA1-hash.
         *