Modulregistrierung

Jedes Modul muss sich mit einem Eintrag in einem Modul-Array registrieren und verschiedene Handler definieren. Eine Möglichkeit hierzu hat ein Modul über die Datei common-module.inc.php. Diese Datei wird aus Performancegründen nur für aktive Module durch die _include/common.inc.php nachgeladen.

Das Modul-Array ist eine globale Variable in der folgenden Form:

 $GLOBALS['modules']['<Modulname>'] = array(  
    'directory'=>$moduleDirectory, 
    'install'=>'<aktion>', 
    'activate'=>'<aktion>', 
    'deactivate'=>'<aktion>', 
    'uninstall'=>'<aktion>', 

    'manage'=>'<aktion>',
    'caption'=>'<Modulname>',
    'rights'=>array('1'=>'111'), 

 );  

Die hier definierten Handler install, activate, deactivate und uninstall sind für die Basisfunktionen eines Moduls unbedingt nötig.

Der Handler manage ist optional und gibt dem Modul die Möglichkeit, andere Funktionen hinter den Basis-Verwaltungsfunktionen einzubinden. Der Handler wird in der Spalte "manage" nach den Basisfunktionen installieren, aktivieren, deaktivieren und deinstallieren ausgeführt.

Start FIXME

caption kann als Ersatz für den Modulnamen in der Modulliste angegeben werden. Dieses Feld wird mit ___() ausgegeben, es wird also ggf. übersetzt und die HTML-Entities werden getauscht.

End FIXME

rights wird benutzt um Usern Rechte an Modulen zu geben. Standardmäßig ist das bei der Installation der User 1 (Administrator), der eine Reihe von Rechten erhält, die durch 1 und 0 ausgedrückt werden. Wie viele Rechte das sind und wofür sie modulbedingt stehen ist Sache des Modulautors. Für jeden weiteren User wird einfach das Array um die Nummer des Users als Key und seinen Rechten als Strin aus 1 und 0 hinzugefügt. Durch die Nutzung des allgemeinen Keys rights lassen diese sich auch durch andere Module (z.B. Add-Ons) auslesen bzw. einfach auf andere User kopieren.

Da die Moduldateien wie common-module.inc.php von ConPresso einfach includiert werden ist es natürlich wichtig, dass die verwendeten Funktionsnamen eindeutig sind und nicht z.B. mit Funktionen in ConPresso oder anderen Modulen kollidieren.

Beispiel ergänzen!

Die Variable $directory enthält das aktuelle Modulverzeichnis und kann innerhalb des Moduls z.B. dazu benutzt werden Links oder eindeutige Modul- und Funktionsnamen für mehrfach zu installierende Module zu erzeugen.


Balu: Ist common-module.inc.php der richtige Name für die include-Datei oder sollte sie besser nur module.inc.php genannt werden? - vermutlich eine philosophische Frage ;)