diff options
author | friendica <info@friendica.com> | 2012-10-08 18:04:12 +1100 |
---|---|---|
committer | friendica <info@friendica.com> | 2012-10-08 18:04:12 +1100 |
commit | ef22c1a9b3d4c452144bce7b94f31050622e17d6 (patch) | |
tree | e507cfa953469a48c9c65729893d91cb5673d842 | |
parent | 3c04676a32b048677813c1d8a4c525963a7b2f01 (diff) | |
download | volse-hubzilla-ef22c1a9b3d4c452144bce7b94f31050622e17d6.tar.gz volse-hubzilla-ef22c1a9b3d4c452144bce7b94f31050622e17d6.tar.bz2 volse-hubzilla-ef22c1a9b3d4c452144bce7b94f31050622e17d6.zip |
prevent tag recursion on shared posts
-rw-r--r-- | include/bbcode.php | 4 | ||||
-rwxr-xr-x | include/items.php | 8 | ||||
-rw-r--r-- | mod/share.php | 4 |
3 files changed, 12 insertions, 4 deletions
diff --git a/include/bbcode.php b/include/bbcode.php index e204e1cb4..b383f43b6 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -148,6 +148,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = str_replace("<", "<", $Text); $Text = str_replace(">", ">", $Text); + // This only matters when looking for tags - otherwise has no meaning + + $Text = preg_replace("/\[share\](.*?)\[\/share\]/ism", '$1', $Text); + // Convert new line chars to html <br /> tags // nlbr seems to be hopelessly messed up diff --git a/include/items.php b/include/items.php index d755b7050..4b16e48fb 100755 --- a/include/items.php +++ b/include/items.php @@ -1228,7 +1228,9 @@ function tag_deliver($uid,$item_id) { $link = normalise_link($a->get_baseurl() . '/profile/' . $u[0]['nickname']); - $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$item['body'],$matches,PREG_SET_ORDER); + $body = preg_replace("/\[share\](.*?)\[\/share\]/ism", '', $item['body']); + + $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER); if($cnt) { foreach($matches as $mtch) { if(link_compare($link,$mtch[1])) { @@ -1344,7 +1346,9 @@ function tgroup_check($uid,$item) { $dlink = normalise_link($a->get_baseurl() . '/u/' . $u[0]['nickname']); - $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$item['body'],$matches,PREG_SET_ORDER); + $body = preg_replace("/\[share\](.*?)\[\/share\]/ism", '', $item['body']); + + $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER); if($cnt) { foreach($matches as $mtch) { if(link_compare($link,$mtch[1]) || link_compare($dlink,$mtch[1])) { diff --git a/mod/share.php b/mod/share.php index 761220ad7..8d9cd16ea 100644 --- a/mod/share.php +++ b/mod/share.php @@ -18,14 +18,14 @@ function share_init(&$a) { if(! count($r) || ($r[0]['private'] == 1)) killme(); - $o = ''; + $o = '[share]'; $o .= "\xE2\x99\xb2" . ' [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]' . "\n"; if($r[0]['title']) $o .= '[b]' . $r[0]['title'] . '[/b]' . "\n"; $o .= $r[0]['body'] . "\n" ; - $o .= (($r[0]['plink']) ? '[url=' . $r[0]['plink'] . ']' . t('link') . '[/url]' . "\n" : ''); + $o .= (($r[0]['plink']) ? '[url=' . $r[0]['plink'] . ']' . t('link') . '[/url]' . "\n" : '') . '[/share]'; echo $o; killme(); |