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];
     }
 }
예제 #5
0
 public function persistPackage(Package $package)
 {
     $this->persistVendor($package->getVendor());
     $data = array($package->getCreatedAt()->format('Y-m-d H:i:s'), $package->getUpdatedAt()->format('Y-m-d H:i:s'), $package->getUserId(), $package->getVendor()->getId(), $package->getName(), $package->getFullname(), $package->getDescription(), $package->getRepositoryUrl(), $package->getRepositoryType());
     if ($package->getId()) {
         $data[] = $package->getId();
         $sql = "UPDATE " . $this->getTablePrefix() . "package\n                    SET\n\t\t\t\t\t\tcreated_at = ?,\n\t\t\t\t\t\tupdated_at = ?,\n\t\t\t\t\t\tuser_id = ?,\n\t\t\t\t\t\tvendor_id = ?,\n\t\t\t\t\t\tname = ?,\n                        fullname = ?,\n                        description = ?,\n                        repository_url = ?,\n                        repository_type = ?\n                    WHERE\n                        id = ?";
         $stmt = $this->pdo->prepare($sql);
         $stmt->execute($data);
     } else {
         $sql = "INSERT INTO " . $this->getTablePrefix() . "package\n                    (created_at, updated_at, user_id, vendor_id, name, fullname, description, repository_url, repository_type)\n                    VALUES\n                    (?, ?, ?, ?, ?, ?, ?, ?, ?)";
         $stmt = $this->pdo->prepare($sql);
         $stmt->execute($data);
         $package->setId($this->pdo->lastInsertId());
     }
     // Persist the versions:
     $persistedVersions = array();
     foreach ($package->getVersions() as $version) {
         $this->persistVersion($version);
         $persistedVersions[] = $version->getId();
     }
     // Remove all versions that were not persisted:
     $sql = "DELETE FROM " . $this->getTablePrefix() . "version WHERE package_id = ? AND id NOT IN (" . implode(', ', $persistedVersions) . ")";
     $stmt = $this->pdo->prepare($sql);
     $stmt->execute(array($package->getId()));
 }