Doku-Hauptseite Features Installation Administration Bedienung Entwickler FibuSQL-Hauptseite


FibuSQL - Hinweise für Entwickler

Architektur

Die gesamte Datenhaltung übernimmt eine Datenbank. Die PHP-Skripte stellen ein (fast) zustandsloses Web-Interface dar und enthalten die Algorithmen (es werden keine stored procedures verwendet). Der Zustand der PHP-Skripte besteht nur aus den Session-Variablen ($HTTP_SESSION_VARS['...']) dbspec, die die Login-Daten im PEAR::DB-Format speichert und lang, die die aktuelle Spracheinstellung enthält.

Dabei wurden Algorithmen, die auch abseits der Oberfläche nutzbar sind (Generierung des Hauptbuchs, XML/CSV-Import, etc.) in das Verzeichnis backend/ ausgelagert.

HTML-Generierung

Bei der Generierung der HTML-Ausgabe wurde konsequent CSS (Cascading Style Sheets) eingesetzt, um die Formatierung vollständig von der Struktur zu trennen. Änderungen des gesamten Layouts sind deshalb ausschließlig in dem Style Sheet fibu.css vorzunehmen.

Datenbank-Schema

Die Primärdaten, das sind die Kontenliste, das Grundbuch (Journal) und die sich wiederholenden Buchungen sind entsprechend in drei Tabellen accounts, journal und repeated abgelegt. Deren genaue Definition kann in der Datei Fibu-Verzeichnis/backend/dbadmin.inc in der Funktion init_db() oder direkt in der entsprechenden Datenbank nachgesehen werden.

Ausserdem gibt es noch eine Tabelle balances, die die aktuellen Salden der Hauptbuchkonten speichert und als Cache zur Beschleunigung der Hauptbuchansicht dient. Dazu ist darauf zu achten, dass der Cache-Eintrag eines Kontos bei einer Buchung für ungültig erklärt wird, dies passiert durch den Aufruf von invalidate_balance($account) (in backend/invalbal.inc).

Übersetzungen

Die Datei langinc.inc, die von allen Seiten eingebunden wird, bestimmt die zu verwendende Sprache aus der Server-Variablen HTTP_ACCEPT_LANGUAGE. Weil der Algorithmus ziemlich komplex ist, wird die aktuelle Spracheinstellung in der Session-Variable lang gespeichert, so dass eine Änderung der Spracheinstellung des Webbrowsers erst zum nächsten Login aktiv wird.

Alle übersetzbaren Strings, die ein Benutzer sieht, sind sepearat in Dateien des lang/-Verzeichnisses gespeichert. Ihre Namen beginnen immer mit der ISO-Standard-Abkürzung für die Sprache, so wie es auch der Webbrowser kodiert. Weil nicht alle Seiten alle Strings nutzen, wurden die Strings auf mehrere Dateien verteilt, die nur bei Bedarf eingebunden werden. Die Datei ohne Suffix enthält Strings, die überall gebraucht werden und wird deshalb automatisch eingebunden.

Um eine neue Übersetzung für die Sprache XX bereitzustellen, kopieren Sie einfach einen schon existierenden Satz von Sprachdateien (vorzugsweise der Sprache, die Sie am besten beherrschen) und benennen sie entsprechend der neuen Sprache, also XX.php, XX-admin.php usw. und übersetzen die enthaltenen Strings. Die neuen Dateien müssen nicht gesondert registriert werden, FibuSQL benutzt sie automatisch, wenn der Webbrowser die Sprache anfordert.

Änderungen

Sollten Sie an FibuSQL etwas ändern, was auch andere Benutzer interessieren köntte, dann wäre es schön, wenn Sie mir Ihre Änderungen schicken, damit ich sie evtl. in die nächsten Version integrieren kann. Ihr Name wird dabei natürlich erwähnt! Wollen Sie Ihre Arbeit nicht der offiziellen Distribution aufnehmen lassen, würde ich mich ebenfalls über einen Link zu Ihrer Version freuen, damit ich auf meiner Homepage darauf hinweisen kann.

Ich bitte darum, alle Änderungen in der Datei ChangeLog zu dokumentieren.