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