array('quality' => 'high', # medium,low 'wmode' => 'transparent', # opaque 'bgcolor' => '#ffffff', 'menu' => 'false'), '#link' => "\$txt", '#block' => "\$obj\$link", )); Markup('flashmediaplayer', 'directives', "/\\(:((\\w+)-player\\s+(\\S+)(.*?)):\\)/i", "mu_flashmp"); function mu_flashmp($m) { extract($GLOBALS['MarkupToHTML']); return Keep(FlashMediaPlayer($pagename,$m[2],$m[3],$m[4])); } SDV($FlashMediaPlayerAction, 'mediadownload'); if(IsEnabled($EnableFlashMediaPlayerForceAttachement, 1) && $action == $FlashMediaPlayerAction) $HandleActions[$FlashMediaPlayerAction] = 'HandleFlashMediaPlayerDownload'; if(IsEnabled($EnableFlashMediaPlayerEnclosure, 1) && isset($FeedFmt)) { $FeedFmt['rss']['item']['mediaenclosure'] = 'FlashMediaPlayerRSSEnclosure'; # see http://www.xs4all.nl/~foz/mod_enclosure.html for some convenient specs # $FeedFmt['rdf']['item']['mediaenclosure'] = 'FlashMediaPlayerRDFEnclosure'; } function SRPF(&$opt, $flag, $def) { /*Set&RemoveParameterFlag*/ $ret = (@is_array($def['-']) && !is_int(array_search($flag, $def['-']))) || (@is_array($def['+']) && is_int(array_search($flag, $def['+']))); foreach(array('+' => true, '-' => false) as $o => $v) { $k = @array_search($flag, (array)$opt[$o]); if(is_int($k)) { unset($opt[$o][$k]); $ret = $v; } } return $ret; } function SRPV(&$opt, $arg, &$v, $n = NULL) { /*Set&RemoveParameterValue*/ if(@$opt[$arg]) { if(is_array($v)) $v[is_null($n) ? $arg : $n] = $opt[$arg]; else $v = $opt[$arg]; unset($opt[$arg]); } } function FlashMediaPlayer($pagename, $type, $tgt, $args = NULL) { global $FlashMediaPlayerInfo, $FarmPubDirUrl, $EnableFlashMediaPlayerExtraLinks, $EnableFlashMediaPlayerForceAttachement, $FlashMediaPlayerAction; if(is_null($FlashMediaPlayerInfo[$type])) return ''; $player = "$FarmPubDirUrl/{$FlashMediaPlayerInfo[$type]['swf']}"; if(!ResolveLinkResource($pagename, $tgt, $url, $txt, $upname, $filepath, $size, $mime)) return isset($filepath) ? $url : ''; $defaults = array_merge((array)($FlashMediaPlayerInfo['#defaults']), (array)($FlashMediaPlayerInfo[$type]['defaults'])); $opt = ParseArgs($args); SDV($EnableFlashMediaPlayerExtraLinks, 1); $link = $EnableFlashMediaPlayerExtraLinks && SRPF($opt, 'link', $defaults); $diag = SRPF($opt, 'diag', $defaults); $opt = array_merge($defaults, $opt); unset($opt['-'], $opt['+'], $opt['#'], $opt['']); $w = $opt['width']; $h = $opt['height']; SRPV($opt, 'align', $al); SRPV($opt, 'text', $txt); $globalparms = $FlashMediaPlayerInfo['#objparms']; SRPV($opt, 'objbgcolor', $globalparms, 'bgcolor'); SRPV($opt, 'wmode', $globalparms); SRPV($opt, 'menu', $globalparms); if(!$link) $link = ''; else { $linkurl = (isset($filepath) && IsEnabled($EnableFlashMediaPlayerForceAttachement, 1)) ? PUE(FmtPageName("{\$PageUrl}?action=$FlashMediaPlayerAction&upname=$upname", $pagename)) : $url; $link = str_replace(array('$url', '$txt'), array($linkurl, $txt), $FlashMediaPlayerInfo['#link']); } $parms = array(); foreach($opt as $n => $v) $parms[] = "$n=" . urlencode($v); $parms = implode("&", $parms); foreach(array_merge((array)($FlashMediaPlayerInfo[$type]['objparms']), $globalparms) as $n => $v) { if(is_array($v)) $v = implode("&", $v); $v = str_replace(array('$FarmPubDirUrl', '$url', '$txt', '$parms'), array($FarmPubDirUrl, $url, urlencode($txt), $parms), $v); $objparms[] = ""; } $objparms = implode("\n", $objparms); $out[] = "\n {$objparms} \n"; $out[] = ObjectAutoActivationWrapper($pagename, " {$objparms} FAILED (the browser should render some flash content here, not this text). "); $out[] = "\n\n\n\n"; $out = str_replace(array('$obj', '$link'), array(implode('', $out), $link), $FlashMediaPlayerInfo['#block']); if($diag) $out = '
'.htmlspecialchars($out).'
'; return $out; } function HandleFlashMediaPlayerDownload($pagename, $auth = 'read') { global $UploadExts, $DownloadDisposition; if (!function_exists('HandleDownload')) exit(); $DownloadDisposition = 'attachment'; HandleDownload($pagename, $auth); } #function FlashMediaPlayerRDFEnclosure($pagename, &$page, $k) { # return FlashMediaPlayerEnclosure($pagename, $page, # "\n"); #} function FlashMediaPlayerRSSEnclosure($pagename, &$page, $k) { return FlashMediaPlayerEnclosure($pagename, $page, "\n"); } function FlashMediaPlayerEnclosure($pagename, &$page, $fmt) { global $MarkupTable, $FlashMediaPlayerInfo; $page = ReadPage($pagename, READPAGE_CURRENT); PCache($pagename, $page); preg_match_all($MarkupTable['flashmediaplayer']['pat'], $page['text'], $markups, PREG_SET_ORDER); $encl = ''; foreach($markups as $m) { array_shift($m); list(,$type, $tgt, $args) = $m; if(is_null($FlashMediaPlayerInfo[$type])) continue; $defaults = array_merge((array)($FlashMediaPlayerInfo['#defaults']), (array)($FlashMediaPlayerInfo[$type]['defaults'])); $opt = ParseArgs($args); if(!SRPF($opt, 'feed', $defaults) || !ResolveLinkResource($pagename, $tgt, $url, $txt, $upname, $filepath, $size, $mime)) continue; $encl .= str_replace(array('$url', '$mime', '$size'), array($url, $mime, $size), $fmt); } return $encl; }