splitbrain /
dokuwiki
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
|
|||
| 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 |
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.