Zeile 1115 | Zeile 1115 |
---|
$code = @highlight_string($str, true);
// Do the actual replacing.
|
$code = @highlight_string($str, true);
// Do the actual replacing.
|
| $code = preg_replace('#<pre><code style="color: \#000000">#i', "<code>", $code);
|
$code = preg_replace('#<code>\s*<span style="color: \#000000">\s*#i', "<code>", $code); $code = preg_replace("#</span>\s*</code>#", "</code>", $code);
|
$code = preg_replace('#<code>\s*<span style="color: \#000000">\s*#i', "<code>", $code); $code = preg_replace("#</span>\s*</code>#", "</code>", $code);
|
| $code = preg_replace("#</code>\s*</pre>#", "</code>", $code);
|
$code = preg_replace("#</span>(\r\n?|\n?)</code>#", "</span></code>", $code); $code = str_replace("\\", '\', $code); $code = str_replace('$', '$', $code);
| $code = preg_replace("#</span>(\r\n?|\n?)</code>#", "</span></code>", $code); $code = str_replace("\\", '\', $code); $code = str_replace('$', '$', $code);
|
Zeile 1124 | Zeile 1126 |
---|
if($added_open_tag) {
|
if($added_open_tag) {
|
$code = preg_replace("#<code><span style=\"color: \#([A-Z0-9]{6})\"><\?php( | )(<br />?)#", "<code><span style=\"color: #$1\">", $code);
| $code = preg_replace("#<code><span style=\"color: \#([A-Z0-9]{6})\"><\?php( | )(<br />|\n)#", "<code><span style=\"color: #$1\">", $code);
|
}
if($added_end_tag)
| }
if($added_end_tag)
|
Zeile 1469 | Zeile 1471 |
---|
*/ 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))
|
{ return "[video={$video}]{$url}[/video]";
| { return "[video={$video}]{$url}[/video]";
|
}
// 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) { return "[video={$video}]{$url}[/video]";
|
$parsed_url = @parse_url(urldecode($url)); if($parsed_url === false) { 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 } break; case "metacafe":
|
{ $id = $path[1]; // http://dai.ly/fds123 } break; 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": $id = $path[1]; // https://mixer.com/streamer
| } break; case "mixer": 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 } // Support for localized portals
|
{ $id = $path[1]; // http://xy.screen.yahoo.com/fds-123.html } // Support for localized portals
|
$domain = explode('.', $parsed_url['host']); if($domain[0] != 'screen' && preg_match('#^([a-z-]+)$#', $domain[0])) { $local = "{$domain[0]}."; } else
| if(!empty($parsed_url['host']))
|
{
|
{
|
$local = '';
| $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 } break; case "youtube":
|
{ $id = $path[1]; // http://vimeo.com/fds123 } break; 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 }
|
Zeile 1614 | Zeile 1632 |
---|
break; default: return "[video={$video}]{$url}[/video]";
|
break; default: return "[video={$video}]{$url}[/video]";
|
}
| }
|
if(empty($id)) {
| if(empty($id)) {
|
Zeile 1675 | Zeile 1693 |
---|
*/ function mycode_auto_url($message) {
|
*/ function mycode_auto_url($message) {
|
// Links should end with slashes, numbers, characters and braces but not with dots, commas or question marks // Don't create links within existing links (handled up-front in the callback function).
| /* * Don't create links: * - within existing links (any <a> HTML tag must be returned as-is) * - within HTML tags (must not be followed by a > character without a matching < after the link) * * Don't include: * - common punctuation characters around the link * - braces that likely constitute punctuation around the particular link (handled in the callback function) * - partial HTML entities (https://github.com/mybb/mybb/issues/4303) */
|
$message = preg_replace_callback( "~ <a\\s[^>]*>.*?</a>| # match and return existing links
| $message = preg_replace_callback( "~ <a\\s[^>]*>.*?</a>| # match and return existing links
|
Zeile 1686 | Zeile 1712 |
---|
(?:www|ftp)\. # common subdomain ) (?P<link>
|
(?:www|ftp)\. # common subdomain ) (?P<link>
|
(?:[^\/\"\s\<\[\.]+\.)*[\w]+ # host (?::[0-9]+)? # port (?:/(?:[^\"\s<\[&]|\[\]|&(?:amp|lt|gt);)*)? # path, query, fragment; exclude unencoded characters [\w\/\)]
| (?: \[[0-9a-fA-F:]+(?:%[0-9a-zA-Z._-]+)?\]| # IPv6 address with optional zone (?:\d{1,3}\.){3}\d{1,3}| # IPv4 address (?:[^\"\s<>\[\]:/?&#.]+\.)*[\w-]+ # domain name ) (?::[0-9]+)? # optional port number (?:/[^\"\s<>\[\]?&#]*)? # optional path (?:\?(?:[^\"\s<>\[\]?#]|\[\])*)? # optional query (?:\#[^\"\s<>\[\]]*)? # optional fragment ) (?: (?<=&)|(?<=<)|(?<=>)| # allow trailing entities (?<![.,:`'\"?!])(?<!&) # exclude other trailing punctuation
|
) (?![^<>]*?>) # not followed by unopened > (within HTML tags) ~iusx",
| ) (?![^<>]*?>) # not followed by unopened > (within HTML tags) ~iusx",
|
Zeile 1733 | Zeile 1768 |
---|
$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); }
|