summaryrefslogtreecommitdiffstats
path: root/lib/private/search.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/search.php')
-rw-r--r--lib/private/search.php87
1 files changed, 47 insertions, 40 deletions
diff --git a/lib/private/search.php b/lib/private/search.php
index 3f540090fdd..bcaebdddd9c 100644
--- a/lib/private/search.php
+++ b/lib/private/search.php
@@ -20,70 +20,77 @@
*
*/
+namespace OC;
+use OCP\Search\Provider;
+use OCP\ISearch;
/**
- * provides an interface to all search providers
+ * Provide an interface to all search providers
*/
-class OC_Search{
- static private $providers=array();
- static private $registeredProviders=array();
+class Search implements ISearch {
- /**
- * remove all registered search providers
- */
- public static function clearProviders() {
- self::$providers=array();
- self::$registeredProviders=array();
- }
+ private $providers = array();
+ private $registeredProviders = array();
/**
- * register a new search provider to be used
+ * Search all providers for $query
+ * @param string $query
+ * @return array An array of OC\Search\Result's
*/
- public static function registerProvider($class, $options=array()) {
- self::$registeredProviders[]=array('class'=>$class, 'options'=>$options);
+ public function search($query) {
+ $this->initProviders();
+ $results = array();
+ foreach($this->providers as $provider) {
+ /** @var $provider Provider */
+ $results = array_merge($results, $provider->search($query));
+ }
+ return $results;
}
/**
- * search all provider for $query
- * @param string $query
- * @return array An array of OC_Search_Result's
+ * Remove all registered search providers
*/
- public static function search($query) {
- self::initProviders();
- $results=array();
- foreach(self::$providers as $provider) {
- $results=array_merge($results, $provider->search($query));
- }
- return $results;
+ public function clearProviders() {
+ $this->providers=array();
+ $this->registeredProviders=array();
}
/**
- * remove an existing search provider
- * @param string $provider class name of a OC_Search_Provider
+ * Remove one existing search provider
+ * @param string $provider class name of a OC\Search\Provider
*/
- public static function removeProvider($provider) {
- self::$registeredProviders = array_filter(
- self::$registeredProviders,
- function ($element) use ($provider) {
- return ($element['class'] != $provider);
- }
+ public function removeProvider($provider) {
+ $this->registeredProviders = array_filter(
+ $this->registeredProviders,
+ function ($element) use ($provider) {
+ return ($element['class'] != $provider);
+ }
);
// force regeneration of providers on next search
- self::$providers=array();
+ $this->providers=array();
}
+ /**
+ * Register a new search provider to search with
+ * @param string $class class name of a OC\Search\Provider
+ * @param array $options optional
+ */
+ public function registerProvider($class, $options=array()) {
+ $this->registeredProviders[]=array('class'=>$class, 'options'=>$options);
+ }
/**
- * create instances of all the registered search providers
+ * Create instances of all the registered search providers
*/
- private static function initProviders() {
- if(count(self::$providers)>0) {
+ private function initProviders() {
+ if(count($this->providers)>0) {
return;
}
- foreach(self::$registeredProviders as $provider) {
- $class=$provider['class'];
- $options=$provider['options'];
- self::$providers[]=new $class($options);
+ foreach($this->registeredProviders as $provider) {
+ $class = $provider['class'];
+ $options = $provider['options'];
+ $this->providers[]=new $class($options);
}
}
+
}