aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2019-05-09 22:06:32 -0700
committerzotlabs <mike@macgirvin.com>2019-05-09 22:06:32 -0700
commitd7026fe36b2febd71329e8d9512a4305ae8c05c6 (patch)
treeebae19734413a2f4414b2680ad2aebef50536472
parentb9b65d7dfbf0d5532c93bd7395b5dbbcb8c1b68f (diff)
downloadvolse-hubzilla-d7026fe36b2febd71329e8d9512a4305ae8c05c6.tar.gz
volse-hubzilla-d7026fe36b2febd71329e8d9512a4305ae8c05c6.tar.bz2
volse-hubzilla-d7026fe36b2febd71329e8d9512a4305ae8c05c6.zip
use 'cache' flag to bbcode() on content destined for Zot6. We've seen rendered map HTML in a couple of places and these should never be rendered for outgoing content as they will only be purified on the other end.
-rw-r--r--Zotlabs/Lib/Activity.php20
-rw-r--r--include/bbcode.php12
2 files changed, 17 insertions, 15 deletions
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 9d11cc201..232d845c7 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -154,7 +154,7 @@ class Activity {
'type' => 'Image',
'id' => $x['id'],
'name' => $x['title'],
- 'content' => bbcode($x['body']),
+ 'content' => bbcode($x['body'], [ 'cache' => true ]),
'source' => [ 'mediaType' => 'text/bbcode', 'content' => $x['body'] ],
'published' => datetime_convert('UTC','UTC',$x['created'],ATOM_TIME),
'updated' => datetime_convert('UTC','UTC', $x['edited'],ATOM_TIME),
@@ -184,11 +184,11 @@ class Activity {
$y = [
'type' => 'Event',
'id' => z_root() . '/event/' . $ev['event_hash'],
- 'summary' => bbcode($ev['summary']),
+ 'summary' => bbcode($ev['summary'], [ 'cache' => true ]),
// RFC3339 Section 4.3
'startTime' => (($ev['adjust']) ? datetime_convert('UTC','UTC',$ev['dtstart'], ATOM_TIME) : datetime_convert('UTC','UTC',$ev['dtstart'],'Y-m-d\\TH:i:s-00:00')),
- 'content' => bbcode($ev['description']),
- 'location' => [ 'type' => 'Place', 'content' => bbcode($ev['location']) ],
+ 'content' => bbcode($ev['description'], [ 'cache' => true ]),
+ 'location' => [ 'type' => 'Place', 'content' => bbcode($ev['location'], [ 'cache' => true ]) ],
'source' => [ 'content' => format_event_bbcode($ev), 'mediaType' => 'text/bbcode' ],
'actor' => $actor,
];
@@ -315,10 +315,10 @@ class Activity {
if($i['mimetype'] === 'text/bbcode') {
if($i['title'])
- $ret['name'] = bbcode($i['title']);
+ $ret['name'] = bbcode($i['title'], [ 'cache' => true ]);
if($i['summary'])
- $ret['summary'] = bbcode($i['summary']);
- $ret['content'] = bbcode($i['body']);
+ $ret['summary'] = bbcode($i['summary'], [ 'cache' => true ]);
+ $ret['content'] = bbcode($i['body'], [ 'cache' => true ]);
$ret['source'] = [ 'content' => $i['body'], 'mediaType' => 'text/bbcode' ];
}
@@ -476,14 +476,14 @@ class Activity {
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/activity/' . urlencode($i['mid']));
if($i['title'])
- $ret['name'] = html2plain(bbcode($i['title']));
+ $ret['name'] = html2plain(bbcode($i['title'], [ 'cache' => true ]));
if($i['summary'])
- $ret['summary'] = bbcode($i['summary']);
+ $ret['summary'] = bbcode($i['summary'], [ 'cache' => true ]);
if($ret['type'] === 'Announce') {
$tmp = preg_replace('/\[share(.*?)\[\/share\]/ism',EMPTY_STR, $i['body']);
- $ret['content'] = bbcode($tmp);
+ $ret['content'] = bbcode($tmp, [ 'cache' => true ]);
$ret['source'] = [
'content' => $i['body'],
'mediaType' => 'text/bbcode'
diff --git a/include/bbcode.php b/include/bbcode.php
index 36f943e46..1c153677d 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -987,11 +987,13 @@ function bbcode($Text, $options = []) {
// leave open the posibility of [map=something]
// this is replaced in prepare_body() which has knowledge of the item location
- if (strpos($Text,'[/map]') !== false) {
- $Text = preg_replace_callback("/\[map\](.*?)\[\/map\]/ism", 'bb_map_location', $Text);
- }
- if (strpos($Text,'[map=') !== false) {
- $Text = preg_replace_callback("/\[map=(.*?)\]/ism", 'bb_map_coords', $Text);
+ if (! $cache) {
+ if (strpos($Text,'[/map]') !== false) {
+ $Text = preg_replace_callback("/\[map\](.*?)\[\/map\]/ism", 'bb_map_location', $Text);
+ }
+ if (strpos($Text,'[map=') !== false) {
+ $Text = preg_replace_callback("/\[map=(.*?)\]/ism", 'bb_map_coords', $Text);
+ }
}
if (strpos($Text,'[map]') !== false) {
$Text = preg_replace("/\[map\]/", '<div class="map"></div>', $Text);