Completed
Push — master ( a89f9a...3036b1 )
by Morris
29:19 queued 12:13
created

RemoteGroupPlugin::search()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 2
nop 4
dl 0
loc 18
rs 9.6666
c 0
b 0
f 0
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Arthur Schiwon <[email protected]>
4
 *
5
 * @author Arthur Schiwon <[email protected]>
6
 *
7
 * @license GNU AGPL version 3 or any later version
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Affero General Public License as
11
 * published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License
20
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
 *
22
 */
23
24
namespace OC\Collaboration\Collaborators;
25
26
27
use OCP\Collaboration\Collaborators\ISearchPlugin;
28
use OCP\Collaboration\Collaborators\ISearchResult;
29
use OCP\Collaboration\Collaborators\SearchResultType;
30
use OCP\Contacts\IManager;
31
use OCP\Federation\ICloudFederationProviderManager;
32
use OCP\Federation\ICloudIdManager;
33
use OCP\IConfig;
34
use OCP\Share;
35
36
class RemoteGroupPlugin implements ISearchPlugin {
37
	protected $shareeEnumeration;
38
39
	/** @var ICloudIdManager */
40
	private $cloudIdManager;
41
	/** @var IConfig */
42
	private $config;
0 ignored issues
show
Unused Code introduced by
The property $config is not used and could be removed.

This check marks private properties in classes that are never used. Those properties can be removed.

Loading history...
43
	/** @var bool */
44
	private $enabled = false;
45
46
	public function __construct(ICloudFederationProviderManager $cloudFederationProviderManager, ICloudIdManager $cloudIdManager) {
47
		try {
48
			$fileSharingProvider = $cloudFederationProviderManager->getCloudFederationProvider('file');
49
			$supportedShareTypes = $fileSharingProvider->getSupportedShareTypes();
50
			if (in_array('group', $supportedShareTypes)) {
51
				$this->enabled = true;
52
			}
53
		} catch (\Exception $e) {
54
			// do nothing, just don't enable federated group shares
55
		}
56
		$this->cloudIdManager = $cloudIdManager;
57
	}
58
59
	public function search($search, $limit, $offset, ISearchResult $searchResult) {
60
		$result = ['wide' => [], 'exact' => []];
61
		$resultType = new SearchResultType('remote_groups');
62
63
		if ($this->enabled && $this->cloudIdManager->isValidCloudId($search) && $offset === 0) {
64
			$result['exact'][] = [
65
				'label' => $search,
66
				'value' => [
67
					'shareType' => Share::SHARE_TYPE_REMOTE_GROUP,
68
					'shareWith' => $search,
69
				],
70
			];
71
		}
72
73
		$searchResult->addResultSet($resultType, $result['wide'], $result['exact']);
74
75
		return true;
76
	}
77
78
}
79