don't keep result types hard coded
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
parent
579c1476a3
commit
4a96e22258
|
@ -198,7 +198,8 @@ class ShareesAPIController extends OCSController {
|
||||||
|
|
||||||
list($result, $hasMoreResults) = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $this->limit, $this->offset);
|
list($result, $hasMoreResults) = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $this->limit, $this->offset);
|
||||||
|
|
||||||
$response = new DataResponse($result);
|
$this->result = array_merge($this->result, $result);
|
||||||
|
$response = new DataResponse($this->result);
|
||||||
|
|
||||||
if ($hasMoreResults) {
|
if ($hasMoreResults) {
|
||||||
$response->addHeader('Link', $this->getPaginationLink($page, [
|
$response->addHeader('Link', $this->getPaginationLink($page, [
|
||||||
|
|
|
@ -27,8 +27,10 @@ namespace OC\Collaboration\Collaborators;
|
||||||
use OCA\Circles\Api\Sharees;
|
use OCA\Circles\Api\Sharees;
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
|
|
||||||
class CirclePlugin implements ISearchPlugin {
|
class CirclePlugin implements ISearchPlugin {
|
||||||
|
|
||||||
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
||||||
$result = ['wide' => [], 'exact' => []];
|
$result = ['wide' => [], 'exact' => []];
|
||||||
|
|
||||||
|
@ -41,7 +43,8 @@ class CirclePlugin implements ISearchPlugin {
|
||||||
$result['wide'] = $circles['circles'];
|
$result['wide'] = $circles['circles'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('circles', $result['wide'], $result['exact']);
|
$type = new SearchResultType('circles');
|
||||||
|
$searchResult->addResultSet($type, $result['wide'], $result['exact']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\IGroup;
|
use OCP\IGroup;
|
||||||
use OCP\IGroupManager;
|
use OCP\IGroupManager;
|
||||||
|
@ -115,8 +116,9 @@ class GroupPlugin implements ISearchPlugin {
|
||||||
$result['wide'] = [];
|
$result['wide'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('groups', $result['wide'], $result['exact']);
|
$type = new SearchResultType('groups');
|
||||||
|
$searchResult->addResultSet($type, $result['wide'], $result['exact']);
|
||||||
|
|
||||||
return [$result, $hasMoreResults];
|
return $hasMoreResults;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\Http\Client\IClientService;
|
use OCP\Http\Client\IClientService;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\Share;
|
use OCP\Share;
|
||||||
|
@ -77,7 +78,9 @@ class LookupPlugin implements ISearchPlugin {
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('lookup', $result, []);
|
$type = new SearchResultType('lookup');
|
||||||
|
$searchResult->addResultSet($type, $result, []);
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\Contacts\IManager;
|
use OCP\Contacts\IManager;
|
||||||
use OCP\Federation\ICloudIdManager;
|
use OCP\Federation\ICloudIdManager;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
|
@ -59,6 +60,8 @@ class MailPlugin implements ISearchPlugin {
|
||||||
*/
|
*/
|
||||||
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
||||||
$result = ['wide' => [], 'exact' => []];
|
$result = ['wide' => [], 'exact' => []];
|
||||||
|
$userType = new SearchResultType('users');
|
||||||
|
$emailType = new SearchResultType('emails');
|
||||||
|
|
||||||
// Search in contacts
|
// Search in contacts
|
||||||
//@todo Pagination missing
|
//@todo Pagination missing
|
||||||
|
@ -81,7 +84,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$searchResult->hasResult('users', $cloud->getUser())) {
|
if (!$searchResult->hasResult($userType, $cloud->getUser())) {
|
||||||
$singleResult = [[
|
$singleResult = [[
|
||||||
'label' => $contact['FN'] . " ($emailAddress)",
|
'label' => $contact['FN'] . " ($emailAddress)",
|
||||||
'value' => [
|
'value' => [
|
||||||
|
@ -89,8 +92,8 @@ class MailPlugin implements ISearchPlugin {
|
||||||
'shareWith' => $cloud->getUser(),
|
'shareWith' => $cloud->getUser(),
|
||||||
],
|
],
|
||||||
]];
|
]];
|
||||||
$searchResult->addResultSet('users', [], $singleResult);
|
$searchResult->addResultSet($userType, [], $singleResult);
|
||||||
$searchResult->markExactIdMatch('emails');
|
$searchResult->markExactIdMatch($emailType);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +105,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$searchResult->hasResult('users', $cloud->getUser())) {
|
if (!$searchResult->hasResult($userType, $cloud->getUser())) {
|
||||||
$singleResult = [[
|
$singleResult = [[
|
||||||
'label' => $contact['FN'] . " ($emailAddress)",
|
'label' => $contact['FN'] . " ($emailAddress)",
|
||||||
'value' => [
|
'value' => [
|
||||||
|
@ -110,8 +113,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
'shareWith' => $cloud->getUser(),
|
'shareWith' => $cloud->getUser(),
|
||||||
]],
|
]],
|
||||||
];
|
];
|
||||||
$searchResult->addResultSet('users', $singleResult, []);
|
$searchResult->addResultSet($userType, $singleResult, []);
|
||||||
$result = [];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
@ -119,7 +121,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
|
|
||||||
if ($exactEmailMatch || strtolower($contact['FN']) === $lowerSearch) {
|
if ($exactEmailMatch || strtolower($contact['FN']) === $lowerSearch) {
|
||||||
if ($exactEmailMatch) {
|
if ($exactEmailMatch) {
|
||||||
$searchResult->markExactIdMatch('emails');
|
$searchResult->markExactIdMatch($emailType);
|
||||||
}
|
}
|
||||||
$result['exact'][] = [
|
$result['exact'][] = [
|
||||||
'label' => $contact['FN'] . " ($emailAddress)",
|
'label' => $contact['FN'] . " ($emailAddress)",
|
||||||
|
@ -145,7 +147,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
$result['wide'] = [];
|
$result['wide'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$searchResult->hasExactIdMatch('emails') && filter_var($search, FILTER_VALIDATE_EMAIL)) {
|
if (!$searchResult->hasExactIdMatch($emailType) && filter_var($search, FILTER_VALIDATE_EMAIL)) {
|
||||||
$result['exact'][] = [
|
$result['exact'][] = [
|
||||||
'label' => $search,
|
'label' => $search,
|
||||||
'value' => [
|
'value' => [
|
||||||
|
@ -155,7 +157,7 @@ class MailPlugin implements ISearchPlugin {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('emails', $result['wide'], $result['exact']);
|
$searchResult->addResultSet($emailType, $result['wide'], $result['exact']);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\Contacts\IManager;
|
use OCP\Contacts\IManager;
|
||||||
use OCP\Federation\ICloudIdManager;
|
use OCP\Federation\ICloudIdManager;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
|
@ -51,6 +52,7 @@ class RemotePlugin implements ISearchPlugin {
|
||||||
|
|
||||||
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
public function search($search, $limit, $offset, ISearchResult $searchResult) {
|
||||||
$result = ['wide' => [], 'exact' => []];
|
$result = ['wide' => [], 'exact' => []];
|
||||||
|
$resultType = new SearchResultType('remotes');
|
||||||
|
|
||||||
// Search in contacts
|
// Search in contacts
|
||||||
//@todo Pagination missing
|
//@todo Pagination missing
|
||||||
|
@ -74,7 +76,7 @@ class RemotePlugin implements ISearchPlugin {
|
||||||
|
|
||||||
if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) {
|
if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) {
|
||||||
if (strtolower($cloudId) === $lowerSearch) {
|
if (strtolower($cloudId) === $lowerSearch) {
|
||||||
$searchResult->hasExactIdMatch('remotes');
|
$searchResult->hasExactIdMatch($resultType);
|
||||||
}
|
}
|
||||||
$result['exact'][] = [
|
$result['exact'][] = [
|
||||||
'label' => $contact['FN'] . " ($cloudId)",
|
'label' => $contact['FN'] . " ($cloudId)",
|
||||||
|
@ -102,7 +104,7 @@ class RemotePlugin implements ISearchPlugin {
|
||||||
$result['wide'] = [];
|
$result['wide'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$searchResult->hasExactIdMatch('remotes') && $this->cloudIdManager->isValidCloudId($search) && $offset === 0) {
|
if (!$searchResult->hasExactIdMatch($resultType) && $this->cloudIdManager->isValidCloudId($search) && $offset === 0) {
|
||||||
$result['exact'][] = [
|
$result['exact'][] = [
|
||||||
'label' => $search,
|
'label' => $search,
|
||||||
'value' => [
|
'value' => [
|
||||||
|
@ -112,7 +114,7 @@ class RemotePlugin implements ISearchPlugin {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('remotes', $result['wide'], $result['exact']);
|
$searchResult->addResultSet($resultType, $result['wide'], $result['exact']);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
use OCP\Collaboration\Collaborators\ISearch;
|
use OCP\Collaboration\Collaborators\ISearch;
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\IContainer;
|
use OCP\IContainer;
|
||||||
use OCP\Share;
|
use OCP\Share;
|
||||||
|
|
||||||
|
@ -71,10 +72,12 @@ class Search implements ISearch {
|
||||||
// if we have a exact match, either for the federated cloud id or for the
|
// if we have a exact match, either for the federated cloud id or for the
|
||||||
// email address we only return the exact match. It is highly unlikely
|
// email address we only return the exact match. It is highly unlikely
|
||||||
// that the exact same email address and federated cloud id exists
|
// that the exact same email address and federated cloud id exists
|
||||||
if($searchResult->hasExactIdMatch('emails') && !$searchResult->hasExactIdMatch('remotes')) {
|
$emailType = new SearchResultType('emails');
|
||||||
$searchResult->unsetResult('remotes');
|
$remoteType = new SearchResultType('remotes');
|
||||||
} elseif (!$searchResult->hasExactIdMatch('emails') && $searchResult->hasExactIdMatch('remotes')) {
|
if($searchResult->hasExactIdMatch($emailType) && !$searchResult->hasExactIdMatch($remoteType)) {
|
||||||
$searchResult->unsetResult('emails');
|
$searchResult->unsetResult($remoteType);
|
||||||
|
} elseif (!$searchResult->hasExactIdMatch($emailType) && $searchResult->hasExactIdMatch($remoteType)) {
|
||||||
|
$searchResult->unsetResult($emailType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [$searchResult->asArray(), $hasMoreResults];
|
return [$searchResult->asArray(), $hasMoreResults];
|
||||||
|
|
|
@ -25,30 +25,21 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
|
|
||||||
class SearchResult implements ISearchResult {
|
class SearchResult implements ISearchResult {
|
||||||
|
|
||||||
protected $result = [
|
protected $result = [
|
||||||
'exact' => [
|
'exact' => [],
|
||||||
'users' => [],
|
|
||||||
'groups' => [],
|
|
||||||
'remotes' => [],
|
|
||||||
'emails' => [],
|
|
||||||
'circles' => [],
|
|
||||||
],
|
|
||||||
'users' => [],
|
|
||||||
'groups' => [],
|
|
||||||
'remotes' => [],
|
|
||||||
'emails' => [],
|
|
||||||
'lookup' => [],
|
|
||||||
'circles' => [],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $exactIdMatches = [];
|
protected $exactIdMatches = [];
|
||||||
|
|
||||||
public function addResultSet($type, array $matches, array $exactMatches = null) {
|
public function addResultSet(SearchResultType $type, array $matches, array $exactMatches = null) {
|
||||||
|
$type = $type->getLabel();
|
||||||
if(!isset($this->result[$type])) {
|
if(!isset($this->result[$type])) {
|
||||||
throw new \InvalidArgumentException('Invalid type provided');
|
$this->result[$type] = [];
|
||||||
|
$this->result['exact'][$type] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->result[$type] = array_merge($this->result[$type], $matches);
|
$this->result[$type] = array_merge($this->result[$type], $matches);
|
||||||
|
@ -57,17 +48,18 @@ class SearchResult implements ISearchResult {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function markExactIdMatch($type) {
|
public function markExactIdMatch(SearchResultType $type) {
|
||||||
$this->exactIdMatches[$type] = 1;
|
$this->exactIdMatches[$type->getLabel()] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hasExactIdMatch($type) {
|
public function hasExactIdMatch(SearchResultType$type) {
|
||||||
return isset($this->exactIdMatches[$type]);
|
return isset($this->exactIdMatches[$type->getLabel()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hasResult($type, $collaboratorId) {
|
public function hasResult(SearchResultType $type, $collaboratorId) {
|
||||||
|
$type = $type->getLabel();
|
||||||
if(!isset($this->result[$type])) {
|
if(!isset($this->result[$type])) {
|
||||||
throw new \InvalidArgumentException('Invalid type provided');
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$resultArrays = [$this->result['exact'][$type], $this->result[$type]];
|
$resultArrays = [$this->result['exact'][$type], $this->result[$type]];
|
||||||
|
@ -84,11 +76,8 @@ class SearchResult implements ISearchResult {
|
||||||
return $this->result;
|
return $this->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function unsetResult($type) {
|
public function unsetResult(SearchResultType $type) {
|
||||||
if(!isset($this->result[$type])) {
|
$type = $type->getLabel();
|
||||||
throw new \InvalidArgumentException('Invalid type provided');
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->result[$type] = [];
|
$this->result[$type] = [];
|
||||||
if(isset($this->$result['exact'][$type])) {
|
if(isset($this->$result['exact'][$type])) {
|
||||||
$this->result['exact'][$type] = [];
|
$this->result['exact'][$type] = [];
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace OC\Collaboration\Collaborators;
|
||||||
|
|
||||||
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
use OCP\Collaboration\Collaborators\ISearchPlugin;
|
||||||
use OCP\Collaboration\Collaborators\ISearchResult;
|
use OCP\Collaboration\Collaborators\ISearchResult;
|
||||||
|
use OCP\Collaboration\Collaborators\SearchResultType;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\IGroupManager;
|
use OCP\IGroupManager;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
|
@ -140,7 +141,8 @@ class UserPlugin implements ISearchPlugin {
|
||||||
$result['wide'] = [];
|
$result['wide'] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$searchResult->addResultSet('users', $result['wide'], $result['exact']);
|
$type = new SearchResultType('users');
|
||||||
|
$searchResult->addResultSet($type, $result['wide'], $result['exact']);
|
||||||
|
|
||||||
return $hasMoreResults;
|
return $hasMoreResults;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,39 +31,39 @@ namespace OCP\Collaboration\Collaborators;
|
||||||
*/
|
*/
|
||||||
interface ISearchResult {
|
interface ISearchResult {
|
||||||
/**
|
/**
|
||||||
* @param string $type one of: users, groups, remotes, email, circles, lookup
|
* @param SearchResultType $type
|
||||||
* @param array $matches
|
* @param array $matches
|
||||||
* @param array|null $exactMatches
|
* @param array|null $exactMatches
|
||||||
* @since 13.0.0
|
* @since 13.0.0
|
||||||
*/
|
*/
|
||||||
public function addResultSet($type, array $matches, array $exactMatches = null);
|
public function addResultSet(SearchResultType $type, array $matches, array $exactMatches = null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $type one of: users, groups, remotes, email, circles, lookup
|
* @param SearchResultType $type
|
||||||
* @param string $collaboratorId
|
* @param string $collaboratorId
|
||||||
* @return bool
|
* @return bool
|
||||||
* @since 13.0.0
|
* @since 13.0.0
|
||||||
*/
|
*/
|
||||||
public function hasResult($type, $collaboratorId);
|
public function hasResult(SearchResultType $type, $collaboratorId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $type one of: users, groups, remotes, email, circles, lookup
|
* @param SearchResultType $type
|
||||||
* @since 13.0.0
|
* @since 13.0.0
|
||||||
*/
|
*/
|
||||||
public function unsetResult($type);
|
public function unsetResult(SearchResultType $type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $type one of: users, groups, remotes, email, circles, lookup
|
* @param SearchResultType $type
|
||||||
* @since 13.0.0
|
* @since 13.0.0
|
||||||
*/
|
*/
|
||||||
public function markExactIdMatch($type);
|
public function markExactIdMatch(SearchResultType $type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $type one of: users, groups, remotes, email, circles, lookup
|
* @param SearchResultType $type
|
||||||
* @return bool
|
* @return bool
|
||||||
* @since 13.0.0
|
* @since 13.0.0
|
||||||
*/
|
*/
|
||||||
public function hasExactIdMatch($type);
|
public function hasExactIdMatch(SearchResultType $type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?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;
|
||||||
|
|
||||||
|
public function __construct($label) {
|
||||||
|
$this->label = $this->getValidatedType($label);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabel() {
|
||||||
|
return $this->label;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getValidatedType($type) {
|
||||||
|
$type = trim(strval($type));
|
||||||
|
|
||||||
|
if($type === '') {
|
||||||
|
throw new \InvalidArgumentException('Type must not be empty');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(trim($type) === 'exact') {
|
||||||
|
throw new \InvalidArgumentException('Provided type is a reserved word');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $type;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue