
    ###########################################################################################################################

          Wo soll man denn da Anfangen....

    ###########################################################################################################################

    Das Script mit derzeitigem Stand bietet einiges an Möglichkeiten für Programmierer um Erweiterungen oder Änderungen zu ver-
    wirklichen. Es lassen sich eigene Module bilden oder auch externe Scripte einbinden. So wäre es z.B. denkbar ein eigenes
    Backup-Script zu schreiben oder ein bestehendes einzubinden. Aber wo anfangen, wo im Code suchen?

    Genau das soll diese Datei zeigen. Es gibt eine ganze Anzahl an Funktionen, die im Script laufen und die nicht neu erfunden
    werden müssen. Einiges wird sich über die Administration einbinden lassen und letztelich gibt es einen eigenen Punkt um Mo-
    dule zu verwalten, über den man nahezu automatisch neue Funktionen ins Script implementieren kann.

    Die Funktionen teilen sich in Datei-Funktionen und SQL-Funktionen. Vor allem Letzte bieten eine Vielzahl an Möglichkeiten
    da ich die Funktionen so gestaltet habe, dass die Einstellungen einerseits durch Übergabe-Parameter gesteuert werden können
    andererseits können über Sessions auch diese Werte wiederum übersteuert werden.

    Da sich dieses HOWTO an Programmierer richtet, gehe ich auf programmtechnische Details NICHT ein, die notwendigen Informa-
    tionen können den Handbüchern und Anleitungen zu PHP entnommen werden.

    2 Dateien (<b>index_gets.php</b> und <b>index_posts.php</b>) bieten die Möglichkeit Variable zuzuweisen. Die beiden Dateien lesen alle 
    Dateien aus den Verzeichnissen <i>gets</i> und <i>posts</i> und binden diese dann ein. Die Reihenfolge kann dadurch verändert werden, 
    indem man den Dateien Namen zuweist, die bei einer Sortierung vorne/hinten gereiht würden. Ich mache das 
    durch Zahlen als Namen. So wird die Datei 255.php nach 200.php und vor 300.php gelesen
    
    Die Datei <b>init.php</b> kann verwendet werden um Variablen zu initialisieren und mit Startwerten zu versehen. Diese 
    Datei wird von mir allerdings hin und wieder ausgetauscht, wenn Änderungen am Script passieren oder Fehler behoben werden.

    Am Besten man fügt seine eigene Init-Routine im Script init.php ein. Die Datei wird bei jedem Aufruf des Scripts durchlau-
    fen.

    Aber nun genug, fangen wir an....


    Sehen wir uns einmal an, wie das Script allgemein arbeitet.

    Das Script wird über die Datei <b>index.php</b> gestart und geht wie Folgt vor:

    1.
    Diese Datei holt sich zuerst alles, was sie zum Funktionieren braucht, indem sie die Datein <b>includes.php</b> aufruft. Es wird
    die Datenbankverbindung hergestellt, notwendige Funktionen werden geladen, Variablen initialisiert etc.

    2.
    Dann wird der Grundlegende Aufbau (das Aussehen) wie CSS-Eigenschaften, Header, HTML-Container und Fusszeile etc. festgelegt.

    3.
    Alle bestehenden Karteikarten werden gelistet

    4.
    Module die integriert sind werden hier geprüft, ob diese Module berechtigt sind und ob die angegebene Startdatei vorhanden ist.
    Das als Startkartei festgelegte Modul wird gestartet und der Aufbau ist abgeschlossen.

    Das bedeutet:
    Um also ein eigenes Modul zu schreiben, brauchen Sie sich keine Gedanken um Datenbankverbindung etc zu machen. Wollen Sie die
    bestehenden Funktionen von adresSQL nutzen, brauchen Sie nicht einmal dafür zu sorgen, dass sie geladen werden, es stehen Ihnen
    alle Funktionen zur Verfügung.
    Einzige Voraussetzung, Sie haben Ihr Script in der Administration korrekt einfügen.

    Module werden (so erwarte ich es eigentlich) in eigenen Unterverzeichnissen untergebracht. Das hat den Vorteil, dass man an den
    original Script-Datein nichts verändern muss und so bei Updates seine Arbeit an den Dateien nicht ständig wiederholen muss.

    Die index.php wechselt automatisch bei Modulen in das eigentragene Modul-Verzeichnis, startet die Startdatei und wechselt danach
    automatisch wieder ins Stammverzeichnis zurück.

    Sehen wir uns einen bestehenden Eintrag und was da passiert an einem Beispiel an, nehemen wir das Modul events. Der Eintrag der
    Events sieht ca. so aus:

        ID  Language Codewort   Template            Verzeichnis     Überschrift
        5   events              events.tpl          events          $lng[events]

    die ID wird automatisch vergeben, Das Language-Codewort ist der Index der Variablen $lng[INDEX] der anzuzeigen ist, hier also 
    die Variable $lng[events].
    Das Start-Template ist <i>events.tpl</i> und soll sich im Verzeichnis <i>events</i> befinden.
    Die Überschrift ist der Teil, der direkt unter den Karteikarten ausgegeben wird, hier steht, dass aus der Languagedatei die 
    Variable $lng[events] anzuzeigen ist.

    Die index.php sucht nun (gemäss Punkt 4 oben), im Verzeichnis templates/events nach der Datei events.tpl, wird diese nicht 
    gefunden, gibt adresSQL dem Script noch eine Chance und sucht im Verzeichnis /templates nach events.tpl. Wird auch hier nichts 
    gefunden, wird eine  Fehlermeldung ausgegeben, ansonsten wird das Template gestartet.

    Da in den Punkten 1-3 bereits alle notwendigen Arbeiten erledigt sind, braucht man sich um die Funktionsweise von adresSQL keine 
    Gedanken mehr machen.

    AdresSQL stellt eine Vielzahl an programmierten Funktionen zur Verfügung. Ich achte normaler Weise sehr darauf, diese Funktionen 
    nicht zu verändern bzw. nur so zu verändern, dass die bisherige Arbeitsweise nicht verloren geht.
    Diese Funktionen stellen z.B. ein einheitliches Bild bei der Ausgabe sicher oder sorgen dafür, dass Fehler in den entsprechenden 
    Logs eingetragen werden.

    Zwingen will ich natürlich niemanden, aber es macht durchaus Sinn, diese Funktionen auch in eigenen Modulen zu verwenden.

