xref: /plugin/bez/syntax/query.php (revision 16c7b168a60daa2c9b9ddcfa51e05d123a2a17dc)
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