Hallo,
dieser MOD bezieht sich auch auf diesen Threat:
http://www.4homepages.de/forum/index.php?topic=16533.0Vielen Dank an HOST für die klasse Idee.
Habe diesen neuen hier eröffnet, so daß ich alle erweiterten Änderungen am Anfang zusammen fassen kann.
Folgende Features sind integriert:- Datenbankerweiterung für GPS Daten für den direkten und indirekten Upload (Für Gäste und Admin)
- Suchmaske für Koordinaten im Admin Bereich
- Automatische EXIF Übernahme der GPS Koordinaten, falls diese integriert sind und Spreicherung in der DB
- Automatische EXIF Übernahme bei Admin Freischaltung von Bildern
- Anzeige eines Hinweises unter jedem Thumbnail, fals GPS Daten vorhanden sind.
- Google Map Karte all Bilder einer jeweiligen Kategorie, Suche oder Lightbox.
So, nun geht es los. Die Änderung der Files bezieht sich auf die aktuelle Version 1.7.4.
Schritt 1:Bitte alle Änderungen, außer Schritt 3 vom Original Threat
http://www.4homepages.de/forum/index.php?topic=16533.0durchführen.
Schritt 2:Die Datenbank 4images_images_temp bitte um folgende Tabellen erweitern:
Add the following fields to the database table 4images_images_temp
image_gmap_longitude varchar(20)
image_gmap_latitude varchar(20)
image_gmap_zoom char(2)
image_gmap_type tinyint(1)
image_gmap_show tinyint(1)
Schritt 3:Bitte die Zeilen in /lang/<your_language>/main.php am Ende, vor "?>" Einfügen.
// >>>>>>>>>>>>>>>>>> [MOD] Google-Map >>>>>>>>>>>>>>>>>>
//-----------------------------------------------------
//--- Google-Map---------------------------------------
//-----------------------------------------------------
$lang['image_gmap_longitude'] = "Längengrad (-180...+180)";
$lang['image_gmap_latitude'] = "Breitengrad (-90...+90)
<a href='koordinatencheck.html'
target='detail'
onclick=\"javascript:window.open('','detail','width=600, height=600, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')\">
Koordinatensuche
</a>
";
$lang['image_gmap_zoom'] = "Google Map Zoom-level (1-20) (out-in)";
$lang['image_gmap_type'] = "Art der Google Map <br /><span class=\"smalltext\">1: Map<br />2:Satellite<br />3:Hybrid</span>";
$lang['image_gmap_show'] = "Google Map Anzeigen?";
$lang['image_gmap_text1'] = "Das Bild";
$lang['image_gmap_text2'] = "wurde hier aufgenommen.";
// <<<<<<<<<<<<<<<<<< [MOD] Google-Map <<<<<<<<<<<<<<<<<<
Schritt 4:Bitte die Datei koordinatencheck.html aus der angehangenen ZIP-Datei auspacken und in das Verzeichnis admin speichern. (Dies ist eine erweiterte Version der hier bereits veröffentlichten.).
Öffnet diese bitte und tragt bei key=abc Euren Google Map Key ein.
Schritt 5:Bitte öffnet Eure UPLOAD.PHP aus dem include Verzeichnis und sucht den Bereich
function set_error($error_msg) {
$this->upload_errors[$this->file_name][] = $error_msg;
}
hiernach fügt Ihr bitte den Block ein:
// EXIF Funktionen für das automatische einfügen der GPS Daten beim Upload - Groesstenteils aus der Functions.php übernommen.
function get_exif_info($exif) {
$exif_match = array();
$exif_match['Make'] = "make";
$exif_match['Model'] = "model";
$exif_match['DateTimeOriginal'] = "datetime";
$exif_match['ISOSpeedRatings'] = "isospeed";
$exif_match['ExposureTime'] = "exposure";
$exif_match['FNumber'] = "aperture";
$exif_match['FocalLength'] = "focallen";
// GPS EXIF Variablen Start - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
$exif_match['GPSLatitude'] = "GPSLatitude";
$exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
$exif_match['GPSLongitude'] = "GPSLongitude";
$exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
$exif_match['GPSAltitude'] = "GPSAltitude";
// GPS EXIF Variablen Ende
$exif_array = array();
if (is_array($exif)) {
foreach ($exif as $key => $val) {
if (isset($exif_match[$key])) {
$exif_info = $val;
if ($key == "DateTimeOriginal") {
$exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
}
elseif ($key == "ExposureTime") {
$exposure = explode("/", $exif_info);
$exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
}
elseif ($key == "FNumber") {
$aperture = explode("/", $exif_info);
$exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
}
elseif ($key == "FocalLength") {
$focalLen = explode("/", $exif_info);
$exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
}
// GPS EXIF START - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
elseif ($key == "GPSLatitudeRef") {
if ($exif_info == "N") {
$GPSLatitudeRef = "Nord";
$GPSLatfaktor = 1;
} else {
$GPSLatitudeRef = "Süd";
$GPSLatfaktor = -1;
}
}
elseif ($key == "GPSLongitudeRef") {
if ($exif_info == "E") {
$GPSLongitudeRef = "Ost";
$GPSLongfaktor = 1;
} else {
$GPSLongitudeRef = "West";
$GPSLongfaktor = -1;
}
}
elseif ($key == "GPSLatitude") {
$GPSLatitude_h = explode("/", $exif_info[0]);
$GPSLatitude_m = explode("/", $exif_info[1]);
$GPSLatitude_s = explode("/", $exif_info[2]);
$GPSLat_h = $GPSLatitude_h[0] / $GPSLatitude_h[1];
$GPSLat_m = $GPSLatitude_m[0] / $GPSLatitude_m[1];
$GPSLat_s = $GPSLatitude_s[0] / $GPSLatitude_s[1];
$GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
}
elseif ($key == "GPSLongitude") {
$GPSLongitude_h = explode("/", $exif_info[0]);
$GPSLongitude_m = explode("/", $exif_info[1]);
$GPSLongitude_s = explode("/", $exif_info[2]);
$GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
$GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
$GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
$GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
}
elseif ($key == "GPSAltitude") {
$GPSAltitude = explode("/", $exif_info);
$exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
}
// GPS EXIF ENDE
Bitte öffnet die Datei member.php und überschreibt (ersetzen) den Block
$current_time = time();
if ($direct_upload) {
$sql = "INSERT INTO ".IMAGES_TABLE."
(cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments".$additional_field_sql.")
VALUES
($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, $image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments".$additional_value_sql.")";
$result = $site_db->query($sql);
$image_id = $site_db->get_insert_id();
if ($result) {
include(ROOT_PATH.'includes/search_utils.php');
$search_words = array();
foreach ($search_match_fields as $image_column => $match_column) {
if (isset($HTTP_POST_VARS[$image_column])) {
$search_words[$image_column] = stripslashes($HTTP_POST_VARS[$image_column]);
}
}
add_searchwords($image_id, $search_words);
}
}
else {
$sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
(cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file, image_download_url".$additional_field_sql.")
VALUES
($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, '$new_name', '$new_thumb_name', '$image_download_url'".$additional_value_sql.")";
$result = $site_db->query($sql);
}
bitte mit
// Add On for GPS EXIF auslesen
if (function_exists('exif_read_data') && $exif_data = @exif_read_data($src, 'EXIF')) {
$exif_array = get_exif_info($exif_data);
foreach ($exif_array as $key => $val) {
if (($key != "GPSLongitudeRef") && ($key != "GPSLatitudeRef")) {
if ($key == "GPSLongitude") {
$GPSLongtude = substr (strrchr($val, "("), 1);
$GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
}
if ($key == "GPSLatitude") {
$GPSLatitude = substr (strrchr($val, "("), 1);
$GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
}
}
}
if (($GPSLongtude <> "") && ($GPSLatitude <>"")) {
$image_gmap_zoom = 13;
$image_gmap_type = 3;
$image_gmap_show = 1;
}
}
// Add On for GPS EXIF auslesen ENDE
$current_time = time();
if ($direct_upload) {
$sql = "INSERT INTO ".IMAGES_TABLE."
(cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments, image_gmap_longitude, image_gmap_latitude , image_gmap_zoom, image_gmap_type, image_gmap_show ".$additional_field_sql.")
VALUES
($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, $image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments, '$GPSLongtude', '$GPSLatitude', '$image_gmap_zoom', '$image_gmap_type', '$image_gmap_show'".$additional_value_sql.")";
$result = $site_db->query($sql);
$image_id = $site_db->get_insert_id();
if ($result) {
include(ROOT_PATH.'includes/search_utils.php');
$search_words = array();
foreach ($search_match_fields as $image_column => $match_column) {
if (isset($HTTP_POST_VARS[$image_column])) {
$search_words[$image_column] = stripslashes($HTTP_POST_VARS[$image_column]);
}
}
add_searchwords($image_id, $search_words);
}
}
else {
$sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
(cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file, image_download_url, image_gmap_longitude, image_gmap_latitude , image_gmap_zoom, image_gmap_type, image_gmap_show ".$additional_field_sql.")
VALUES
($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, '$new_name', '$new_thumb_name', '$image_download_url', '$GPSLongtude', '$GPSLatitude', '$image_gmap_zoom', '$image_gmap_type', '$image_gmap_show'".$additional_value_sql.")";
$result = $site_db->query($sql);
}
ersetzen.
Anschließend können User Bilder mit GPS Exif Daten uploaden, die automatisch in die Datenbank (temp oder normal) gespeichert werden.
Schritt 6:Bitte überschreibt Eure checkimages.php im Admin Verzeichnis mit der Angahangenen Version. Sie beinhaltet die Funktion CheckImages aus dem Adminverzeichnis und wurde hier im Forum bereits erweitert. Dieser erweiterten Version habe ich die GPS Funktionalität spendiert, so daß eventuelle GPS EXIF Werte direkt übernommen werden.
Es wird die modifizierte upload.php benötigt, die über include eingebunden wird.
Schritt 7:Wenn Ihr unter Euren Thumbnails eine Info einblenden wollte, das es zu diesem Bild GPS Daten gibt, muß folgendes getan werden (optional):
Fügt in Eurer thumbnail_bit.html im \template\<Dein Template> Verzeichnis folgendes ein:
{if gmap}GPS Position{endif gmap}
Nun müssen die Dateien search.php, categories.php, index.php und lightbox.php modifiziert werden.
Bitte in jeder Datei die Zeile
show_image($image_row);
suchen und VOR der Zeile
folgenden Block einfügen:
// >>>>>>>>>>>>>>>>>> [MOD] Google-Map >>>>>>>>>>>>>>>>>>
$image_gmap_show = $image_row['image_gmap_show'];
if ($image_gmap_show == 1) {
$gmap = 1;
$site_template->register_vars(array(
"gmap" => $gmap,
));
} else {
$gmap = 0;
$site_template->register_vars(array(
"gmap" => $gmap,
));
}
unset($gmap_java);
// <<<<<<<<<<<<<<<<<< [MOD] Google-Map <<<<<<<<<<<<<<<<<<
----Ergänzung / Nachtrag---------------------
Hallo,
habe nun auch die Übersicht Programmiert, die auf einer Kategorie, Lightbox oder aus der Suche einen Button einblendet, der eine Google Map mit Markern aufruft. natürlich nur, wenn auch entsprechende Koordinaten in den entsprechenden Bildern eingefügt sind.
Der Hauptblock ist in der Datei map_overview.php vermerkt, die ein Template map_overview.html in Eurem Template Verzeichnis benötigt, dazu zwei Buttons.
Ich habe Euch alle meine Google Maps und GPS Funktionen meiner Gallery zusammen gepackt und als Zip Angehangen, wundert Euch nicht, das vielleicht noch Teile einer FLASH Gallery und der Histogramm Funktion enthalten sind.
Variable Template
{mapshow_button} Categories, lightbox, search
{if gmap}{endif gmap} thumbnail_bit.html
Bitte kopiert in der Datei map_overview.php auch Euren Google Map Api Key hinein, sucht nach YOUR_KEY_HERE.
Bitte die Struktur in der Zip-Datei beachten.
Die Änderungen sind in allen Dateien entsprechend markiert, sucht nach erik oder GPS oder Google.
Alle Dateiversionen sind 1.7.4
Viel Spaß und Grüße
Erik
PS: Hatte keine Zeit, jede Änderung einzeln hier zu dokumentieren. Daher die Files für Euch als Zip. Für den ein oder anderen so auch leichter.
-------------------------
So, hoffe, ich habe nichts vergessen.
Bitte macht vor Änderungen bitte ein Backup der DB und der Files, so daß Ihr bei Problemen auch wieder zurück könnt.
Änderungen ohne Gewähr.
Viel Spaß
Grüße
Erik
29.1.2008 - Fehler in Checkimages gefunden. Wurde ein Bild mit GPS EXIF Infos importiert und im gleichen Zuge ein Bild ohne GPS EXIF Daten, so wurden die Daten des ersten Bildes auch für das zweite und weitere Bilder genutzt. Die angehangene checkimages.zip ist die gefixte Version.
23.3.2008 - Das Zip-File 4images_Google_Map_1_7_6.zip beinhaltet alle meine geänderten PHP-Files mit Scriptversion 1.7.6. Bitte vor Integration ein Backup machen.
Neu User müssen zusätzlich auch Ihre Templates und Ihre Datenbank anpassen. Würde mich über ein Feedback freuen, ob das Update funktioniert hat.
10.4.2008 - Habe die Datei Koordinatencheck.html etwas modifiziert und erweitert. Nun werden die Koordinaten in Ortsnamen mit umgewandelt und automatisch mit als Schlüsselwort mit eingefügt. Auch ist das Handling nun etwas verfeinert. leider funktioniert die Datei nur im Firefox. Wäre klasse, wenn jemand diese auch im IE ans laufen bekommt.
17.6.2008 - Um Verwirrungen wegen der verschiedenen Versionen in den Zipfiles vorzubeugen und es allen einfacher zu machen, habe ich alles in ein File zusammengefügt und neu angehangen. Die Files sind für Version 1.7.6.
15.5.2009 - aktualisierte Files der Version 1.7.7 im Zip File. Die Files sind von meiner Installation, habe noch Histogramm - und Piclense Mod installiert. Entsprechende Modifikationen sind in den Files ebenfalls vorhanden. Falls Ihr bisher noch keine GPS integriert habt, denkt bitte an die Datenbankmodifikation, die Templates (im File enthalten) zu editieren und Euren eigenen Google Map API Key zu erstellen.
16.5.2009 - es war leichter als gedacht - nun können auch User die GPS Daten Ihrer eigenen Bilder bearbeiten. Habt Ihr die bisherigen Änderungen durchgeführt, müßt Ihr folgende Änderungen durchführen, so daß auch User GPS Daten ändern können.
1) Löscht die Datei koordinatencheck.html und zugehöriges Script Verzeichnis aus Eurem Admin Verzeichnis. Kopiert beide Dateien aus dem Zip Paket und legt sie ins Root Eurer Gallery
2) Ändert in Eurer Language/main.php die Zeile "<a href='koordinatencheck.html'" in "<a href='$script_url/../koordinatencheck.html'".
3) Kopiert die Datei member_editimage.html in Euer Template Verzeichnis.
17.5.2009 - User können beim Upload nun auch direkt die GPS Daten mit angeben. Dazu ist natürlich die koordinatencheck.html in's Gallery Root zu kopieren (siehe 16.5.2009). Sofern im Bild EXIF GPS Daten enthalten sind, haben diese Vorrang zu den manuell eingegebenen.
15.7.2009 - Bug in der member.php: GPS Daten wurden nicht übernommen, wenn im Bild keine EXIF Daten waren. Teilweise auch keine Koordinaten gespeichert. Zudem werden nun auch die GPS Werte auf Plausibilität geprüft. Sind diese ungültig oder fehlen, wird automatisch der Wert zum anzeigen der Karte in der DB auf AUS (0) gesetzt.