1 8 */ 9 10 use dokuwiki\ActionRouter; 11 use dokuwiki\Extension\Event; 12 13 /** 14 * Вся обработка действий начинается здесь 15 */ 16 function act_dispatch() 17 { 18 // всегда инициализируется при первой отправке (тестовый запрос может отправляться несколько раз в одном запросе) 19 $router = ActionRouter::getInstance(true); 20 21 $headers = ['Content-Type: text/html; charset=utf-8']; 22 Event::createAndTrigger('ACTION_HEADERS_SEND', $headers, 'act_sendheaders'); 23 24 // clear internal variables 25 unset($router); 26 unset($headers); 27 // сделать все глобальные переменные доступными для шаблона 28 extract($GLOBALS); 29 30 include(template('main.php')); 31 // вывод для команд теперь обрабатывается в inc / templates.php 32 // в функции tpl_content() 33 } 34 35 /** 36 * Отправка указанных заголовков с помощью header() 37 * 38 * @param array $ headers Заголовки, которые должны быть отправлены 39 */ 40 function act_sendheaders($headers) 41 { 42 foreach ($headers as $hdr) header($hdr); 43 } 44 45 /** 46 * Очистите команду действия 47 * 48 * @автор Андреас Гор 49 * 50 * @param массив | строка $ акт 51 * @возвращаемая строка 52 */ 53 function act_clean($act) 54 { 55 // проверяем, было ли действие задано как ключ массива 56 if (is_array($act)) { 57 [$act] = array_keys($act); 58 } 59 60 // никаких действий не предпринято 61 if ($act === null) return 'show'; 62 63 //удалить все плохие символы 64 $act = strtolower($act); 65 $act = preg_replace('/[^1-9a-z_]+/', '', $act); 66 67 if ($act == 'export_html') $act = 'export_xhtml'; 68 if ($act == 'export_htmlbody') $act = 'export_xhtmlbody'; 69 70 if ($act === '') $act = 'show'; 71 return $act; 72 } 73