Merge pull request #4059 from annando/maps

The map class is now born as well
This commit is contained in:
Hypolite Petovan 2017-12-13 16:44:55 -05:00 committed by GitHub
commit 74767ad321
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 28 deletions

View file

@ -6,10 +6,10 @@ use Friendica\Core\Cache;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Core\Config; use Friendica\Core\Config;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Util\Map;
require_once 'include/oembed.php'; require_once 'include/oembed.php';
require_once 'include/event.php'; require_once 'include/event.php';
require_once 'include/map.php';
require_once 'mod/proxy.php'; require_once 'mod/proxy.php';
require_once 'include/plaintext.php'; require_once 'include/plaintext.php';
@ -33,11 +33,11 @@ function bb_PictureCache($matches) {
function bb_map_coords($match) { function bb_map_coords($match) {
// the extra space in the following line is intentional // the extra space in the following line is intentional
return str_replace($match[0], '<div class="map" >' . generate_map(str_replace('/', ' ', $match[1])) . '</div>', $match[0]); return str_replace($match[0], '<div class="map" >' . Map::byCoordinates(str_replace('/', ' ', $match[1])) . '</div>', $match[0]);
} }
function bb_map_location($match) { function bb_map_location($match) {
// the extra space in the following line is intentional // the extra space in the following line is intentional
return str_replace($match[0], '<div class="map" >' . generate_named_map($match[1]) . '</div>', $match[0]); return str_replace($match[0], '<div class="map" >' . Map::byLocation($match[1]) . '</div>', $match[0]);
} }
function bb_attachment($Text, $simplehtml = false, $tryoembed = true) { function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {

View file

@ -9,9 +9,9 @@ use Friendica\Content\Feature;
use Friendica\Core\PConfig; use Friendica\Core\PConfig;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Util\Map;
require_once 'include/bbcode.php'; require_once 'include/bbcode.php';
require_once 'include/map.php';
require_once 'include/datetime.php'; require_once 'include/datetime.php';
require_once "include/conversation.php"; require_once "include/conversation.php";
@ -75,7 +75,7 @@ function format_event_html($ev, $simple = false) {
// Include a map of the location if the [map] BBCode is used. // Include a map of the location if the [map] BBCode is used.
if (strpos($ev['location'], "[map") !== false) { if (strpos($ev['location'], "[map") !== false) {
$map = generate_named_map($ev['location']); $map = Map::byLocation($ev['location']);
if ($map !== $ev['location']) { if ($map !== $ev['location']) {
$o.= $map; $o.= $map;
} }
@ -967,9 +967,9 @@ function format_event_item($item) {
} }
// Construct the map HTML. // Construct the map HTML.
if (isset($evloc['address'])) { if (isset($evloc['address'])) {
$location['map'] = '<div class="map">' . generate_named_map($evloc['address']) . '</div>'; $location['map'] = '<div class="map">' . Map::byLocation($evloc['address']) . '</div>';
} elseif (isset($evloc['coordinates'])) { } elseif (isset($evloc['coordinates'])) {
$location['map'] = '<div class="map">' . generate_map(str_replace('/', ' ', $evloc['coordinates'])) . '</div>'; $location['map'] = '<div class="map">' . Map::byCoordinates(str_replace('/', ' ', $evloc['coordinates'])) . '</div>';
} }
// Construct the profile link (magic-auth). // Construct the profile link (magic-auth).

View file

@ -1,18 +0,0 @@
<?php
/**
* Leaflet Map related functions
*/
function generate_map($coord) {
$coord = trim($coord);
$coord = str_replace(array(',','/',' '),array(' ',' ',' '),$coord);
$arr = array('lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'html' => '');
call_hooks('generate_map',$arr);
return (($arr['html']) ? $arr['html'] : $coord);
}
function generate_named_map($location) {
$arr = array('location' => $location, 'html' => '');
call_hooks('generate_named_map',$arr);
return (($arr['html']) ? $arr['html'] : $location);
}

View file

@ -9,9 +9,9 @@ use Friendica\Core\Config;
use Friendica\Core\PConfig; use Friendica\Core\PConfig;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Util\Map;
require_once "include/friendica_smarty.php"; require_once "include/friendica_smarty.php";
require_once "include/map.php";
require_once "mod/proxy.php"; require_once "mod/proxy.php";
require_once "include/conversation.php"; require_once "include/conversation.php";
@ -1372,7 +1372,7 @@ function prepare_body(&$item, $attach = false, $preview = false) {
// Map. // Map.
if (strpos($s, '<div class="map">') !== false && x($item, 'coord')) { if (strpos($s, '<div class="map">') !== false && x($item, 'coord')) {
$x = generate_map(trim($item['coord'])); $x = Map::byCoordinates(trim($item['coord']));
if ($x) { if ($x) {
$s = preg_replace('/\<div class\=\"map\"\>/', '$0' . $x, $s); $s = preg_replace('/\<div class\=\"map\"\>/', '$0' . $x, $s);
} }

View file

@ -1488,7 +1488,7 @@ function photos_content(App $a) {
} }
if ($link_item['coord']) { if ($link_item['coord']) {
$map = generate_map($link_item['coord']); $map = Map::byCoordinates($link_item['coord']);
} }
} }

24
src/Util/Map.php Normal file
View file

@ -0,0 +1,24 @@
<?php
/**
* @file src/Util/Map.php
*/
namespace Friendica\Util;
/**
* Leaflet Map related functions
*/
class Map {
public static function byCoordinates($coord) {
$coord = trim($coord);
$coord = str_replace(array(',','/',' '),array(' ',' ',' '),$coord);
$arr = array('lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'html' => '');
call_hooks('generate_map',$arr);
return ($arr['html']) ? $arr['html'] : $coord;
}
public static function byLocation($location) {
$arr = array('location' => $location, 'html' => '');
call_hooks('generate_named_map',$arr);
return ($arr['html']) ? $arr['html'] : $location;
}
}