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 } 9614a1f0a4SSzymon Olewniczak array_unshift($elms, 'bez'); 9714a1f0a4SSzymon Olewniczak 9814a1f0a4SSzymon Olewniczak 9916360984SSzymon Olewniczak //pl is default language 10016360984SSzymon Olewniczak if ($this->getGlobalConf('lang') != '' && $this->getGlobalConf('lang') != 'pl') { 10114a1f0a4SSzymon Olewniczak array_unshift($elms, $this->getGlobalConf('lang')); 10214a1f0a4SSzymon Olewniczak } 10314a1f0a4SSzymon Olewniczak 104501f256bSSzymon Olewniczak// $elms = array_map(function ($elm) { 105501f256bSSzymon Olewniczak// return str_replace(array(':', '#'), '', $elm); 106501f256bSSzymon Olewniczak// }, $elms); 10714a1f0a4SSzymon Olewniczak return implode(':', $elms); 10814a1f0a4SSzymon Olewniczak } 10914a1f0a4SSzymon Olewniczak 11014a1f0a4SSzymon Olewniczak public function url() { 111a3f54527SSzymon Olewniczak global $conf; 112a3f54527SSzymon Olewniczak 11314a1f0a4SSzymon Olewniczak $args = func_get_args(); 11414a1f0a4SSzymon Olewniczak if (count($args) > 0) { 115*bc0bd078SSzymon Olewniczak $id_parts = array_filter($args, 'is_string'); 116*bc0bd078SSzymon Olewniczak $id = call_user_func_array(array($this, 'id'), $id_parts); 117*bc0bd078SSzymon Olewniczak 118*bc0bd078SSzymon Olewniczak $get_parts = array_filter($args, 'is_array'); 119*bc0bd078SSzymon Olewniczak $get = ''; 120*bc0bd078SSzymon Olewniczak if ($get_parts) { 121*bc0bd078SSzymon Olewniczak $get = call_user_func_array('array_merge', $get_parts); 122*bc0bd078SSzymon Olewniczak $get = http_build_query($get); 123*bc0bd078SSzymon Olewniczak } 124*bc0bd078SSzymon Olewniczak 125a3f54527SSzymon Olewniczak if ($conf['userewrite'] == '1') { 126*bc0bd078SSzymon Olewniczak if ($get) $get = "?$get"; 127*bc0bd078SSzymon Olewniczak return DOKU_URL . $id. $get; 128a3f54527SSzymon Olewniczak } elseif ($conf['userewrite'] == '2') { 129*bc0bd078SSzymon Olewniczak if ($get) $get = "?$get"; 130*bc0bd078SSzymon Olewniczak return DOKU_URL . 'doku.php/' . $id . $get; 131a3f54527SSzymon Olewniczak } else { 132*bc0bd078SSzymon Olewniczak if ($get) $get = "&$get"; 133*bc0bd078SSzymon Olewniczak return DOKU_URL . 'doku.php?id=' . $id . $get; 13414a1f0a4SSzymon Olewniczak } 135a3f54527SSzymon Olewniczak 136a3f54527SSzymon Olewniczak } 13714a1f0a4SSzymon Olewniczak } 13814a1f0a4SSzymon Olewniczak}