video.flv [width,height] [[no]param] [param:value]}} * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Alexey Markov * @version 0.5 */ if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); define('FLOWPLAYER', DOKU_BASE.'lib/plugins/flowplayer/player/flowplayer-3.2.16.swf'); require_once(DOKU_PLUGIN.'syntax.php'); class syntax_plugin_flowplayer extends DokuWiki_Syntax_Plugin { function getType() { return 'substition'; } function getSort() { return 32; } function connectTo($mode) { $this->Lexer->addSpecialPattern('{{flowplayer>.*?}}',$mode,'plugin_flowplayer'); } function handle($match, $state, $pos, &$handler) { $width = 320; $height = 240; $params['scaling'] = '"fit"'; $params['autoPlay'] = 'false'; $params['urlEncoding'] = 'true'; list($url, $attr) = explode(" ", hsc(trim(substr($match, 13, -2))), 2); foreach (explode(" ", $attr) as $param) { if (preg_match('/(\d+),(\d+)/', $param, $res)) { $width = intval($res[1]); $height = intval($res[2]); } else if (preg_match('/([^:]+):(.*)$/', $param, $res)) $params[strtolower(substr($res[1], 0, 1)).substr($res[1], 1)] = '"'.$res[2].'"'; else if (preg_match('/no(\w+)/', $param, $res)) $params[strtolower(substr($res[1], 0, 1)).substr($res[1], 1)] = 'false'; else if (preg_match('/(\w+)/', $param, $res)) $params[strtolower(substr($res[1], 0, 1)).substr($res[1], 1)] = 'true'; } if (strpos($url,'://')===false) { $url = ml($url); } return array('url' => $url, 'width' => $width, 'height' => $height, 'fid' => uniqid(), 'attr' => $params); } function render($mode, &$renderer, $data) { if($mode == 'xhtml'){ $renderer->doc .= 'doc .= ' id="fp-'.$data['fid'].'"'; $renderer->doc .= ' data="'.FLOWPLAYER.'"'; $renderer->doc .= ' width="'.$data['width'].'"'; $renderer->doc .= ' height="'.$data['height'].'"'; $renderer->doc .= '>'."\n"; $renderer->doc .= ''."\n"; $renderer->doc .= ''."\n"; $renderer->doc .= 'doc .= 'config={"clip":{"url":"'.$data['url'].'"'; foreach ($data['attr'] as $key => $value) { $renderer->doc .= ',"'.$key.'":'.$value; } $renderer->doc .= "}}'".' />'."\n"; $renderer->doc .= ''.$this->getLang('GetFlash').''."\n"; $renderer->doc .= ''."\n"; return true; } return false; } }