diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2017-10-04 15:43:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-04 15:43:44 +0200 |
commit | 2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a (patch) | |
tree | f1a67d6f764999fa802aa7034711321af684ddb9 /lib/public | |
parent | 5412c239f2ca128760c8d12de3bcd01384ddfd3f (diff) | |
parent | a579f8aa375bf02f9763892ce725713f08526a1a (diff) | |
download | nextcloud-server-2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a.tar.gz nextcloud-server-2d62f97f1bf1e7848e23ff0417915c3ab9e03e9a.zip |
Merge pull request #6328 from nextcloud/split-sharees-api-logic
Splits off the logic from sharees endpoint thus making it available from within Nc/via PHP.
Diffstat (limited to 'lib/public')
4 files changed, 238 insertions, 0 deletions
diff --git a/lib/public/Collaboration/Collaborators/ISearch.php b/lib/public/Collaboration/Collaborators/ISearch.php new file mode 100644 index 00000000000..281893908ee --- /dev/null +++ b/lib/public/Collaboration/Collaborators/ISearch.php @@ -0,0 +1,50 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\Collaboration\Collaborators; + +/** + * Interface ISearch + * + * @package OCP\Collaboration\Collaborators + * @since 13.0.0 + */ +interface ISearch { + /** + * @param string $search + * @param array $shareTypes + * @param bool $lookup + * @param int $limit + * @param int $offset + * @return array with two elements, 1st ISearchResult as array, 2nd a bool indicating whether more result are available + * @since 13.0.0 + */ + public function search($search, array $shareTypes, $lookup, $limit, $offset); + + /** + * @param array $pluginInfo with keys 'shareType' containing the name of a corresponding constant in \OCP\Share and + * 'class' with the class name of the plugin + * @since 13.0.0 + */ + public function registerPlugin(array $pluginInfo); +} diff --git a/lib/public/Collaboration/Collaborators/ISearchPlugin.php b/lib/public/Collaboration/Collaborators/ISearchPlugin.php new file mode 100644 index 00000000000..bc6fa53799b --- /dev/null +++ b/lib/public/Collaboration/Collaborators/ISearchPlugin.php @@ -0,0 +1,42 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\Collaboration\Collaborators; + +/** + * Interface ISearchPlugin + * + * @package OCP\Collaboration\Collaborators + * @since 13.0.0 + */ +interface ISearchPlugin { + /** + * @param string $search + * @param int $limit + * @param int $offset + * @param ISearchResult $searchResult + * @return bool whether the plugin has more results + * @since 13.0.0 + */ + public function search($search, $limit, $offset, ISearchResult $searchResult); +} diff --git a/lib/public/Collaboration/Collaborators/ISearchResult.php b/lib/public/Collaboration/Collaborators/ISearchResult.php new file mode 100644 index 00000000000..abea5df8598 --- /dev/null +++ b/lib/public/Collaboration/Collaborators/ISearchResult.php @@ -0,0 +1,73 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\Collaboration\Collaborators; + +/** + * Interface ISearchResult + * + * @package OCP\Collaboration\Collaborators + * @since 13.0.0 + */ +interface ISearchResult { + /** + * @param SearchResultType $type + * @param array $matches + * @param array|null $exactMatches + * @since 13.0.0 + */ + public function addResultSet(SearchResultType $type, array $matches, array $exactMatches = null); + + /** + * @param SearchResultType $type + * @param string $collaboratorId + * @return bool + * @since 13.0.0 + */ + public function hasResult(SearchResultType $type, $collaboratorId); + + /** + * @param SearchResultType $type + * @since 13.0.0 + */ + public function unsetResult(SearchResultType $type); + + /** + * @param SearchResultType $type + * @since 13.0.0 + */ + public function markExactIdMatch(SearchResultType $type); + + /** + * @param SearchResultType $type + * @return bool + * @since 13.0.0 + */ + public function hasExactIdMatch(SearchResultType $type); + + /** + * @return array + * @since 13.0.0 + */ + public function asArray(); +} diff --git a/lib/public/Collaboration/Collaborators/SearchResultType.php b/lib/public/Collaboration/Collaborators/SearchResultType.php new file mode 100644 index 00000000000..e4ad888d6e4 --- /dev/null +++ b/lib/public/Collaboration/Collaborators/SearchResultType.php @@ -0,0 +1,73 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\Collaboration\Collaborators; + +/** + * Class SearchResultType + * + * @package OCP\Collaboration\Collaborators + * @since 13.0.0 + */ +class SearchResultType { + /** @var string */ + protected $label; + + /** + * SearchResultType constructor. + * + * @param string $label + * @since 13.0.0 + */ + public function __construct($label) { + $this->label = $this->getValidatedType($label); + } + + /** + * @return string + * @since 13.0.0 + */ + public function getLabel() { + return $this->label; + } + + /** + * @param $type + * @return string + * @throws \InvalidArgumentException + * @since 13.0.0 + */ + protected function getValidatedType($type) { + $type = trim(strval($type)); + + if($type === '') { + throw new \InvalidArgumentException('Type must not be empty'); + } + + if($type === 'exact') { + throw new \InvalidArgumentException('Provided type is a reserved word'); + } + + return $type; + } +} |