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