Vergleich inc/class_parser.php - 1.8.8 - 1.8.13

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 165Zeile 165
			$replace = array("\n", "\n");
$message = str_replace($find, $replace, $message);
}

			$replace = array("\n", "\n");
$message = str_replace($find, $replace, $message);
}

 

$message = $plugins->run_hooks("parse_message_htmlsanitized", $message);


// Replace "me" code and slaps if we have a username
if(!empty($this->options['me_username']) && $mybb->settings['allowmemycode'] == 1)
{
global $lang;


// Replace "me" code and slaps if we have a username
if(!empty($this->options['me_username']) && $mybb->settings['allowmemycode'] == 1)
{
global $lang;





			$message = preg_replace('#(>|^|\r|\n)/me ([^\r\n<]*)#i', "\\1<span style=\"color: red;\" class=\"mycode_me\">* {$this->options['me_username']} \\2</span>", $message);
$message = preg_replace('#(>|^|\r|\n)/slap ([^\r\n<]*)#i', "\\1<span style=\"color: red;\" class=\"mycode_slap\">* {$this->options['me_username']} {$lang->slaps} \\2 {$lang->with_trout}</span>", $message);
}

			$message = preg_replace('#(>|^|\r|\n)/me ([^\r\n<]*)#i', "\\1<span style=\"color: red;\" class=\"mycode_me\">* {$this->options['me_username']} \\2</span>", $message);
$message = preg_replace('#(>|^|\r|\n)/slap ([^\r\n<]*)#i', "\\1<span style=\"color: red;\" class=\"mycode_slap\">* {$this->options['me_username']} {$lang->slaps} \\2 {$lang->with_trout}</span>", $message);
}

 

$message = $plugins->run_hooks("parse_message_me_mycode", $message);


// If we can, parse smilies
if(!empty($this->options['allow_smilies']))


// If we can, parse smilies
if(!empty($this->options['allow_smilies']))

Zeile 300Zeile 304

if($mybb->settings['allowlinkmycode'] == 1)
{


if($mybb->settings['allowlinkmycode'] == 1)
{

			$callback_mycode['url_simple']['regex'] = "#\[url\]([a-z]+?://)([^\r\n\"<]+?)\[/url\]#si";

			$callback_mycode['url_simple']['regex'] = "#\[url\]((?!javascript)[a-z]+?://)([^\r\n\"<]+?)\[/url\]#si";

			$callback_mycode['url_simple']['replacement'] = array($this, 'mycode_parse_url_callback1');


			$callback_mycode['url_simple']['replacement'] = array($this, 'mycode_parse_url_callback1');


			$callback_mycode['url_simple2']['regex'] = "#\[url\]([^\r\n\"<]+?)\[/url\]#i";

			$callback_mycode['url_simple2']['regex'] = "#\[url\]((?!javascript:)[^\r\n\"<]+?)\[/url\]#i";

			$callback_mycode['url_simple2']['replacement'] = array($this, 'mycode_parse_url_callback2');


			$callback_mycode['url_simple2']['replacement'] = array($this, 'mycode_parse_url_callback2');


			$callback_mycode['url_complex']['regex'] = "#\[url=([a-z]+?://)([^\r\n\"<]+?)\](.+?)\[/url\]#si";

			$callback_mycode['url_complex']['regex'] = "#\[url=((?!javascript)[a-z]+?://)([^\r\n\"<]+?)\](.+?)\[/url\]#si";

			$callback_mycode['url_complex']['replacement'] = array($this, 'mycode_parse_url_callback1');


			$callback_mycode['url_complex']['replacement'] = array($this, 'mycode_parse_url_callback1');


			$callback_mycode['url_complex2']['regex'] = "#\[url=([^\r\n\"<]+?)\](.+?)\[/url\]#si";

			$callback_mycode['url_complex2']['regex'] = "#\[url=((?!javascript:)[^\r\n\"<]+?)\](.+?)\[/url\]#si";

			$callback_mycode['url_complex2']['replacement'] = array($this, 'mycode_parse_url_callback2');

++$callback_count;

			$callback_mycode['url_complex2']['replacement'] = array($this, 'mycode_parse_url_callback2');

++$callback_count;

Zeile 317Zeile 321

if($mybb->settings['allowemailmycode'] == 1)
{


if($mybb->settings['allowemailmycode'] == 1)
{

			$callback_mycode['email_simple']['regex'] = "#\[email\](.*?)\[/email\]#i";

			$callback_mycode['email_simple']['regex'] = "#\[email\]((?:[a-zA-Z0-9-_\+\.]+?)@[a-zA-Z0-9-]+\.[a-zA-Z0-9\.-]+(?:\?.*?)?)\[/email\]#i";

			$callback_mycode['email_simple']['replacement'] = array($this, 'mycode_parse_email_callback');


			$callback_mycode['email_simple']['replacement'] = array($this, 'mycode_parse_email_callback');


			$callback_mycode['email_complex']['regex'] = "#\[email=(.*?)\](.*?)\[/email\]#i";

			$callback_mycode['email_complex']['regex'] = "#\[email=((?:[a-zA-Z0-9-_\+\.]+?)@[a-zA-Z0-9-]+\.[a-zA-Z0-9\.-]+(?:\?.*?)?)\](.*?)\[/email\]#i";

			$callback_mycode['email_complex']['replacement'] = array($this, 'mycode_parse_email_callback');

++$callback_count;

			$callback_mycode['email_complex']['replacement'] = array($this, 'mycode_parse_email_callback');

++$callback_count;

Zeile 632Zeile 636
				}

// Take into account the position offset for our last replacement.

				}

// Take into account the position offset for our last replacement.

				$index = substr_count($badword['badword'], '*')+2;

 
				$badword['badword'] = str_replace('\*', '([a-zA-Z0-9_]{1})', preg_quote($badword['badword'], "#"));

// Ensure we run the replacement enough times but not recursively (i.e. not while(preg_match..))

				$badword['badword'] = str_replace('\*', '([a-zA-Z0-9_]{1})', preg_quote($badword['badword'], "#"));

// Ensure we run the replacement enough times but not recursively (i.e. not while(preg_match..))

				$count = preg_match_all("#(^|\W)".$badword['badword']."(\W|$)#i", $message, $matches);
for($i=0; $i < $count; ++$i)
{
$message = preg_replace("#(^|\W)".$badword['badword']."(\W|$)#i", "\\1".$badword['replacement'].'\\'.$index, $message);
}

				$message = preg_replace("#(^|\W)".$badword['badword']."(?=\W|$)#i", '\1'.$badword['replacement'], $message);





			}
}
if(!empty($this->options['strip_tags']))

			}
}
if(!empty($this->options['strip_tags']))

Zeile 795Zeile 794
		$message = preg_replace("#(^<br(\s?)(\/?)>|<br(\s?)(\/?)>$)#i", "", $message);

if(!$message)

		$message = preg_replace("#(^<br(\s?)(\/?)>|<br(\s?)(\/?)>$)#i", "", $message);

if(!$message)

		{

		{

			return '';
}


			return '';
}


Zeile 814Zeile 813
			else
{
eval("\$linkback = \" ".$templates->get("postbit_gotopost", 1, 0)."\";");

			else
{
eval("\$linkback = \" ".$templates->get("postbit_gotopost", 1, 0)."\";");

			}


			}


			$username = preg_replace("#(?:&quot;|\"|')? pid=(?:&quot;|\"|')?[0-9]+[\"']?(?:&quot;|\"|')?#i", '', $username);
$delete_quote = false;
}

			$username = preg_replace("#(?:&quot;|\"|')? pid=(?:&quot;|\"|')?[0-9]+[\"']?(?:&quot;|\"|')?#i", '', $username);
$delete_quote = false;
}

Zeile 826Zeile 825
		{
if($match[1] < TIME_NOW)
{

		{
if($match[1] < TIME_NOW)
{

				$postdate = my_date('relative', (int)$match[1]);








				if($text_only)
{
$postdate = my_date('normal', (int)$match[1]);
}
else
{
$postdate = my_date('relative', (int)$match[1]);
}

				$date = " ({$postdate})";
}
$username = preg_replace("#(?:&quot;|\"|')? dateline=(?:&quot;|\"|')?[0-9]+(?:&quot;|\"|')?#i", '', $username);

				$date = " ({$postdate})";
}
$username = preg_replace("#(?:&quot;|\"|')? dateline=(?:&quot;|\"|')?[0-9]+(?:&quot;|\"|')?#i", '', $username);

Zeile 873Zeile 879

/**
* Parses quotes with post id and/or dateline.


/**
* Parses quotes with post id and/or dateline.

	*
* @param array $matches Matches.
* @return string The parsed message.

	*
* @param array $matches Matches.
* @return string The parsed message.

	*/
function mycode_parse_post_quotes_callback2($matches)
{
return $this->mycode_parse_post_quotes($matches[4],$matches[2].$matches[3], true);
}

	*/
function mycode_parse_post_quotes_callback2($matches)
{
return $this->mycode_parse_post_quotes($matches[4],$matches[2].$matches[3], true);
}





	/**
* Parses code MyCode.
*

	/**
* Parses code MyCode.
*

Zeile 890Zeile 896
	* @return string The parsed message.
*/
function mycode_parse_code($code, $text_only=false)

	* @return string The parsed message.
*/
function mycode_parse_code($code, $text_only=false)

	{
global $lang, $templates;

if($text_only == true)

	{
global $lang, $templates;

if($text_only == true)

		{
return "\n{$lang->code}\n--\n{$code}\n--\n";

		{
return "\n{$lang->code}\n--\n{$code}\n--\n";

		}

		}


// Clean the string before parsing.
$code = preg_replace('#^(\t*)(\n|\r|\0|\x0B| )*#', '\\1', $code);


// Clean the string before parsing.
$code = preg_replace('#^(\t*)(\n|\r|\0|\x0B| )*#', '\\1', $code);

Zeile 913Zeile 919
		$code = str_replace('\\', '&#92;', $code);
$code = str_replace("\t", '&nbsp;&nbsp;&nbsp;&nbsp;', $code);
$code = str_replace(" ", '&nbsp;&nbsp;', $code);

		$code = str_replace('\\', '&#92;', $code);
$code = str_replace("\t", '&nbsp;&nbsp;&nbsp;&nbsp;', $code);
$code = str_replace(" ", '&nbsp;&nbsp;', $code);





		eval("\$mycode_code = \"".$templates->get("mycode_code", 1, 0)."\";");
return $mycode_code;
}

		eval("\$mycode_code = \"".$templates->get("mycode_code", 1, 0)."\";");
return $mycode_code;
}

Zeile 951Zeile 957
		$str = rtrim($str);

$original = preg_replace('#^\t*#', '', $str);

		$str = rtrim($str);

$original = preg_replace('#^\t*#', '', $str);





		if(empty($original))

		if(empty($original))

		{

		{

			return;

			return;

		}

		}


// See if open and close tags are provided.
$added_open_tag = false;
if(!preg_match("#^\s*<\?#si", $str))


// See if open and close tags are provided.
$added_open_tag = false;
if(!preg_match("#^\s*<\?#si", $str))

		{

		{

			$added_open_tag = true;
$str = "<?php \n".$str;
}

			$added_open_tag = true;
$str = "<?php \n".$str;
}

Zeile 970Zeile 976
		{
$added_end_tag = true;
$str = $str." \n?>";

		{
$added_end_tag = true;
$str = $str." \n?>";

		}


		}


		$code = @highlight_string($str, true);

// Do the actual replacing.

		$code = @highlight_string($str, true);

// Do the actual replacing.

Zeile 1055Zeile 1061
			$name = htmlspecialchars_uni($name);
}


			$name = htmlspecialchars_uni($name);
}


		$nofollow = '';

 
		if(!empty($this->options['nofollow_on']))
{

		if(!empty($this->options['nofollow_on']))
{

			$nofollow = " rel=\"nofollow\"";





			$rel = " rel=\"noopener nofollow\"";
}
else
{
$rel = " rel=\"noopener\"";

		}

// Fix some entities in URLs
$entities = array('$' => '%24', '&#36;' => '%24', '^' => '%5E', '`' => '%60', '[' => '%5B', ']' => '%5D', '{' => '%7B', '}' => '%7D', '"' => '%22', '<' => '%3C', '>' => '%3E', ' ' => '%20');
$url = str_replace(array_keys($entities), array_values($entities), $url);

		}

// Fix some entities in URLs
$entities = array('$' => '%24', '&#36;' => '%24', '^' => '%5E', '`' => '%60', '[' => '%5B', ']' => '%5D', '{' => '%7B', '}' => '%7D', '"' => '%22', '<' => '%3C', '>' => '%3E', ' ' => '%20');
$url = str_replace(array_keys($entities), array_values($entities), $url);





		$name = preg_replace("#&amp;\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode

eval("\$mycode_url = \"".$templates->get("mycode_url", 1, 0)."\";");
return $mycode_url;

		$name = preg_replace("#&amp;\#([0-9]+);#si", "&#$1;", $name); // Fix & but allow unicode

eval("\$mycode_url = \"".$templates->get("mycode_url", 1, 0)."\";");
return $mycode_url;

	}


	}


	/**
* Parses URL MyCode.
*

	/**
* Parses URL MyCode.
*

Zeile 1107Zeile 1116
	 * @param string $url The URL to the image
* @param array $dimensions Optional array of dimensions
* @param string $align

	 * @param string $url The URL to the image
* @param array $dimensions Optional array of dimensions
* @param string $align

	 * @return string
*/

	 * @return string
*/

	function mycode_parse_img($url, $dimensions=array(), $align='')
{
global $lang, $templates;

	function mycode_parse_img($url, $dimensions=array(), $align='')
{
global $lang, $templates;

Zeile 1176Zeile 1185
	function mycode_parse_img_callback2($matches)
{
return $this->mycode_parse_img($matches[4], array($matches[1], $matches[2]));

	function mycode_parse_img_callback2($matches)
{
return $this->mycode_parse_img($matches[4], array($matches[1], $matches[2]));

	}

/**
* Parses IMG MyCode.
*
* @param array $matches Matches.
* @return string Image code.
*/

	}

/**
* Parses IMG MyCode.
*
* @param array $matches Matches.
* @return string Image code.
*/

	function mycode_parse_img_callback3($matches)
{
return $this->mycode_parse_img($matches[3], array(), $matches[1]);

	function mycode_parse_img_callback3($matches)
{
return $this->mycode_parse_img($matches[3], array(), $matches[1]);

Zeile 1198Zeile 1207
	function mycode_parse_img_callback4($matches)
{
return $this->mycode_parse_img($matches[5], array($matches[1], $matches[2]), $matches[3]);

	function mycode_parse_img_callback4($matches)
{
return $this->mycode_parse_img($matches[5], array($matches[1], $matches[2]), $matches[3]);

	}

/**
* Parses IMG MyCode disabled.
*

	}

/**
* Parses IMG MyCode disabled.
*

	 * @param string $url The URL to the image
* @return string
*/

	 * @param string $url The URL to the image
* @return string
*/

Zeile 1213Zeile 1222
		$url = str_replace("\n", "", $url);
$url = str_replace("\r", "", $url);
$url = str_replace("\'", "'", $url);

		$url = str_replace("\n", "", $url);
$url = str_replace("\r", "", $url);
$url = str_replace("\'", "'", $url);





		$image = $lang->sprintf($lang->posted_image, $this->mycode_parse_url($url));
return $image;

		$image = $lang->sprintf($lang->posted_image, $this->mycode_parse_url($url));
return $image;

	}

/**
* Parses IMG MyCode disabled.
*
* @param array $matches Matches.

	}

/**
* Parses IMG MyCode disabled.
*
* @param array $matches Matches.

	 * @return string Image code.
*/
function mycode_parse_img_disabled_callback1($matches)

	 * @return string Image code.
*/
function mycode_parse_img_disabled_callback1($matches)

Zeile 1238Zeile 1247
	function mycode_parse_img_disabled_callback2($matches)
{
return $this->mycode_parse_img_disabled($matches[4]);

	function mycode_parse_img_disabled_callback2($matches)
{
return $this->mycode_parse_img_disabled($matches[4]);

	}

/**
* Parses IMG MyCode disabled.
*
* @param array $matches Matches.
* @return string Image code.
*/

	}

/**
* Parses IMG MyCode disabled.
*
* @param array $matches Matches.
* @return string Image code.
*/

	function mycode_parse_img_disabled_callback3($matches)
{
return $this->mycode_parse_img_disabled($matches[3]);

	function mycode_parse_img_disabled_callback3($matches)
{
return $this->mycode_parse_img_disabled($matches[3]);

	}


	}


	/**
* Parses IMG MyCode disabled.
*

	/**
* Parses IMG MyCode disabled.
*

Zeile 1260Zeile 1269
	function mycode_parse_img_disabled_callback4($matches)
{
return $this->mycode_parse_img_disabled($matches[5]);

	function mycode_parse_img_disabled_callback4($matches)
{
return $this->mycode_parse_img_disabled($matches[5]);

	}

/**
* Parses email MyCode.

	}

/**
* Parses email MyCode.

	*
* @param string $email The email address to link to.
* @param string $name The name for the link.

	*
* @param string $email The email address to link to.
* @param string $name The name for the link.

Zeile 1399Zeile 1408
				break;
case "vimeo":
if(isset($path[3]))

				break;
case "vimeo":
if(isset($path[3]))

				{

				{

					$id = $path[3]; // http://vimeo.com/fds/fds/fds123

					$id = $path[3]; // http://vimeo.com/fds/fds/fds123

				}
else

				}
else

				{
$id = $path[1]; // http://vimeo.com/fds123
}
break;
case "youtube":
if($fragments[0])

				{
$id = $path[1]; // http://vimeo.com/fds123
}
break;
case "youtube":
if($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'])
{
$id = $input['v']; // http://www.youtube.com/watch?v=fds123

				elseif($input['v'])
{
$id = $input['v']; // http://www.youtube.com/watch?v=fds123

Zeile 1419Zeile 1428
				else
{
$id = $path[1]; // http://www.youtu.be/fds123

				else
{
$id = $path[1]; // http://www.youtu.be/fds123

 
				}
break;
case "twitch":
if(count($path) >= 3 && $path[1] == 'videos')
{
// Direct video embed with URL like: https://www.twitch.tv/videos/179723472
$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];
}
elseif(count($path) >= 2)
{
// Channel (livestream) embed with URL like: https://twitch.tv/waypoint
$id = 'channel='.$path[1];

				}
break;
default:

				}
break;
default:

Zeile 1524Zeile 1550
				$last_char = my_substr($matches[3], -1);
}
}

				$last_char = my_substr($matches[3], -1);
}
}

		if($matches[2] == 'www' || $matches[2] == 'ftp')

		if(in_array(strtolower($matches[2]), array('www', 'ftp')))

		{
return "{$matches[1]}[url]{$matches[2]}.{$matches[3]}[/url]{$external}";
}

		{
return "{$matches[1]}[url]{$matches[2]}.{$matches[3]}[/url]{$external}";
}

Zeile 1684Zeile 1710
		$find = array(
"#\[(b|u|i|s|url|email|color|img)\](.*?)\[/\\1\]#is",
"#\[img=([1-9][0-9]*)x([1-9][0-9]*)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#is",

		$find = array(
"#\[(b|u|i|s|url|email|color|img)\](.*?)\[/\\1\]#is",
"#\[img=([1-9][0-9]*)x([1-9][0-9]*)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#is",

			"#\[url=([a-z]+?://)([^\r\n\"<]+?)\](.+?)\[/url\]#si",
"#\[url=([^\r\n\"<&\(\)]+?)\](.+?)\[/url\]#si",

			"#\[url=((?!javascript)[a-z]+?://)([^\r\n\"<]+?)\](.+?)\[/url\]#si",
"#\[url=((?!javascript:)[^\r\n\"<&\(\)]+?)\](.+?)\[/url\]#si",

		);

$replace = array(

		);

$replace = array(