Ver código fonte

Tweak feeds so they make more sense

Jordi Boggiano 12 anos atrás
pai
commit
08a2e274ae

+ 16 - 16
src/Packagist/WebBundle/Controller/FeedController.php

@@ -42,14 +42,14 @@ class FeedController extends Controller
     public function packagesAction()
     {
         /** @var $repo \Packagist\WebBundle\Entity\VersionRepository */
-        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Version');
+        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package');
         $packages = $this->getLimitedResults(
-            $repo->getQueryBuilderForLatestVersionWithPackage()
+            $repo->getQueryBuilderForNewestPackages()
         );
 
         $feed = $this->buildFeed(
-            'Latest Packages',
-            'Latest packages updated on Packagist.',
+            'Newly Submitted Packages',
+            'Latest packages submitted to Packagist.',
             $this->generateUrl('browse', array(), true),
             $packages
         );
@@ -68,14 +68,14 @@ class FeedController extends Controller
     public function releasesAction()
     {
         /** @var $repo \Packagist\WebBundle\Entity\PackageRepository */
-        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package');
+        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Version');
         $packages = $this->getLimitedResults(
-            $repo->getQueryBuilderForNewestPackages()
+            $repo->getQueryBuilderForLatestVersionWithPackage()
         );
 
         $feed = $this->buildFeed(
-            'Latest Released Packages',
-            'Latest packages added to Packagist.',
+            'New Releases',
+            'Latest releases of all packages.',
             $this->generateUrl('browse', array(), true),
             $packages
         );
@@ -94,14 +94,14 @@ class FeedController extends Controller
     public function vendorAction($vendor)
     {
         /** @var $repo \Packagist\WebBundle\Entity\PackageRepository */
-        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package');
+        $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Version');
         $packages = $this->getLimitedResults(
-            $repo->getQueryBuilderForLatestPackagesByVendor($vendor)
+            $repo->getQueryBuilderForLatestVersionWithPackage($vendor)
         );
 
         $feed = $this->buildFeed(
-            "$vendor Packages",
-            "Latest packages updated on Packagist for $vendor.",
+            "$vendor packages",
+            "Latest packages updated on Packagist of $vendor.",
             $this->generateUrl('view_vendor', array('vendor' => $vendor), true),
             $packages
         );
@@ -170,10 +170,7 @@ class FeedController extends Controller
     protected function populateEntry(Entry $entry, $item)
     {
         if ($item instanceof Package) {
-            $version = $item->getVersions()->first() ?: new Version();
-
             $this->populatePackageData($entry, $item);
-            $this->populateVersionData($entry, $version);
         } elseif ($item instanceof Version) {
             $this->populatePackageData($entry, $item->getPackage());
             $this->populateVersionData($entry, $item);
@@ -197,7 +194,7 @@ class FeedController extends Controller
             )
         );
 
-        $entry->setDateModified($package->getUpdatedAt());
+        $entry->setDateModified($package->getCreatedAt());
         $entry->setDateCreated($package->getCreatedAt());
         $entry->setDescription($package->getDescription() ?: ' ');
     }
@@ -212,6 +209,9 @@ class FeedController extends Controller
     {
         $entry->setTitle($entry->getTitle()." ({$version->getVersion()})");
 
+        $entry->setDateModified($version->getReleasedAt());
+        $entry->setDateCreated($version->getReleasedAt());
+
         foreach ($version->getAuthors() as $author) {
             /** @var $author \Packagist\WebBundle\Entity\Author */
             if ($author->getName()) {

+ 4 - 23
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -222,29 +222,10 @@ class PackageRepository extends EntityRepository
      */
     public function getQueryBuilderForNewestPackages()
     {
-        $qb = $this->getBaseQueryBuilder();
-
-        $qb->orderBy('p.createdAt', 'DESC');
-        $qb->addOrderBy('v.releasedAt', 'DESC');
-
-        return $qb;
-    }
-
-    /**
-     * Gets the latest packages/versions released by a selected vendor
-     *
-     * @param string $vendor
-     *
-     * @return QueryBuilder
-     */
-    public function getQueryBuilderForLatestPackagesByVendor($vendor)
-    {
-        $qb = $this->getBaseQueryBuilder();
-
-        $qb->orderBy('v.releasedAt', 'DESC');
-
-        $qb->where('p.name LIKE ?0');
-        $qb->setParameter(0, $vendor.'/%');
+        $qb = $this->getEntityManager()->createQueryBuilder();
+        $qb->select('p')
+            ->from('Packagist\WebBundle\Entity\Package', 'p')
+            ->orderBy('p.id', 'DESC');
 
         return $qb;
     }

+ 11 - 4
src/Packagist/WebBundle/Entity/VersionRepository.php

@@ -71,18 +71,25 @@ class VersionRepository extends EntityRepository
     /**
      * Returns the latest versions released
      *
+     * @param string $vendor optional vendor filter
      * @return \Doctrine\ORM\QueryBuilder
      */
-    public function getQueryBuilderForLatestVersionWithPackage()
+    public function getQueryBuilderForLatestVersionWithPackage($vendor = null)
     {
         $qb = $this->getEntityManager()->createQueryBuilder();
         $qb->select('v', 't', 'a', 'p')
             ->from('Packagist\WebBundle\Entity\Version', 'v')
-            ->leftJoin('v.tags', 't')
-            ->leftJoin('v.authors', 'a')
-            ->leftJoin('v.package', 'p')
+            ->innerJoin('v.tags', 't')
+            ->innerJoin('v.authors', 'a')
+            ->innerJoin('v.package', 'p')
+            ->where('v.development = false')
             ->orderBy('v.releasedAt', 'DESC');
 
+        if ($vendor) {
+            $qb->andWhere('p.name LIKE ?0');
+            $qb->setParameter(0, $vendor.'/%');
+        }
+
         return $qb;
     }
 }

+ 1 - 1
src/Packagist/WebBundle/Resources/views/layout.html.twig

@@ -20,7 +20,7 @@
         <link rel="stylesheet" href="{{ asset('bundles/packagistweb/css/main.css?v=7') }}" />
         <link rel="stylesheet" href="{{ asset('css/humane/jackedup.css?v=2') }}" />
 
-        <link rel="alternate" type="application/rss+xml" title="New Packages - Packagist" href="{{ url('feed_packages', {_format: 'rss'}) }}" />
+        <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="{{ url('feed_packages', {_format: 'rss'}) }}" />
         <link rel="alternate" type="application/rss+xml" title="New Releases - Packagist" href="{{ url('feed_releases', {_format: 'rss'}) }}" />
 
         {# {% stylesheets