Passed
Pull Request — master (#1307)
by René
03:59
created

User::getUserIsDisabled()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
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
use OCP\IUserManager;
28
use OCP\Collaboration\Collaborators\ISearch;
29
use OCP\Share\IShare;
30
31
class User extends UserGroupClass {
32
	public const TYPE = 'user';
33
	public const ICON = 'icon-user';
34
35
	private $user;
36
37
	public function __construct(
38
		$id
39
	) {
40
		parent::__construct($id, self::TYPE);
41
		$this->icon = self::ICON;
42
		$this->isNoUser = false;
43
		$this->description = \OC::$server->getL10N('polls')->t('User');
44
45
		$this->user = \OC::$server->getUserManager()->get($this->id);
46
		$this->displayName = $this->user->getDisplayName();
47
		$this->emailAddress = $this->user->getEMailAddress();
48
		$this->language = \OC::$server->getConfig()->getUserValue($this->id, 'core', 'lang');
49
	}
50
51
	public function getUserIsDisabled(): bool {
52
		return !\OC::$server->getUserManager()->get($this->id)->isEnabled();
53
	}
54
55
	public static function listRaw(string $query = '', array $types = [], bool $ISearchToggle = false): array {
56
		$c = self::getContainer();
57
58
		if ($ISearchToggle) {
59
			$users = [];
0 ignored issues
show
Unused Code introduced by
The assignment to $users is dead and can be removed.
Loading history...
60
			list($result, $more) = $c->query(ISearch::class)->search($query, $types, true, 200, 0);
61
			return $result;
62
		} else {
63
			return $c->query(IUserManager::class)
64
					 ->search($query);
65
			return \OC::$server->getUserManager()->search($query);
0 ignored issues
show
Unused Code introduced by
return OC::server->getUs...nager()->search($query) is not reachable.

This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.

Unreachable code is most often the result of return, die or exit statements that have been added for debug purposes.

function fx() {
    try {
        doSomething();
        return true;
    }
    catch (\Exception $e) {
        return false;
    }

    return false;
}

In the above example, the last return false will never be executed, because a return statement has already been met in every possible execution path.

Loading history...
66
		}
67
	}
68
69
	/**
70
	 * @return User[]
71
	 *
72
	 * @psalm-return list<User>
73
	 */
74
	public static function search(string $query = '', array $skip = []): array {
75
		$users = [];
76
		// $types = [IShare::TYPE_USER];
77
		$types = [
78
			IShare::TYPE_USER,
79
			IShare::TYPE_GROUP,
80
			IShare::TYPE_EMAIL,
81
			IShare::TYPE_CIRCLE,
82
			IShare::TYPE_DECK
0 ignored issues
show
Bug introduced by
The constant OCP\Share\IShare::TYPE_DECK was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
83
		];
84
		$ISearchToggle = true;
85
86
87
		if ($ISearchToggle) {
0 ignored issues
show
introduced by
The condition $ISearchToggle is always true.
Loading history...
88
			$result = self::listRaw($query, $types, $ISearchToggle);
89
			\OC::$server->getLogger()->alert(json_encode($result));
90
			foreach ($result['users'] as $user) {
91
				if (!in_array($user['value']['shareWith'], $skip)) {
92
					$users[] = new Self($user['value']['shareWith']);
93
				}
94
			}
95
			foreach ($result['exact']['users'] as $user) {
96
				if (!in_array($user['value']['shareWith'], $skip)) {
97
					$users[] = new Self($user['value']['shareWith']);
98
				}
99
			}
100
		} else {
101
			$result = self::listRaw($query, $types, $ISearchToggle);
102
			foreach ($result as $user) {
103
				if (!in_array($user->getUID(), $skip)) {
104
					$users[] = new Self($user->getUID());
105
				}
106
			}
107
		}
108
		return $users;
109
	}
110
}
111