1de02284cSSzymon Olewniczak<?php 2de02284cSSzymon Olewniczak 3de02284cSSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 4de02284cSSzymon Olewniczak 5a0cd8c78SSzymon Olewniczak//ACL level defines 6a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_NONE', 0); 7a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_VIEWER', 2); 8a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_USER', 5); 9a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_LEADER', 10); 10a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_ADMIN', 20); 11a0cd8c78SSzymon Olewniczak 12a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_UNKNOWN', -1); 13a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_NONE', 0); 14a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_VIEW', 1); 15a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_CHANGE', 2); 16a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_DELETE', 3); 17a0cd8c78SSzymon Olewniczak 18de02284cSSzymon Olewniczak 19de02284cSSzymon Olewniczakclass Model { 20de02284cSSzymon Olewniczak /** @var \helper_plugin_sqlite */ 21de02284cSSzymon Olewniczak protected $sqlite; 22de02284cSSzymon Olewniczak 23de02284cSSzymon Olewniczak /** @var \SQLite3 */ 24de02284cSSzymon Olewniczak protected $db; 25de02284cSSzymon Olewniczak 26a0cd8c78SSzymon Olewniczak protected $level = BEZ_AUTH_NONE; 27de02284cSSzymon Olewniczak 28de02284cSSzymon Olewniczak protected $dw_auth, $user_nick, $action, $conf; 29de02284cSSzymon Olewniczak 30de02284cSSzymon Olewniczak /** @var ThreadFactory */ 31de02284cSSzymon Olewniczak protected $threadFactory; 32de02284cSSzymon Olewniczak 33de02284cSSzymon Olewniczak /** @var UserFactory */ 34de02284cSSzymon Olewniczak protected $userFactory; 35de02284cSSzymon Olewniczak 36de02284cSSzymon Olewniczak /** @var LabelFactory */ 37de02284cSSzymon Olewniczak protected $labelFactory; 38de02284cSSzymon Olewniczak 398a638198SSzymon Olewniczak /** @var Thread_commentFactory */ 408a638198SSzymon Olewniczak protected $thread_commentFactory; 418a638198SSzymon Olewniczak 428a638198SSzymon Olewniczak /** @var TaskFactory */ 438a638198SSzymon Olewniczak protected $taskFactory; 448a638198SSzymon Olewniczak 45e8827d73SSzymon Olewniczak /** @var Task_programFactory */ 46e8827d73SSzymon Olewniczak protected $task_programFactory; 47e8827d73SSzymon Olewniczak 48e8827d73SSzymon Olewniczak /** @var Task_commentFactory */ 49e8827d73SSzymon Olewniczak protected $task_commentFactory; 50e8827d73SSzymon Olewniczak 51e8827d73SSzymon Olewniczak /** @var Authentication_tokenFactory */ 52e8827d73SSzymon Olewniczak protected $authentication_tokenFactory; 53e8827d73SSzymon Olewniczak 54de02284cSSzymon Olewniczak public function __get($property) { 55e8827d73SSzymon Olewniczak $models = array('userFactory', 'threadFactory', 'labelFactory', 'thread_commentFactory', 'taskFactory', 'task_programFactory', 'task_commentFactory', 'authentication_tokenFactory'); 56de02284cSSzymon Olewniczak if (in_array($property, $models) || 57de02284cSSzymon Olewniczak in_array($property, array('sqlite', 'db', 'acl', 'dw_auth', 'user_nick', 'action', 'conf'))) { 58de02284cSSzymon Olewniczak return $this->$property; 59de02284cSSzymon Olewniczak } 60de02284cSSzymon Olewniczak } 61de02284cSSzymon Olewniczak 62a0cd8c78SSzymon Olewniczak public function factory($table) { 63a0cd8c78SSzymon Olewniczak $prop = $table . 'Factory'; 64a0cd8c78SSzymon Olewniczak 65a0cd8c78SSzymon Olewniczak return $this->$prop; 66a0cd8c78SSzymon Olewniczak } 67a0cd8c78SSzymon Olewniczak 68*14a1f0a4SSzymon Olewniczak protected function update_level($level) { 69a0cd8c78SSzymon Olewniczak if ($level > $this->level) { 70a0cd8c78SSzymon Olewniczak $this->level = $level; 71a0cd8c78SSzymon Olewniczak } 72a0cd8c78SSzymon Olewniczak } 73a0cd8c78SSzymon Olewniczak 74a0cd8c78SSzymon Olewniczak public function get_level() { 75a0cd8c78SSzymon Olewniczak return $this->level; 76a0cd8c78SSzymon Olewniczak } 77a0cd8c78SSzymon Olewniczak 78*14a1f0a4SSzymon Olewniczak public function __construct($dw_auth, $user_nick, $action) { 79de02284cSSzymon Olewniczak $this->dw_auth = $dw_auth; 80de02284cSSzymon Olewniczak $this->user_nick = $user_nick; 81de02284cSSzymon Olewniczak $this->action = $action; 82*14a1f0a4SSzymon Olewniczak $this->conf = $action->getGlobalConf(); 83de02284cSSzymon Olewniczak 84e8827d73SSzymon Olewniczak $this->db_helper = plugin_load('helper', 'bez_db'); 85de02284cSSzymon Olewniczak 86e8827d73SSzymon Olewniczak $this->sqlite = $this->db_helper->getDB(); 87de02284cSSzymon Olewniczak $this->db = $this->sqlite->getAdapter()->getDb(); 888a638198SSzymon Olewniczak $this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 898a638198SSzymon Olewniczak 90de02284cSSzymon Olewniczak $this->userFactory = new UserFactory($this); 91fe5d6d1eSSzymon Olewniczak 92fe5d6d1eSSzymon Olewniczak $this->threadFactory = new ThreadFactory($this); 93fe5d6d1eSSzymon Olewniczak 94de02284cSSzymon Olewniczak $this->labelFactory = new LabelFactory($this); 95de02284cSSzymon Olewniczak 968a638198SSzymon Olewniczak $this->thread_commentFactory = new Thread_commentFactory($this); 978a638198SSzymon Olewniczak 988a638198SSzymon Olewniczak $this->taskFactory = new TaskFactory($this); 998a638198SSzymon Olewniczak 100e8827d73SSzymon Olewniczak $this->task_programFactory = new Task_programFactory($this); 101de02284cSSzymon Olewniczak 102e8827d73SSzymon Olewniczak $this->task_commentFactory = new Task_commentFactory($this); 103e8827d73SSzymon Olewniczak 104e8827d73SSzymon Olewniczak $this->authentication_tokenFactory = new Authentication_tokenFactory($this); 105a0cd8c78SSzymon Olewniczak 106a0cd8c78SSzymon Olewniczak $userd = $this->dw_auth->getUserData($this->user_nick); 107a0cd8c78SSzymon Olewniczak if ($userd !== false && is_array($userd['grps'])) { 108a0cd8c78SSzymon Olewniczak $grps = $userd['grps']; 109a0cd8c78SSzymon Olewniczak if (in_array('admin', $grps ) || in_array('bez_admin', $grps )) { 110a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_ADMIN); 111a0cd8c78SSzymon Olewniczak } elseif (in_array('bez_leader', $grps )) { 112a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_LEADER); 113a0cd8c78SSzymon Olewniczak } else { 114a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_USER); 115a0cd8c78SSzymon Olewniczak } 116a0cd8c78SSzymon Olewniczak } elseif (isset($_GET['t'])) { 117a0cd8c78SSzymon Olewniczak $page_id = $this->action->id(); 118a0cd8c78SSzymon Olewniczak 119a0cd8c78SSzymon Olewniczak $user_tok = trim($_GET['t']); 120a0cd8c78SSzymon Olewniczak if ($this->authentication_tokenFactory->get_token($page_id) == $user_tok) { 121a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_VIEWER); 122a0cd8c78SSzymon Olewniczak } 123a0cd8c78SSzymon Olewniczak } 124e8827d73SSzymon Olewniczak } 125de02284cSSzymon Olewniczak} 126