soundfile.mp3}} * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Michael Klier */ // 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'); if(!defined('DOKU_LF')) define('DOKU_LF',"\n"); /** * All DokuWiki plugins to extend the parser/rendering mechanism * need to inherit from this class */ class syntax_plugin_mp3play extends DokuWiki_Syntax_Plugin { /** * Syntax Type * * Needs to return one of the mode types defined in $PARSER_MODES in parser.php */ function getType() { return 'substition'; } function getPType() { return 'block'; } function getSort() { return 309; } /** * Connect pattern to lexer */ function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{mp3play>.*?\}\}',$mode,'plugin_mp3play'); } /** * Handle the match */ function handle($match, $state, $pos, Doku_Handler $handler){ $match = substr($match, 10, -2); $data = array(); if(file_exists(mediaFN($mp3))) { $data = array(); $data['loop'] = 0; $data['autostart'] = 0; list($mp3, $params) = explode('?', $match); $data['mp3'] = $mp3; $params = explode('&', $params); if($params) { foreach($params as $param) { switch($param) { case 'loop': $data['loop'] = 1; break; case 'autostart': $data['autostart'] = 1; break; } } } return $data; } else { return array(); } } /** * Create output */ function render($mode, Doku_Renderer $renderer, $data) { global $ID; if(empty($data['mp3'])) return; if($mode == 'xhtml') { $renderer->info['cache'] = false; $params = ''; $color_cfg = DOKU_PLUGIN . 'mp3play/colors.conf'; if(@file_exists($color_cfg)) { $colors = array(); $lines = @file($color_cfg); foreach($lines as $line) { $line = preg_replace("/\ *#.*$/", '', $line); $line = trim($line); if(empty($line)) continue; list($key, $color) = explode('=', $line); $colors[trim($key)] = trim($color); } if(!empty($colors)) { foreach($colors as $key => $color) { $params .= $key . '=0x' . $color . '&'; } } } $params .= ($data['loop']) ? 'loop=yes&' : 'loop=no&'; $params .= ($data['autostart']) ? 'autostart=yes&' : 'autostart=no&'; $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= ' ' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; } } } // vim:ts=4:sw=4:et:enc=utf-8: