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
|