1*531e725cSNickeau<?php 2*531e725cSNickeau 3*531e725cSNickeau 4*531e725cSNickeau// must be run within Dokuwiki 5*531e725cSNickeauuse ComboStrap\Analytics; 6*531e725cSNickeauuse ComboStrap\PluginUtility; 7*531e725cSNickeau 8*531e725cSNickeauif (!defined('DOKU_INC')) die(); 9*531e725cSNickeau 10*531e725cSNickeau/** 11*531e725cSNickeau * Class syntax_plugin_combo_analytics 12*531e725cSNickeau * This class was just created to add syntax analytics 13*531e725cSNickeau * to the metadata. 14*531e725cSNickeau */ 15*531e725cSNickeauclass syntax_plugin_combo_analytics extends DokuWiki_Syntax_Plugin 16*531e725cSNickeau{ 17*531e725cSNickeau 18*531e725cSNickeau const TAG = "analytics"; 19*531e725cSNickeau 20*531e725cSNickeau /** 21*531e725cSNickeau * Syntax Type. 22*531e725cSNickeau * @see DokuWiki_Syntax_Plugin::getType() 23*531e725cSNickeau */ 24*531e725cSNickeau function getType() 25*531e725cSNickeau { 26*531e725cSNickeau return 'formatting'; 27*531e725cSNickeau } 28*531e725cSNickeau 29*531e725cSNickeau /** 30*531e725cSNickeau * How Dokuwiki will add P element 31*531e725cSNickeau * 32*531e725cSNickeau * * 'normal' - The plugin can be used inside paragraphs 33*531e725cSNickeau * * 'block' - Open paragraphs need to be closed before plugin output - block should not be inside paragraphs 34*531e725cSNickeau * * 'stack' - Special case. Plugin wraps other paragraphs. - Stacks can contain paragraphs 35*531e725cSNickeau * 36*531e725cSNickeau * @see DokuWiki_Syntax_Plugin::getPType() 37*531e725cSNickeau */ 38*531e725cSNickeau function getPType() 39*531e725cSNickeau { 40*531e725cSNickeau return 'normal'; 41*531e725cSNickeau } 42*531e725cSNickeau 43*531e725cSNickeau /** 44*531e725cSNickeau * @return array 45*531e725cSNickeau * Allow which kind of plugin inside 46*531e725cSNickeau * 47*531e725cSNickeau * array('container', 'baseonly', 'formatting', 'substition', 'protected', 'disabled', 'paragraphs') 48*531e725cSNickeau * 49*531e725cSNickeau */ 50*531e725cSNickeau function getAllowedTypes() 51*531e725cSNickeau { 52*531e725cSNickeau return array(); 53*531e725cSNickeau } 54*531e725cSNickeau 55*531e725cSNickeau function getSort() 56*531e725cSNickeau { 57*531e725cSNickeau return 201; 58*531e725cSNickeau } 59*531e725cSNickeau 60*531e725cSNickeau 61*531e725cSNickeau /** 62*531e725cSNickeau * Create a pattern that will called this plugin 63*531e725cSNickeau * 64*531e725cSNickeau * @param string $mode 65*531e725cSNickeau * @see Doku_Parser_Mode::connectTo() 66*531e725cSNickeau */ 67*531e725cSNickeau function connectTo($mode) 68*531e725cSNickeau { 69*531e725cSNickeau /** 70*531e725cSNickeau * The instruction `calls` are not created via syntax 71*531e725cSNickeau * but dynamically via {@link action_plugin_combo_pluginanalytics::_extract_plugin_info()} 72*531e725cSNickeau */ 73*531e725cSNickeau 74*531e725cSNickeau } 75*531e725cSNickeau 76*531e725cSNickeau function postConnect() 77*531e725cSNickeau { 78*531e725cSNickeau 79*531e725cSNickeau /** 80*531e725cSNickeau * The instruction `calls` are not created via syntax 81*531e725cSNickeau * but dynamically via {@link action_plugin_combo_pluginanalytics::_extract_plugin_info()} 82*531e725cSNickeau */ 83*531e725cSNickeau 84*531e725cSNickeau } 85*531e725cSNickeau 86*531e725cSNickeau function handle($match, $state, $pos, Doku_Handler $handler) 87*531e725cSNickeau { 88*531e725cSNickeau 89*531e725cSNickeau /** 90*531e725cSNickeau * The instruction `calls` are not created via syntax 91*531e725cSNickeau * but dynamically via {@link action_plugin_combo_pluginanalytics::_extract_plugin_info()} 92*531e725cSNickeau */ 93*531e725cSNickeau 94*531e725cSNickeau } 95*531e725cSNickeau 96*531e725cSNickeau /** 97*531e725cSNickeau * Render the output 98*531e725cSNickeau * @param string $format 99*531e725cSNickeau * @param Doku_Renderer $renderer 100*531e725cSNickeau * @param array $data - what the function handle() return'ed 101*531e725cSNickeau * @return boolean - rendered correctly? (however, returned value is not used at the moment) 102*531e725cSNickeau * @see DokuWiki_Syntax_Plugin::render() 103*531e725cSNickeau * 104*531e725cSNickeau * 105*531e725cSNickeau */ 106*531e725cSNickeau function render($format, Doku_Renderer $renderer, $data) 107*531e725cSNickeau { 108*531e725cSNickeau 109*531e725cSNickeau if ($format == renderer_plugin_combo_analytics::RENDERER_FORMAT) { 110*531e725cSNickeau 111*531e725cSNickeau /** @var renderer_plugin_combo_analytics $renderer */ 112*531e725cSNickeau $state = $data[PluginUtility::STATE]; 113*531e725cSNickeau if ($state == DOKU_LEXER_SPECIAL) { 114*531e725cSNickeau $attributes = $data[PluginUtility::ATTRIBUTES]; 115*531e725cSNickeau $renderer->stats[Analytics::SYNTAX_COUNT] = $attributes; 116*531e725cSNickeau return true; 117*531e725cSNickeau } 118*531e725cSNickeau 119*531e725cSNickeau } 120*531e725cSNickeau 121*531e725cSNickeau return false; 122*531e725cSNickeau } 123*531e725cSNickeau 124*531e725cSNickeau 125*531e725cSNickeau} 126*531e725cSNickeau 127