/* PLUGIN INSTALLER
 * Version 0.3
 * Fr Contenido 4.4.4 and up 4.5.x
 * Autor: Martin Horwath (horwath@dayside.net)
 * Datum: 26.09.2004
 * Modifiziert: 29.11.2004
 */

WICHTIG:
dieses script ersetzt alle bisherigen versionen des plugin installers
anders installierte plugins knnen seitens des scripts nicht bercksichtigt werden...
d.h. wenn ihr ein plugin geschrieben habt und dieses soll auf den installer umgerstet werden,
sollten zuerst alle db eintrge dieses plugins aus der db entfernt werden... falls ihr das nicht
macht sind die folgen nicht abschtzbar...
eine mglichkeit des rausfilterns anders installierter plugins wre mir nicht bekannt.

read.me ***

der plugin installer ist ein nettes kleines tool das dafr sorge trgt,
das plugins ohne greren aufwand des benutzers installiert und deinstalliert werden knnen.

vorraussetzung ist die installation des plugin-interface !!

der plugin installer setzt sich momentan aus zwei bis drei dateien zusammen

install.php -> der installer
install.slq -> die auszufhrenden sql anweisungen
uninstall.sql -> optionale auszufhrende sql statements beim deinstallieren... (NEU)

die install.sql und uninstall.sql knnen platzhalter beinhalten

!PREFIX! -> setzt den korrekten tabellen prefix der lt. config.php vorgegeben ist
!PID! -> bernimmt die rolle der automatischen id vergabe im area bereich...

plugin areaid sollte grundstzlich immer das muster !PID!01,!PID!02,!PID!03 haben...
der rest wird vom script automatisch erledigt...

die install.sql beinhaltet ebenso am beginn eine zeile die von script analysiert wird
in diesem fall:
####Hello World;0.0.0.1;Martin Horwath;DEMO00####

Hello World -> der name des plugins
0.0.0.1 -> die versionsnummer des plugins
Martin Horwath -> autor des plugins
DEMO00 -> interne id

die interne id identifiziert das plugin eindeutig...
die versionsnummer ist nur mehr eine weitere kontrolle ob die aktuellste version installiert
ist, in weiterer logischer folge gibt es dann ebenso eine upgrade.sql

funktionsweise:
der plugin installer bedient sich der tabelle _plugins
beim erstmaligen aufruf kontrolliert der installer ob die tabelle den anforderungen des installers
entspricht und falls nicht wird die tabelle neu erzeugt...
es gibt ebenso einen parameter im script diese kontrolle zu bergehen...
ebenso besitz das script einen debug modus, in dem ersichtlich wird was das script alles erledigt.
siehe
$cfg["debug"]["installer"] = false; // standard 
$checktablestatus = true; // standard

sobald die tabellen kontrolle abgeschlossen ist, wird versucht die install.sql nachzuladen...
anschlieend ob die erste zeile vorhanden ist -> siehe oben
falls nicht bricht das script mit einer meldung ab...

momentan beherscht das script zwei modi 
install
uninstall
vorbereitet:
*upgrade falls die versionsnummer des zuinstallierenden plugins nicht dem bereits vorhandenen entspricht...

install:
sollte das plugin noch nicht installiert sein werden die platzhalter !PID!, !PREFIX! innerhalb der dateien 
install.sql und uninstall.sql erstetzt.
die queries der install.sql werden dann nacheinander ausgefhrt und fr jedes insert in _area, _files, 
_files_names , _sub_nav werden delete statements fr die uninstall funktion erzeugt...
dieses muster gilt fr alle insert statements die folgendes muster haben:
insert into TABLE values (ZIFFER 
es wird davon ausgegangen das ZIFFER die unique id der tabelle ist ! ich habe hier dezitiert eine andere
schreibweise gewhlt wie in der install.sql vorgegeben, der regulre ausdruck nimmt darauf rcksicht...
die ausgefhrten install sql statements werden anschlieend in der tabelle _plugins gesichert...

der letzte schritt 
die uninstall.sql wird eingelesen und den uninstall statements hinzugefgt und ebenso in der tabelle gesichert.

zur uninstall.sql
eintrge in die _sequence tabelle mssen hier wieder dezitiert entfernt werden,
ebenso das lschen von angelegten tabellen...

das hello world example ist entsprechend aufbereitet...

todo:
geplant ist das plugin installer ein eigenes backend innerhalb contenidos bekommt
installation und deinstallation von plugins wird in weiterer folge keinen aufruf der
install.php mehr bentigen...
integrierung einer upgrade funktion...
anpassung bestehnder tabellen und ergnzung weiterer sql statements, update der install und uninstall
statements innerhalb der tabelle _plugins

gewnscht:
verbesserungsvorschlge, korrekturen(auch typos) und tests der community...