Chaosquake.de - Quake 3 Maps - Doom 3 Stuff

Home »Projects »Landmark System

Landmark System

Land Mark System Version 3 - Was ist das?

Das Land Mark System ist eine Usermap oder auch Userlocator. Das Script macht es möglich Wohnorte von Mitgliedern einer Community aufzuzeichnen, einzusehen und zu durchsuchen. Eine Installation des Systems für das Planetquake.de Forum können Sie sich hier ansehen: chaosquake.de/lms/

Download

Komplettes Script + Setup ~360kb

Installation

  • Benutzername/Passwort sowie Datenbankname und -server für die MySQL-Datenbank in der inc/conf.php anpassen Hier auch UNBEDINGT das Admin-Passwort zum Ändern/Löschen der Einträge ändern.
  • Script hochladen und setup.php aufrufen. Hier werden die Datenbank-Tabellen erstellt und die Geodaten eingefügt. Den Anweisungen folgen und anschließend die Setup-Dateien löschen.
  • Sich freuen

Hinweise zur MySQL Version

Diese Version des Land Mark Systems wurde für MySQL 5.x entwickelt. Bei der Installation mit MySQL 4.x kommt es zu einer Fehlermeldung (Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin1' at line 9). Die DEFAULT CHARSET Anweisung wird nämlich von älteren MySQL-Versionen noch nicht verstanden. Um das Land Mark System dennoch auf einer MySQL 4 Datenbank installieren zu können, müssen die Zeilen 7975 und 7986 der setup.php jeweils durch die folgende ersetzt werden:

 ) ENGINE=MyISAM" 

Hilft auch das nicht, so müssen die Zeilen durch folgendes ersetzt werden:

 )" 

In diesem Fall sollte auch dringend über eine Aktualisierung von MySQL nachgedacht werden!

Admin-Login funktioniert nicht?

PHP muss auf dem Server als Apache-Modul laufen damit der Adminbereich funktioniert. Läuft PHP als CGI, so ist es dem Script nicht möglich die Umgebungsvariablen des Servers zu lesen - der Login in den Admin-Bereich schlägt somit immer fehl.

Wie ich leider feststellen musste läuft PHP bei recht vielen ahnungslosen Shared-Hostern (wie z.B. Schlund/Puretec) als CGI. Das Land Mark System ist dann zwar grundsätzlich trotzdem funktionsfähig, die Administration (Fehleinträge löschen etc.) muss dann aber z.B. über phpMyAdmin erfolgen.

Neuerungen in der Version 3

Diese Version erlaubt es zu einer PLZ noch den entsprechenden Ort auszuwählen. In der Datenbank sind somit insgesamt über 20.000 Orte abgelegt, statt wie bisher nur ein einziger Ort pro PLZ.

Die GeoDatenbank wurde auf den neusten Stand gebracht und das Setup auf mehrere Dateien aufgeteilt, um Problemen mit PHP-Dateien die größer als 1MB sind, vorzubeugen.

Auch neu sind Admin-Funktionen zum Editieren und Löschen von Einträgen. Diese erscheinen direkt in der Listenansicht, sobald man sich eingeloggt hat. Zudem gab es viele Kosmetische veränderungen, sowohl am Layout der Seiten, als auch im Code selbst.

Update von Version 2

Die Struktur der Datenbanktabellen hat sich geändert. Die Version 2 des Land Mark Systems ist daher nicht kompatibel zu dieser. Um dennoch alle eingetragenen Benutzer aus der Version 2 zu übernehmen, gehen Sie wie folgt vor:

Zunächst müssen alle Dateien des Alten LMS gelöscht werden. Passen Sie danch die inc/conf.php der neuen Version wie gewohnt an ihre Datenbank einstellungen an. Achten Sie darauf, dass die Tabellennamen die gleichen wie bei ihrer alten Installation sind (Standard: lms_geodb u. lms_user). Laden Sie das Script hoch, führen Sie jedoch noch nicht die setup.php aus.

Die Alte lms_geodb Tabelle muss nun gelöscht werden. Führen Sie dazu folgendes SQL-Query aus (Der Tabellenname (lms_geodb) muss ggf. geändert werden):

DROP TABLE lms_geodb

Führen Sie jetzt die setup.php aus und folgen Sie den Anweisungen. Im ersten Schritt des Setups sollten Sie die Meldung Table 'lms_user' already exists erhalten. Das ist normal und kein Grund zur Sorge.

Die User-Tabelle muss nun um das Feld geoid erweitert werden:

ALTER TABLE lms_user 
ADD geoid INT(11) NOT NULL DEFAULT '0' AFTER id, 
ADD KEY geoid(geoid);

Das Character Set der Tabelle muss ebenfalls geändert werden:

ALTER TABLE lms_user 
CONVERT TO CHARACTER SET latin1;

Nun muss jeder PLZ in der User-Tabelle die entsprechende GeoId aus der GeoDB-Tabelle zugeordnet werden:

UPDATE lms_user u, lms_geodb g
SET u.geoid = g.id
WHERE u.plz = g.plz

Das PLZ-Feld der User-Tabelle kann nun gelöscht werden:

ALTER TABLE lms_user
DROP plz

OpenGeoDB

Die Postleitzahlen kommen aus der OpenGeoDB. Jedoch wurde nicht die original Datenbank benutzt, sondern eine neue Tabelle mit nur den nötigsten Informationen generiert. Das hat den vorteil das der Datenbank-Dump um ein Vielfaches kleiner ist, als das Original.

Die alte Version des LMS war sehr anfällig für Fehleintragungen. Diese version sollte das nun mit Hilfe der GeoDB beheben - natürlich funktioniert es jetzt nur noch für Deutschland, Österreich und die Schweiz. Ob es ähnliche Projekte, wie die GeoDB, auch für andere Länder gibt ist mir leider nicht bekannt.

Wenn die PLZ daten für Österreich und Schweiz nicht gebraucht werden, so können diese mit folgendem Query wieder gelöscht werden:

DELETE FROM lms_geodb WHERE LENGTH( plz ) < 5

4442 Einträge sollten dadurch gelöscht werden.

Weitere/andere Datenbankfelder

Die Felder Name, PLZ und Ort sind fest vorgegeben. Alle weiteren Felder können beliebig verändert werden. Wenn zb. kein IRC channel eingetragen werden soll, so muss in der conf.php der entsprechende Eintrag aus dem $DataFields Array rausgenommen werden. Das Formular zum Eintragen wird automatisch erstellt, dh. wenn der Eintrag nicht in diesem Array ist, gibt es auch keine Input-box dafür. Auch die Listenansicht wird automatisch generiert.

Wenn statt des IRC-Channels also zb. das Alter gespeichert werden soll, so müsste die Konfiguration etwa so aussehen:

$GLOBALS['DataFields'] = array(
    'Alter' => '', 
    'E-Mail' => 'parseMail'
);

Die Parse Funktion wurde in diesem fall herausgenommen, da es nichts zu parsen (umwandeln) gibt. Die beiden vorhandenen Parse-Funktionen, die aus dem IRC-Channel und der E-Mail-Addresse Links generieren, befinden sich in der list.php. Hier also auch weitere/eigene Parse-Funktionen einfügen.

Anderes Kartenbild

Wenn ein anderes Kartenbild benutzt werden soll, so muss die größe dieses Bildes in der inc/conf.php und in der std.css (#Content) angepasst werden. Die Beiden Referenzpunkte (ebenfalls in der inc/conf.php) müssen auch angepasst werden. Wenn keine anderen Städte als Referenz verwendet werden sollen, so müssen hier nur die passenden Pixelwerte eingetragen werden.

Eine genauere Anleitung finden Sie hier: neue_karte.txt. Vielen Dank an CADWiesel dafür!

Eine modifizierte Version der Standardkarte können sie hier herunterladen: Deutschlandkarte mit Städtenamen

Disclaimer

Das Script darf grundsätzlich frei genutzt und modifiziert werden, solange der Copyright Hinweiss erhalten bleibt.

Der Verkauf dieser Anwendung, oder die Verteilung ohne diese .txt, ist strengstens untersagt!

News | Maps | Projects | Links | About
All contents © 2007 Dominic Szablewski - powered by pagenode