Browse Source

Merge remote-tracking branch 'alcohol/add-sorting-to-providers-page'

Jordi Boggiano 9 years ago
parent
commit
193156c80b
1 changed files with 15 additions and 0 deletions
  1. 15 0
      src/Packagist/WebBundle/Controller/PackageController.php

+ 15 - 0
src/Packagist/WebBundle/Controller/PackageController.php

@@ -262,6 +262,21 @@ class PackageController extends Controller
             return $this->redirect($this->generateUrl('search', array('q' => $name, 'reason' => 'package_not_found')));
             return $this->redirect($this->generateUrl('search', array('q' => $name, 'reason' => 'package_not_found')));
         }
         }
 
 
+        try {
+            $redis = $this->get('snc_redis.default');
+            $trendiness = array();
+            foreach ($providers as $package) {
+                /** @var Package $package */
+                $trendiness[$package->getId()] = (int) $redis->zscore('downloads:trending', $package->getId());
+            }
+            usort($packages, function ($a, $b) use ($trendiness) {
+                if ($trendiness[$a->getId()] === $trendiness[$b->getId()]) {
+                    return 0;
+                }
+                return $trendiness[$a->getId()] > $trendiness[$b->getId()] ? 1 : -1;
+            });
+        } catch (ConnectionException $e) {}
+
         return $this->render('PackagistWebBundle:Package:providers.html.twig', array(
         return $this->render('PackagistWebBundle:Package:providers.html.twig', array(
             'name' => $name,
             'name' => $name,
             'packages' => $providers,
             'packages' => $providers,