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