logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

cvs: pear-core /PEAR/Command Remote.php /PEAR/REST 10.php: msg#00151

Subject: cvs: pear-core /PEAR/Command Remote.php /PEAR/REST 10.php
cellog          Mon Apr 25 00:43:11 2005 EDT

  Modified files:              
    /pear-core/PEAR/Command     Remote.php 
    /pear-core/PEAR/REST        10.php 
  Log:
  implement package.search in REST
  
http://cvs.php.net/diff.php/pear-core/PEAR/Command/Remote.php?r1=1.73&r2=1.74&ty=u
Index: pear-core/PEAR/Command/Remote.php
diff -u pear-core/PEAR/Command/Remote.php:1.73 
pear-core/PEAR/Command/Remote.php:1.74
--- pear-core/PEAR/Command/Remote.php:1.73      Mon Apr 25 00:24:45 2005
+++ pear-core/PEAR/Command/Remote.php   Mon Apr 25 00:43:10 2005
@@ -17,7 +17,7 @@
  * @author     Greg Beaver <cellog@xxxxxxx>
  * @copyright  1997-2005 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Remote.php,v 1.73 2005/04/25 04:24:45 cellog Exp $
+ * @version    CVS: $Id: Remote.php,v 1.74 2005/04/25 04:43:10 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -382,9 +382,16 @@
                 return $this->raiseError('Channel "' . $channel . '" does not 
exist');
             }
         }
-        $r = &$this->config->getRemote();
-        $available = $r->call('package.search', $package, $summary, true, 
-            $this->config->get('preferred_state') == 'stable', true);
+        $chan = $reg->getChannel($channel);
+        if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
+              $base = $chan->getBaseURL('REST1.0', 
$this->config->get('preferred_mirror'))) {
+            $rest = &$this->config->getREST('1.0', array());
+            $available = $rest->listAll($base, false, false, $package, 
$summary);
+        } else {
+            $r = &$this->config->getRemote();
+            $available = $r->call('package.search', $package, $summary, true, 
+                $this->config->get('preferred_state') == 'stable', true);
+        }
         if (PEAR::isError($available)) {
             $this->config->set('default_channel', $savechannel);
             return $this->raiseError($available);
http://cvs.php.net/diff.php/pear-core/PEAR/REST/10.php?r1=1.5&r2=1.6&ty=u
Index: pear-core/PEAR/REST/10.php
diff -u pear-core/PEAR/REST/10.php:1.5 pear-core/PEAR/REST/10.php:1.6
--- pear-core/PEAR/REST/10.php:1.5      Mon Apr 25 00:24:46 2005
+++ pear-core/PEAR/REST/10.php  Mon Apr 25 00:43:10 2005
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@xxxxxxx>
  * @copyright  1997-2005 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: 10.php,v 1.5 2005/04/25 04:24:46 cellog Exp $
+ * @version    CVS: $Id: 10.php,v 1.6 2005/04/25 04:43:10 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a12
  */
@@ -77,7 +77,7 @@
                 continue;
             }
             if (isset($state)) {
-                if ($release['s'] == $state) {
+                if ($release['st'] == $state) {
                     $found = true;
                     break;
                 }
@@ -87,7 +87,7 @@
                     break;
                 }
             } else {
-                if (in_array($release['s'], $states)) {
+                if (in_array($release['st'], $states)) {
                     $found = true;
                     break;
                 }
@@ -184,7 +184,7 @@
                     // version, then skip all others
                     continue;
                 } else {
-                    if (!in_array($release['s'], $states)) {
+                    if (!in_array($release['st'], $states)) {
                         // the stability is too low, but we must return the
                         // recommended version if possible
                     return $this->_returnDownloadURL($base, $package, 
$release, $info, true);
@@ -200,7 +200,7 @@
             if ($installed && version_compare($release['v'], $installed, '<')) 
{
                 continue;
             }
-            if (in_array($release['s'], $states)) { // if in the preferred 
state...
+            if (in_array($release['st'], $states)) { // if in the preferred 
state...
                 $found = true; // ... then use it
                 break;
             }
@@ -245,7 +245,7 @@
         }
     }
 
-    function listAll($base, $stable, $basic = true)
+    function listAll($base, $stable, $basic = true, $searchpackage = false, 
$searchsummary = false)
     {
         $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml');
         if (PEAR::isError($packagelist)) {
@@ -275,19 +275,32 @@
                 if (PEAR::isError($inf)) {
                     return $inf;
                 }
+                $found = (!empty($searchpackage) && stristr($package, 
$searchpackage) !== false);
+                if (!$found && !(isset($searchsummary) && 
!empty($searchsummary)
+                    && (stristr($inf['s'], $searchsummary) !== false
+                        || stristr($info['d'], $searchsummary) !== false)))
+                {
+                    continue;
+                };
                 PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
                 if ($stable) {
                     $latest = $this->_rest->retrieveData($base . 'r/' . 
strtolower($package) .
                         '/stable.txt');
+                    $unstable = $this->_rest->retrieveData($base . 'r/' . 
strtolower($package) .
+                        '/latest.txt');
                 } else {
-                    $latest = $this->_rest->retrieveData($base . 'r/' . 
strtolower($package) .
+                    $unstable = $latest = $this->_rest->retrieveData($base . 
'r/' . strtolower($package) .
                         '/latest.txt');
                 }
                 PEAR::popErrorHandling();
                 $deps = array();
                 if (PEAR::isError($latest)) {
                     $latest = false;
+                    $state = 'stable';
                 } else {
+                    $releaseinf = $this->_rest->retrieveData($base . 'r/' . 
strtolower($package) .
+                        '/' . $latest . '.xml');
+                    $state = $releaseinf['st'];
                     $d = $this->_rest->retrieveData($base . 'r/' . 
strtolower($package) . '/deps.' .
                         $latest . '.txt');
                     if (PEAR::isError($d)) {
@@ -310,7 +323,8 @@
                     }
                 }
                 $info = array('stable' => $latest, 'summary' => $inf['s'], 
'description' =>
-                    $inf['d'], 'deps' => $deps, 'category' => 
$inf['ca']['_content']);
+                    $inf['d'], 'deps' => $deps, 'category' => 
$inf['ca']['_content'],
+                    'unstable' => $unstable, 'state' => $state);
             }
             $ret[$package] = $info;
         }
@@ -353,7 +367,7 @@
                     continue;
                 }
                 if ($state) {
-                    if (in_array($release['s'], $states)) {
+                    if (in_array($release['st'], $states)) {
                         $found = true;
                         break;
                     }
@@ -372,7 +386,7 @@
             }
             $ret[$package] = array(
                     'version' => $release['v'],
-                    'state' => $release['s'],
+                    'state' => $release['st'],
                     'filesize' => $relinfo['f'],
                 );
         }

-- 
PEAR CVS Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




<Prev in Thread] Current Thread [Next in Thread>