Esempio n. 1
0
 function __construct(\Pyrus\Package\Dependency\Set $set, \Pyrus\Package $node, PackageTree $parent = null)
 {
     $this->set = $set;
     $this->node = $node;
     $this->parent = $parent;
     $this->name = $node->channel . '/' . $node->name;
     if ($node->isRemote() && $node->isAbstract()) {
         if ($node->getExplicitVersion()) {
             $this->firstVersion = $node->getExplicitVersion();
             if (isset(static::$availableVersionsMap[$this->name])) {
                 $rebuild = true;
             } else {
                 $rebuild = false;
             }
             $this->allVersions = $this->versionsAvailable = array($node->version['release']);
             $this->setAvailableVersionsMap();
             if ($rebuild) {
                 $this->rebuild($this->name);
             }
             self::register($this);
             return;
         }
         if (isset(self::$availableVersionsMap[$this->name])) {
             $this->allVersions = $this->versionsAvailable = self::$availableVersionsMap[$this->name];
         } else {
             while (!$node instanceof \Pyrus\Channel\RemotePackage) {
                 $node = $node->getInternalPackage();
             }
             foreach ($node->getReleaseList() as $info) {
                 $this->allVersions[] = $info['v'];
                 $this->versionsAvailable[] = $info['v'];
             }
             if (null === $parent) {
                 return $this->findParentVersion();
             }
             $this->setAvailableVersionsMap();
         }
     } else {
         $this->allVersions = $this->versionsAvailable = array($node->version['release']);
         $this->setAvailableVersionsMap();
     }
     self::register($this);
 }