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