diff options
author | Jörn Friedrich Dreyer <jfd@butonic.de> | 2014-12-15 16:14:40 +0100 |
---|---|---|
committer | Jörn Friedrich Dreyer <jfd@butonic.de> | 2014-12-15 16:14:40 +0100 |
commit | 6602d3ac777f0338e1fcfbd9c4a67c1fdf792905 (patch) | |
tree | 2951edf03a2b0e8bd11cb3cd8105f4d8f4fca76d /lib/public | |
parent | d367d1b06a1b9dece52c57d973b4c2ab6aa63772 (diff) | |
parent | 1d490b559ce279f5c9f44b727fe9d71d3718a24b (diff) | |
download | nextcloud-server-6602d3ac777f0338e1fcfbd9c4a67c1fdf792905.tar.gz nextcloud-server-6602d3ac777f0338e1fcfbd9c4a67c1fdf792905.zip |
Merge pull request #12555 from owncloud/app_specific_search
introduce inApps[] filter for search via ajax query
Diffstat (limited to 'lib/public')
-rw-r--r-- | lib/public/isearch.php | 5 | ||||
-rw-r--r-- | lib/public/search/provider.php | 32 |
2 files changed, 33 insertions, 4 deletions
diff --git a/lib/public/isearch.php b/lib/public/isearch.php index 3b83dbf35e8..229376ed3ae 100644 --- a/lib/public/isearch.php +++ b/lib/public/isearch.php @@ -32,16 +32,17 @@ interface ISearch { /** * Search all providers for $query * @param string $query + * @param string[] $inApps optionally limit results to the given apps * @return array An array of OCP\Search\Result's */ - public function search($query); + public function search($query, array $inApps = array()); /** * Register a new search provider to search with * @param string $class class name of a OCP\Search\Provider * @param array $options optional */ - public function registerProvider($class, $options = array()); + public function registerProvider($class, array $options = array()); /** * Remove one existing search provider diff --git a/lib/public/search/provider.php b/lib/public/search/provider.php index 0506f091dd9..d6cd1fb025e 100644 --- a/lib/public/search/provider.php +++ b/lib/public/search/provider.php @@ -24,6 +24,8 @@ namespace OCP\Search; */ abstract class Provider { + const OPTION_APPS = 'apps'; + /** * List of options (currently unused) * @var array @@ -32,13 +34,39 @@ abstract class Provider { /** * Constructor - * @param array $options + * @param array $options as key => value */ - public function __construct($options) { + public function __construct($options = array()) { $this->options = $options; } /** + * get a value from the options array or null + * @param string $key + * @return mixed + */ + public function getOption($key) { + if (is_array($this->options) && isset($this->options[$key])) { + return $this->options[$key]; + } else { + return null; + } + } + + /** + * checks if the given apps and the apps this provider has results for intersect + * returns true if the given array is empty (all apps) + * or if this provider does not have a list of apps it provides results for (legacy search providers) + * or if the two above arrays have elements in common (intersect) + * @param string[] $apps + * @return bool + */ + public function providesResultsFor(array $apps = array()) { + $forApps = $this->getOption(self::OPTION_APPS); + return empty($apps) || empty($forApps) || array_intersect($forApps, $apps); + } + + /** * Search for $query * @param string $query * @return array An array of OCP\Search\Result's |