svn: /pear2/sandbox/SimpleChannelFrontend/trunk/src/SimpleChannelFrontend/ Search.php

[email protected] (Michael Gauthier)
Newsgroups php.pear.cvs,php.pear.core
Message-ID <[email protected]>
gauthierm                                Fri, 25 Jun 2010 22:11:57 +0000

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

Log:
Allow counting search results and don't fail when an empty search string is used.

Changed paths:
    U   pear2/sandbox/SimpleChannelFrontend/trunk/src/SimpleChannelFrontend/Search.php

Modified: pear2/sandbox/SimpleChannelFrontend/trunk/src/SimpleChannelFrontend/Search.php
===================================================================
--- pear2/sandbox/SimpleChannelFrontend/trunk/src/SimpleChannelFrontend/Search.php	2010-06-25 22:10:05 UTC (rev 300755)
+++ pear2/sandbox/SimpleChannelFrontend/trunk/src/SimpleChannelFrontend/Search.php	2010-06-25 22:11:57 UTC (rev 300756)
@@ -1,24 +1,41 @@
-<?php
+<?php
+
 namespace PEAR2\SimpleChannelFrontend;
 use PEAR2\Pyrus\Channel;

-class Search extends \FilterIterator
+class Search extends \FilterIterator implements \Countable
 {
     public $query;

-    function __construct($options = array())
+    public function __construct($options = array())
     {
-
         if (isset($options['q'])) {
             $this->query = $options['q'];
         }

-        parent::__construct(new \PEAR2\Pyrus\Channel\RemotePackages(Main::$channel));
+        parent::__construct(
+            new \PEAR2\Pyrus\Channel\RemotePackages(Main::$channel)
+        );
     }

-    function accept()
+    public function accept()
     {
-        return (bool)stristr($this->current()->name, $this->query);
+        if ($this->query == '') {
+            $accept = false;
+        } else {
+            $accept = (bool)stristr($this->current()->name, $this->query);
+        }
+
+        return $accept;
     }

-}
\ No newline at end of file
+    public function count()
+    {
+        $count = 0;
+        foreach ($this as $package) {
+            $count++;
+        }
+        return $count;
+    }
+
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.