1ef159648SSzymon Olewniczak<?php 2*16c7b168SSzymon Olewniczak 3ef159648SSzymon Olewniczak// must be run within DokuWiki 4ef159648SSzymon Olewniczakif(!defined('DOKU_INC')) die(); 5ef159648SSzymon Olewniczak 6ef159648SSzymon Olewniczakif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 7ef159648SSzymon Olewniczakrequire_once DOKU_PLUGIN.'syntax.php'; 8ef159648SSzymon Olewniczak/** 9ef159648SSzymon Olewniczak * All DokuWiki plugins to extend the parser/rendering mechanism 10ef159648SSzymon Olewniczak * need to inherit from this class 11ef159648SSzymon Olewniczak */ 12ef159648SSzymon Olewniczakclass syntax_plugin_bez_query extends DokuWiki_Syntax_Plugin { 13ef159648SSzymon Olewniczak 14ef159648SSzymon Olewniczak public function getType() { return 'container'; } 15ef159648SSzymon Olewniczak public function getAllowedTypes() { 16ef159648SSzymon Olewniczak return array('container', 'formatting', 'substition', 'disabled'); 17ef159648SSzymon Olewniczak } 18ef159648SSzymon Olewniczak public function connectTo($mode) { 19ef159648SSzymon Olewniczak $this->Lexer->addEntryPattern('<bez-query.*?>(?=.*?</bez-query>)',$mode,'plugin_bez_query'); 20ef159648SSzymon Olewniczak } 21ef159648SSzymon Olewniczak public function postConnect() { 22ef159648SSzymon Olewniczak $this->Lexer->addExitPattern('</bez-query>','plugin_bez_query'); 23ef159648SSzymon Olewniczak } 24ef159648SSzymon Olewniczak public function getSort() { return 34; } 25ef159648SSzymon Olewniczak 26ef159648SSzymon Olewniczak 27ef159648SSzymon Olewniczak public function handle($match, $state, $pos, Doku_Handler $handler){ 28ef159648SSzymon Olewniczak switch ($state) { 29ef159648SSzymon Olewniczak case DOKU_LEXER_ENTER : 30ef159648SSzymon Olewniczak return array($state, $match); 31ef159648SSzymon Olewniczak 32ef159648SSzymon Olewniczak case DOKU_LEXER_UNMATCHED : return array($state, $match); 33ef159648SSzymon Olewniczak case DOKU_LEXER_EXIT : return array($state, ''); 34ef159648SSzymon Olewniczak } 35ef159648SSzymon Olewniczak return array(); 36ef159648SSzymon Olewniczak } 37ef159648SSzymon Olewniczak 38ef159648SSzymon Olewniczak public function render($mode, Doku_Renderer $renderer, $data) { 39ef159648SSzymon Olewniczak // $data is what the function handle() return'ed. 40ef159648SSzymon Olewniczak if($mode == 'xhtml'){ 41ef159648SSzymon Olewniczak /** @var Doku_Renderer_xhtml $renderer */ 42ef159648SSzymon Olewniczak list($state,$match) = $data; 43ef159648SSzymon Olewniczak switch ($state) { 44ef159648SSzymon Olewniczak case DOKU_LEXER_ENTER : 45ef159648SSzymon Olewniczak 46ef159648SSzymon Olewniczak $renderer->doc .= "QUERY: ".htmlspecialchars($match).""; 47ef159648SSzymon Olewniczak $renderer->doc .= "<pre>"; 48ef159648SSzymon Olewniczak break; 49ef159648SSzymon Olewniczak 50ef159648SSzymon Olewniczak case DOKU_LEXER_UNMATCHED : 51ef159648SSzymon Olewniczak $renderer->doc .= $renderer->_xmlEntities($match); 52ef159648SSzymon Olewniczak break; 53ef159648SSzymon Olewniczak case DOKU_LEXER_EXIT : 54ef159648SSzymon Olewniczak $renderer->doc .= "</pre>"; 55ef159648SSzymon Olewniczak break; 56ef159648SSzymon Olewniczak } 57ef159648SSzymon Olewniczak return true; 58ef159648SSzymon Olewniczak } 59ef159648SSzymon Olewniczak return false; 60ef159648SSzymon Olewniczak } 61ef159648SSzymon Olewniczak} 62