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