xref: /plugin/bez/action/default.php (revision ff14b1073c2dab2f863cab3b8baf8b1a01f7993a)
1fe5d6d1eSSzymon Olewniczak<?php
2fe5d6d1eSSzymon Olewniczak
3fe5d6d1eSSzymon Olewniczakuse \dokuwiki\plugin\bez;
4fe5d6d1eSSzymon Olewniczak
5fe5d6d1eSSzymon Olewniczakif(!defined('DOKU_INC')) die();
6fe5d6d1eSSzymon Olewniczak
7fe5d6d1eSSzymon Olewniczak//require_once DOKU_PLUGIN.'bez/mdl/model.php';
8fe5d6d1eSSzymon Olewniczak//
9fe5d6d1eSSzymon Olewniczak//require_once DOKU_PLUGIN.'bez/interfaces.php';
10fe5d6d1eSSzymon Olewniczak//require_once DOKU_PLUGIN.'bez/exceptions.php';
11fe5d6d1eSSzymon Olewniczak//
12fe5d6d1eSSzymon Olewniczak//spl_autoload_register(
13fe5d6d1eSSzymon Olewniczak//    function ($class) {
14fe5d6d1eSSzymon Olewniczak//        $file = DOKU_PLUGIN.'bez/inc/'.$class.'.class.php';
15fe5d6d1eSSzymon Olewniczak//        if (file_exists($file)) {
16fe5d6d1eSSzymon Olewniczak//            require_once $file;
17fe5d6d1eSSzymon Olewniczak//        }
18fe5d6d1eSSzymon Olewniczak//    }
19fe5d6d1eSSzymon Olewniczak//);
20fe5d6d1eSSzymon Olewniczak
21fe5d6d1eSSzymon Olewniczakfunction bez_tpl_include(bez\meta\Tpl $tpl) {
22fe5d6d1eSSzymon Olewniczak    $file = DOKU_PLUGIN."bez/tpl/".str_replace('/', '', $tpl->action()).".php";
23fe5d6d1eSSzymon Olewniczak    if (file_exists($file)) {
24fe5d6d1eSSzymon Olewniczak        include $file;
25fe5d6d1eSSzymon Olewniczak    }
26fe5d6d1eSSzymon Olewniczak}
27fe5d6d1eSSzymon Olewniczak
28fe5d6d1eSSzymon Olewniczakdefine('BEZ_NOTIFICATIONS_COOKIE_NAME', 'bez_notifications');
29fe5d6d1eSSzymon Olewniczak
30fe5d6d1eSSzymon Olewniczakclass action_plugin_bez_default extends DokuWiki_Action_Plugin {
31fe5d6d1eSSzymon Olewniczak
328a638198SSzymon Olewniczak	protected $action = '';
338a638198SSzymon Olewniczak    protected $params = array();
34fe5d6d1eSSzymon Olewniczak
35fe5d6d1eSSzymon Olewniczak    /** @var  bez\mdl\Model */
368a638198SSzymon Olewniczak    protected $model;
37fe5d6d1eSSzymon Olewniczak
38fe5d6d1eSSzymon Olewniczak    /** @var  bez\meta\Tpl */
398a638198SSzymon Olewniczak    protected $tpl;
40fe5d6d1eSSzymon Olewniczak
418a638198SSzymon Olewniczak    protected $notifications = array();
42fe5d6d1eSSzymon Olewniczak
438a638198SSzymon Olewniczak    protected $errors = array();
44fe5d6d1eSSzymon Olewniczak
45fe5d6d1eSSzymon Olewniczak    public function get_action() {
46fe5d6d1eSSzymon Olewniczak        return $this->action;
47fe5d6d1eSSzymon Olewniczak    }
48fe5d6d1eSSzymon Olewniczak
49*ff14b107SSzymon Olewniczak    public function get_param($id, $default='') {
50*ff14b107SSzymon Olewniczak        return (isset($this->params[$id]) ? $this->params[$id] : $default);
51fe5d6d1eSSzymon Olewniczak    }
52fe5d6d1eSSzymon Olewniczak
53e8827d73SSzymon Olewniczak    public static function id() {
54e8827d73SSzymon Olewniczak        global $conf;
55e8827d73SSzymon Olewniczak
56fe5d6d1eSSzymon Olewniczak		$args = func_get_args();
57e8827d73SSzymon Olewniczak
58e8827d73SSzymon Olewniczak        if (count($args) === 0) {
59e8827d73SSzymon Olewniczak            return $_GET['id'];
60e8827d73SSzymon Olewniczak        }
61e8827d73SSzymon Olewniczak
62fe5d6d1eSSzymon Olewniczak        $elms = array();
63fe5d6d1eSSzymon Olewniczak        foreach ($args as $arg) {
64fe5d6d1eSSzymon Olewniczak            if (is_array($arg)) {
65fe5d6d1eSSzymon Olewniczak                foreach ($arg as $k => $v) {
66fe5d6d1eSSzymon Olewniczak                    $elms[] = $k;
67fe5d6d1eSSzymon Olewniczak                    $elms[] = $v;
68fe5d6d1eSSzymon Olewniczak                }
69fe5d6d1eSSzymon Olewniczak            } else {
70fe5d6d1eSSzymon Olewniczak                $elms[] = $arg;
71fe5d6d1eSSzymon Olewniczak            }
72fe5d6d1eSSzymon Olewniczak        }
73fe5d6d1eSSzymon Olewniczak		array_unshift($elms, 'bez');
74fe5d6d1eSSzymon Olewniczak
75fe5d6d1eSSzymon Olewniczak
76e8827d73SSzymon Olewniczak		if ($conf['lang'] != '') {
77e8827d73SSzymon Olewniczak			array_unshift($elms, $conf['lang']);
78fe5d6d1eSSzymon Olewniczak        }
79fe5d6d1eSSzymon Olewniczak
80fe5d6d1eSSzymon Olewniczak		return implode(':', $elms);
81fe5d6d1eSSzymon Olewniczak    }
82fe5d6d1eSSzymon Olewniczak
83e8827d73SSzymon Olewniczak    public static function url() {
84fe5d6d1eSSzymon Olewniczak        $args = func_get_args();
85fe5d6d1eSSzymon Olewniczak        if (count($args) > 0) {
86e8827d73SSzymon Olewniczak            $id = call_user_func_array('action_plugin_bez_default::id', $args);
87e8827d73SSzymon Olewniczak            return DOKU_URL . 'doku.php?id=' . $id;
88fe5d6d1eSSzymon Olewniczak        } else {
89e8827d73SSzymon Olewniczak            //https://stackoverflow.com/questions/6768793/get-the-full-url-in-php
90e8827d73SSzymon Olewniczak            return (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
91fe5d6d1eSSzymon Olewniczak        }
92fe5d6d1eSSzymon Olewniczak
93e8827d73SSzymon Olewniczak
94fe5d6d1eSSzymon Olewniczak    }
95fe5d6d1eSSzymon Olewniczak
96fe5d6d1eSSzymon Olewniczak//    public function model_factory($name) {
97fe5d6d1eSSzymon Olewniczak//        $factory = $name . 'Factory';
98fe5d6d1eSSzymon Olewniczak//        if (!property_exists($this->model, $factory)) {
99fe5d6d1eSSzymon Olewniczak//            throw new \Exception('unknown table: '.$name);
100fe5d6d1eSSzymon Olewniczak//        }
101fe5d6d1eSSzymon Olewniczak//        return $this->model->$factory;
102fe5d6d1eSSzymon Olewniczak//    }
103fe5d6d1eSSzymon Olewniczak
104fe5d6d1eSSzymon Olewniczak    /**
105fe5d6d1eSSzymon Olewniczak     * @return mixed
106fe5d6d1eSSzymon Olewniczak     */
107fe5d6d1eSSzymon Olewniczak    public function get_model() {
108fe5d6d1eSSzymon Olewniczak        return $this->model;
109fe5d6d1eSSzymon Olewniczak    }
110fe5d6d1eSSzymon Olewniczak
111fe5d6d1eSSzymon Olewniczak    private function add_notification($value, $header=NULL) {
112fe5d6d1eSSzymon Olewniczak        if (isset($_COOKIE[BEZ_NOTIFICATIONS_COOKIE_NAME])) {
113fe5d6d1eSSzymon Olewniczak            $notifs = unserialize($_COOKIE[BEZ_NOTIFICATIONS_COOKIE_NAME]);
114fe5d6d1eSSzymon Olewniczak        } else {
115fe5d6d1eSSzymon Olewniczak            $notifs = array();
116fe5d6d1eSSzymon Olewniczak        }
117fe5d6d1eSSzymon Olewniczak        $notifs[] = array('value' => $value, 'header' => $header);
118fe5d6d1eSSzymon Olewniczak        setcookie(BEZ_NOTIFICATIONS_COOKIE_NAME, serialize($notifs));
119fe5d6d1eSSzymon Olewniczak    }
120fe5d6d1eSSzymon Olewniczak
121fe5d6d1eSSzymon Olewniczak    private function flush_notifications() {
122fe5d6d1eSSzymon Olewniczak        if (!isset($_COOKIE[BEZ_NOTIFICATIONS_COOKIE_NAME])) {
123fe5d6d1eSSzymon Olewniczak            return array();
124fe5d6d1eSSzymon Olewniczak        }
125fe5d6d1eSSzymon Olewniczak        $this->notifications = unserialize($_COOKIE[BEZ_NOTIFICATIONS_COOKIE_NAME]);
126fe5d6d1eSSzymon Olewniczak
127fe5d6d1eSSzymon Olewniczak        //remove cookie
128fe5d6d1eSSzymon Olewniczak        setcookie(BEZ_NOTIFICATIONS_COOKIE_NAME, serialize(array()));
129fe5d6d1eSSzymon Olewniczak    }
130fe5d6d1eSSzymon Olewniczak
131fe5d6d1eSSzymon Olewniczak    private function add_error($value, $header=NULL) {
132fe5d6d1eSSzymon Olewniczak        $this->errors[] = array('value' => $value, 'header' => $header);
133fe5d6d1eSSzymon Olewniczak    }
134fe5d6d1eSSzymon Olewniczak
135fe5d6d1eSSzymon Olewniczak//    private function param($id) {
136fe5d6d1eSSzymon Olewniczak//        return (isset($this->params[$id]) ? $this->params[$id] : '');
137fe5d6d1eSSzymon Olewniczak//    }
138fe5d6d1eSSzymon Olewniczak
139fe5d6d1eSSzymon Olewniczak	/**
140fe5d6d1eSSzymon Olewniczak	 * Register its handlers with the DokuWiki's event controller
141fe5d6d1eSSzymon Olewniczak	 */
142fe5d6d1eSSzymon Olewniczak	public function register(Doku_Event_Handler $controller)
143fe5d6d1eSSzymon Olewniczak	{
144fe5d6d1eSSzymon Olewniczak        $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'setup_enviroment');
145fe5d6d1eSSzymon Olewniczak		$controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'action_act_preprocess');
146fe5d6d1eSSzymon Olewniczak		$controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'tpl_act_render');
147fe5d6d1eSSzymon Olewniczak		$controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'tpl_pagetools_display');
148fe5d6d1eSSzymon Olewniczak		$controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'include_dependencies', array());
149fe5d6d1eSSzymon Olewniczak		$controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this,'_ajax_call');
150fe5d6d1eSSzymon Olewniczak	}
151fe5d6d1eSSzymon Olewniczak
152fe5d6d1eSSzymon Olewniczak	public function include_dependencies(Doku_Event $event) {
153fe5d6d1eSSzymon Olewniczak		// Adding a stylesheet
154fe5d6d1eSSzymon Olewniczak		$event->data["link"][] = array (
155fe5d6d1eSSzymon Olewniczak		  "type" => "text/css",
156fe5d6d1eSSzymon Olewniczak		  "rel" => "stylesheet",
157fe5d6d1eSSzymon Olewniczak		  "href" => DOKU_BASE.
158fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.timepicker-1.11.9-0/jquery.timepicker.css",
159fe5d6d1eSSzymon Olewniczak		);
160fe5d6d1eSSzymon Olewniczak
161fe5d6d1eSSzymon Olewniczak		// Adding a JavaScript File
162fe5d6d1eSSzymon Olewniczak		$event->data["script"][] = array (
163fe5d6d1eSSzymon Olewniczak		  "type" => "text/javascript",
164fe5d6d1eSSzymon Olewniczak		  "src" => DOKU_BASE.
165fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.timepicker-1.11.9-0/jquery.timepicker.min.js",
166fe5d6d1eSSzymon Olewniczak		  "_data" => "",
167fe5d6d1eSSzymon Olewniczak		);
168fe5d6d1eSSzymon Olewniczak
169fe5d6d1eSSzymon Olewniczak		// Adding a JavaScript File
170fe5d6d1eSSzymon Olewniczak		$event->data["script"][] = array (
171fe5d6d1eSSzymon Olewniczak		  "type" => "text/javascript",
172fe5d6d1eSSzymon Olewniczak		  "src" => DOKU_BASE.
173fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.datepair/datepair.js",
174fe5d6d1eSSzymon Olewniczak		  "_data" => "",
175fe5d6d1eSSzymon Olewniczak		);
176fe5d6d1eSSzymon Olewniczak
177fe5d6d1eSSzymon Olewniczak		// Adding a JavaScript File
178fe5d6d1eSSzymon Olewniczak		$event->data["script"][] = array (
179fe5d6d1eSSzymon Olewniczak		  "type" => "text/javascript",
180fe5d6d1eSSzymon Olewniczak		  "src" => DOKU_BASE.
181fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.datepair/jquery.datepair.js",
182fe5d6d1eSSzymon Olewniczak		  "_data" => "",
183fe5d6d1eSSzymon Olewniczak		);
184fe5d6d1eSSzymon Olewniczak
185fe5d6d1eSSzymon Olewniczak		$event->data["link"][] = array (
186fe5d6d1eSSzymon Olewniczak		  "type" => "text/css",
187fe5d6d1eSSzymon Olewniczak		  "rel" => "stylesheet",
188fe5d6d1eSSzymon Olewniczak		  "href" => DOKU_BASE.
189fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.form-validator/theme-default.min.css",
190fe5d6d1eSSzymon Olewniczak		);
191fe5d6d1eSSzymon Olewniczak
192fe5d6d1eSSzymon Olewniczak
193fe5d6d1eSSzymon Olewniczak		$event->data["script"][] = array (
194fe5d6d1eSSzymon Olewniczak		  "type" => "text/javascript",
195fe5d6d1eSSzymon Olewniczak		  "src" => DOKU_BASE.
196fe5d6d1eSSzymon Olewniczak			"lib/plugins/bez/lib/jquery.form-validator/jquery.form-validator.min.js",
197fe5d6d1eSSzymon Olewniczak		  "_data" => "",
198fe5d6d1eSSzymon Olewniczak		);
199fe5d6d1eSSzymon Olewniczak	}
200fe5d6d1eSSzymon Olewniczak
201fe5d6d1eSSzymon Olewniczak    public function setup_enviroment(Doku_Event $event, $param) {
202fe5d6d1eSSzymon Olewniczak        global $ACT, $auth, $conf, $INFO;
203fe5d6d1eSSzymon Olewniczak
204fe5d6d1eSSzymon Olewniczak        if ($ACT !== 'show') {
205fe5d6d1eSSzymon Olewniczak            return;
206fe5d6d1eSSzymon Olewniczak        }
207fe5d6d1eSSzymon Olewniczak
208fe5d6d1eSSzymon Olewniczak        $id = $_GET['id'];
209fe5d6d1eSSzymon Olewniczak		$ex = explode(':', $id);
210fe5d6d1eSSzymon Olewniczak
211fe5d6d1eSSzymon Olewniczak        //check if we process BEZ
212fe5d6d1eSSzymon Olewniczak        if ($ex[0] !== 'bez' && $ex[1] !== 'bez') {
213fe5d6d1eSSzymon Olewniczak            return;
214fe5d6d1eSSzymon Olewniczak        }
215fe5d6d1eSSzymon Olewniczak
216fe5d6d1eSSzymon Olewniczak
217fe5d6d1eSSzymon Olewniczak        if ($ex[1] === 'bez') {
218fe5d6d1eSSzymon Olewniczak            $conf['lang'] = array_shift($ex);
219e8827d73SSzymon Olewniczak            //$this->lang_code = $conf['lang'];
220fe5d6d1eSSzymon Olewniczak            $this->localised = false;
221fe5d6d1eSSzymon Olewniczak        }
222fe5d6d1eSSzymon Olewniczak        //throw out "bez"
223fe5d6d1eSSzymon Olewniczak        array_shift($ex);
224fe5d6d1eSSzymon Olewniczak
225fe5d6d1eSSzymon Olewniczak        $this->action = array_shift($ex);
226fe5d6d1eSSzymon Olewniczak
227fe5d6d1eSSzymon Olewniczak        if (count($ex) % 2 !== 0) {
228fe5d6d1eSSzymon Olewniczak            throw new Exception('invalid params');
229fe5d6d1eSSzymon Olewniczak        }
230fe5d6d1eSSzymon Olewniczak
231fe5d6d1eSSzymon Olewniczak        for ($i = 0; $i < count($ex); $i += 2) {
232fe5d6d1eSSzymon Olewniczak            $this->params[$ex[$i]] = $ex[$i+1];
233fe5d6d1eSSzymon Olewniczak        }
234fe5d6d1eSSzymon Olewniczak
235fe5d6d1eSSzymon Olewniczak        $this->setupLocale();
236fe5d6d1eSSzymon Olewniczak
237fe5d6d1eSSzymon Olewniczak        $this->model = new bez\mdl\Model($auth, $INFO['client'], $this, $conf);
238fe5d6d1eSSzymon Olewniczak        $this->tpl = new bez\meta\Tpl($this, $conf);
239fe5d6d1eSSzymon Olewniczak
240fe5d6d1eSSzymon Olewniczak    }
241fe5d6d1eSSzymon Olewniczak
242fe5d6d1eSSzymon Olewniczak	/**
243fe5d6d1eSSzymon Olewniczak	 * handle ajax requests
244fe5d6d1eSSzymon Olewniczak	 */
245fe5d6d1eSSzymon Olewniczak	public function _ajax_call(Doku_Event $event, $param) {
246fe5d6d1eSSzymon Olewniczak		global $auth;
247fe5d6d1eSSzymon Olewniczak		if ($event->data !== 'plugin_bez') {
248fe5d6d1eSSzymon Olewniczak			return;
249fe5d6d1eSSzymon Olewniczak		}
250fe5d6d1eSSzymon Olewniczak		//no other ajax call handlers needed
251fe5d6d1eSSzymon Olewniczak		$event->stopPropagation();
252fe5d6d1eSSzymon Olewniczak		$event->preventDefault();
253fe5d6d1eSSzymon Olewniczak
254fe5d6d1eSSzymon Olewniczak	}
255fe5d6d1eSSzymon Olewniczak
256fe5d6d1eSSzymon Olewniczak
257fe5d6d1eSSzymon Olewniczak
258fe5d6d1eSSzymon Olewniczak	public function tpl_pagetools_display(Doku_Event $event, $param) {
259fe5d6d1eSSzymon Olewniczak		if ($this->action !== '') {
260fe5d6d1eSSzymon Olewniczak			$event->preventDefault();
261fe5d6d1eSSzymon Olewniczak        }
262fe5d6d1eSSzymon Olewniczak	}
263fe5d6d1eSSzymon Olewniczak
264fe5d6d1eSSzymon Olewniczak	public function action_act_preprocess(Doku_Event $event, $param)
265fe5d6d1eSSzymon Olewniczak	{
266fe5d6d1eSSzymon Olewniczak        global $conf;
267fe5d6d1eSSzymon Olewniczak
268fe5d6d1eSSzymon Olewniczak        if ($this->action === '') {
269fe5d6d1eSSzymon Olewniczak            return;
270fe5d6d1eSSzymon Olewniczak        }
271fe5d6d1eSSzymon Olewniczak
272fe5d6d1eSSzymon Olewniczak        $event->preventDefault();
273fe5d6d1eSSzymon Olewniczak		try {
274fe5d6d1eSSzymon Olewniczak            $this->flush_notifications();
275fe5d6d1eSSzymon Olewniczak
276fe5d6d1eSSzymon Olewniczak			$ctl = DOKU_PLUGIN."bez/ctl/".str_replace('/', '', $this->action).".php";
277fe5d6d1eSSzymon Olewniczak
278fe5d6d1eSSzymon Olewniczak			if (file_exists($ctl)) {
279fe5d6d1eSSzymon Olewniczak				include $ctl;
280fe5d6d1eSSzymon Olewniczak			}
281fe5d6d1eSSzymon Olewniczak        } catch(bez\meta\ValidationException $e) {
282fe5d6d1eSSzymon Olewniczak            foreach ($e->get_errors() as $field => $error_code) {
283fe5d6d1eSSzymon Olewniczak                $lang = $this->getLang($field);
284fe5d6d1eSSzymon Olewniczak                if ($lang != '') {
285fe5d6d1eSSzymon Olewniczak                    $field = $lang;
286fe5d6d1eSSzymon Olewniczak                }
287fe5d6d1eSSzymon Olewniczak                $this->add_error(
288fe5d6d1eSSzymon Olewniczak                    $this->getLang('validate_' . $error_code),
289fe5d6d1eSSzymon Olewniczak                    $field);
290fe5d6d1eSSzymon Olewniczak            }
291fe5d6d1eSSzymon Olewniczak
292fe5d6d1eSSzymon Olewniczak            $this->tpl->set_values($_POST);
293fe5d6d1eSSzymon Olewniczak
294fe5d6d1eSSzymon Olewniczak        } catch(bez\meta\PermissionDeniedException $e) {
295fe5d6d1eSSzymon Olewniczak            dbglog('plugin_bez', $e);
296e8827d73SSzymon Olewniczak            if ($conf['allowdebug']) {
297e8827d73SSzymon Olewniczak                dbg($e);
298e8827d73SSzymon Olewniczak                $this->tpl->prevent_rendering();
299e8827d73SSzymon Olewniczak            } else {
300fe5d6d1eSSzymon Olewniczak                header('Location: ' . DOKU_URL . 'doku.php?id=' . $_GET['id'] . '&do=login');
301e8827d73SSzymon Olewniczak            }
302fe5d6d1eSSzymon Olewniczak		} catch(Exception $e) {
303fe5d6d1eSSzymon Olewniczak            dbglog('plugin_bez', $e);
304fe5d6d1eSSzymon Olewniczak            if ($conf['allowdebug']) {
305fe5d6d1eSSzymon Olewniczak               dbg($e);
306fe5d6d1eSSzymon Olewniczak            }
307fe5d6d1eSSzymon Olewniczak            $this->tpl->prevent_rendering();
308fe5d6d1eSSzymon Olewniczak		}
309fe5d6d1eSSzymon Olewniczak	}
310fe5d6d1eSSzymon Olewniczak
311fe5d6d1eSSzymon Olewniczak	public function tpl_act_render($event, $param)
312fe5d6d1eSSzymon Olewniczak	{
313fe5d6d1eSSzymon Olewniczak        global $conf;
314fe5d6d1eSSzymon Olewniczak
315fe5d6d1eSSzymon Olewniczak        if ($this->action === '') {
316fe5d6d1eSSzymon Olewniczak            return false;
317fe5d6d1eSSzymon Olewniczak        }
318fe5d6d1eSSzymon Olewniczak        $event->preventDefault();
319fe5d6d1eSSzymon Olewniczak
320fe5d6d1eSSzymon Olewniczak		try {
321fe5d6d1eSSzymon Olewniczak
322fe5d6d1eSSzymon Olewniczak			foreach ($this->errors as $error) {
323fe5d6d1eSSzymon Olewniczak				echo '<div class="error">';
324fe5d6d1eSSzymon Olewniczak                if ($error['header'] === NULL) {
325fe5d6d1eSSzymon Olewniczak					echo $error['value'];
326fe5d6d1eSSzymon Olewniczak				} else {
327fe5d6d1eSSzymon Olewniczak					echo '<strong>'.$error['header'].'</strong>: '.$error['value'];
328fe5d6d1eSSzymon Olewniczak				}
329fe5d6d1eSSzymon Olewniczak				echo '</div>';
330fe5d6d1eSSzymon Olewniczak			}
331fe5d6d1eSSzymon Olewniczak
332fe5d6d1eSSzymon Olewniczak            foreach ($this->notifications as $note) {
333fe5d6d1eSSzymon Olewniczak                echo '<div class="info">';
334fe5d6d1eSSzymon Olewniczak				if ($note['header'] === NULL) {
335fe5d6d1eSSzymon Olewniczak					echo $note['value'];
336fe5d6d1eSSzymon Olewniczak				} else {
337fe5d6d1eSSzymon Olewniczak					echo $note['header'].': <strong>'.$note['value'].'</strong>';
338fe5d6d1eSSzymon Olewniczak				}
339fe5d6d1eSSzymon Olewniczak				echo '</div>';
340fe5d6d1eSSzymon Olewniczak            }
341fe5d6d1eSSzymon Olewniczak
342fe5d6d1eSSzymon Olewniczak			bez_tpl_include($this->tpl);
343fe5d6d1eSSzymon Olewniczak
344fe5d6d1eSSzymon Olewniczak        } catch(bez\meta\PermissionDeniedException $e) {
345fe5d6d1eSSzymon Olewniczak            dbglog('plugin_bez', $e);
346fe5d6d1eSSzymon Olewniczak            header('Location: ' . DOKU_URL . 'doku.php?id=' . $_GET['id'] . '&do=login');
347fe5d6d1eSSzymon Olewniczak		} catch(Exception $e) {
348fe5d6d1eSSzymon Olewniczak			/*exception*/
349fe5d6d1eSSzymon Olewniczak            dbglog('plugin_bez', $e);
350fe5d6d1eSSzymon Olewniczak            if ($conf['allowdebug']) {
351fe5d6d1eSSzymon Olewniczak               dbg($e);
352fe5d6d1eSSzymon Olewniczak            }
353fe5d6d1eSSzymon Olewniczak		}
354fe5d6d1eSSzymon Olewniczak	}
355fe5d6d1eSSzymon Olewniczak}
356