From cc0df5bc241aa552f0fa42a7b809edad48a48e84 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 17 Dec 2014 14:12:19 -0800 Subject: ability to generate arbitrary map with [ map=lat/lon] and also free form location using [ map]somewhere[/map] but the second one currently has no plugins available to generate it. --- include/bbcode.php | 19 +++++++++++++++++++ include/text.php | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/include/bbcode.php b/include/bbcode.php index 254674172..1037db045 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -278,6 +278,17 @@ function rpost_callback($match) { } } +function bb_map_coords($match) { + // the extra space in the following line is intentional + return str_replace($match[0],'
' . generate_map(str_replace('/',' ',$match[1])) . '
', $match[0]); +} + +function bb_map_location($match) { + // the extra space in the following line is intentional + return str_replace($match[0],'
' . generate_named_map($match[1]) . '
', $match[0]); +} + + function bb_sanitize_style($input) { //whitelist property limits (0 = no limitation) $w = array( // color properties @@ -496,6 +507,14 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { // 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 (strpos($Text,'[map]') !== false) { $Text = preg_replace("/\[map\]/", '
', $Text); } diff --git a/include/text.php b/include/text.php index 404d34dcb..335dd46ba 100644 --- a/include/text.php +++ b/include/text.php @@ -1312,6 +1312,12 @@ function generate_map($coord) { return $arr['html']; } +function generate_named_map($location) { + $arr = array('location' => $location, 'html' => ''); + call_hooks('generate_named_map',$arr); + return $arr['html']; +} + function prepare_body(&$item,$attach = false) { -- cgit v1.2.3