);
if ($simple) {
- $o = "<h3>" . BBCode::convert($ev['summary']) . "</h3>";
+ $o = "<h3>" . BBCode::convert($ev['summary'], false, $simple) . "</h3>";
- $o .= "<p>" . BBCode::convert($ev['desc']) . "</p>";
+ $o .= "<p>" . BBCode::convert($ev['desc'], false, $simple) . "</p>";
$o .= "<h4>" . L10n::t('Starts:') . "</h4><p>" . $event_start . "</p>";
}
if (strlen($ev['location'])) {
- $o .= "<h4>" . L10n::t('Location:') . "</h4><p>" . BBCode::convert($ev['location']) . "</p>";
+ $o .= "<h4>" . L10n::t('Location:') . "</h4><p>" . BBCode::convert($ev['location'], false, $simple) . "</p>";
}
return $o;
$o = '<div class="vevent">' . "\r\n";
- $o .= '<div class="summary event-summary">' . BBCode::convert($ev['summary']) . '</div>' . "\r\n";
+ $o .= '<div class="summary event-summary">' . BBCode::convert($ev['summary'], false, $simple) . '</div>' . "\r\n";
$o .= '<div class="event-start"><span class="event-label">' . L10n::t('Starts:') . '</span> <span class="dtstart" title="'
. DateTimeFormat::utc($ev['start'], (($ev['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s' ))
. '</span></div>' . "\r\n";
}
- $o .= '<div class="description event-description">' . BBCode::convert($ev['desc']) . '</div>' . "\r\n";
+ $o .= '<div class="description event-description">' . BBCode::convert($ev['desc'], false, $simple) . '</div>' . "\r\n";
if (strlen($ev['location'])) {
$o .= '<div class="event-location"><span class="event-label">' . L10n::t('Location:') . '</span> <span class="location">'
- . BBCode::convert($ev['location'])
+ . BBCode::convert($ev['location'], false, $simple)
. '</span></div>' . "\r\n";
// Include a map of the location if the [map] BBCode is used.
if (strpos($ev['location'], "[map") !== false) {
- $map = Map::byLocation($ev['location']);
+ $map = Map::byLocation($ev['location'], $simple);
if ($map !== $ev['location']) {
$o.= $map;
}
if (strpos($text, '[/map]') !== false) {
$text = preg_replace_callback(
"/\[map\](.*?)\[\/map\]/ism",
- function ($match) {
- return str_replace($match[0], '<p class="map">' . Map::byLocation($match[1]) . '</p>', $match[0]);
+ function ($match) use ($simple_html) {
+ return str_replace($match[0], '<p class="map">' . Map::byLocation($match[1], $simple_html) . '</p>', $match[0]);
},
$text
);
if (strpos($text, '[map=') !== false) {
$text = preg_replace_callback(
"/\[map=(.*?)\]/ism",
- function ($match) {
- return str_replace($match[0], '<p class="map">' . Map::byCoordinates(str_replace('/', ' ', $match[1])) . '</p>', $match[0]);
+ function ($match) use ($simple_html) {
+ return str_replace($match[0], '<p class="map">' . Map::byCoordinates(str_replace('/', ' ', $match[1]), $simple_html) . '</p>', $match[0]);
},
$text
);
}
if (strpos($text, '[map]') !== false) {
- $text = preg_replace("/\[map\]/", '<div class="map"></div>', $text);
+ $text = preg_replace("/\[map\]/", '<p class="map"></p>', $text);
}
// Check for headers
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
use Friendica\Util\XML;
+use Friendica\Util\Map;
use dba;
use SimpleXMLElement;
$eventdata['description'] = html_entity_decode(bb2diaspora($event['desc']));
}
if ($event['location']) {
+ $event['location'] = preg_replace("/\[map\](.*?)\[\/map\]/ism", '$1', $event['location']);
+ $coord = Map::getCoordinates($event['location']);
+
$location = [];
$location["address"] = html_entity_decode(bb2diaspora($event['location']));
- $location["lat"] = 0;
- $location["lng"] = 0;
+ if (!empty($coord['lat']) && !empty($coord['lon'])) {
+ $location["lat"] = $coord['lat'];
+ $location["lng"] = $coord['lon'];
+ } else {
+ $location["lat"] = 0;
+ $location["lng"] = 0;
+ }
$eventdata['location'] = $location;
}
if (count($event)) {
$message['event'] = $event;
- /// @todo Once Diaspora supports it, we will remove the body
+ if (!empty($event['location']['address']) &&
+ !empty($event['location']['lat']) &&
+ !empty($event['location']['lng'])) {
+ $message['location'] = $event['location'];
+ }
+
+ /// @todo Once Diaspora supports it, we will remove the body and the location hack above
// $message['text'] = '';
}
}
* Leaflet Map related functions
*/
class Map {
- public static function byCoordinates($coord) {
+ public static function byCoordinates($coord, $html_mode = 0) {
$coord = trim($coord);
$coord = str_replace([',','/',' '],[' ',' ',' '],$coord);
- $arr = ['lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'html' => ''];
+ $arr = ['lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'mode' => $html_mode, 'html' => ''];
Addon::callHooks('generate_map',$arr);
return ($arr['html']) ? $arr['html'] : $coord;
}
- public static function byLocation($location) {
- $arr = ['location' => $location, 'html' => ''];
+ public static function byLocation($location, $html_mode = 0) {
+ $arr = ['location' => $location, 'mode' => $html_mode, 'html' => ''];
Addon::callHooks('generate_named_map',$arr);
return ($arr['html']) ? $arr['html'] : $location;
}
+
+ public static function getCoordinates($location) {
+ $arr = ['location' => $location, 'lat' => false, 'lon' => false];
+ Addon::callHooks('Map::getCoordinates', $arr);
+ return $arr;
+ }
}