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); }
protected function mergePackages(Package $oldPackage, Package $newPackage) { $oldPackage->setUpdatedAt(new \DateTime()); $oldPackage->setDescription($newPackage->getDescription()); // Remove all versions that do not exist anymore and update the existing versions: foreach ($oldPackage->getVersions() as $version) { $newVersion = $this->findVersion($newPackage, $version); if (!$newVersion) { $oldPackage->removeVersion($version); } else { $version->setReferenceHash($newVersion->getReferenceHash()); $version->setLicense($newVersion->getLicense()); $version->setUpdatedAt(new \DateTime()); $this->mergeDependencies($version, $newVersion); } } // Add the new versions: foreach ($newPackage->getVersions() as $version) { $oldVersion = $this->findVersion($oldPackage, $version); if ($oldVersion === null) { $oldPackage->addVersion($version); } } }
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())); }
private function outputPackage(Package $package) { return array('name' => $package->getName(), 'description' => $package->getDescription(), 'fullname' => $package->getFullname()); }