Download Latest Version adressql_13033.zip (12.2 MB)
Email in envelope

Get an email when there's a new version of adresSQL

Home
Name Modified Size InfoDownloads / Week
adressql_13033.zip 2018-02-13 12.2 MB
adressql_phpsane_mod.zip 2015-04-02 164.6 kB
README_DE.txt 2015-03-31 59.7 kB
Totals: 3 Items   12.4 MB 1

          ,,_
        o"   )~
         '' ''
        +----------------------------------------------------------------------+
          adresSQL
        +----------------------------------------------------------------------+
          Copyright (c) 2009-2015 Matthias Nitzschke (mn-portal.at)
          Version: see vars/version.var
          Web: http://www.mn-portal.at
          Forum: http://forum.mn-portal.at
        +----------------------------------------------------------------------+
          Author: Matthias Nitzschke <office@mn-portal.at>
        +----------------------------------------------------------------------+


          Stand: März 2015

          Diese Textversion ist in UTF-8 kodiert

    Die Nutzung des Scripts geschieht immerauf eigene Gefahr. Der Author hat den Code nach bestem Wissen erstellt, was die 100%'ige
    Fehlerlosigkeit allerdings nicht gewährleistet.
    Für Schäden, die durch die Nutzung oder Installation des Scripts entstehen oder entstanden sind, wird keinerlei Haftung übernommen
    und es können keine Rechtsansprüche welcher Art auch immer daraus abgeleitet werden.

    Das Script steht in der ausgelieferten (downloadbaren) Version unter der Lizenz der GPL (GNU GENERAL PUBLIC LICENSE). Näheres siehe
    docs/license.txt und docs/COPYING

    Die Weitergabe des Scriptes adresSQL unter eigenem Namen ist ausgeschlossen, ebenso ist die entgeltliche Weitergabe in jeglicher Form
    (Vermietung, Verkauf, Download etc.) nur mit ausdrücklicher Genehmigung der Authors möglich. Diese Version ist in diesem Umfang
    ausdrücklich kostenlos und es dürfen keinerlei Gebühren für die Nutzung verlangt werden.

    Die Copyrighthinweise (das Logo) und der Link zu Homepage des Autors dürfen aus der Kostenlosen Version nicht entfernt werden.

    Sie können das Script beliebig selbst anpassen, erweitern oder verändern.

    Es kann kein Anspruch auf Fehlerkorrekturen am Code erhoben werden.

    Die Lizenz (GPL) betrifft NICHT kostenpflichtige Module die von mn-portal zur Verfügung gestellt werden. Diese Module werden
    (wenn nicht anders angegeben) gegen einen einmaligen Unkostenbeitrag per Mail zugesandt und können danach zu eigenen Zwecken
    beliebig oft installiert und verwendet werden.

    Die kostenlose Weitergabe erworbener Module an Dritte ist verboten. Ich behalte mir vor, extra angefertigte (kostenpflichtige)
    Module in späteren Versionen des Scriptes kostenlos zur verfügung zu stellen. Abweichende Eigentumsansprüche müssen schriftlich
    vereinbart werden.

    Wer mir eine Spende zukommen lassen möchte, kann dies über paypal mit einer Spende an sysop@mn-portal.de tun.

    ***********************************************************************************************************************************

    A  Allgemeine Hinweise
    B  Notwendige Programme und Webserver-Module
    C  Installation
    D  Wichtige Einstellungen in der conf.php
    E  Zentral/Filialdatenbank
    F  FAQ
    G  Tricks
    H  Kurze eigene Bemerkungen
    I  Wawi-Modul
    J  Windows als Server

    Programmversion und Entwicklungsverlauf siehe history.txt

    ***********************************************************************************************************************************


    *****
    * A *    Allgemeines
    *****

    Verwendete Software Dritter um dieses Script zu verwirklichen:

    * tinymce (Javascript Editor)
    * jodconverter (Schnittstelle zu OpenOffoffice um Dokumente ins PDF-Format zu konvertieren)
    * JQery (Javascript Libary für Animationen, Kalender und andere hübsche Funktionen)
    * wz_tooltip von Walter Zorn

    Recht herzlichen Dank an die Programmierer, die ihre Arbeit kostenlos zur Verfügung gestellt haben.
    Die genannten Scripte waren zum Zeitpunkt der Erstellung von adresSQL frei. Rechtliche Anderungen (z.B. Lizenzänderungen)
    durch Updates oder Austausch dieser Scripte, sind nicht ausgeschlossen und Updates erfolgen auf eigene Gefahr.

    Das Script wurde zwar bei einer ungewöhnlich hohen Auflösung von 1600x1200 erstellt, aber mit einem Viewport von 1200x860
    getestet und bietet in seiner derzeitigen Fassung natürlich bei einer Auflösung in diesem Bereich den besten Bedien-Kompfort.
    Anpassungen können über die CSS Datei erfolgen.

    Getestet wurde mit den Browsern Iceweasel (Firefox), Opera, Galeon, Chromium und Konqueror ohne nennenswerte Unterschiede
    Der Internetexplorer (bis vers 8) macht wie immer bei Kleinigkeiten "Männchen", wird von mir aber wegen nichtkonformen W3C Verhaltens
    ignoriert. Wer auf den IE nicht verzichten kann muss Kleinigkeiten in der CSS-Datei selber anpassen oder vielleicht regelt
    sich das ja durch Updates selber :-)
    Gecoded wurde das Script auf:

      Debian-Lenny mit MYSQL-Server 5.0.51a-24+lenny4-log und PHP Version 5.2.6-1+lenny9 UND
      Debian-Squeeze mit MYSQL-Server 5.1.66-0+squeeze1 und PHP Version 5.3.3-7+squeeze14 UND
      Debian-Wheezy mit MYSQL-Server 5.5.31-0+wheezy1 und PHP Version 5.4.4-13.

      Da PHP ab Version 5.5 voraussichtlich die mysql-extension auflassen wird, wurde dem Script ein mysqli wrapper
      hinzugefügt und getestet.
      Der wrapper schaltet sich automatisch zu, sollte die mysql-extension nicht gefunden werden. es muss also keine Einstellung
      vorgenommen werden.

    -----------------------------------------------------------------------------------------------------------------------------------

    !!!

    Sensible Daten müssen mit einer Firewall vor Zugriffen geschützt werden!
    Das bedeutet:

      Eine öffentlich zugängige Installation hat natürlich ihre Schwächen. Eine falsche Konfiguration des Webservers b.z.w des Mysql-
      Servers kann Angreifern den Zugriff auf Daten ermöglichen.

      Das soll nicht bedeuten, dass das Script unsicher ist. Das Script selbst nutzt PHP und alle damit verbundenen Dienste. Sind
      diese Dienste abgesichert, sollte auch das Script sicher sein.

      Wer sensible Daten mit dem Script verwalten möchte, sollte sich mit den Möglichkeiten der Absicherung beschäftigen.
      Ein einfache Methode ist z.B. .htaccess, die auch von allen guten Servern unterstützt wird.

      Als Beispiel diene ein Upload einer Datei.
      Uploads werden in Unterverzeichnissen des Scripts (/templates/adressenscript/uploads) angelegt, wo ein Verzeichnis für jede
      Userid der Adressdaten existiert (wenn Dateien zu dieser ID hochgeladen wurden).
      Wer externen Zugriff auf diese Verzeichnisse erlaubt, erlaubt es auch, Dateien aus diesem Verzeichnis zu laden und zu betrachten.

      Der volle Funktionsumfang des Scripts kann ohnedies nur genützt werden, wenn man einen eigenen Server einsetzt. Damit sollte es
      auch kein Problem sein, den Server vor Zugriffen zu schützen.

      Ich selbst gebe nur bestimmte IP-Adressen für die Nutzung des Servers frei, alle nicht eingetragenen IP-Adressen werden ohne
      weitere Nachfrage geblockt.

    !! ACHTUNG !!

    Im Installationverzeichnis und einigen Unterverzeichnissen diverser Module liegt eine Datei .htaccess, die das direkte Listen der
    Verzeichnisse b.z.w den direkten Aufruf unterbindet, sofern Ihr Server .htaccess unterstützt.
    Sie können hier weitere Einschränkungen vornehmen.

        ./.htaccess
        ./templates/adressenscript/temp/.htaccess
        ./templates/admin/backup/.htaccess

    Bei Problemen können Sie diese Datei(en) auch löschen, Sie verlieren aber den .htaccess-Schutz.

    ***********************************************************************************************************************************


    *****
    * B *    Notwendige Programme/Module
    *****

    Um das Script vollständig nutzen zu können sind folgende Programme/Module notwendig:

    * Webserver
    * PHP 5 (mit GD Mudul) (PHP 4 wurde nicht getestet, sollte aber auch funktionieren)
    * PHP-Cli, falls Cronjobs direkt über das PHP-Script aufgerufen werden sollen.
    * Mysql Datenbank (Server)
    * Für den Betrieb mit baikal ist der baikal-Server erforderlich. Zur Installation mit baikal-Unterstützung siehe zusätzlich
      die README_WITH_BAIKAL_CLDAV_SERVER

    Um Vorschaubilder für PDF Dateien anzeigen zu können benötigt das Script

    *  ImageMagick
       convert tool zum Konvertieren von Dateiformaten (Shell Befehl)

    *  Imagick Modul PHP
       Wrapper fuer ImageMagick

    *  Openoffice um als Konvertierungsdienst gestartet zu werden oder alternativ
       abiword zum Konvertieren von Text (Word) Dateien -> PDF

    *  MYSQL User
       Der User, der sich mit der Datenbank verbindet braucht alle Rechte um Datenbanken und Tabellen erzeugen und
       verändern zu können.

    *  wget, wenn man von der Möglichkeit des Online-Updates gebrauch machen möchte

    ***********************************************************************************************************************************


    *****
    * C *    Installation adresSQL
    *****

    Die aktuelle Version von adresSQL kann unter folgender URL als ZIP-File geladen werden.

        http://www.mn-portal.at/index.php?qwid=2


    Wem es nicht schnell genug gehen kann, hier eine wirkliche Quick Anleitung:


    1.
        ZIP entpacken und im Verzeichnis docs die Readme lesen.

    2.
        connect.php, Einstellungen für den Datenbankzugriff festlegen
        Die Zugangsdaten zur Datenbank stellt der Provider zur Verfügung.

    3.
        Alle Dateien und Verzeichnisse ind Wunschverzeichnis hochladen.

    4.

        Wahlweise kann man:

        a.
        install.php aufrufen.
        Das Script installiert sich eigentlich von allein, legt eine Datenbank an, erstellt alle Tabellen und man kann loslegen.

        b.
        Sich einen SQL-Dump von mn-portal herunter laden und diesen z.B. über phpmyadmnin in die Datenbank importieren. Es werden
        alle Tabellen angelegt und mit den Installationswerten befüllt.

        Der Dump:
        http://forum.mn-portal.at/index.php?mode=viewthread&forum_id=6&thread=18&goto=1&post_nr=1#1

                                    ********************************************************


    Nun das Ganze Schritt für Schritt.


    1. Vorbereitung

         VOR dem Upload ist es notwendig die Datei connect.php mit den notwendigen Zugangsdaten zu versehen.
         Alle notwendigen Daten sind in der Datei connect.php einzutragen. Die Daten könnnen beim ISP/Service-Anbieter erfragt werden.
         Notwendig sind:

          Host (meistens localhost)  Var $db_host
          User                       Var $db_user
          Passwort                   Var $db_pass
          Datenbankname              Var $db_name

       Die anderen Einstellungen der connect.php sollten beibehalten werden.
       Ich rate dringend davon ab, den Zeichensatz der Datenbank umzustellen.


    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

       !!! WICHTIG !!!

       BEVOR SIE NUN WEITERMACHEN !

       In der conf.php habe ich die wesentlichen Usereinstellungen (ganz oben) extra zusammengefasst. Diese sollte man anpassen!

       Passen Sie die Verschlüsselungsmethode für Ihr Passwort Ihren Bedürfnissen an. Derzeit ist MD5 als Methode eingestellt.
       Die beiden Parameter die die Verschlüsselung einstellen sind:

            $config['use_crypt_method']             = 'md5';
            $config['use_crypt_option']             = '';

       Wenn Sie die Methode ändern wollen, gehen Sie wie folgt vor:

            Wollen Sie z.B. BLOWFISH als Passwortverschlüsselung verwenden ist in der conf.php ein Beispiel unterhalb der aktiven
            Parameter vorhanden.

            1.
            Entfernen Sie die REM`s (das sind die beiden Slashes vor den Parametern) und setzen Sie ein REM vor die aktiven Einstellungen.

            2.
            Ersetzen Sie den String "adressqlsomesillystringsalt" im Parameter $config['use_crypt_option'] durch einen belibigen
            String, der aus 22 Zeichen ("./0-9A-Za-z") besteht!

       Hinweise wie verschiedene Methoden eingestellt werden können finden Sie unter:

            http://us1.php.net/manual/de/function.crypt.php

       !!!!!!!!!!!!!!
       !! VORSICHT !!
       !!!!!!!!!!!!!!

            Eine Nachträgliche Umstellung der Verschlüsselungsmethode ist mit Handarbeit und der Gefahr verbunden,
            dass Sie sich nicht mehr einloggen können.

       Dass Passwort-Feld in der Tabelle "user" kann maximal 255 Zeichen speichern.

       Md5 wird im Netz häufig als "unsicher" bezeichnet, da es theoretisch möglich ist, mit unterschiedlichen Zugangsdaten einen
       Key zu erzeugen, der mit einem anderen identisch ist. Dieses Argument kann man diskutieren, ich gehe von einem verantwortungs-
       bewussten Umgang mit den Userdaten aus.
       Die Unsicherheit bezieht sich genau betrachtet auf gestohlene Daten aus der Datenbank. Für MD5-Passwörter gibt es im Netz
       Nachschlage-Tabellen, wo bekannte Passwörter gesammelt und schnell abgeglichen werden können.

       Wenn Sie Ihre Userdaten nicht weiter geben, ist ein Login mit falschen Daten aber sehr, sehr unwahrscheinlich, ich nutze eine
       Kombination aus mehreren Informationen um ein erfolgreiches Login zu verifizieren.

       Nutzen Sie ein sichers Passwort kobiniert aus Ziffern, Gros/Kleinbuchstaben und Sonderzeichen.

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    2. Hochladen aller Dateien, Verzeichnisse und deren Inhalte (per FTP-Client).

       HINWEIS !!
       Ich habe im Stamm-Verzeichniss eine .htaccess Datei, die ein direktes Listing verhindert. Dazu muss der Webserver
       .htaccess unterstützen. Das ist deshalb wichtig, damit niemand ein Verzeichnis dirkekt über die URL listen kann.
       Zumindest im Stammverzeichnis sollte diese Datei enthalten sein. Das Verbot wird bei korrekter Konfiguration des Servers
       auf die Unterverzeichnisse vererbt.

       Der Inhalt der .htaccess Datei um ein direktes Listen der Daten zu verhindern lautet:

              Options -Indexes

    3. Rechte setzen

       * Folgende Verzeichnisse (UND deren Unterverzeichnisse) MÜSSEN Lese, Schreib und Betreten-Rechte  besitzen (chmod 777)

          /logs
          /updates
          /vars
          /temp
          /language
          /templates/adressenscript/temp
          /templates/adressenscript/uploads
          /templates/admin/backup
          /templates/admin/errorlog
          /templates/admin/triggerdata

       Alle anderen Verzeichnisse und Dateien sollten zumindest Leserechte und Betreten-Rechte besitzen
       Ein chmod 777 auf alle VERZEICHNISSE ist keine sicherheitstechnische Katastrophe. Die Dateien selbst sollten aber
       NICHT mit Ausführungsrechten versehen werden

       * Die Dateien im Verzeichnis /vars und /language müssen zumindest Lese und Schreibrechte (chmod 0666) besitzen.

       * Die Dateien im Verzeichnis /vars, die mit .ht beginnen sollten auf chmod 777 gestellt werden, da der Apache2 sonst
         u.U. den Zugriff verweigert und ein Forbidden ausgibt.

       HINWEIS..
       Um den direkten Aufruf von einigen Dateien und deren Inhalt zu verhindern, sind diese Dateien im Dateinamen mit
       dem Präfix .ht versehen. Auf Linux-Servern macht der führende Punkt Dateien unsichtbar. Der Webserver verweigert
       die direkte Anzeige von Dateien die mit .ht beginnen. Eventuell muss das FTP-Programm zur Anzeige dieser Dateien
       entsprechend eingestellt werden.


    4. install.php aufrufen

       Nachdem alle Einstellungen vorgenommen wurde und alle Daten hochgeladen wurden, wird im Browser die URL gefolgt von install.php
       aufgerufen. Das Script erstellt die Datenbank und legt alle Tabellen an.
       Dass install-Script prüft alle Rechte und gibt eventuelle Fehler aus. Die Behebung der angezeigten Fehlern ist nicht zwingend und
       kann übergangen werden, das kann aber u.U die Funktion von adresSQL einschränken.

    5. Erstes Login und Admincenter

       Nach der Installation kann ein erstes Login erfolgen (User=admin, Passwort=admin). Nun das Admincenter aufrufen und einen neuen
       User anlegen und Adminrechte erteilen. Danach wieder ausloggen und mit dem neuen User anmelden. Wieder ins Admincenter und dort
       Den User=admin löchen, sonst kann sich jeder mit diesen Zugangsdaten anmelden und erreicht Adminrechte!

       ACHTUNG WICHTIG !!!
       Wenigstens sollte dem User admin ein neues Passwort zugewiesen werden !!

    6. Config neu einlesen.

       Das Script nutzt Anfangs die Datei conf.php um alle wichtigen Einstellungen vorzunehmen. Um das Script online einstellbar zu
       machen, muss die conf.php in die Datenbank eingelesen werden.
       Nachdem der Punkt "Config neu einlesen" aus der Adminstration abgearbeitet wurde kann nun im Admincenter umter dem Punkt
       "Konfiguration bearbeiten" das Script nach den eigenen Bedürfnissen angepasst werden.
       Ich rate dringend dazu, die UTF8-Codierung ($config['use_utf8']) nicht umzustellen und den Parameter auf 1 zu belassen.

       6.1

       Der Aufruf des Punktes Config neu einlesen fügt seit Version 1.2230 nur NEUE Parameter in der Datenbank hinzu und lässt alle
       bestehenden Einstellungen unberührt. Alte Einstellungen gehen hier nicht mehr verloren.

       Alle Versionen Vor 1.2230 überschreiben bestehende Einstellungen und übernehmen die Werte der Datei conf.php. Möchte man in diesen
       Versionen die Einstellungen dauerhaft sichern, sollte die conf.php mit den gewünschten Werten gewartet werden.

       6.2

       Um wieder mit den Einstellungen der conf.php zu starten, wird die Tabelle config geleert (ACHTUNG Tabelle nicht löschen !!).
       Sind keine Einträge in dieser Tabelle (ist sie leer), greift das Script automatisch auf die conf.php zurück.

       HINWEIS!!

         Alternativ kann adresSQL so konfiguriert werden, dass vor dem Einlesen der conf.php die Konfigurationstabelle geleert wird:
         Setzen Sie in der Konfiguration unter Sicherheit den Parameter

            $config['truncate_conf_table']  = 1
            $config['update_conf_table_only'] = 0

  WICHTIG !!

       Das einlesen der conf.php legt alle Daten in einer Tabelle ab. Erst wenn diese Tabelle befüllt ist, können online (über den Browser)
       Einstellungen verändert werden. Die Datei kann jeder Zeit verändert und neu eingelesen werden. Ohne die Daten einzulesen bleibt das
       Fenster für die Einstellungen leer!

       Bitte die Mailadresse ändern, damit Mails auch unter der eigenen Adresse versendet werden. Solange ein User keine eigene Mailadresse
       angegeben hat ist die Standard-Adresse die Absende/Antwort-Adresse des Scripts.


    adresSQL ist nun fertig installiert....

    Hinweise zur Bedienung, können der integrierten Hilfe (z.B. in der Übersichtskartei der Punkt Script-Hilfe) entnommen werden.

    Als Administrator sollten Sie sie unbedingt in der Administration unter "Sonstiges und Hilfe" den Punkt "Hilfe zum Admincenter" komplett
    durchlesen. Hier werden alle einzelnen Punkte der Administration genauer beschrieben.

    Sollten dennoch Fragen auftauchen, es gibt ein Forum zum Script, dass unter

        http://forum.mn-portal.at

    erreichbar ist

    ***********************************************************************************************************************************

    ONLINE UPDATE

       WICHTIG in eigener Sache !!

       Wenn Sie vom Online-Update gebrauch machen möchten, ist neu, das Sie per Default an einer anonymen Statistik teilnehmen, die einen
       Zähler hoch setzt und die installierte Versionsnummer speichert. Persönliche Daten (wie z.B. IP-Ardesse etc.) werden NICHT! erfasst,
       ich nutze die Statistik nur, um die Anzahl verwendeter Installationen und Update-Versuche zu dokumentieren. Das soll helfen, die
       Updates besser und eventuell häufiger zu gestalten.

       Wer an dieser Statistik nicht teilnehmen möchte, kann in der Administration -> Konfiguration bearbeiten -> Script-Tools
       den Parameter

            $config['participate_statistics'] = 1

       auf 0 (Null) Stellen und so die Teilnahme unterbinden. Ist in Ihrer Version dieser Parameter garnicht vorhanden, wird die Statistik
       NICHT! geschrieben.

       --------------------------------------------------------------------------------------------------------------------------------

       Unter "Administration -> Auswertungen und Tools -> Script Konsistenz prüfen" gibt es ab Version 1.2221 einen Punkt Auf Update
       überprüfen, der versucht von mn-portal Updates zu laden und zu installieren.

       Folgende Probleme können bei einem Online-Update entstehen:

       Es kann zu einer Fehlermeldung kommen, dass das chmod nicht erfolgen kann, da keine ausreichenden Rechte bestehen. Das liegt daran,
       dass der Webserver (meist www-data) keine Berechtigung hat, die Dateirechte vom User zu verändern. Der Kopiervorgang sollte dennoch
       funktionieren.

       Man sollte dringend kontrollieren, ob der Webserver den Kopiervorgang erfolgreich abgeschlossen hat.

       Werden die Dateirechte auf chmod 666, b.z.w 777 gestellt, sollte in den meisten Fällen das Kopieren funktionieren, Garantie
       gebe ich keine.

       LÖSUNG:
       In der Konfiguration kann der Parameter

            $config['unlink_on_update'] = 0;

       auf 1 gestellt werden, dann versucht das Script vor einem Update die bestehende Datei zu löschen. Ist der Vorgang erfolgreich
       wird der Webserver Eigentümer der kopierten Datei, was dazu führen kann, dass man den FTP-Zugriff auf die Datei verliert, wenn
       die Rechte zu restriktiv gesetzt werden.

    ***********************************************************************************************************************************

    EVENTS

        Die Anzeig von Adressen und Terminen ist an ein Login gebunden. Nun möchte man nicht jedem Zugriff auf die Daten geben und
        trotzdem eingetragene Veranstaltungen veröffentlichen. Dazu dient der Event-Kalender. Dem Script ist eine Datei zur Ver-
        öffentlichung eingetragener Events OHNE dass ein Login benötigt wird beigelegt (ext_events.php).

        Im Verzeichnis extern befindet sich eine index.php als Vorlage, die es erlaubt von "Aussen" auf das Script zuzugreifen.
        Die Datei funktioniert, wenn in der php.ini allow_url_include = On gesetzt ist.
        Der Parameter erlaubt es PHP eine Datei über einen HTTP-Aufruf zu includen, die Datei muss sich dafür nicht auf dem eigenen
        Webspace befinden und kann bei einem anderen Hoster liegen.
        Die Datei include_ext_events.php zeigt, wie man die Events auf dem eigenen Webspace per include einbinden kann.

        Beide Dateien verstehen sich als Vorlage und müssen vor der Verwendung in einem Editor angepasst werden (Pfadangaben etc).

        Ist allow_url_include = Off kann aber alternativ die Datei ext_events.php direkt verlinkt oder included werden.
        Auch dafür ist eine Beispieldatei im Verzeichnis extern vorhanden (include_ext_events.php).

    ***********************************************************************************************************************************

    Eine kurze Beschreibung der Datei conf.php

       Die conf.php dient zum Anpassen des Scripts und legt Konstanten und Einstellungen fest.
       Einige Einstellungen dienen dazu die Funktionsweise und das Aussehen des Scripts zu steuern und Standardwerte beim Start des
       Scripts zu setzen, einige sind freie Einstellungen und können vom Anwender per Script selbst übersteuert werden. Cookies
       müssen für das Adressen-Script akzeptiert werden, sonst ist ein permanentes Login nicht möglich.
       Das Script löscht beim Logout die Cookies wieder und User müssen sich erneut anmelden.

       Das Script startet mit den Voreinstellungen normalerweise problemlos und kann im Bedarfsfall über diese Datei angepasst werden.
       Je nachdem, ob alle unter B aufgezählten Programme/Module zur Verfügung stehen, können über die conf.php einzelne Funk-
       tionen ein und ausgeschalten werden (siehe vor allem die abiword und imagick einstellungen für PDF-Konvertierung und PDF
       Vorschaubilder).

       Einige wenige Einstellungen (bis jetzt nur solche, die das Aussehen beeinflussen) haben (noch) keine Wirkung, da sie entweder
       für weitere Module schon vorbereitet wurden oder noch im Beta Stadium sind. Ich habe diese Einstellungen gekennzeichnet und
       entsprechend kommentiert. Sollte ich dennoch etwas übersehen haben, tut es mir leid.

       Haben Sie die conf.php über das Admincenter eingelesen, können Sie alle Einstellungen bequem über Ihr Admincenter machen. Die
       Parameter (Variablennamen) sind mit denen der conf.php identisch.

       Im Admincenter befindet sich ein eigener Hilfebereich, der sich näher mit der Konfiguration beschäftigt.


    7. Online Hilfe

       Das Script bietet in der Übersicht eine Schnelle Hilfe um sich zurecht zu finden. Das Admincenter verfügt über eine eigene Hilfe.
       Bitte bei Fragen zuerst dort nachlesen ob Hilfe angeboten wird.

    ***********************************************************************************************************************************


    *****
    * D *    Wichtige Einstellungen in der conf.php
    *****

       Die conf.php stellt Grundlegende Einstellungen zur Funktionsweise und dem Aussehen des Scripts zur Verfügung. Was das
       Aussehen angeht kann fröhlich herum experimentiert werden, anders sieht es mit Funktionen aus. Falsche Einstellungen können
       Fehler und/oder defekte Daten produzieren.

       Die wichtigsten Parameter sind:

       a. PDF-Thumbnail erstellen
      ----------------------------

       $config['make_pdf_thumb'] (Voreinstllung 1=ja)

          Legt fest, ob überhaupt ein Thumbnail für PDF-Dateien erstellt werden soll

       $config['use_imagick_func'] (Voreinstllung 0=shell)

          Es gibt 2 Möglichkeiten Thumbnails zu erstellen.

             1. das imagick PHP-Modul ($config['use_imagick_func'] wird auf 1 (Eins) gestellt)
             Dieses Modul wird von PHP zur Verfügung gestellt und benötigt keinen Zugriff auf Shell-Command Ebene. Das Modul erlaubt es
             eine Klasse aufzurufen, die aus PDF-Dateien ein Thumbnail erstellt. Bei mehrseitigen Dokumenten wird die Erste Seite
             als Vorschaubild generiert.

             2.
             Der Shell-Befehl "convert" oder "gm convert" ($config['use_imagick_func'] wird auf 0 (NULL) gestellt).
             Steht das PHP-Modul imagick nicht zur Verfügung, ist aber das Tool ImageMagick auf dem Server installiert, kann über
             einen Shellbefehl eine Konvertierung erfolgen.

             Auf Shell Ebene werden für mehrseiteige Dokumente mehrere Bilder (für jede Seite ein Bild) erzeugt und mit einer
             Nummerierung versehen. Das Adressen-Script benennt die erste Seite automatisch um und lässt die erste Seite als
             Vorschaubild anzeigen. Alle weiteren Seiten werden NICHT angezeigt, liegen aber als Bilder im Usertemp-Verzeichnis.

       $config['konvert_only_firstpage'] (Voreinstellung 1=ja)

          Kann auch den Shell-Befehl dazu veranlassen nur die erste Seite zu konvertieren und alle weiteren ausser Acht zu lassen.
          Das spart Platz und bringt Geschwindigkeit.

       $config['imagick_make_outputfile'] (Voreinstllung '.jpg' )

          Endung der Datei, die mit imagick erstellt werden soll. Wird der Shellaufruf von imagick verwendet und ist die Endung
          .gif, wird u.U. eine animierte Datei erzeugt, die alle Seiten eines Dokuments anzeigt und wie einen Film abspielen lässt.
          Allerdings ist die Animation sehr schnell.

       $config['remove_temp_pdf_files'] (Voreinstllung 0=nein)

          Da die Erstellung von Vorschaubildern ein rechenintensiver Vorgang ist, kann mit diesem Parameter festgelegt werden, ob
          bei jedem Aufruf der Uploads die Vorschau neu erstellt werden soll oder ob auf bereits erstellte Vorschaubilder zurück-
          gegriffen werden soll.
          Das Adressenscript speichert alle erstellten Vorschaubilder Je Anwender im verzeichnis /temp/userhash und kann bereits
          erstellte Bilder nach Bedarf aus diesem Verzeichnis verwenden.
          Da bei jedem Adressdatensatz unterschiedliche Dokumente hinterlegt werden können, kann dieser Parameter zu falschen An-
          zeigen führen.

          Bsp.

             Adresse A hat einen Vertrag mit dem Namen vertrag.pdf hinterlegt, ein Vorschaubild mit dem Namen vertrag.jpg wird
             erzeugt.

             Adresse B bekommt einen anderen Vertrag ebenfalls mit dem Namen vertrag.pdf hinterlegt. Das Script sucht nun die Datei
             vertrag.jpg und lässt sie als Vorschaubild anzeigen. Das Bild zum Vertrag A wird nun als Vorschaubild zum Vertrag B
             wiedergegeben.

          Um diesen Fehler zu vermeiden kann der Parameter auf 1 gesetzt werden. Nun werden, vor der Anzeige von Vorschaubildern,
          alle Bilder neu erstellt, was allerdings (je nach Datenmenge und Server) einige Zeit in Anspruch nehmen kann.
          Wer den shell-Befehl verwendet und nicht nur die erste Seite zu einem Vorschaubild macht, sollte sich darüber klar sein,
          dass bei einem 200 Seiten Dokument 200 Bilder generiert werden.
          Bei 50 Dateien a 200 Seiten macht das.......

          Auch wenn das Vorschaubild nicht korrekt sein sollte, so wird bei einem Klick doch der Download der korrekten Datei gestartet.

        !!! ACHTUNG !!!

        Wird ein User neu angelegt und befinden sich sehr viele Uploads in den Adressdateien, wird der ERSTE Aufruf der Kartei Datei-Upload
        sicher einige Zeit benötigen, die entsprechenden Vorschaubilder für den User zu erstellen. Dieser Vorgang ist in der Voreinstellung
        nur einmalig je Datensatz und danach reagiert die Upload-Kartei recht schnell. Man beachte, dass viele User bei vielen Dokumenten
        auch einiges an Platz für die Vorschau verbrauchen.


      b. Konvertieren ins PDF-Format
         Um Abiword verwenden zu können muss Abiword auf dem Server installiert sein. Für Openoffice ist OpenOffice/LibreOffice notwendig.

         HINWEIS !!
         Wenn Sie Open/LibreOffice einsetzen wollen lesen Sie auch die kurze Anleitung unter docs/some_help. Dort steht, wie man den Dienst
         startet. Das Dokument beinhaltet nur ein paar Zeilen.
      --------------------------------

       $config['konvert_to_pdf'] (Voreinstllung 1=ja)

          Dieser Parameter erlaubt es, zu definieren, ob Uploads ins PDF-Format konvertiert werden sollen. Das verwendete Programm ist
          dabei unerheblich, ich setze Openoffice ein, alle Einstellungen sind auch mit abiword getestet. Dazu muss allerdings abiword
          installiert und lauffähig sein. Dateien werden nach dem Upload ins PDF-Format konvertiert und die original-Datei wird gelöscht!

          Stellen Sie den Parameter $config['del_non_pdffile'] auf 0, beleinen die Orginale erhalten.
          Abiword erstellt ein verstecktes Verzeichnis mit dem Namen .AbiSuite im root-Verzeichnis.

      $config['konverter_to_use'] (Voreinstllung openoffice)

          Legt den verwendeten Dienst fest, mit dem Konvertierungen durchgeführt werden sollen. Verwendet man OpenOffice, ist zu be-
          achten, dass auf dem Server, auf dem OpenOffice als Dienst läuft, die Grafische Oberfläche von OpenOffie nicht mehr gestartet
          werden kann. Der Einsatz von adressql auf localhost ist also nicht zu empfehlen, wenn man mit Openoffice arbeiten möchte.
          Der Vorteil von OpenOffice/LibreOffice ist, dass OpenOffice auch andere Dateien als Textdokumente konvertieren kann. So können
          z.B. auch HTML, *.xls, *.ppt, Postscript oder XML Dateien konvertiert werden.

       $config['konvert_endung'] (Voreinstllung array(html,htm,ps,txt,sxw,rtf,doc,odt,xls,ods))

          Legt fest, welche Dateiendungen ins PDF-Format konvertiert werden sollen. Prinzipiell sind alle Dateiendungen
          möglich, die von abiword oder OpenOffice konvertierbar sind (wo also der PDF-Button aktiv ist) b.z.w wo das PDF-Format als
          Speicherformat möglich ist.

       $config['konvert_command'] (Voreinstllung 'abiword --to=pdf ') Man beachte den Abstand am Ende

          Dieser Parameter wirkt nur, wenn man abiword als Konverter eingetragen hat.
          Abiword kann mit einer Vielzahl an Schaltern versehen werden. über diesen Parameter können Befehle direkt an abiword über-
          geben werden.
          Setzt man Openoffice ein, muss man an dem Befehl nichts anpassen, diese Einstellung ist exclusiv für abiword reserviert.

             Abiword nutzt folgende Syntax:

                abiword --to=pdf Dateiname.Endung.

             Das Script setzt also den Befehl folgendermassen ab:

                $config['konvert_command'] Dateiname.endung

          abiword konvertiert die Datei dann ins PDF-Format und benennt die Datei Dateiname.pdf

       Dieser Shellbefehl kann durchaus dazu verwendet werden um andere Programme als abiword zu einzusetzen, sofern sie die selbe Syntax
       wie abiword verwenden.

       c. Pflichtfelder
       ----------------

       $config['must_be_set'] (Voreinstllung array("1", "2", "3", "4", "5", "6"))

          Legt fest, welche Felder bei einem Datensatz ausgefüllt werden müssen. Das Script zählt alle angezeigten Felder und ver-
          weigert die Anlage eines Datensatzes, wenn die Pflichfelder nicht ausgefüllt sind.
          (PHP beginnt bei 0 (NULL) zu zählen, NULL ist aber der automatisch vergebene Index eines neuen Datensatzes in der Datenbank).

          Damit eine Adresse auch vollständig ist, muss sie über Mindestinformationen verfügen. Hier also z.B.

          1 = Anrede
          2 = Vorname
          3 = Nachname
          4 = Plz
          5 = Ort
          6 = Straße

       d. Protokoll Logdatei
       ---------------------

       $config['protolog'] (Voreinstellung 0=aus)

          Die Einstellung ermöglicht es jedes SQL-Statement, das einen der folgenden Befehle beinhaltet, chronologisch zu loggen.

            delete
            update
            alter
            drop
            insert
            create
            replace

          Die Befehle können dann ausgelesen und der Reihe nach erneut ausgeführt werden, was eine komplette Rekonstruktion
          der Datenbank ermöglicht.
          Gedacht ist diese Funktion um Datenanlagen in einer Zentrale an z.B Filialen zu senden und somit eine Art Datentransfer zu
          ermöglichen, die einen einheitlichen Datenbestand sicherstellen.

          Die Befehle, die ein Logging auslösen, sind in der Datei vars/.htprotokoll abgelegt und können dort erweitert werden.
          Die Protokolldatei ermöglicht das "triggern" von Anweisungen auf PHP-Ebene. Beachten Sie, daß ein aktiviertes Logging die
          Datenbank schnell anwachsen läßt und wesentlich mehr Platz braucht.

          Für Programmierer, die selbst Hand anlegen und das Script erweitern ist es ratsam statt der Funktion mysql_query() die
          Script eigene Funktion dbquery() zu verwenden um ein logging auszulösen.

       Seit Version 1.211 ist es möglich eine Zentral und Filial-Datenbank zu führen. Zu diesem Zweck MUSS der Parameter auf 1
       gestellt sein.


       e. Verschlüsselung des Passworts
       --------------------------------

       $config['use_crypt_method'] (Voreinstllung md5)

          Legt die Methode fest, mit der ein Passwort verschlüsselt wird. Eine Methode ist eine Art Funktionsaufruf und benötigt
          je nach Art einen, oder mehrere Parameter. MD5 benötigt z.B. nur das Passwort ( md5(PASSWORT) ), andere Methoden benötigen
          noch einen weiteren Parameter um das Passwort zu erstellen.

       $config['use_crypt_option'] (Voreinstellung '')

          Erlaubt es je nach Verschlüsselungsmethode einen weieren Parameter zur Verschlüsselung zu übergeben. Dieser Parameter legt
          in den meisten Fällen die Höhe der Verschlüsselung fest. Als Beispiel habe ich in der conf.php noch BLOWFISH als Methode
          eingetragen (allerdings sind die Einstellungen inaktiv mit einem REM versehen).

          BLOWFISH wird folgendermassen aufgerufen: crypt(PASWWORT, OPTION).

          Um Blowfish zu nutzen, wird als Methode crypt eingetragen und als OPTION der Passende Eintrag der z.B. bei php.net nach-
          gelesen werden kann. Die Option muss genauen Vorgaben entsprechen, damit die Methode crypt "weiss" was sie zu machen hat.

       $config['use_asccii_strict'] (Voreinstellung 0=aus)

          Stellt für den Upload eine Funktion zur Verfügung, die den Dateinamen des Uploads testet und nur Punkte, Unterstriche,
          Ascii-Buchstaben und Ziffern im Dateinamen zulässt.

          Die Funktion stellt sicherm dass hochgeladene Dateien auch vom System angezeigt werden können. Es werden z.B. Umlaute
          in Dateinamen als nicht konform abgelehnt und die Datei muss umbenannt werden.

    ***********************************************************************************************************************************


    *****
    * E *    ZENTRAL/FILIAL DATENBANK
    *****

       Um Auf eine Zentral/Filialdatenbank umzustellen sind folgende Schritte notwendig:
       WICHTIG !!! Es kann nur eine Zentrale Geben!!

       ZENTRALE

           In der Zentrale ist in der Konfiguration der Parameter $config['db_work_as'] auf 0 (NULL) zu stellen.
           Weiters muss der Parameter $config['protolog'] auf 1 gestellt werden. Alle Aktionen in der Datenbank werden nun
           mitgeschrieben.

           Der Parameter $config['protolog_conf'] sollte in der Zentrale auf 0 stehen. Der Parameter bewirkt, dass Änderungen
           an der Konfiguration NICHT mitgeloggt werden. Steht der Parameter auf 1, werden auch Änderungen der Zentrale an der
           Konfiguration mit ins Logfile geschrieben.

       FILIALE

           In der Filiale muss der Parameter $config['db_work_as'] auf 1 gestellt werden. Das hat zur Folge, dass die Filiale
           sowohl keine neuen Daten anlegen, als auch bestehende nicht editieren kann (Beide Buttons fehlen).
           Daten werden ausnahmslos NUR in der Zentrale angelegt oder verändert.

       IN ZENTRALE UND FILIALE

           Entweder man ruft über die Administration -> Auswertungen und Tools -> Filialfile erstellen die Abarbeitung der Daten
           händisch auf oder lässt die Datei crontabtrigger.php als Cronjob laufen (Ein Shellscript namens trigger_adressql liegt
           unter bash/).
           Es sollte niemand in der Datenbank arbeiten, wenn dieser Punkt ausgeführt wird. Am Besten man lässt Nachts das
           Script per CRON laufen.
           Im Shellscript muss noch der Pfad angepasst werden, sonst klappt das Script nicht!!

           Das Script stellt fest, ob man Filiale oder Zentrale ist und exportiert oder Importiert entsprechend die Daten.
           Das Script sucht nach der Datei templates/admin/triggerdata/.httrigimport. Wird die Datei gefunden, werden
           alle Daten dieses Files abgearbeitet, in der Zentrale werden alle angefallenen Daten exportiert und in diese Datei geschrieben,
           in der Filiale wird das File automatisch gelöscht, um ein doppeltes Einlesen zu verhindern.

           ACHTUNG !!
           Grosse Datenmengen verursachen lange Laufzeiten und/oder grosse Files. PHP ist aber was die Laufzeiten angeht von den
           Einstellungen der php.ini abhängig.
           Entweder man stellt die php.ini so ein, dass es keine Laufzeitfehler gibt und PHP eventuell abbricht oder man sorgt dafür,
           dass die Datenmengen entsprechend klein gehalten werden.

           Da die PHP-cli (Aufruf eines Scripts über die shell) über eine eigene php.ini verfügt, könnten hier die Laufzeiten entsprechend
           angepasst werden.

           Wer mit sehr sehr grossen Datenmengen hantiert, sollte die Problematik aber anders lösen.

           Zwischen Zentrale und Filiale muss nun noch der Austausch der Datei geregelt werden. Je nach technischen Möglichkweiten bieten
           sich mehrere Varianten an. Ich selbst mounte das Export-Verzeichnis per nfs in die Filiale und starte einen Kopierprozess. Eine
           Übertragung per FTP wäre aber ebenfalls denkbar, der Phantasie sind keine Grenzen gesetzt.

           FEHLERSUCHE !!

           a.)
           Die Daten werden in der Filiale nicht geschrieben.

               WICHTIG !!
               ALLE Datenbanken MÜSSEN gleich heissen (den selben Datenbanknamen und die selben Tabellennamen und Spaltenbezeichnungen
               verwenden), da beim Erstellen der Log (TRIGGER) Einträge der Datenbankname und Feldname der Tabellen mitgeloggt wird.
               Unterschiedliche Namen führen entweder zu einem Fehler oder die Daten werden in die falsche Datenbank übernommen.
               Bei der Installation sollte also das selbe install.php Script mit den selben Einstellungen laufen.

                    !!!! EINZIG Die Zugangsdaten (Username und Passwort) zur Datenbank können abweichen !!!!

               Werden in der Filiale SQL-Anweisungen NICHT mitgeloggt ($config['protolog'] = 0) schreibt das Script die importierten
               SQL-Anweisungen mit ins Logfile.
               Ansonsten werden die SQL-Anweisungen in der Tabelle proto_koll geloggt.

               Ist die Filiale auch als solche eingetragen ($config['db_work_as'] = 1)?

           b.)
           Eigene SQL-Anweisungen werden nicht an die Filiale geschickt.

                Eigene Scripte können zu Fehlern im logging führen.
                Wer eigene SQL-Statements ins Script eingefügt hat, sollte den Befehl dbquery($sql) verwenden um die SQL-Befehle an die
                Datenbank zu schicken, da dort (in der Funktion) das Logging und der Eintrag in die protokoll-Tabelle erfolgt.
                Alle SQL-Anweisungen werden dort nach bestimmten Kriterien durchsucht und gegebenenfalls geloggt.
                Die Kriterien stehen in der datei /vars/.htprotokoll. Eventuell werden SQL-Befehle verwendet, die dort nicht eingetragen
                sind. Fügen sie Ihre Kriterien hinzu. Der Logger verwendet stristr() als Vergleichsfuktion, eine Kontrolle der Gross
                Kleinschreibung ist also nicht notwendig.

           c.)
           Es wird kein Filialfile erstellt.

                Das Filialfile beginnt mit .ht als Präfix, Linux blendet diese Dateien aus. Eventuell muss im Dateimanager die Anzeige
                solcher Dateien eingeschalten werden.

                Sind die Rechte auf schreiben für das Verzeichnis /templates/admin/triggerdata gesetzt?

           d.)
           Die Filiale stellt sich immer wieder auf Zentrale um.

                Der Parameter $config['protolog_conf'] sollte in der Zentrale auf 0 stehen, steht aber auf ungleich 0.
                Alle Änderungen an der Konfiguration in der Zentrale werden mitgeloggt. Stellt man dort also z.B.
                Die Mailadresse um, wird das auch der Filiale geschickt.
                Es werden aber immer alle Parameter der Konfiguration in die Datenbank geschrieben, also auch ob man Zentrale oder
                Filiale ist. Die Filiale bekommt also den Parameter db_work_as mit null als Transfer übermittelt.

                Stellen Sie den Parameter $config['protolog_conf'] in der Zentrale auf 0 (NULL).

    ***********************************************************************************************************************************


    *****
    * F *    FAQ
    *****

       Häufige Fragen und Probleme und ein Ansatz, diese Probleme zu lösen.

       * Beim Speichern der Sprachdatei werden die Einstellungen nicht übernommen.

         Bei der Installation auf Debain Squeeze sind einige Probleme aufgetreten, die auf den PHP Suhosin-Patch zurückgehen. Insbesondere
         die $_POST und $_GET Beschränkungen können zu Problemen führen. folgende Einstellungen in der suhosin.ini haben geholfen:

            suhosin.cookie.max_array_depth=4096
            suhosin.cookie.max_array_index_length=2048
            suhosin.cookie.max_name_length=2048
            suhosin.cookie.max_value_length=650000
            suhosin.cookie.max_vars=4096
            suhosin.request.max_array_depth=4096
            suhosin.request.max_array_index_length=2048
            suhosin.request.max_name_length=2048
            suhosin.request.max_value_length=650000
            suhosin.request.max_vars=4096
            suhosin.post.max_array_depth=8048
            suhosin.post.max_array_index_length=1024
            suhosin.post.max_name_length=2048
            suhosin.post.max_totalname_length=8048
            suhosin.post.max_vars=4096


       Bei Debian Wheezy sind diese Einstellungen wieder in der php.ini und zwar

       ; How many GET/POST/COOKIE input variables may be accepted
       max_input_vars = 5000

       Weiters sollte der memory_limit Wert etwas erhöht werden.

       ; Maximum amount of memory a script may consume (128MB)
       ; http://php.net/memory-limit
       memory_limit = 256M


       * Kann man die Feldnamen der Adressentabelle umdefinieren?

         Ja, man kann in der Datei sql_constants.php (NUR) die Feldnamen der Adressentabelle definieren. Die ersten drei Einträge sehen
         z.B. so aus:

            define('ADR_ID','adr_id');
            define('ANREDE','anrede');
            define('VORNAME','vorname');

         Die Grossbuchstaben sind Konstanten, die NICHT verändert werden dürfen, die Kleinbuchstaben definieren, mit welchen Feldnamen
         die Tabelle angelegt wird. Eine Übersetzung sähe also z.B. so aus:

            define('ADR_ID','feld1');
            define('ANREDE','feld2');
            define('VORNAME','feld3');

         Die Anpassung muss VOR der Installation erfolgen, das Install-Script liest die Einstellungen aus und legt eine Tabelle mit den
         definierten Werten an. Im Nachhinein ist händisches Ändern der Feldnamen notwendig. Diese Einstellung erlaubt es mit etwas
         Geschick auf eine bestehende Tabelle zuzugreifen und Fremdtabellen als Datenquelle zu verwenden. So könnten z.B. 2 Programme sich
         eine Datenquelle teilen.

         Um eine korrekte Übersetzung der Feldnamen sicher zu stellen, ist es notwendig die Feldnamen und ihre Übersetzung in die
         Sprachdatei(en) zu übertragen. Dazu legen sie einfach neue Parameter (Language Codewörter) mit den neuen Feldnamen und deren Über-
         setzung (Administration -> Scriptspache anpassen) an. Für das Beispile oben also z.B.

            Übersetzung                     Language Codewort
            ID                              feld1
            Anrede                          feld2
            Vorname                         feld3

            u.s.w


       * Wie kann man den Mailer des Scripts aufrufen?

         Prinzipiell ist das integrierte Mailscript an eine Mailadresse gebunden. Damit das Mailarchiv gesendete Mails speichern kann
         muss es wissen, welchem Datensatz die Mails zugeordnet werden müssen. Der Mailer versteht sich nicht als Mailinterface um an
         Freunde Mails zu versenden sondern ist ein fester Bestandteil der Adressenverwaltung. Ist bei einer Adresse eine Mailadresse
         angelegt, kann man den Mailer mit einem Klick auf die Mailadresse aufrufen. Der Mailer merkt sich die Adresse und speichert
         versandte Mails gebunden an die Adresse.
         Dass man die Mailadresse im Mailer ändern kann ist ein Feature um Korrekturen vornehmen zu können. "Normale" Mails sollten mit
         einem ordentlichen Mailprogramm versendet werden.

    ***********************************************************************************************************************************


    *****
    * G *    Tricks
    *****

        ADRESSFELDER AUSBLENDEN
        -----------------------

        Adressen sind erst vollständig, wenn man bestimmte Felder einer Adresse ausfüllt. Ich gebe einige Felder vor. Die Felder kann
        man nach belieben erweitern (Felder hinzufügen) und ergänzen. In der Administration findet sich dafür ein eigener Menü-
        Punkt (Adress-Felder +/-).

        Eventuell werden aber auch einige vorgegebene Felder nicht benötigt. Diese Felder kann man zwar nicht löschen, aber man kann sie
        ausblenden.

        In der Sprachdatei (Administration -> Grundeinstellungen -> Scriptsprache anpassen) finden sich die Übersetzungen für die Feld-
        Namen auf die adresSQL zugreift (In der neuesten Version ca. ab Eintrag 275). Dort steht z.B.

            Mobil               handy1
            Ansprechpartner     abteilung
            Beruf               beruf

        Der erste Eintrag ist die Übersetzung, der zweite ist der Feldname. Ersetzt man nun die Übersetzung eines Feldnamens mit
        "Unsichtbar" wird dieses Feld ausgeblendet. Editiert man die Einträge wie folgt

            Mobil               handy1
            Unsichtbar          abteilung
            Unsichtbar          beruf

        Werden die Felder abteilung und beruf nun im Adressformular nicht mehr angezeigt.

            ACHTUNG!! blendet man auf diese Art Mussfelder aus, kann man keine Daten mehr anlegen.

        Da ich das Script so flexibel wie möglich halten möchte ist der Wert, der das Ausblenden bewirkt (also hier das Wort "Unsichtbar")
        ebenfalls frei definierbar.
        In der Sprachdatei ist ein Parameter "field_invisible" (Eintrag 450) der mit diesem Wert "Unsichtbar" belegt ist. Ersetzt man
        diesen Wert z.B. mit "ABCDEFG" müssten obige Einträge wie folgt editiert werden um ausgeblendet zu werden:

            Mobil               handy1
            ABCDEFG             abteilung
            ABCDEFG             beruf

        Die Felder sind nach wie vor vorhanden, wurden sie vor dem Ausblenden befüllt, bleiben die Inhalte auch erhalten.


        ACCESSKEYS
        ----------

        Um in Firefox problemlos Accesskeys nutzen zu können muss man den Firefox etwas modifizieren. Firefox will [Alt]+[Shift]+Key als
        Standardeingabe für Accesskeys. Um auf [Alt]+Key umzuschalten gehen Sie wie folgt vor:
        Rufen Sie in einem leeren Browserfenster

            about:config auf

        Als Suchbegriff geben sie access ein. Suchen Sie die beiden Einträge ui.key.menuAccessKey (Standard 18) und ui.key.generalAccessdKey
        (Standard -1) und vertauschen Sie die beiden Werte.
        Nun können Sie auch die Karteikarten mit Accesskeys steuern. Dabei Werden die Karteikarten von 1 bis 9 durchnummeriert.

        Firefox setzt nun allerdings überall dort, wo Accesskeys sich mit Steuerungen überschneiden, die Steuereung für die Menüs ausser Kraft,
        sie können also, ist der Accesskey "D" aktiv, z.B. mit [Alt]+D nicht mehr das Menü Datei aufrufen.

        Prinzipiell gillt:
        Alle Browser kochen ihr eigenes Süppchen, wenn es um Accesskeys geht. Jeder Browser will anders gesteuert werden und eine einheit-
        liche Steuerung gibt es nicht.
        Da ich das Script mit Firefox getestet habe kann ich hier auch nur auf Eigenheiten des Firefox eingehen.

        An einer erweitereten Verwendung von Accesskeys wird gearbeitet.

    ***********************************************************************************************************************************

        APPENDIX

        I      Kurze eigene Bemerkungen
        II     Kleinkram und Erwähnenswertes

    ***********************************************************************************************************************************

    *****
    * H *  Kurze eigene Bemerkungen
    *****

       Das Script versteht sich als Nachfolger der File-Based Version und soll vor Allem großen Firmen mit einer großen Anzahl an
       Daten dienen. Der Einsatz in Firmen mit vielen Anwendern ist also erwünscht.

       Als "One-Man-Show" bin ich Coder, Tester und Anwender, wodurch mir sicherlich der eine oder andere Fehler entgeht. Wer Fehler
       findet und rekonstruieren kann, kann, darf und vor allem SOLL mir diese bitte mit einer Beschreibung zusenden. In der
       Administration ist zu diesem Zweck ein Mailformular eingerichtet, dass an die Mail-Adresse "office@mn-portal.at" ein
       Mail versendet. Ist der Fehler rekonstruierbar, werde ich ihn natürlich so bald als möglich beheben.
       Danke an dieser Stelle allen, die mir beim Bugfixen geholfen haben und von der Möglichkeit des Bug-Mails gebrauch gemacht haben.

       Die Dateien crontabt.php und cron_backup.php sind Scripte die über einen Cronjob gestartet werden können.

       crontabt.php sollte dabei alle 10 Minuten ausgeführt werden. Das Script überprüft eingetragene Termine und versendet zur ein-
       gestellten Uhrzeit ein Mail an die hinterlegte Mailadresse. Dabei untersucht das Script, ob ein User dem Termin zugeordnet ist
       und verwendet die Usermailadresse. Ist KEIN User hinterlegt, wird die Mailadresse der conf.php (b.z.w der Einstellung in der
       Datenbank verwendet.

       cron_backup.php sollte täglich gestartet werden. Voraussetzung ist, dass mysqldump per shell ausführbar ist. Das Script sichert
       die Datenbank ins Backup-Verzeichnis. Die Sicherung kann aus der Administration wieder hergestellt werden oder kann mit dem
       mysql Befehl als Restore verwendet werden.
       Das passende Shell-Script zum Sichern findet man unter /bash/backup_adressql. Das Script ruft die passende php-Datei in einer
       CLI auf und kann so Zeitbeschränkungen umgehen (ändern Sie dazu die php.ini für die CLI).

       !!! ACHTUNG  !!!

       Alle Shell-Scripte in /bash müssen mit korrekten Pfadangaben versehen werden.
       Die Sicherungen stellen bei einem Restore einen Datenstand zu einem bestimmten Zeitpunkt wieder her und löschen alle anderen
       Daten. Tabellen werden vor dem wieder Herstellen der Daten komplett geleert. Die Backups verstehen sich also mehr als Snapshot
       und geben den Datenbestand zu einem Zeitpunkt wieder.

       Achten Sie auch darauf, dass Backups mit der Zeit natürlich einiges an Platz belegen. Sie können alte Backups über die Administration
       löschen.


    *******
      II  *  Kleinkram und Erwähnenswertes
    *******

       a.)
       Ich habe wirklich viel gestetet, aber wie schon erwähnt, ich mache alles alleine, daher kann es natürlich vorkommen, dass
       man "betriebsblind" wird und über Fehler ständig hinweggeht. Manches ist noch recht simpel, was ich aber durch Updates
       zu verändern gedenke.
       Das Script soll dabei natürlich so einfach als irgend möglich bleiben.

       b.)
       Derzeit steht nur die Sprache Deutsch zur Verfügung.
       An anderen Sprachen wird nur sehr zögerlich gearbeitet, davon verstehe schlicht ich zu wenig. Sollte sich jemand die Mühe gemacht
       haben und eine Übersetzung haben, bin ich für ein  Mail mit der entsprechenden Language-Datei dankbar.

       Die Sprachen liegen unter language/kürzel.var (z.B. de.var oder en.var)

       c.)
       Termine, die an einen User gebunden sind, können von anderen Usern NICHT übernommen werden. Nur der Admin hat 2 Möglich-
       keiten den Datensatz wieder frei zu geben.

       1. Als Admin setze ich das Flag zum Binden eines Termines an den User (der Termin gehört nun dem Admin).
          Danach löscht der Admin das Flag, indem er es wieder deaktiviert und gibt den Datensatz so für alle frei.
       2. Im Admincenter unter Termine verwalten können Termine einem anderen User direkt zugewiesen werden.

       d.)
       Im docs/some_help Verzeichnis findet sich eine Datei "sql_tabellenkram" in der kleine SQL-Beispiele angeführt werden.

       e.)
       Im docs/some_help findet man eine Datei table_structure.txt die den Aufbau aller Tabellen des Scripts beinhaltet.
       Neu dazu ist die Tabellenübersicht in der Kartei Übersicht, die alle Tabellen, Feldnamen und Zusatzinfos liefert.
       Die Anzeige des Script kann in der Administration ein/ausgeschalten werden. Standard ist NICHT anzeigen.
       In der Administration unter "Sonstiges und Hilfe" kann man über SQL+Phpinfo alle Tabellen und ihre Einstellungen auflisten.

       f.)
       Dem Apache Server sollte das Listen von Verzeichnisinhalten generell verboten werden. Dazu wird der Eintrag

            "- Indexes"

       in den entsprechenden Serverkonfigurationen hinzugefügt.
       Ich lege in den wichtigsten Verzeichnissen eine entsprechende .htaccess Datei ab, die das unterbinden sollte.

       g.)
       Das Script ist Modular aufgebaut. Wer eigene Funktionen einbauen möchte, sollte das in Form eines eigenen Moduls machen, damit
       das Script weiterhin updatefähig ist. Wer an den Dateien Änderungen vornimmt, verliert diese bei einem Update, da ich die
       Script-Dateien komplett tausche.

       Wien man eigene Module erstellen kann steht in der Datei Templates/admin/doc/module.txt oder kann in der Administration direkt
       über "Sonstiges und Hilfe -> Hilfe zum Admincenter -> Programmierer Handbuch" aufgerufen werden.
       Das Werk ist sicher nicht komplett und gibt nur einen kurzen Überblick.

    ***********************************************************************************************************************************

    *****
    * I *  Wawi-Modul
    *****

       Ganz neu ist das Wawi (Warenwirtschafts) Modul in adreSQL!
       Das Modul erlaubt es Aufträge, Lieferscheine, Rechnungen zu allen bestehenden Datensätzen anzulegen, Fertige Berichte über offene
       Aufträge, stornierte Aufträge und offene Rechnungen sind enthalten und das Mahnwesen erlaubt es einen freien Mahntext zu drucken.

       Das Modul versteht sich NICHT als umfangreiche Warenwirtschaft, wie sie von Handelsfirmen benötigt wird, sondern richtet sich
       speziell an kleine (1-6 Personen) Firmen, deren Wawi entweder aus Word, Excel und Co besteht, oder die keine tausende Euro aus-
       geben können/wollen.

       Insbesondere für das Wawi-Modul wird keine Haftung übernommen. Ich erhebe nicht den Anspruch alle rechtlichen Voraussetzungen für
       eine ordentliche Warenwirtschaft im Sinne der Finanz zu erfüllen.

       Ich sage es gleich, dieses Modul wird es nicht kostenlos geben, sondern gegen einen Unkostenbeitrag von 70€ und nur per Mailanfrage.

       Bei Interesse, eine Mail an office@mn-portal.at mit dem Betreff "adressql-wawi", wir werden uns sicher einig.

    ***********************************************************************************************************************************

    *****
    * J *  Windows als Server
    *****

        Viele laden sich den XAMPP (WAMPP)-Server für Windows herunter und installieren adresSQL







       Nun wünsche ich noch viel Spass mit adresSQL. Wer mit dem Tool spielt, wird viele Funktionen finden, die ich nicht extra im Detail
       besprochen habe..

       sysop (Matthias Nitzschke)
Source: README_DE.txt, updated 2015-03-31