1<?php
2/**
3 * DokuWiki Actions
4 *
5 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
6 * @author     Andreas Gohr <andi@splitbrain.org>
7 */
8
9use dokuwiki\Extension\Event;
10
11/**
12 * All action processing starts here
13 */
14function act_dispatch(){
15    // always initialize on first dispatch (test request may dispatch mutliple times on one request)
16    $router = \dokuwiki\ActionRouter::getInstance(true);
17
18    $headers = array('Content-Type: text/html; charset=utf-8');
19    Event::createAndTrigger('ACTION_HEADERS_SEND',$headers,'act_sendheaders');
20
21    // clear internal variables
22    unset($router);
23    unset($headers);
24    // make all globals available to the template
25    extract($GLOBALS);
26
27    include(template('main.php'));
28    // output for the commands is now handled in inc/templates.php
29    // in function tpl_content()
30}
31
32/**
33 * Send the given headers using header()
34 *
35 * @param array $headers The headers that shall be sent
36 */
37function act_sendheaders($headers) {
38    foreach ($headers as $hdr) header($hdr);
39}
40
41/**
42 * Sanitize the action command
43 *
44 * @author Andreas Gohr <andi@splitbrain.org>
45 *
46 * @param array|string $act
47 * @return string
48 */
49function act_clean($act){
50    // check if the action was given as array key
51    if(is_array($act)){
52        list($act) = array_keys($act);
53    }
54
55    // no action given
56    if($act === null) return 'show';
57
58    //remove all bad chars
59    $act = strtolower($act);
60    $act = preg_replace('/[^1-9a-z_]+/','',$act);
61
62    if($act == 'export_html') $act = 'export_xhtml';
63    if($act == 'export_htmlbody') $act = 'export_xhtmlbody';
64
65    if($act === '') $act = 'show';
66    return $act;
67}
68