Zeile 1469 | Zeile 1469 |
---|
*/ function mycode_parse_video($video, $url) {
|
*/ function mycode_parse_video($video, $url) {
|
global $templates;
| global $mybb, $templates;
|
if(empty($video) || empty($url)) {
| if(empty($video) || empty($url)) {
|
Zeile 1479 | Zeile 1479 |
---|
// Check URL is a valid URL first, as `parse_url` doesn't check validity. if(false === filter_var($url, FILTER_VALIDATE_URL)) {
|
// Check URL is a valid URL first, as `parse_url` doesn't check validity. if(false === filter_var($url, FILTER_VALIDATE_URL)) {
|
return "[video={$video}]{$url}[/video]"; }
| return "[video={$video}]{$url}[/video]"; }
|
$parsed_url = @parse_url(urldecode($url)); if($parsed_url === false)
|
$parsed_url = @parse_url(urldecode($url)); if($parsed_url === false)
|
{
| {
|
return "[video={$video}]{$url}[/video]";
|
return "[video={$video}]{$url}[/video]";
|
}
$fragments = array(); if($parsed_url['fragment']) { $fragments = explode("&", $parsed_url['fragment']); }
if($video == "liveleak") {
| }
$bbdomain = parse_url($mybb->settings['bburl'], PHP_URL_HOST);
$fragments = empty($parsed_url['fragment']) ? array() : explode("&", $parsed_url['fragment']);
if($video == "liveleak" && !empty($parsed_url['query'])) {
|
// The query part can start with any alphabet, but set only 'i' to catch in index key later $parsed_url['query'] = "i".substr($parsed_url['query'], 1);
|
// The query part can start with any alphabet, but set only 'i' to catch in index key later $parsed_url['query'] = "i".substr($parsed_url['query'], 1);
|
}
| }
|
|
|
$queries = explode("&", $parsed_url['query']);
| $queries = empty($parsed_url['query']) ? array() : explode("&", $parsed_url['query']);
|
$input = array(); foreach($queries as $query) {
|
$input = array(); foreach($queries as $query) {
|
list($key, $value) = explode("=", $query); $key = str_replace("amp;", "", $key); $input[$key] = $value;
| $query_array = explode("=", $query); if(count($query_array) == 2) { list($key, $value) = $query_array; $key = str_replace("amp;", "", $key); $input[$key] = $value; }
|
}
|
}
|
$path = explode('/', $parsed_url['path']);
| $path = empty($parsed_url['path']) ? array() : explode('/', $parsed_url['path']);
|
switch($video) { case "dailymotion":
|
switch($video) { case "dailymotion":
|
if(isset($path[2]))
| if(!empty($path[2]))
|
{ list($id) = explode('_', $path[2], 2); // http://www.dailymotion.com/video/fds123_title-goes-here
|
{ list($id) = explode('_', $path[2], 2); // http://www.dailymotion.com/video/fds123_title-goes-here
|
} else
| } elseif(!empty($path[1]))
|
{ $id = $path[1]; // http://dai.ly/fds123
|
{ $id = $path[1]; // http://dai.ly/fds123
|
} break;
| } break;
|
case "metacafe":
|
case "metacafe":
|
$id = $path[2]; // http://www.metacafe.com/watch/fds123/title_goes_here/ $title = htmlspecialchars_uni($path[3]);
| if(!empty($path[2])) { $id = $path[2]; // http://www.metacafe.com/watch/fds123/title_goes_here/ }
|
break; case "myspacetv":
|
break; case "myspacetv":
|
$id = $path[4]; // http://www.myspace.com/video/fds/fds/123
| if(!empty($path[4])) { $id = $path[4]; // http://www.myspace.com/video/fds/fds/123 }
|
break; case "facebook":
|
break; case "facebook":
|
if(isset($input['v']))
| if(!empty($input['v']))
|
{ $id = $input['v']; // http://www.facebook.com/video/video.php?v=123 }
|
{ $id = $input['v']; // http://www.facebook.com/video/video.php?v=123 }
|
elseif(substr($path[3], 0, 3) == 'vb.')
| elseif(!empty($path[3]) && substr($path[3], 0, 3) == 'vb.' && !empty($path[4]))
|
{ $id = $path[4]; // https://www.facebook.com/fds/videos/vb.123/123/ }
|
{ $id = $path[4]; // https://www.facebook.com/fds/videos/vb.123/123/ }
|
else
| elseif(!empty($path[3]))
|
{ $id = $path[3]; // https://www.facebook.com/fds/videos/123/
|
{ $id = $path[3]; // https://www.facebook.com/fds/videos/123/
|
}
| }
|
break; case "mixer":
|
break; case "mixer":
|
$id = $path[1]; // https://mixer.com/streamer
| if(!empty($path[1])) { $id = $path[1]; // https://mixer.com/streamer }
|
break; case "liveleak":
|
break; case "liveleak":
|
$id = $input['i']; // http://www.liveleak.com/view?i=123
| if(!empty($input['i'])) { $id = $input['i']; // http://www.liveleak.com/view?i=123 }
|
break; case "yahoo":
|
break; case "yahoo":
|
if(isset($path[2]))
| if(!empty($path[2]))
|
{ $id = $path[2]; // http://xy.screen.yahoo.com/fds/fds-123.html
|
{ $id = $path[2]; // http://xy.screen.yahoo.com/fds/fds-123.html
|
} else {
| } elseif(!empty($path[1])) {
|
$id = $path[1]; // http://xy.screen.yahoo.com/fds-123.html
|
$id = $path[1]; // http://xy.screen.yahoo.com/fds-123.html
|
}
| }
|
// Support for localized portals
|
// Support for localized portals
|
$domain = explode('.', $parsed_url['host']); if($domain[0] != 'screen' && preg_match('#^([a-z-]+)$#', $domain[0])) { $local = "{$domain[0]}."; } else { $local = ''; }
| if(!empty($parsed_url['host'])) { $domain = explode('.', $parsed_url['host']); if($domain[0] != 'screen' && preg_match('#^([a-z-]+)$#', $domain[0])) { $local = "{$domain[0]}."; } else { $local = ''; } }
|
break; case "vimeo":
|
break; case "vimeo":
|
if(isset($path[3])) {
| if(!empty($path[3])) {
|
$id = $path[3]; // http://vimeo.com/fds/fds/fds123
|
$id = $path[3]; // http://vimeo.com/fds/fds/fds123
|
} else {
| } elseif(!empty($path[1])) {
|
$id = $path[1]; // http://vimeo.com/fds123
|
$id = $path[1]; // http://vimeo.com/fds123
|
} break;
| } break;
|
case "youtube":
|
case "youtube":
|
if($fragments[0])
| if(!empty($fragments[0]))
|
{ $id = str_replace('!v=', '', $fragments[0]); // http://www.youtube.com/watch#!v=fds123 }
|
{ $id = str_replace('!v=', '', $fragments[0]); // http://www.youtube.com/watch#!v=fds123 }
|
elseif($input['v'])
| elseif(!empty($input['v']))
|
{ $id = $input['v']; // http://www.youtube.com/watch?v=fds123 }
|
{ $id = $input['v']; // http://www.youtube.com/watch?v=fds123 }
|
else
| elseif(!empty($path[1]))
|
{ $id = $path[1]; // http://www.youtu.be/fds123
|
{ $id = $path[1]; // http://www.youtu.be/fds123
|
} break;
| } break;
|
case "twitch": if(count($path) >= 3 && $path[1] == 'videos') {
| case "twitch": if(count($path) >= 3 && $path[1] == 'videos') {
|
Zeile 1602 | Zeile 1618 |
---|
$id = 'video=v'.$path[2]; } elseif(count($path) >= 4 && $path[2] == 'v')
|
$id = 'video=v'.$path[2]; } elseif(count($path) >= 4 && $path[2] == 'v')
|
{
| {
|
// Direct video embed with URL like: https://www.twitch.tv/waypoint/v/179723472 $id = 'video=v'.$path[3];
|
// Direct video embed with URL like: https://www.twitch.tv/waypoint/v/179723472 $id = 'video=v'.$path[3];
|
}
| }
|
elseif(count($path) >= 2) { // Channel (livestream) embed with URL like: https://twitch.tv/waypoint
| elseif(count($path) >= 2) { // Channel (livestream) embed with URL like: https://twitch.tv/waypoint
|
Zeile 1614 | Zeile 1630 |
---|
break; default: return "[video={$video}]{$url}[/video]";
|
break; default: return "[video={$video}]{$url}[/video]";
|
}
| }
|
if(empty($id)) { return "[video={$video}]{$url}[/video]";
|
if(empty($id)) { return "[video={$video}]{$url}[/video]";
|
}
$id = $this->encode_url($id);
| }
$id = $this->encode_url($id);
|
eval("\$video_code = \"".$templates->get("video_{$video}_embed", 1, 0)."\";"); return $video_code; }
| eval("\$video_code = \"".$templates->get("video_{$video}_embed", 1, 0)."\";"); return $video_code; }
|
Zeile 1733 | Zeile 1749 |
---|
$last_char = my_substr($matches['link'], -1); while($last_char == '.' || $last_char == ',' || $last_char == '?' || $last_char == '!') {
|
$last_char = my_substr($matches['link'], -1); while($last_char == '.' || $last_char == ',' || $last_char == '?' || $last_char == '!') {
|
$matches[4] = my_substr($matches['link'], 0, -1);
| $matches['link'] = my_substr($matches['link'], 0, -1);
|
$external = $last_char.$external; $last_char = my_substr($matches['link'], -1); }
| $external = $last_char.$external; $last_char = my_substr($matches['link'], -1); }
|