X-Git-Url: https://git.mxchange.org/?p=friendica-addons.git;a=blobdiff_plain;f=geocoordinates%2Fgeocoordinates.php;h=714b8d81cbfca0d0a491979bf52518e7dc8bcb6c;hp=52dd8d75251ce9d9761bd599cea5069a209a2097;hb=0afd633346b517894ff8e92c705bd5d052dd06a2;hpb=47329fb2e77e635080a232c278d736892354a43e diff --git a/geocoordinates/geocoordinates.php b/geocoordinates/geocoordinates.php index 52dd8d75..714b8d81 100644 --- a/geocoordinates/geocoordinates.php +++ b/geocoordinates/geocoordinates.php @@ -5,38 +5,50 @@ * Version: 0.1 * Author: Michael Vogel */ - -function geocoordinates_install() { - register_hook('post_local', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); - register_hook('post_remote', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); +use Friendica\Core\Addon; +use Friendica\Core\Cache; +use Friendica\Core\Config; + +function geocoordinates_install() +{ + Addon::registerHook('post_local', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); + Addon::registerHook('post_remote', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); } -function geocoordinates_uninstall() { - unregister_hook('post_local', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); - unregister_hook('post_remote', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); +function geocoordinates_uninstall() +{ + Addon::unregisterHook('post_local', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); + Addon::unregisterHook('post_remote', 'addon/geocoordinates/geocoordinates.php', 'geocoordinates_post_hook'); } -function geocoordinates_resolve_item(&$item) { +function geocoordinates_resolve_item(&$item) +{ if((!$item["coord"]) || ($item["location"])) return; - $key = get_config("geocoordinates", "api_key"); + $key = Config::get("geocoordinates", "api_key"); if ($key == "") return; - $language = get_config("geocoordinates", "language"); + $language = Config::get("geocoordinates", "language"); if ($language == "") $language = "de"; - $result = Cache::get("geocoordinates:".$language.":".$item["coord"]); + $coords = explode(' ',$item["coord"]); + + if (count($coords) < 2) + return; + + $coords[0] = round($coords[0], 5); + $coords[1] = round($coords[1], 5); + + $result = Cache::get("geocoordinates:".$language.":".$coords[0]."-".$coords[1]); if (!is_null($result)) { $item["location"] = $result; return; } - $coords = explode(' ',$item["coord"]); - $s = fetch_url("https://api.opencagedata.com/geocode/v1/json?q=".$coords[0].",".$coords[1]."&key=".$key."&language=".$language); if (!$s) { @@ -51,39 +63,42 @@ function geocoordinates_resolve_item(&$item) { return; } - if (($data->total_results == 0) OR (count($data->results) == 0)) { - logger("No results found", LOGGER_DEBUG); + if (($data->total_results == 0) || (count($data->results) == 0)) { + logger("No results found for coordinates ".$item["coord"], LOGGER_DEBUG); return; } $item["location"] = $data->results[0]->formatted; - logger("Got location for coordinates ".$item["coord"].": ".$item["location"], LOGGER_DEBUG); + logger("Got location for coordinates ".$coords[0]."-".$coords[1].": ".$item["location"], LOGGER_DEBUG); if ($item["location"] != "") - Cache::set("geocoordinates:".$language.":".$item["coord"], $item["location"]); + Cache::set("geocoordinates:".$language.":".$coords[0]."-".$coords[1], $item["location"]); } -function geocoordinates_post_hook($a, &$item) { +function geocoordinates_post_hook($a, &$item) +{ geocoordinates_resolve_item($item); } -function geocoordinates_plugin_admin(&$a,&$o) { +function geocoordinates_plugin_admin(&$a, &$o) +{ $t = get_markup_template("admin.tpl", "addon/geocoordinates/"); - $o = replace_macros($t, array( + $o = replace_macros($t, [ '$submit' => t('Save Settings'), - '$api_key' => array('api_key', t('API Key'), get_config('geocoordinates', 'api_key' ), ''), - '$language' => array('language', t('Language code (IETF format)'), get_config('geocoordinates', 'language' ), ''), - )); + '$api_key' => ['api_key', t('API Key'), Config::get('geocoordinates', 'api_key' ), ''], + '$language' => ['language', t('Language code (IETF format)'), Config::get('geocoordinates', 'language' ), ''], + ]); } -function geocoordinates_plugin_admin_post(&$a) { +function geocoordinates_plugin_admin_post(&$a) +{ $api_key = ((x($_POST,'api_key')) ? notags(trim($_POST['api_key'])) : ''); - set_config('geocoordinates','api_key',$api_key); + Config::set('geocoordinates','api_key',$api_key); $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); - set_config('geocoordinates','language',$language); + Config::set('geocoordinates','language',$language); info(t('Settings updated.'). EOL); }