phpBB

Code Changes

File: includes/functions_content.php

  Unmodified   Added   Modified   Removed
Line 921Line 921
}

/**

}

/**

* make_clickable function
*
* Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.

 * Replaces magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.



* Cuts down displayed size of link if over 50 chars, turns absolute links
* into relative versions when the server/script path matches the link

* Cuts down displayed size of link if over 50 chars, turns absolute links
* into relative versions when the server/script path matches the link

 
 *
* @param string $text Message text to parse URL/email entries
* @param bool|string $server_url The server URL. If false, the board URL will be used
* @param string $class CSS class selector to add to the parsed URL entries
*
* @return string A text with parsed URL/email entries

*/

*/

function make_clickable($text, $server_url = false, $class = 'postlink')

function make_clickable($text, $server_url = false, string $class = 'postlink')

{
if ($server_url === false)
{

{
if ($server_url === false)
{

Line 948Line 952
			$magic_url_match_args = array();
}


			$magic_url_match_args = array();
}


 
		// Check if the match for this $server_url and $class already exists
$element_exists = false;
if (isset($magic_url_match_args[$server_url]))
{
array_walk_recursive($magic_url_match_args[$server_url], function($value) use (&$element_exists, $static_class)
{
if ($value == $static_class)
{
$element_exists = true;
return;
}
}
);
}

// Only add new $server_url and $class matches if not exist
if (!$element_exists)
{

		// relative urls for this board

		// relative urls for this board

		$magic_url_match_args[$server_url][] = array(

			$magic_url_match_args[$server_url][] = [

			'#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
MAGIC_URL_LOCAL,
$local_class,

			'#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
MAGIC_URL_LOCAL,
$local_class,

		);


				$static_class,
];


// matches a xxxx://aaaaa.bbb.cccc. ...


// matches a xxxx://aaaaa.bbb.cccc. ...

		$magic_url_match_args[$server_url][] = array(

			$magic_url_match_args[$server_url][] = [

			'#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
MAGIC_URL_FULL,
$class,

			'#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
MAGIC_URL_FULL,
$class,

		);


				$static_class,
];


// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing


// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing

		$magic_url_match_args[$server_url][] = array(

			$magic_url_match_args[$server_url][] = [

			'#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
MAGIC_URL_WWW,
$class,

			'#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
MAGIC_URL_WWW,
$class,

		);



				$static_class,
];
}





 
		if (!isset($magic_url_match_args[$server_url]['email']))
{

		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.

		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.

		$magic_url_match_args[$server_url][] = array(

			$magic_url_match_args[$server_url]['email'] = [

			'/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
MAGIC_URL_EMAIL,
'',

			'/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
MAGIC_URL_EMAIL,
'',

		);


			];
}

	}

foreach ($magic_url_match_args[$server_url] as $magic_args)
{
if (preg_match($magic_args[0], $text, $matches))
{

	}

foreach ($magic_url_match_args[$server_url] as $magic_args)
{
if (preg_match($magic_args[0], $text, $matches))
{

 
			// Only apply $class from the corresponding function call argument (excepting emails which never has a class)
if ($magic_args[3] != $static_class && $magic_args[1] != MAGIC_URL_EMAIL)
{
continue;
}


			$text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
{
$relative_url = isset($matches[3]) ? $matches[3] : '';

			$text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
{
$relative_url = isset($matches[3]) ? $matches[3] : '';