*/
// must be run within Dokuwiki
if (! defined ( 'DOKU_INC' ))
die ();
class syntax_plugin_crossdbsqlclient_crossdbsqlclient extends DokuWiki_Syntax_Plugin {
/**
*
* @return string Syntax mode type
*/
public function getType() {
return 'container';
}
/**
*
* @return string Paragraph type
*/
public function getPType() {
return 'block';
}
/**
*
* @return int Sort order - Low numbers go before high numbers
*/
public function getSort() {
return 260;
}
/**
* Connect lookup pattern to lexer.
*
* @param string $mode
* Parser mode
*/
public function connectTo($mode) {
// case 1: crossdbsqlclient
// case 2: crossdbsqlclient>type|server|database|user|password
$this->Lexer->addSpecialPattern ( '\{\{crossdbsqlclient\}\}', $mode, 'plugin_crossdbsqlclient_crossdbsqlclient' );
$this->Lexer->addSpecialPattern ( '\{\{crossdbsqlclient>.+\|.+\|.+\|.+\|.+\}\}', $mode, 'plugin_crossdbsqlclient_crossdbsqlclient' );
}
// public function postConnect() {
// $this->Lexer->addExitPattern('','plugin_crossdbsqlclient_crossdbsqlclient');
// }
/**
* Handle matches of the crossdbsqlclient syntax
*
* @param string $match
* The match of the syntax
* @param int $state
* The state of the handler
* @param int $pos
* The position in the document
* @param Doku_Handler $handler
* The handler
* @return array Data for the renderer
*/
public function handle($match, $state, $pos, Doku_Handler &$handler) {
$pos = strpos($match, "{{crossdbsqlclient>");
if($pos !== FALSE){
$data = explode("|",preg_replace("/{{crossdbsqlclient>(.*?)}}/","\\1",$match));
return $data;
}
$data = array ();
return $data;
}
/**
* Render xhtml output or metadata
*
* @param string $mode
* Renderer mode (supported modes: xhtml)
* @param Doku_Renderer $renderer
* The renderer
* @param array $data
* The data from the handler() function
* @return bool If rendering was successful.
*/
public function render($mode, Doku_Renderer &$renderer, $data) {
if ($mode != 'xhtml')
return false;
$renderer->info ['cache'] = false;
if (! $this->isAuthorized ()) {
echo '