mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-05 10:49:37 +02:00
156 lines
5.2 KiB
PHP
156 lines
5.2 KiB
PHP
<?php
|
|
/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
|
|
/**
|
|
*
|
|
* LICENSE: GNU General Public License, version 2 (GPLv2)
|
|
* Copyright 2001 - 2015 Ampache.org
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License v2
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
*/
|
|
|
|
class AmpacheGoogleMaps {
|
|
|
|
public $name = 'GoogleMaps';
|
|
public $categories = 'geolocation';
|
|
public $description = 'Geolocation analyze with GoogleMaps';
|
|
public $url = 'http://maps.google.com';
|
|
public $version = '000001';
|
|
public $min_ampache = '370022';
|
|
public $max_ampache = '999999';
|
|
|
|
private $api_key;
|
|
|
|
/**
|
|
* Constructor
|
|
* This function does nothing...
|
|
*/
|
|
public function __construct() {
|
|
|
|
return true;
|
|
|
|
} // constructor
|
|
|
|
/**
|
|
* install
|
|
* This is a required plugin function. It inserts our preferences
|
|
* into Ampache
|
|
*/
|
|
public function install() {
|
|
if (Preference::exists('gmaps_api_key')) { return false; }
|
|
Preference::insert('gmaps_api_key','GoogleMaps api key','','75','string','plugins');
|
|
return true;
|
|
} // install
|
|
|
|
/**
|
|
* uninstall
|
|
* This is a required plugin function. It removes our preferences from
|
|
* the database returning it to its original form
|
|
*/
|
|
public function uninstall() {
|
|
Preference::delete('gmaps_api_key');
|
|
return true;
|
|
} // uninstall
|
|
|
|
/**
|
|
* upgrade
|
|
* This is a recommended plugin function
|
|
*/
|
|
public function upgrade() {
|
|
return true;
|
|
} // upgrade
|
|
|
|
public function get_location_name($latitude, $longitude)
|
|
{
|
|
$name = "";
|
|
try {
|
|
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" . $latitude . "," . $longitude . "&sensor=false";
|
|
$request = Requests::get($url, array(), Core::requests_options());
|
|
|
|
$place = json_decode($request->body, true);
|
|
if (count($place['results']) > 0) {
|
|
$name = $place['results'][0]['formatted_address'];
|
|
}
|
|
} catch (Exception $e) {
|
|
debug_event('gmaps', 'Error getting location name: ' . $e->getMessage(), 1);
|
|
}
|
|
|
|
return $name;
|
|
}
|
|
|
|
public function display_map($pts)
|
|
{
|
|
if (!$this->api_key) {
|
|
debug_event('gmaps', 'Missing api key, display map plugin skipped.', 3);
|
|
return false;
|
|
}
|
|
|
|
echo '<script type="text/javascript">' . "\n";
|
|
echo 'function map_ready() {' . "\n";
|
|
echo 'var mapOptions = {' . "\n";
|
|
if (count($pts) > 0) {
|
|
echo 'center: { lat: ' . $pts[0]['latitude'] . ', lng: ' . $pts[0]['longitude'] . ' },' . "\n";
|
|
} else {
|
|
// No geolocation data? Display `Paris` city.
|
|
echo 'center: { lat: 48.853, lng: 2.348 },' . "\n";
|
|
}
|
|
echo 'zoom: 11' . "\n";
|
|
echo '};' . "\n";
|
|
echo 'var map = new google.maps.Map(document.getElementById("map-canvas"),' . "\n";
|
|
echo 'mapOptions);' . "\n";
|
|
echo 'var marker;' . "\n";
|
|
foreach ($pts as $pt) {
|
|
$ptdescr = T_("Hits:") . " " . $pt['hits'] . "\\n";
|
|
$ptdescr .= T_("Last activity:") . " " . date("r", $pt['last_date']);
|
|
if (!empty($pt['name'])) {
|
|
$ptdescr = $pt['name'] . "\\n" . $ptdescr;
|
|
}
|
|
echo 'marker = new google.maps.Marker({' . "\n";
|
|
echo 'position: { lat: ' . $pt['latitude'] . ', lng: ' . $pt['longitude'] . ' },' . "\n";
|
|
echo 'title:"' . $ptdescr . '"' . "\n";
|
|
echo '});' . "\n";
|
|
echo 'marker.setMap(map);' . "\n";
|
|
}
|
|
echo '}' . "\n";
|
|
|
|
echo 'function loadMapScript() {' . "\n";
|
|
echo 'var script = document.createElement("script");' . "\n";
|
|
echo 'script.type = "text/javascript";' . "\n";
|
|
echo 'script.src = "https://maps.googleapis.com/maps/api/js?key=' . $this->api_key . '&" + "callback=map_ready";' . "\n";
|
|
echo 'document.body.appendChild(script);' . "\n";
|
|
echo '}' . "\n";
|
|
echo 'loadMapScript();';
|
|
|
|
echo '</script>' . "\n";
|
|
echo '<div id="map-canvas" style="display: inline-block; height: 300px; width:680px; margin: 0; padding: 0;"></div>' . "\n";
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* load
|
|
* This loads up the data we need into this object, this stuff comes
|
|
* from the preferences.
|
|
*/
|
|
public function load($user) {
|
|
$user->set_preferences();
|
|
$data = $user->prefs;
|
|
|
|
if (strlen(trim($data['gmaps_api_key']))) {
|
|
$this->api_key = trim($data['gmaps_api_key']);
|
|
}
|
|
|
|
return true;
|
|
} // load
|
|
}
|