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