Passed
Pull Request — master (#1169)
by René
06:00
created

ContactGroup::listRaw()   A

Complexity

Conditions 5
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 8
c 2
b 0
f 0
dl 0
loc 15
rs 9.6111
cc 5
nc 2
nop 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Vinzenz Rosenkranz <[email protected]>
4
 *
5
 * @author René Gieling <[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
25
namespace OCA\Polls\Model;
26
27
class ContactGroup extends UserGroupClass {
28
	public const TYPE = 'contactGroup';
29
	public const ICON = 'icon-group';
30
31
	/**
32
	 * Group constructor.
33
	 * @param $id
34
	 */
35
	public function __construct(
36
		$id
37
	) {
38
		parent::__construct($id, self::TYPE);
39
		$this->icon = self::ICON;
40
		$this->description = \OC::$server->getL10N('polls')->t('Contact group');
41
	}
42
43
	/**
44
	 * getDisplayName
45
	 * @NoAdminRequired
46
	 * @return String
47
	 */
48
	public function getDisplayName() {
49
		if (!$this->displayName) {
50
			return $this->id;
51
		}
52
		return $this->displayName;
53
	}
54
55
	/**
56
	 * listRaw
57
	 * @NoAdminRequired
58
	 * @param string $query
59
	 * @return Array
60
	 */
61
	public static function listRaw($query = '') {
62
		$contactGroups = [];
63
		if (\OC::$server->getContactsManager()->isEnabled()) {
64
			// find contact, which are member of the requested Group
65
			foreach (\OC::$server->getContactsManager()->search($query, ['CATEGORIES']) as $contact) {
66
				// get all groups from the found contact and explode to array
67
				$temp = explode(',', $contact['CATEGORIES']);
68
				foreach ($temp as $contactGroup) {
69
					if (stripos($contactGroup, $query) === 0) {
70
						$contactGroups[] = $contactGroup;
71
					}
72
				}
73
			}
74
		}
75
		return array_unique($contactGroups);
76
	}
77
78
	/**
79
	 * Get a list of contact groups
80
	 * @NoAdminRequired
81
	 * @param string $query
82
	 * @return Array
83
	 */
84
	public static function search($query = '') {
85
		$contactGroups = [];
86
		if (\OC::$server->getContactsManager()->isEnabled() && $query) {
87
			foreach (self::listRaw($query) as $contactGroup) {
88
				$contactGroups[] = new self($contactGroup);
89
			}
90
		}
91
		return $contactGroups;
92
	}
93
94
	/**
95
	 * Get a list of contacts group members
96
	 * @NoAdminRequired
97
	 * @return Contact[]
98
	 */
99
	public function getMembers() {
100
		if (\OC::$server->getContactsManager()->isEnabled()) {
101
			$contacts = [];
102
			foreach (\OC::$server->getContactsManager()->search($this->id, ['CATEGORIES']) as $contact) {
103
				if (array_key_exists('EMAIL', $contact)) {
104
					$contacts[] = new Contact($contact['UID']);
105
				}
106
			}
107
			return $contacts;
108
		}
109
		return [];
110
	}
111
}
112