svn: /pear/pear-core/trunk/PEAR/Command/ Remote.php

[email protected] (Helgi Þormar Þorbjörnsson) Sat, 31 Jul 2010 14:43:14 +0000
Newsgroups php.pear.cvs,php.pear.core
Message-ID <[email protected]>
dufuz                                    Sat, 31 Jul 2010 14:43:14 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=301745

Log:
Sort searches/list-all/remote-all properly. Fixes Bug #17641	pecl-list doesn't sort packages by name

Bug: http://pear.php.net/bugs/17641 (unknown) 
      
Changed paths:
    U   pear/pear-core/trunk/PEAR/Command/Remote.php

Modified: pear/pear-core/trunk/PEAR/Command/Remote.php
===================================================================
--- pear/pear-core/trunk/PEAR/Command/Remote.php	2010-07-31 13:35:13 UTC (rev 301744)
+++ pear/pear-core/trunk/PEAR/Command/Remote.php	2010-07-31 14:43:14 UTC (rev 301745)
@@ -286,7 +286,10 @@
         if (count($available) == 0) {
             $data = '(no packages available yet)';
         } else {
-            foreach ($available as $name => $info) {
+            $packages = array_keys($available);
+            natcasesort($packages);
+            foreach ($packages as $name) {
+                $info = $available[$name];
                 $version = (isset($info['stable']) && $info['stable']) ? $info['stable'] : '-n/a-';
                 $data['data'][] = array($name, $version);
             }
@@ -350,17 +353,21 @@
         }
         $local_pkgs = $reg->listPackages($channel);

-        foreach ($available as $name => $info) {
+        $packages = array_keys($available);
+        natcasesort($packages);
+        foreach ($packages as $name) {
+            $info = $available[$name];
             $installed = $reg->packageInfo($name, null, $channel);
             if (is_array($installed['version'])) {
                 $installed['version'] = $installed['version']['release'];
             }
+
             $desc = $info['summary'];
             if (isset($params[$name])) {
                 $desc .= "\n\n".$info['description'];
             }
-            if (isset($options['mode']))
-            {
+
+            if (isset($options['mode'])) {
                 if ($options['mode'] == 'installed' && !isset($installed['version'])) {
                     continue;
                 }
@@ -373,6 +380,7 @@
                     continue;
                 }
             }
+
             $pos = array_search(strtolower($name), $local_pkgs);
             if ($pos !== false) {
                 unset($local_pkgs[$pos]);
@@ -413,7 +421,7 @@
                     isset($info['deps']) ? $info['deps'] : null,
                 );
             }
-            $data['data'][$info['category']][] = $packageinfo;
+            $data['data']['all'][] = $packageinfo;
         }

         if (isset($options['mode']) && in_array($options['mode'], array('notinstalled', 'upgrades'))) {
@@ -532,7 +540,10 @@
             $available = array();
         }

-        foreach ($available as $name => $info) {
+        $packages = array_keys($available);
+        natcasesort($packages);
+        foreach ($packages as $name) {
+            $info = $available[$name];
             $installed = $reg->packageInfo($name, null, $channel);
             $desc = $info['summary'];
             if (isset($params[$name]))
@@ -566,7 +577,7 @@
                     $desc,
                 );
             }
-            $data['data'][$info['category']][] = $packageinfo;
+            $data['data']['all'][] = $packageinfo;
         }

         $this->ui->outputData($data, $command);