*/ //--- Exported code include_once(DOKU_PLUGIN.'googleads/code.php'); //--- Exported code // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'syntax.php'); /** * All DokuWiki plugins to extend the parser/rendering mechanism * need to inherit from this class */ class syntax_plugin_googleads extends DokuWiki_Syntax_Plugin { /** * return some info */ function getInfo(){ return array( 'author' => 'Dirk Moeller', 'email' => 'dirk@systemengineers.de', 'date' => '2007-08-14', 'name' => 'Google Adsense Plugin', 'desc' => 'Plugin to embed your Google Adsense code in your site. Based on code from Bernd Zeimetz and Terence J.', 'url' => 'http://www.systemengineers.de/plugins/googleads', ); } function getType(){ return 'substition'; } function getPType(){ return 'block'; } function getSort(){ return 160; } function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{googleads>[^}]*\}\}',$mode,'plugin_googleads'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ $match = substr($match,12,-2); // Strip markup return array($state,explode('|',$match)); ////////////////// /* switch ($state) { case DOKU_LEXER_ENTER: $data = $this->_getstyle(trim(substr($match, 4, -1))); if (substr($match, -1) == '|') { $this->title_mode = true; return array('title_open',$data); } else { return array('box_open',$data); } case DOKU_LEXER_MATCHED: if ($this->title_mode) { $this->title_mode = false; return array('box_open',''); } else { return array('data', $match); } case DOKU_LEXER_UNMATCHED: return array('data', $match); case DOKU_LEXER_EXIT: $data = trim(substr($match, 5, -1)); $title = ($data && $data{0} == "|") ? substr($data,1) : ''; return array('box_close', $title); } return false; */ ////////////////// } /** * Create output */ function render($mode, &$renderer, $data) { if($mode == 'xhtml'){ // prevent caching (to ensure ACL conformity) // TODO sometimes: make more intelligent $renderer->info['cache'] = false; list($state, $match) = $data; list($id,$param1) = $match; //$style = $this->_getstyle(trim($param1)); $style = gads_getstyle(trim($param1)); //$renderer->doc .= 'debug(id=' . $id . ' param1=' . $param1 . ')
'; //$renderer->doc .= '
'; $renderer->doc .= gads_showADS($id, $style); return true; } return false; } /* function _getstyle($str) { if (!strlen($str)) return array(); $styles = array(); $tokens = preg_split('/\s+/', $str, 9); // limit is defensive foreach ($tokens as $token) { if (preg_match('/^\d*\.?\d+(%|px|em|ex|pt|cm|mm|pi|in)$/', $token)) { $styles['width'] = $token; continue; } // restrict token (class names) characters to prevent any malicious data if (preg_match('/[^A-Za-z0-9_-]/',$token)) continue; $styles['class'] = (isset($styles['class']) ? $styles['class'].' ' : '').$token; } return $styles; } */ } ?>