コード例 #1
0
ファイル: PackageDao.php プロジェクト: stof/packanalyst
 /**
  * Creates or update a package in MongoDB from the Package passed in parameter. 
  * 
  * @param Package $package
  * @return array
  */
 public function createOrUpdatePackage(Package $package)
 {
     $packageVersion = $this->get($package->getName(), $package->getPrettyVersion());
     if (!$packageVersion) {
         $packageVersion = ["packageName" => $package->getName(), "packageVersion" => $package->getPrettyVersion()];
     }
     $packageVersion['releaseDate'] = new \MongoDate($package->getReleaseDate()->getTimestamp());
     $packageVersion['type'] = $package->getType();
     $packageVersion['sourceUrl'] = $package->getSourceUrl();
     $packageVersion['realVersion'] = $package->getVersion();
     if ($package instanceof CompletePackage) {
         $packageVersion['description'] = $package->getDescription();
     }
     $this->collection->save($packageVersion);
     // Boost = 1 + download/10 + favers
     // TODO: we could improve the score of packages by the number of times they are referred by other packages.
     $score = 1;
     if (isset($packageVersion['downloads'])) {
         $score += $packageVersion['downloads'] / 10;
     }
     if (isset($packageVersion['favers'])) {
         $score += $packageVersion['favers'];
     }
     $this->itemDao->applyScore($package->getName(), $score);
     $this->elasticSearchService->storeItemName($package->getName(), 'package', $score);
     return $packageVersion;
 }