Completed
Push — sidebaracl ( 7a112d...7c3e4a )
by Andreas
04:38
created

lib/plugins/syntax.php (1 issue)

Labels
Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Syntax Plugin Prototype
4
 *
5
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
6
 * @author     Andreas Gohr <[email protected]>
7
 */
8
// must be run within Dokuwiki
9
if(!defined('DOKU_INC')) die();
10
11
/**
12
 * All DokuWiki plugins to extend the parser/rendering mechanism
13
 * need to inherit from this class
14
 */
15
class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode_Plugin {
16
17
    var $allowedModesSetup = false;
18
19
    /**
20
     * Syntax Type
21
     *
22
     * Needs to return one of the mode types defined in $PARSER_MODES in parser.php
23
     *
24
     * @return string
25
     */
26
    function getType(){
27
        trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
28
        return '';
29
    }
30
31
    /**
32
     * Allowed Mode Types
33
     *
34
     * Defines the mode types for other dokuwiki markup that maybe nested within the
35
     * plugin's own markup. Needs to return an array of one or more of the mode types
36
     * defined in $PARSER_MODES in parser.php
37
     *
38
     * @return array
39
     */
40
    function getAllowedTypes() {
41
        return array();
42
    }
43
44
    /**
45
     * Paragraph Type
46
     *
47
     * Defines how this syntax is handled regarding paragraphs. This is important
48
     * for correct XHTML nesting. Should return one of the following:
49
     *
50
     * 'normal' - The plugin can be used inside paragraphs
51
     * 'block'  - Open paragraphs need to be closed before plugin output
52
     * 'stack'  - Special case. Plugin wraps other paragraphs.
53
     *
54
     * @see Doku_Handler_Block
55
     *
56
     * @return string
57
     */
58
    function getPType(){
59
        return 'normal';
60
    }
61
62
    /**
63
     * Handler to prepare matched data for the rendering process
64
     *
65
     * This function can only pass data to render() via its return value - render()
66
     * may be not be run during the object's current life.
67
     *
68
     * Usually you should only need the $match param.
69
     *
70
     * @param   string       $match   The text matched by the patterns
71
     * @param   int          $state   The lexer state for the match
72
     * @param   int          $pos     The character position of the matched text
73
     * @param   Doku_Handler $handler The Doku_Handler object
74
     * @return  bool|array Return an array with all data you want to use in render, false don't add an instruction
75
     */
76
    function handle($match, $state, $pos, Doku_Handler $handler){
77
        trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
78
    }
79
80
    /**
81
     * Handles the actual output creation.
82
     *
83
     * The function must not assume any other of the classes methods have been run
84
     * during the object's current life. The only reliable data it receives are its
85
     * parameters.
86
     *
87
     * The function should always check for the given output format and return false
88
     * when a format isn't supported.
89
     *
90
     * $renderer contains a reference to the renderer object which is
91
     * currently handling the rendering. You need to use it for writing
92
     * the output. How this is done depends on the renderer used (specified
93
     * by $format
94
     *
95
     * The contents of the $data array depends on what the handler() function above
96
     * created
97
     *
98
     * @param string          $format   output format being rendered
99
     * @param Doku_Renderer   $renderer the current renderer object
100
     * @param array           $data     data created by handler()
101
     * @return  boolean                 rendered correctly? (however, returned value is not used at the moment)
102
     */
103
    function render($format, Doku_Renderer $renderer, $data) {
104
        trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
105
106
    }
107
108
    /**
109
     *  There should be no need to override this function
110
     *
111
     * @param string $mode
112
     * @return bool
113
     */
114
    function accepts($mode) {
115
116
        if (!$this->allowedModesSetup) {
117
            global $PARSER_MODES;
118
119
            $allowedModeTypes = $this->getAllowedTypes();
120
            foreach($allowedModeTypes as $mt) {
121
                $this->allowedModes = array_merge($this->allowedModes, $PARSER_MODES[$mt]);
0 ignored issues
show
The property allowedModes cannot be accessed from this context as it is declared private in class Doku_Parser_Mode_Plugin.

This check looks for access to properties that are not accessible from the current context.

If you need to make a property accessible to another context you can either raise its visibility level or provide an accessible getter in the defining class.

Loading history...
122
            }
123
124
            $idx = array_search(substr(get_class($this), 7), (array) $this->allowedModes);
125
            if ($idx !== false) {
126
                unset($this->allowedModes[$idx]);
127
            }
128
            $this->allowedModesSetup = true;
129
        }
130
131
        return parent::accepts($mode);
132
    }
133
}
134
//Setup VIM: ex: et ts=4 :
135