114a1f0a4SSzymon Olewniczak<?php 214a1f0a4SSzymon Olewniczak 314a1f0a4SSzymon Olewniczakuse \dokuwiki\plugin\bez; 414a1f0a4SSzymon Olewniczak 514a1f0a4SSzymon Olewniczakclass action_plugin_bez_base extends DokuWiki_Action_Plugin { 614a1f0a4SSzymon Olewniczak 714a1f0a4SSzymon Olewniczak /** @var bez\mdl\Model */ 814a1f0a4SSzymon Olewniczak protected $model; 914a1f0a4SSzymon Olewniczak 1014a1f0a4SSzymon Olewniczak /** @var bez\meta\Tpl */ 1114a1f0a4SSzymon Olewniczak protected $tpl; 1214a1f0a4SSzymon Olewniczak 1314a1f0a4SSzymon Olewniczak public function getPluginName() { 1414a1f0a4SSzymon Olewniczak return 'bez'; 1514a1f0a4SSzymon Olewniczak } 1614a1f0a4SSzymon Olewniczak 1714a1f0a4SSzymon Olewniczak public function register(Doku_Event_Handler $controller) { 1814a1f0a4SSzymon Olewniczak } 1914a1f0a4SSzymon Olewniczak 2014a1f0a4SSzymon Olewniczak public function getGlobalConf($key='') { 2114a1f0a4SSzymon Olewniczak global $conf; 2214a1f0a4SSzymon Olewniczak if ($key == '') { 2314a1f0a4SSzymon Olewniczak return $conf; 2414a1f0a4SSzymon Olewniczak } 2514a1f0a4SSzymon Olewniczak return $conf[$key]; 2614a1f0a4SSzymon Olewniczak } 2714a1f0a4SSzymon Olewniczak 2814a1f0a4SSzymon Olewniczak public function get_model() { 2914a1f0a4SSzymon Olewniczak return $this->model; 3014a1f0a4SSzymon Olewniczak } 3114a1f0a4SSzymon Olewniczak 3214a1f0a4SSzymon Olewniczak public function get_client() { 3314a1f0a4SSzymon Olewniczak global $INFO; 3414a1f0a4SSzymon Olewniczak return $INFO['client']; 3514a1f0a4SSzymon Olewniczak } 3614a1f0a4SSzymon Olewniczak 3714a1f0a4SSzymon Olewniczak public function get_tpl() { 3814a1f0a4SSzymon Olewniczak return $this->tpl; 3914a1f0a4SSzymon Olewniczak } 4014a1f0a4SSzymon Olewniczak 4114a1f0a4SSzymon Olewniczak public function get_level() { 4214a1f0a4SSzymon Olewniczak return $this->model->get_level(); 4314a1f0a4SSzymon Olewniczak } 4414a1f0a4SSzymon Olewniczak 4514a1f0a4SSzymon Olewniczak public function bez_tpl_include($tpl_file='', $return=false) { 4614a1f0a4SSzymon Olewniczak $file = DOKU_PLUGIN . "bez/tpl/$tpl_file.php"; 4714a1f0a4SSzymon Olewniczak if (!file_exists($file)) { 4814a1f0a4SSzymon Olewniczak throw new Exception("$file doesn't exist"); 4914a1f0a4SSzymon Olewniczak } 5014a1f0a4SSzymon Olewniczak 5114a1f0a4SSzymon Olewniczak $tpl = $this->tpl; 5214a1f0a4SSzymon Olewniczak if ($return) ob_start(); 5314a1f0a4SSzymon Olewniczak include $file; 5414a1f0a4SSzymon Olewniczak if ($return) return ob_get_clean(); 5514a1f0a4SSzymon Olewniczak 5614a1f0a4SSzymon Olewniczak } 5714a1f0a4SSzymon Olewniczak 58522c019cSSzymon Olewniczak public function createObjects($skip_acl=false) { 5914a1f0a4SSzymon Olewniczak global $auth; 6014a1f0a4SSzymon Olewniczak global $INFO; 6114a1f0a4SSzymon Olewniczak 62f9ff7301SSzymon Olewniczak if ($skip_acl) { 63f9ff7301SSzymon Olewniczak $client = false; 64f9ff7301SSzymon Olewniczak } else { 65f9ff7301SSzymon Olewniczak $client = $INFO['client']; 66f9ff7301SSzymon Olewniczak } 67f9ff7301SSzymon Olewniczak 68f9ff7301SSzymon Olewniczak $this->model = new bez\mdl\Model($auth, $client, $this, $skip_acl); 6914a1f0a4SSzymon Olewniczak $this->tpl = new bez\meta\Tpl($this); 7014a1f0a4SSzymon Olewniczak } 7114a1f0a4SSzymon Olewniczak 7214a1f0a4SSzymon Olewniczak public function id() { 7314a1f0a4SSzymon Olewniczak $args = func_get_args(); 7414a1f0a4SSzymon Olewniczak 7514a1f0a4SSzymon Olewniczak if (count($args) === 0) { 7614a1f0a4SSzymon Olewniczak return $_GET['id']; 7714a1f0a4SSzymon Olewniczak } 7814a1f0a4SSzymon Olewniczak 7914a1f0a4SSzymon Olewniczak $elms = array(); 8014a1f0a4SSzymon Olewniczak foreach ($args as $arg) { 8114a1f0a4SSzymon Olewniczak if (is_array($arg)) { 8214a1f0a4SSzymon Olewniczak foreach ($arg as $k => $v) { 83501f256bSSzymon Olewniczak //replace special chars 84501f256bSSzymon Olewniczak list($k, $v) = str_replace(array(':', '#'), '', array($k, $v)); 85501f256bSSzymon Olewniczak //don't create id with empty value 86501f256bSSzymon Olewniczak if (empty($k) || empty($v)) { 87501f256bSSzymon Olewniczak continue; 88501f256bSSzymon Olewniczak } 8914a1f0a4SSzymon Olewniczak $elms[] = $k; 9014a1f0a4SSzymon Olewniczak $elms[] = $v; 9114a1f0a4SSzymon Olewniczak } 9214a1f0a4SSzymon Olewniczak } else { 9314a1f0a4SSzymon Olewniczak $elms[] = $arg; 9414a1f0a4SSzymon Olewniczak } 9514a1f0a4SSzymon Olewniczak } 9652e539a3SSzymon Olewniczak //add bez as a key for controller 9714a1f0a4SSzymon Olewniczak array_unshift($elms, 'bez'); 9814a1f0a4SSzymon Olewniczak 9952e539a3SSzymon Olewniczak //make an $elms key->value pair 10052e539a3SSzymon Olewniczak $params = []; 10152e539a3SSzymon Olewniczak for ($i = 0; $i < count($elms); $i += 2) { 10252e539a3SSzymon Olewniczak $key = $elms[$i]; 10352e539a3SSzymon Olewniczak $value = isset($elms[$i+1]) ? $elms[$i+1] : ''; 10452e539a3SSzymon Olewniczak $params[$key] = $value; 10552e539a3SSzymon Olewniczak } 10652e539a3SSzymon Olewniczak $params = array_filter($params); 10752e539a3SSzymon Olewniczak $elms = []; 10852e539a3SSzymon Olewniczak foreach ($params as $k => $v) { 10952e539a3SSzymon Olewniczak $elms[] = $k; 11052e539a3SSzymon Olewniczak $elms[] = $v; 11152e539a3SSzymon Olewniczak } 11252e539a3SSzymon Olewniczak 11352e539a3SSzymon Olewniczak 11452e539a3SSzymon Olewniczak 11514a1f0a4SSzymon Olewniczak 11616360984SSzymon Olewniczak //pl is default language 11716360984SSzymon Olewniczak if ($this->getGlobalConf('lang') != '' && $this->getGlobalConf('lang') != 'pl') { 11814a1f0a4SSzymon Olewniczak array_unshift($elms, $this->getGlobalConf('lang')); 11914a1f0a4SSzymon Olewniczak } 12014a1f0a4SSzymon Olewniczak 12114a1f0a4SSzymon Olewniczak return implode(':', $elms); 12214a1f0a4SSzymon Olewniczak } 12314a1f0a4SSzymon Olewniczak 12414a1f0a4SSzymon Olewniczak public function url() { 125a3f54527SSzymon Olewniczak global $conf; 126a3f54527SSzymon Olewniczak 12714a1f0a4SSzymon Olewniczak $args = func_get_args(); 12814a1f0a4SSzymon Olewniczak if (count($args) > 0) { 12932fae04eSSzymon Olewniczak if (isset($args[count($args)-1]['GET'])) { 13032fae04eSSzymon Olewniczak $get = array_pop($args)['GET']; 131bc0bd078SSzymon Olewniczak $get = http_build_query($get); 132bc0bd078SSzymon Olewniczak } 13332fae04eSSzymon Olewniczak $id = call_user_func_array(array($this, 'id'), $args); 134bc0bd078SSzymon Olewniczak 135a3f54527SSzymon Olewniczak if ($conf['userewrite'] == '1') { 136bc0bd078SSzymon Olewniczak if ($get) $get = "?$get"; 137*dc7a218dSSzymon Olewniczak return DOKU_URL . $id. $get; 138a3f54527SSzymon Olewniczak } elseif ($conf['userewrite'] == '2') { 139bc0bd078SSzymon Olewniczak if ($get) $get = "?$get"; 140*dc7a218dSSzymon Olewniczak return DOKU_URL . 'doku.php/' . $id . $get; 141a3f54527SSzymon Olewniczak } else { 142bc0bd078SSzymon Olewniczak if ($get) $get = "&$get"; 143*dc7a218dSSzymon Olewniczak return DOKU_URL . 'doku.php?id=' . $id . $get; 14414a1f0a4SSzymon Olewniczak } 145a3f54527SSzymon Olewniczak 146a3f54527SSzymon Olewniczak } 14714a1f0a4SSzymon Olewniczak } 14814a1f0a4SSzymon Olewniczak} 149