diff options
author | redmatrix <mike@macgirvin.com> | 2016-10-06 15:59:27 -0700 |
---|---|---|
committer | redmatrix <mike@macgirvin.com> | 2016-10-06 16:00:41 -0700 |
commit | 49fd53ee677fbf58dd427b0fcce475a1e73753fa (patch) | |
tree | 25a39b33eaaec11c2ffc1e8fb6b4884fa967382e | |
parent | 1ad4d26f31e5f0670011dc28d73743e125b13cf4 (diff) | |
download | volse-hubzilla-49fd53ee677fbf58dd427b0fcce475a1e73753fa.tar.gz volse-hubzilla-49fd53ee677fbf58dd427b0fcce475a1e73753fa.tar.bz2 volse-hubzilla-49fd53ee677fbf58dd427b0fcce475a1e73753fa.zip |
try naked embed before submission instead of at render time
-rw-r--r-- | Zotlabs/Module/Item.php | 4 | ||||
-rw-r--r-- | include/bbcode.php | 16 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index dff1c6404..a2128e47a 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -20,6 +20,8 @@ namespace Zotlabs\Module; require_once('include/crypto.php'); require_once('include/items.php'); require_once('include/attach.php'); +require_once('include/bbcode.php'); + use \Zotlabs\Lib as Zlib; @@ -550,6 +552,8 @@ class Item extends \Zotlabs\Web\Controller { $body = preg_replace_callback('/\[url(.*?)\[\/(url)\]/ism','\red_escape_codeblock',$body); $body = preg_replace_callback('/\[zrl(.*?)\[\/(zrl)\]/ism','\red_escape_codeblock',$body); + + $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", 'nakedoembed', $body); $body = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", '\red_zrl_callback', $body); $body = preg_replace_callback('/\[\$b64zrl(.*?)\[\/(zrl)\]/ism','\red_unescape_codeblock',$body); diff --git a/include/bbcode.php b/include/bbcode.php index 6a58475d0..a82b658b1 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -12,7 +12,6 @@ require_once('include/hubloc.php'); function tryoembed($match) { $url = ((count($match) == 2) ? $match[1] : $match[2]); - $o = oembed_fetch_url($url); if ($o['type'] == 'error') @@ -22,6 +21,18 @@ function tryoembed($match) { return $html; } + +function nakedoembed($match) { + $url = ((count($match) == 2) ? $match[1] : $match[2]); + + $o = oembed_fetch_url($url); + + if ($o['type'] == 'error') + return $match[0]; + + return '[embed]' . $url . '[/embed]'; +} + function tryzrlaudio($match) { $link = $match[1]; $zrl = is_matrix_url($link); @@ -645,6 +656,9 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $urlchars = '[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,\@]'; if (strpos($Text,'http') !== false) { + if($tryoembed) { + $Text = preg_replace_callback("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/$urlchars+)/ism", 'tryoembed', $Text); + } $Text = preg_replace("/([^\]\='".'"'."\/]|^|\#\^)(https?\:\/\/$urlchars+)/ism", '$1<a href="$2" target="_blank" >$2</a>', $Text); } |