xref: /plugin/bez/mdl/UserFactory.php (revision fe5d6d1ebd253c129098b67fff8cf438a54d8650)
1<?php
2
3namespace dokuwiki\plugin\bez\mdl;
4
5class UserFactory {
6
7	private $model;
8
9	public function __construct($model) {
10		$this->model = $model;
11	}
12
13	public function get_all() {
14		$wikiusers = $this->model->dw_auth->retrieveUsers();
15
16		$a = array();
17		foreach ($wikiusers as $nick => $data) {
18			$a[$nick] = $data['name'];
19        }
20		asort($a);
21		return $a;
22	}
23
24    private function get_hidden_groups() {
25		$groups_s = $this->model->action->getConf('hidden_groups');
26		$groups = explode(',', $groups_s);
27
28		foreach($groups as &$group) {
29            $group = trim($group);
30        }
31
32		return $groups;
33	}
34
35    public function get_groups() {
36		global $auth;
37		$wikiusers = $auth->retrieveUsers();
38		$groups = array();
39		foreach ($wikiusers as $data) {
40			$groups = array_merge($groups, $data['grps']);
41		}
42		$groups = array_unique($groups);
43
44		$groups = array_diff($groups, $this->get_hidden_groups());
45
46		sort($groups);
47
48		return $groups;
49	}
50
51    public function users_of_group($group) {
52		$wikiusers = $this->model->dw_auth->retrieveUsers();
53
54		return array_keys(array_filter($wikiusers, function($data) use ($group) {
55           return in_array($group, $data['grps']);
56        }));
57	}
58
59	public function exists($nick) {
60        if (!is_string($nick)) {
61            return false;
62        }
63
64		$users = $this->get_all();
65		if (array_key_exists($nick, $users)) {
66			return true;
67		} else {
68			return false;
69		}
70	}
71
72	public function get_user_full_name($nick) {
73		$users = $this->get_all();
74		return isset($users[$nick]) ? $users[$nick] : '';
75	}
76
77	public function get_user_email($nick) {
78		$wikiusers = $this->model->dw_auth->retrieveUsers();
79		return $wikiusers[$nick]['mail'];
80	}
81
82    public function get_user_nick($full_name) {
83        $users = $this->get_all();
84        return array_search($full_name, $users);
85    }
86}
87