Browse Source

Set proper feed link and show full package names in entry titles

Jordi Boggiano 12 years ago
parent
commit
bf1365d412
1 changed files with 13 additions and 12 deletions
  1. 13 12
      src/Packagist/WebBundle/Controller/FeedController.php

+ 13 - 12
src/Packagist/WebBundle/Controller/FeedController.php

@@ -50,6 +50,7 @@ class FeedController extends Controller
         $feed = $this->buildFeed(
             'Latest Packages',
             'Latest packages updated on Packagist.',
+            $this->generateUrl('browse', array(), true),
             $packages
         );
 
@@ -75,6 +76,7 @@ class FeedController extends Controller
         $feed = $this->buildFeed(
             'Latest Released Packages',
             'Latest packages added to Packagist.',
+            $this->generateUrl('browse', array(), true),
             $packages
         );
 
@@ -83,23 +85,24 @@ class FeedController extends Controller
 
     /**
      * @Route(
-     *     "/vendor.{filter}.{_format}",
+     *     "/vendor.{vendor}.{_format}",
      *     name="feed_vendor",
-     *     requirements={"_format"="(rss|atom)"}
+     *     requirements={"_format"="(rss|atom)", "vendor"="[A-Za-z0-9_.-]+"}
      * )
      * @Method({"GET"})
      */
-    public function vendorAction($filter)
+    public function vendorAction($vendor)
     {
         /** @var $repo \Packagist\WebBundle\Entity\PackageRepository */
         $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package');
         $packages = $this->getLimitedResults(
-            $repo->getQueryBuilderForLatestPackagesByVendor($filter)
+            $repo->getQueryBuilderForLatestPackagesByVendor($vendor)
         );
 
         $feed = $this->buildFeed(
-            "$filter Packages",
-            "Latest packages updated on Packagist for $filter.",
+            "$vendor Packages",
+            "Latest packages updated on Packagist for $vendor.",
+            $this->generateUrl('view_vendor', array('vendor' => $vendor), true),
             $packages
         );
 
@@ -133,12 +136,12 @@ class FeedController extends Controller
      *
      * @return \Zend\Feed\Writer\Feed
      */
-    protected function buildFeed($title, $description, $items)
+    protected function buildFeed($title, $description, $url, $items)
     {
         $feed = new Feed();
         $feed->setTitle($title);
         $feed->setDescription($description);
-        $feed->setLink($this->getRequest()->getSchemeAndHttpHost());
+        $feed->setLink($url);
 
         foreach ($items as $item) {
             $entry = $feed->createEntry();
@@ -171,9 +174,7 @@ class FeedController extends Controller
 
             $this->populatePackageData($entry, $item);
             $this->populateVersionData($entry, $version);
-        }
-
-        if ($item instanceof Version) {
+        } elseif ($item instanceof Version) {
             $this->populatePackageData($entry, $item->getPackage());
             $this->populateVersionData($entry, $item);
         }
@@ -187,7 +188,7 @@ class FeedController extends Controller
      */
     protected function populatePackageData(Entry $entry, Package $package)
     {
-        $entry->setTitle($package->getPackageName());
+        $entry->setTitle($package->getName());
         $entry->setLink(
             $this->generateUrl(
                 'view_package',