@@ -33,36 +33,36 @@ |
||
| 33 | 33 | */ |
| 34 | 34 | interface ISearch { |
| 35 | 35 | |
| 36 | - /** |
|
| 37 | - * Search all providers for $query |
|
| 38 | - * @param string $query |
|
| 39 | - * @param string[] $inApps optionally limit results to the given apps |
|
| 40 | - * @param int $page pages start at page 1 |
|
| 41 | - * @param int $size |
|
| 42 | - * @return array An array of OCP\Search\Result's |
|
| 43 | - * @since 8.0.0 |
|
| 44 | - */ |
|
| 45 | - public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30); |
|
| 36 | + /** |
|
| 37 | + * Search all providers for $query |
|
| 38 | + * @param string $query |
|
| 39 | + * @param string[] $inApps optionally limit results to the given apps |
|
| 40 | + * @param int $page pages start at page 1 |
|
| 41 | + * @param int $size |
|
| 42 | + * @return array An array of OCP\Search\Result's |
|
| 43 | + * @since 8.0.0 |
|
| 44 | + */ |
|
| 45 | + public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30); |
|
| 46 | 46 | |
| 47 | - /** |
|
| 48 | - * Register a new search provider to search with |
|
| 49 | - * @param string $class class name of a OCP\Search\Provider |
|
| 50 | - * @param array $options optional |
|
| 51 | - * @since 7.0.0 |
|
| 52 | - */ |
|
| 53 | - public function registerProvider($class, array $options = array()); |
|
| 47 | + /** |
|
| 48 | + * Register a new search provider to search with |
|
| 49 | + * @param string $class class name of a OCP\Search\Provider |
|
| 50 | + * @param array $options optional |
|
| 51 | + * @since 7.0.0 |
|
| 52 | + */ |
|
| 53 | + public function registerProvider($class, array $options = array()); |
|
| 54 | 54 | |
| 55 | - /** |
|
| 56 | - * Remove one existing search provider |
|
| 57 | - * @param string $provider class name of a OCP\Search\Provider |
|
| 58 | - * @since 7.0.0 |
|
| 59 | - */ |
|
| 60 | - public function removeProvider($provider); |
|
| 55 | + /** |
|
| 56 | + * Remove one existing search provider |
|
| 57 | + * @param string $provider class name of a OCP\Search\Provider |
|
| 58 | + * @since 7.0.0 |
|
| 59 | + */ |
|
| 60 | + public function removeProvider($provider); |
|
| 61 | 61 | |
| 62 | - /** |
|
| 63 | - * Remove all registered search providers |
|
| 64 | - * @since 7.0.0 |
|
| 65 | - */ |
|
| 66 | - public function clearProviders(); |
|
| 62 | + /** |
|
| 63 | + * Remove all registered search providers |
|
| 64 | + * @since 7.0.0 |
|
| 65 | + */ |
|
| 66 | + public function clearProviders(); |
|
| 67 | 67 | |
| 68 | 68 | } |
@@ -34,86 +34,86 @@ |
||
| 34 | 34 | */ |
| 35 | 35 | class Search implements ISearch { |
| 36 | 36 | |
| 37 | - private $providers = array(); |
|
| 38 | - private $registeredProviders = array(); |
|
| 37 | + private $providers = array(); |
|
| 38 | + private $registeredProviders = array(); |
|
| 39 | 39 | |
| 40 | - /** |
|
| 41 | - * Search all providers for $query |
|
| 42 | - * @param string $query |
|
| 43 | - * @param string[] $inApps optionally limit results to the given apps |
|
| 44 | - * @param int $page pages start at page 1 |
|
| 45 | - * @param int $size, 0 = all |
|
| 46 | - * @return array An array of OC\Search\Result's |
|
| 47 | - */ |
|
| 48 | - public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) { |
|
| 49 | - $this->initProviders(); |
|
| 50 | - $results = array(); |
|
| 51 | - foreach($this->providers as $provider) { |
|
| 52 | - /** @var $provider Provider */ |
|
| 53 | - if ( ! $provider->providesResultsFor($inApps) ) { |
|
| 54 | - continue; |
|
| 55 | - } |
|
| 56 | - if ($provider instanceof PagedProvider) { |
|
| 57 | - $results = array_merge($results, $provider->searchPaged($query, $page, $size)); |
|
| 58 | - } else if ($provider instanceof Provider) { |
|
| 59 | - $providerResults = $provider->search($query); |
|
| 60 | - if ($size > 0) { |
|
| 61 | - $slicedResults = array_slice($providerResults, ($page - 1) * $size, $size); |
|
| 62 | - $results = array_merge($results, $slicedResults); |
|
| 63 | - } else { |
|
| 64 | - $results = array_merge($results, $providerResults); |
|
| 65 | - } |
|
| 66 | - } else { |
|
| 67 | - \OC::$server->getLogger()->warning('Ignoring Unknown search provider', array('provider' => $provider)); |
|
| 68 | - } |
|
| 69 | - } |
|
| 70 | - return $results; |
|
| 71 | - } |
|
| 40 | + /** |
|
| 41 | + * Search all providers for $query |
|
| 42 | + * @param string $query |
|
| 43 | + * @param string[] $inApps optionally limit results to the given apps |
|
| 44 | + * @param int $page pages start at page 1 |
|
| 45 | + * @param int $size, 0 = all |
|
| 46 | + * @return array An array of OC\Search\Result's |
|
| 47 | + */ |
|
| 48 | + public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) { |
|
| 49 | + $this->initProviders(); |
|
| 50 | + $results = array(); |
|
| 51 | + foreach($this->providers as $provider) { |
|
| 52 | + /** @var $provider Provider */ |
|
| 53 | + if ( ! $provider->providesResultsFor($inApps) ) { |
|
| 54 | + continue; |
|
| 55 | + } |
|
| 56 | + if ($provider instanceof PagedProvider) { |
|
| 57 | + $results = array_merge($results, $provider->searchPaged($query, $page, $size)); |
|
| 58 | + } else if ($provider instanceof Provider) { |
|
| 59 | + $providerResults = $provider->search($query); |
|
| 60 | + if ($size > 0) { |
|
| 61 | + $slicedResults = array_slice($providerResults, ($page - 1) * $size, $size); |
|
| 62 | + $results = array_merge($results, $slicedResults); |
|
| 63 | + } else { |
|
| 64 | + $results = array_merge($results, $providerResults); |
|
| 65 | + } |
|
| 66 | + } else { |
|
| 67 | + \OC::$server->getLogger()->warning('Ignoring Unknown search provider', array('provider' => $provider)); |
|
| 68 | + } |
|
| 69 | + } |
|
| 70 | + return $results; |
|
| 71 | + } |
|
| 72 | 72 | |
| 73 | - /** |
|
| 74 | - * Remove all registered search providers |
|
| 75 | - */ |
|
| 76 | - public function clearProviders() { |
|
| 77 | - $this->providers = array(); |
|
| 78 | - $this->registeredProviders = array(); |
|
| 79 | - } |
|
| 73 | + /** |
|
| 74 | + * Remove all registered search providers |
|
| 75 | + */ |
|
| 76 | + public function clearProviders() { |
|
| 77 | + $this->providers = array(); |
|
| 78 | + $this->registeredProviders = array(); |
|
| 79 | + } |
|
| 80 | 80 | |
| 81 | - /** |
|
| 82 | - * Remove one existing search provider |
|
| 83 | - * @param string $provider class name of a OC\Search\Provider |
|
| 84 | - */ |
|
| 85 | - public function removeProvider($provider) { |
|
| 86 | - $this->registeredProviders = array_filter( |
|
| 87 | - $this->registeredProviders, |
|
| 88 | - function ($element) use ($provider) { |
|
| 89 | - return ($element['class'] != $provider); |
|
| 90 | - } |
|
| 91 | - ); |
|
| 92 | - // force regeneration of providers on next search |
|
| 93 | - $this->providers = array(); |
|
| 94 | - } |
|
| 81 | + /** |
|
| 82 | + * Remove one existing search provider |
|
| 83 | + * @param string $provider class name of a OC\Search\Provider |
|
| 84 | + */ |
|
| 85 | + public function removeProvider($provider) { |
|
| 86 | + $this->registeredProviders = array_filter( |
|
| 87 | + $this->registeredProviders, |
|
| 88 | + function ($element) use ($provider) { |
|
| 89 | + return ($element['class'] != $provider); |
|
| 90 | + } |
|
| 91 | + ); |
|
| 92 | + // force regeneration of providers on next search |
|
| 93 | + $this->providers = array(); |
|
| 94 | + } |
|
| 95 | 95 | |
| 96 | - /** |
|
| 97 | - * Register a new search provider to search with |
|
| 98 | - * @param string $class class name of a OC\Search\Provider |
|
| 99 | - * @param array $options optional |
|
| 100 | - */ |
|
| 101 | - public function registerProvider($class, array $options = array()) { |
|
| 102 | - $this->registeredProviders[] = array('class' => $class, 'options' => $options); |
|
| 103 | - } |
|
| 96 | + /** |
|
| 97 | + * Register a new search provider to search with |
|
| 98 | + * @param string $class class name of a OC\Search\Provider |
|
| 99 | + * @param array $options optional |
|
| 100 | + */ |
|
| 101 | + public function registerProvider($class, array $options = array()) { |
|
| 102 | + $this->registeredProviders[] = array('class' => $class, 'options' => $options); |
|
| 103 | + } |
|
| 104 | 104 | |
| 105 | - /** |
|
| 106 | - * Create instances of all the registered search providers |
|
| 107 | - */ |
|
| 108 | - private function initProviders() { |
|
| 109 | - if( ! empty($this->providers) ) { |
|
| 110 | - return; |
|
| 111 | - } |
|
| 112 | - foreach($this->registeredProviders as $provider) { |
|
| 113 | - $class = $provider['class']; |
|
| 114 | - $options = $provider['options']; |
|
| 115 | - $this->providers[] = new $class($options); |
|
| 116 | - } |
|
| 117 | - } |
|
| 105 | + /** |
|
| 106 | + * Create instances of all the registered search providers |
|
| 107 | + */ |
|
| 108 | + private function initProviders() { |
|
| 109 | + if( ! empty($this->providers) ) { |
|
| 110 | + return; |
|
| 111 | + } |
|
| 112 | + foreach($this->registeredProviders as $provider) { |
|
| 113 | + $class = $provider['class']; |
|
| 114 | + $options = $provider['options']; |
|
| 115 | + $this->providers[] = new $class($options); |
|
| 116 | + } |
|
| 117 | + } |
|
| 118 | 118 | |
| 119 | 119 | } |