xref: /plugin/bez/action/base.php (revision 52e539a31c6c44137149617231e5f60e8b26746f)
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        }
96*52e539a3SSzymon Olewniczak        //add bez as a key for controller
9714a1f0a4SSzymon Olewniczak        array_unshift($elms, 'bez');
9814a1f0a4SSzymon Olewniczak
99*52e539a3SSzymon Olewniczak        //make an $elms key->value pair
100*52e539a3SSzymon Olewniczak        $params = [];
101*52e539a3SSzymon Olewniczak        for ($i = 0; $i < count($elms); $i += 2) {
102*52e539a3SSzymon Olewniczak            $key = $elms[$i];
103*52e539a3SSzymon Olewniczak            $value = isset($elms[$i+1]) ? $elms[$i+1] : '';
104*52e539a3SSzymon Olewniczak            $params[$key] = $value;
105*52e539a3SSzymon Olewniczak        }
106*52e539a3SSzymon Olewniczak        $params = array_filter($params);
107*52e539a3SSzymon Olewniczak        $elms = [];
108*52e539a3SSzymon Olewniczak        foreach ($params as $k => $v) {
109*52e539a3SSzymon Olewniczak            $elms[] = $k;
110*52e539a3SSzymon Olewniczak            $elms[] = $v;
111*52e539a3SSzymon Olewniczak        }
112*52e539a3SSzymon Olewniczak
113*52e539a3SSzymon Olewniczak
114*52e539a3SSzymon 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
135a51fabffSSzymon Olewniczak            //fix farmer plugin bad DOKU_URL creation for host based setup
136a51fabffSSzymon Olewniczak            if('cli' == php_sapi_name() && isset($_SERVER['animal'])) {
137a51fabffSSzymon Olewniczak                $dokuUrl = rtrim($conf['baseurl'], '/').'/';
138a51fabffSSzymon Olewniczak            } else {
139a51fabffSSzymon Olewniczak                $dokuUrl = DOKU_URL;
140a51fabffSSzymon Olewniczak            }
141a51fabffSSzymon Olewniczak
142a3f54527SSzymon Olewniczak            if ($conf['userewrite'] == '1') {
143bc0bd078SSzymon Olewniczak                if ($get) $get = "?$get";
144a51fabffSSzymon Olewniczak                return $dokuUrl . $id. $get;
145a3f54527SSzymon Olewniczak            } elseif ($conf['userewrite'] == '2') {
146bc0bd078SSzymon Olewniczak                if ($get) $get = "?$get";
147a51fabffSSzymon Olewniczak                return $dokuUrl . 'doku.php/' . $id . $get;
148a3f54527SSzymon Olewniczak            } else {
149bc0bd078SSzymon Olewniczak                if ($get) $get = "&$get";
150a51fabffSSzymon Olewniczak                return $dokuUrl . 'doku.php?id=' . $id . $get;
15114a1f0a4SSzymon Olewniczak            }
152a3f54527SSzymon Olewniczak
153a3f54527SSzymon Olewniczak        }
15414a1f0a4SSzymon Olewniczak    }
15514a1f0a4SSzymon Olewniczak}
156