«Подробности»
1<?php
2
3/**
4* Действия DokuWiki
5*
6* @license GPL 2 ( http://www.gnu.org/licenses/gpl.html)
7* @автор Андреас Гор <andi@splitbrain.org>
8*/
9
10использовать dokuwiki \ ActionRouter ;
11использовать dokuwiki \ Extension \ Event ;
12
13/**
14* Вся обработка действий начинается здесь
15*/
16функция act_dispatch ()
17{
18 // всегда инициализируется при первой отправке (тестовый запрос может отправляться несколько раз в одном запросе)
19 $ router = ActionRouter :: getInstance ( true );
20
21 $ headers = [ 'Тип содержимого: текст / html ; кодировка=utf-8' ];
22 Событие :: createAndTrigger ( 'ACTION_HEADERS_SEND' , $ headers , 'act_sendheaders' );
23
24 // очистить внутренние переменные
25 не установлен ($ router );
26 не установлено ($ headers );
27 // сделать все глобальные переменные доступными для шаблона
28 извлечь ($ GLOBALS );
29
30 включить ( шаблон ( ' main.php ' ));
31 // вывод для команд теперь обрабатывается в inc / templates.php
32 // в функции tpl_content()
33}
34
35/**
36* Отправка указанных заголовков с помощью header()
37*
38* @param array $ headers Заголовки, которые должны быть отправлены
39*/
40функция act_sendheaders ($ headers )
41{
42 foreach ($ headers as $ hdr ) header ($ hdr );
43}
44
45/**
46* Очистите команду действия
47*
48* @автор Андреас Гор <andi@splitbrain.org>
49*
50* @param массив | строка $ акт
51* @возвращаемая строка
52*/
53функция act_clean ($ act )
54{
55 // проверяем, было ли действие задано как ключ массива
56 если ( is_array ($ act )) {
57 [$ act ] = array_keys ($ act );
58 }
59
60 // никаких действий не предпринято
61 если ($ act === null ) вернуть 'show' ;
62
63 //удалить все плохие символы
64 $ act = strtolower ($ act );
65 $ act = preg_replace ( '/[^1-9a-z_]+/' , '' , $ act );
66
67 если ($ act == 'export_html' ) $ act = 'export_xhtml' ;
68 если ($ act == 'export_htmlbody' ) $ act = 'export_xhtmlbody' ;
69
70 если ($ act === '' ) $ act = 'показать' ;
71 возврат $ акт ;
72}
73