1de02284cSSzymon Olewniczak<?php 2de02284cSSzymon Olewniczak 3de02284cSSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 4de02284cSSzymon Olewniczak 5*a0cd8c78SSzymon Olewniczak//ACL level defines 6*a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_NONE', 0); 7*a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_VIEWER', 2); 8*a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_USER', 5); 9*a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_LEADER', 10); 10*a0cd8c78SSzymon Olewniczakdefine('BEZ_AUTH_ADMIN', 20); 11*a0cd8c78SSzymon Olewniczak 12*a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_UNKNOWN', -1); 13*a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_NONE', 0); 14*a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_VIEW', 1); 15*a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_CHANGE', 2); 16*a0cd8c78SSzymon Olewniczakdefine('BEZ_PERMISSION_DELETE', 3); 17*a0cd8c78SSzymon 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 26*a0cd8c78SSzymon 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 62*a0cd8c78SSzymon Olewniczak public function factory($table) { 63*a0cd8c78SSzymon Olewniczak $prop = $table . 'Factory'; 64*a0cd8c78SSzymon Olewniczak 65*a0cd8c78SSzymon Olewniczak return $this->$prop; 66*a0cd8c78SSzymon Olewniczak } 67*a0cd8c78SSzymon Olewniczak 68*a0cd8c78SSzymon Olewniczak private function update_level($level) { 69*a0cd8c78SSzymon Olewniczak if ($level > $this->level) { 70*a0cd8c78SSzymon Olewniczak $this->level = $level; 71*a0cd8c78SSzymon Olewniczak } 72*a0cd8c78SSzymon Olewniczak } 73*a0cd8c78SSzymon Olewniczak 74*a0cd8c78SSzymon Olewniczak public function get_level() { 75*a0cd8c78SSzymon Olewniczak return $this->level; 76*a0cd8c78SSzymon Olewniczak } 77*a0cd8c78SSzymon Olewniczak 78de02284cSSzymon Olewniczak public function __construct($dw_auth, $user_nick, $action, $conf) { 79de02284cSSzymon Olewniczak $this->dw_auth = $dw_auth; 80de02284cSSzymon Olewniczak $this->user_nick = $user_nick; 81de02284cSSzymon Olewniczak $this->action = $action; 82de02284cSSzymon Olewniczak $this->conf = $conf; 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 90*a0cd8c78SSzymon Olewniczak //$this->acl = new Acl($this); 91de02284cSSzymon Olewniczak 92de02284cSSzymon Olewniczak $this->userFactory = new UserFactory($this); 93fe5d6d1eSSzymon Olewniczak 94fe5d6d1eSSzymon Olewniczak $this->threadFactory = new ThreadFactory($this); 95fe5d6d1eSSzymon Olewniczak 96de02284cSSzymon Olewniczak $this->labelFactory = new LabelFactory($this); 97de02284cSSzymon Olewniczak 988a638198SSzymon Olewniczak $this->thread_commentFactory = new Thread_commentFactory($this); 998a638198SSzymon Olewniczak 1008a638198SSzymon Olewniczak $this->taskFactory = new TaskFactory($this); 1018a638198SSzymon Olewniczak 102e8827d73SSzymon Olewniczak $this->task_programFactory = new Task_programFactory($this); 103de02284cSSzymon Olewniczak 104e8827d73SSzymon Olewniczak $this->task_commentFactory = new Task_commentFactory($this); 105e8827d73SSzymon Olewniczak 106e8827d73SSzymon Olewniczak $this->authentication_tokenFactory = new Authentication_tokenFactory($this); 107*a0cd8c78SSzymon Olewniczak 108*a0cd8c78SSzymon Olewniczak $userd = $this->dw_auth->getUserData($this->user_nick); 109*a0cd8c78SSzymon Olewniczak if ($userd !== false && is_array($userd['grps'])) { 110*a0cd8c78SSzymon Olewniczak $grps = $userd['grps']; 111*a0cd8c78SSzymon Olewniczak if (in_array('admin', $grps ) || in_array('bez_admin', $grps )) { 112*a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_ADMIN); 113*a0cd8c78SSzymon Olewniczak } elseif (in_array('bez_leader', $grps )) { 114*a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_LEADER); 115*a0cd8c78SSzymon Olewniczak } else { 116*a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_USER); 117*a0cd8c78SSzymon Olewniczak } 118*a0cd8c78SSzymon Olewniczak } elseif (isset($_GET['t'])) { 119*a0cd8c78SSzymon Olewniczak $page_id = $this->action->id(); 120*a0cd8c78SSzymon Olewniczak 121*a0cd8c78SSzymon Olewniczak $user_tok = trim($_GET['t']); 122*a0cd8c78SSzymon Olewniczak if ($this->authentication_tokenFactory->get_token($page_id) == $user_tok) { 123*a0cd8c78SSzymon Olewniczak $this->update_level(BEZ_AUTH_VIEWER); 124*a0cd8c78SSzymon Olewniczak } 125*a0cd8c78SSzymon Olewniczak } 126e8827d73SSzymon Olewniczak } 127de02284cSSzymon Olewniczak} 128