]> git.mxchange.org Git - friendica.git/commitdiff
Fix: Events on Diaspora now should look fine
authorMichael <heluecht@pirati.ca>
Tue, 20 Mar 2018 06:32:17 +0000 (06:32 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 20 Mar 2018 06:32:17 +0000 (06:32 +0000)
include/event.php
src/Content/Text/BBCode.php
src/Protocol/Diaspora.php
src/Util/Map.php

index c49c9220f2b1bd85b1af3b2140825bb57fdf2e9e..9172e3ecca229df592fc07cf252269b8479f2c27 100644 (file)
@@ -38,9 +38,9 @@ function format_event_html($ev, $simple = false) {
        );
 
        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>";
 
@@ -49,7 +49,7 @@ function format_event_html($ev, $simple = false) {
                }
 
                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;
@@ -57,7 +57,7 @@ function format_event_html($ev, $simple = false) {
 
        $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>&nbsp;<span class="dtstart" title="'
                . DateTimeFormat::utc($ev['start'], (($ev['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s' ))
@@ -71,16 +71,16 @@ function format_event_html($ev, $simple = false) {
                        . '</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>&nbsp;<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;
                        }
index 532397c13acca4a98de6e1dbd7e95a0ec2a3f4a5..da98a7ff87fddb6c0a0cdf0c47bad2cb98b394d5 100644 (file)
@@ -1605,8 +1605,8 @@ class BBCode
                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
                        );
@@ -1614,14 +1614,14 @@ class BBCode
                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
index 9da41b1b36c3a734029a87696c484ce090e2115c..cc4b230831de489328c8d3ff6bc1b93b97726526 100644 (file)
@@ -29,6 +29,7 @@ use Friendica\Util\Crypto;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Network;
 use Friendica\Util\XML;
+use Friendica\Util\Map;
 use dba;
 use SimpleXMLElement;
 
@@ -3618,10 +3619,18 @@ class Diaspora
                        $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;
                }
 
@@ -3715,7 +3724,13 @@ class Diaspora
                                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'] = '';
                                }
                        }
index e736ca719b4d442a4b82a0f62cd73ea47fdd4143..d3ac0216656d608babe25a288c73e772d29477c8 100644 (file)
@@ -10,17 +10,23 @@ use Friendica\Core\Addon;
  * 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;
+       }
 }