public function getPackageMaintainersQueryBuilder(Package $package, User $excludeUser = null) { $qb = $this->createQueryBuilder('u')->select('u')->innerJoin('u.packages', 'p', 'WITH', 'p.id = :packageId')->setParameter(':packageId', $package->getId())->orderBy('u.username', 'ASC'); if ($excludeUser) { $qb->andWhere('u.id <> :userId')->setParameter(':userId', $excludeUser->getId()); } return $qb; }
private function updateDocumentFromPackage(\Solarium_Document_ReadWrite $document, Package $package) { $document->id = $package->getId(); $document->name = $package->getName(); $document->description = $package->getDescription(); $tags = array(); foreach ($package->getVersions() as $version) { foreach ($version->getTags() as $tag) { $tags[mb_strtolower($tag->getName(), 'UTF-8')] = true; } } $document->tags = array_keys($tags); }
public function findOneByNameAndPackage($author, Package $package) { $qb = $this->createQueryBuilder('a'); $qb->select('a')->leftJoin('a.versions', 'v')->leftJoin('v.package', 'p')->where('p.id = :packageId')->andWhere('a.name = :author')->setMaxResults(1)->setParameters(array('author' => $author, 'packageId' => $package->getId())); return $qb->getQuery()->getOneOrNullResult(); }
public function isMarked(UserInterface $user, Package $package) { return null !== $this->redis->zrank('usr:'******':fav', $package->getId()); }
private function updateDocumentFromPackage(Solarium_Document_ReadWrite $document, Package $package, array $tags, $redis, DownloadManager $downloadManager, FavoriteManager $favoriteManager) { $document->setField('id', $package->getId()); $document->setField('name', $package->getName()); $document->setField('package_name', $package->getPackageName()); $document->setField('description', preg_replace('{[\\x00-\\x1f]+}u', '', $package->getDescription())); $document->setField('type', $package->getType()); $document->setField('trendiness', $redis->zscore('downloads:trending', $package->getId())); $document->setField('downloads', $downloadManager->getTotalDownloads($package)); $document->setField('favers', $favoriteManager->getFaverCount($package)); $document->setField('repository', $package->getRepository()); $document->setField('language', $package->getLanguage()); if ($package->isAbandoned()) { $document->setField('abandoned', 1); $document->setField('replacementPackage', $package->getReplacementPackage() ?: ''); } else { $document->setField('abandoned', 0); $document->setField('replacementPackage', ''); } $tags = array_map(function ($tag) { return mb_strtolower(preg_replace('{[\\x00-\\x1f]+}u', '', $tag), 'UTF-8'); }, $tags); $document->setField('tags', $tags); }
private function createDatePoints(DateTimeImmutable $from, DateTimeImmutable $to, $average, Package $package, Version $version = null) { $interval = $this->getStatsInterval($average); $dateKey = $average === 'monthly' ? 'Ym' : 'Ymd'; $dateFormat = $average === 'monthly' ? 'Y-m' : 'Y-m-d'; $dateJump = $average === 'monthly' ? '+1month' : '+1day'; if ($average === 'monthly') { $to = new DateTimeImmutable('last day of ' . $to->format('Y-m')); } $nextDataPointLabel = $from->format($dateFormat); $nextDataPoint = $from->modify($interval); $datePoints = []; while ($from <= $to) { $datePoints[$nextDataPointLabel][] = 'dl:' . $package->getId() . ($version ? '-' . $version->getId() : '') . ':' . $from->format($dateKey); $from = $from->modify($dateJump); if ($from >= $nextDataPoint) { $nextDataPointLabel = $from->format($dateFormat); $nextDataPoint = $from->modify($interval); } } return $datePoints; }
private function updateDocumentFromPackage(\Solarium_Document_ReadWrite $document, Package $package, $redis) { $document->setField('id', $package->getId()); $document->setField('name', $package->getName()); $document->setField('description', $package->getDescription()); $document->setField('type', $package->getType()); $document->setField('trendiness', $redis->zscore('downloads:trending', $package->getId())); $document->setField('repository', $package->getRepository()); if ($package->isAbandoned()) { $document->setField('abandoned', 1); $document->setField('replacementPackage', $package->getReplacementPackage() ?: ''); } else { $document->setField('abandoned', 0); $document->setField('replacementPackage', ''); } $tags = array(); foreach ($package->getVersions() as $version) { foreach ($version->getTags() as $tag) { $tags[mb_strtolower($tag->getName(), 'UTF-8')] = true; } } $document->setField('tags', array_keys($tags)); }
private function createDeletePackageForm(Package $package) { if (!($user = $this->getUser())) { return; } // super admins bypass additional checks if (!$this->get('security.context')->isGranted('ROLE_DELETE_PACKAGES')) { // non maintainers can not delete if (!$package->getMaintainers()->contains($user)) { return; } try { /** @var $redis \Snc\RedisBundle\Client\Phpredis\Client */ $redis = $this->get('snc_redis.default'); $downloads = $redis->get('dl:' . $package->getId()); } catch (\Exception $e) { return; } // more than 50 downloads = established package, do not allow deletion by maintainers if ($downloads > 50) { return; } } return $this->createFormBuilder(array())->getForm(); }