Пример #1
0
 /**
  * Creates a new package installation queue.
  * 
  * @param	string		$queueType
  * @return	array
  */
 protected function createQueue($queueType)
 {
     if (isset($this->parameters['authData'])) {
         PackageUpdateServer::storeAuthData($this->parameters['authData']['packageUpdateServerID'], $this->parameters['authData']['username'], $this->parameters['authData']['password'], $this->parameters['authData']['saveCredentials']);
     }
     $scheduler = new PackageInstallationScheduler($this->parameters['packages']);
     try {
         $scheduler->buildPackageInstallationStack($queueType == 'install');
     } catch (PackageUpdateUnauthorizedException $e) {
         return array('template' => $e->getRenderedTemplate());
     }
     // validate exclusions
     if ($queueType == 'update') {
         $excludedPackages = $scheduler->getExcludedPackages();
         if (!empty($excludedPackages)) {
             return array('excludedPackages' => true, 'template' => WCF::getTPL()->fetch('packageUpdateExcludedPackages', 'wcf', array('excludedPackages' => $excludedPackages)));
         }
     }
     $stack = $scheduler->getPackageInstallationStack();
     $queueID = null;
     if (!empty($stack)) {
         $parentQueueID = 0;
         $processNo = PackageInstallationQueue::getNewProcessNo();
         foreach ($stack as $package) {
             $queue = PackageInstallationQueueEditor::create(array('parentQueueID' => $parentQueueID, 'processNo' => $processNo, 'userID' => WCF::getUser()->userID, 'package' => $package['package'], 'packageName' => $package['packageName'], 'packageID' => $package['packageID'] ?: null, 'archive' => $package['archive'], 'action' => $package['action']));
             $parentQueueID = $queue->queueID;
             if ($queueID === null) {
                 $queueID = $queue->queueID;
             }
         }
     }
     return array('queueID' => $queueID);
 }