(\\L))([^\\s$UrlExcludeChars]+$VideoExtPattern)(\"([^\"]+$ImgExtPattern)\")?/",
"MxVideoAttach(\$pagename,\"\$m[1]\$m[2]\",'',\"poster=\$m[3]\")");
Markup('VideoAttach','<{(', "/(Attach:)(.+)($VideoExtPattern)(\"([^\"]+$ImgExtPattern)\")?/",
"{(video '$2$3' poster=$4 width=0)}
");
# Treat video tag similar to img, object, etc. for width height inline styling
SDV($imgTag, '(?:img|object|embed|video|div)');
}
Markup('videoattach_video', '<{(',
'/\\(:'.$VideoAttach_Directive.'\\s+(\\S.*?):\\)/',
"{(video $1)}");
# Handle wiki uploaded video
$MarkupExpr['video'] = 'MxVideoAttach($pagename, $args[0], $argp)';
function MxVideoAttach($orig_pagename, $source, $opts=NULL, $rawargs='') {
global $UploadFileFmt, $FmtV, $LinkUploadCreateFmt,
$EnableDirectDownload, $UploadPrefixFmt, $VideoTagFmt;
$defaults = array(
'controls' => 1,
'autoplay' => 0,
'loop' => 0,
'width' => '100%',
'height' => 0,
'muted' => 0,
'poster' => 0,
'type' => 0,
'preload' => 'auto',
'error' => ''
);
if ($rawargs) {
$rawopts = ParseArgs($rawargs);
$opts = array_merge($defaults, $rawopts);
} else {
$opts = array_merge($defaults, $opts);
}
$pagename=$orig_pagename;
$notsourceurl=1;
if (preg_match('/^[^:\/]+:.*/', $source)) {
$path = $source;
$notsourceurl=0;
} elseif (preg_match('!^(.*)/([^/]+)$!', $source, $match)) {
$pagename = MakePageName($pagename, $match[1]);
$path = $match[2];
} else {
$path = $source;
}
if ($notsourceurl) {
$upname = MakeUploadName($pagename, $path);
$encname = rawurlencode($upname);
$filepath = FmtPageName("$UploadFileFmt/$upname", $pagename);
$FmtV['$LinkUpload'] =
FmtPageName("\$PageUrl?action=upload&upname=$encname", $pagename);
$FmtV['$LinkText'] = $upname;
if (!file_exists($filepath))
return Keep(FmtPageName($LinkUploadCreateFmt, $pagename));
$path = PUE(FmtPageName(IsEnabled($EnableDirectDownload, 1)
? "$UploadUrlFmt$UploadPrefixFmt/$encname"
: "{\$PageUrl}?action=download&upname=$encname",
$pagename));
}
# Do same for poster if provided
$poster_path='';
$notposterurl=1;
if (@$opts['poster']) {
$poster_pagename=$orig_pagename;
if (preg_match('/^https?:.*/', @$opts['poster'])) {
$poster_path = @$opts['poster'];
$notposterurl=0;
} elseif (preg_match('!^(.*)/([^/]+)$!', @$opts['poster'], $poster_match)) {
$poster_pagename = MakePageName($poster_pagename, $poster_match[1]);
$poster_path = $poster_match[2];
} else {
$poster_path = @$opts['poster'];
}
if ($notposterurl) {
$poster_upname = MakeUploadName($poster_pagename, $poster_path);
$poster_encname = rawurlencode($poster_upname);
$poster_filepath = FmtPageName("$UploadFileFmt/$poster_upname", $poster_pagename);
$FmtV['$LinkUpload'] =
FmtPageName("\$PageUrl?action=upload&upname=$poster_encname", $poster_pagename);
$FmtV['$LinkText'] = $poster_upname;
if (!file_exists($poster_filepath))
return Keep(FmtPageName($LinkUploadCreateFmt, $poster_pagename));
$poster_path = PUE(FmtPageName(IsEnabled($EnableDirectDownload, 1)
? "$UploadUrlFmt$UploadPrefixFmt/$poster_encname"
: "{\$PageUrl}?action=download&upname=$poster_encname",
$poster_pagename));
}
}
if ($notsourceurl) {
if (@$opts['error'] == '') {
if ($poster_path) {
$error = '
';
} else {
$error = '' . $source . '';
}
} else {
$error = @$opts['error'];
}
}
if ($rawargs) {
$match = array();
if (preg_match('/^(https?:)(.*)/', $path, $match)) {
return Keep($GLOBALS['LinkFunctions'][$match[1]]($pagename,$match[1],$match[2],$poster_path,'44',
$GLOBALS['VideoTagFmt']),'L');
}
} else {
return Keep("");
}
}