/**
  * 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->getConditionBuilder()->add("package_installation_queue.queueID NOT IN (SELECT queueID FROM wcf" . WCF_N . "_package_installation_node)");
     $queueList->readObjects();
     foreach ($queueList as $queue) {
         $installation = new PackageInstallationDispatcher($queue);
         // work-around for iterative package updates
         if ($this->installation->queue->action == 'update' && $queue->package == $this->installation->queue->package) {
             $installation->setPreviousPackage(array('package' => $this->installation->getArchive()->getPackageInfo('name'), 'packageVersion' => $this->installation->getArchive()->getPackageInfo('version')));
         }
         $installation->nodeBuilder->setParentNode($this->node);
         $installation->nodeBuilder->buildNodes();
         $this->node = $installation->nodeBuilder->getCurrentNode();
     }
 }
 /**
  * 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->getConditionBuilder()->add("package_installation_queue.queueID NOT IN (SELECT queueID FROM wcf" . WCF_N . "_package_installation_node)");
     $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();
     }
 }