private function outputPackageVersions(Package $package)
 {
     $result = array();
     foreach ($package->getVersions() as $version) {
         $result[] = array('version' => (string) $version->getVersion(), 'license' => $version->getLicense());
     }
     return $result;
 }
 private function generatePackage(Package $package)
 {
     $versions = array();
     foreach ($package->getVersions() as $version) {
         $versions[] = $this->generateVersion($version);
     }
     return array('name' => $package->getFullname(), 'description' => $package->getDescription(), 'versions' => $versions);
 }
 public function getVersions()
 {
     $result = parent::getVersions();
     if (count($result) == 0) {
         $result = $this->pdo->findVersionsByPackageId($this->getId());
         $this->setVersions($result);
     }
     return $result;
 }
 protected function findClosestVersion(Package $package, $version)
 {
     $versions = $package->getVersions();
     // Sort the versions from high to low:
     usort($versions, function ($lft, $rgt) {
         // TODO
         /* $semVer1 = $lft->getVersion();
                     $semVer2 = $rgt->getVersion();
         
                     return version_compare($semVer1, $semVer2, '<');*/
         return 0;
     });
     // Return the newest:
     if ($version === '*') {
         return $versions[0];
     }
 }
 public function removePackage(Package $package)
 {
     $sql = "DELETE FROM " . $this->getTablePrefix() . "package WHERE id = ?";
     $stmt = $this->pdo->prepare($sql);
     $stmt->execute(array($package->getId()));
 }
 private function parsePackageJson($json)
 {
     $package = new Package();
     $package->setCreatedAt(new \DateTime());
     $package->setUpdatedAt(new \DateTime());
     if (isset($json->name)) {
         list($vendorName, $packageName) = explode('/', $json->name, 2);
         $vendor = new Vendor();
         $vendor->setName($vendorName);
         $package->setName($packageName);
         $package->setVendor($vendor);
         $package->setFullname($json->name);
     }
     if (isset($json->description)) {
         $package->setDescription($json->description);
     }
     return $package;
 }