# Eigene Module programmieren

Fast jeder Kunde hat mindestens einen Sonderwunsch der mit HTML nicht umsetzbar ist. Dann bietet sich eine Lösung mit PHP an. Im Gegensatz zu anderen Systemen muß man im Webutler bei der Programmierung einer Erweiterung nicht allzuviel beachten.

## Include

Eine Erweiterung wird einfach per include in eine Seite geladen. Damit ist die Erweiterung ein Teil der Seite und alle Pfade der Erweiterung müssen entsprechend angepasst werden (modules/__MODULVERZEICHNIS__/...).

## Links und GET-Parameter

Eine Webutler-Seite wird mit index.php?page=__SEITENNAME__ aufgerufen. Das heißt alle Links einer Erweiterung müssen auch mit index.php?page=__SEITENNAME__ beginnen. Weitere Parameter werden mit &var=wert angehängt. Wer die SEO-URLs benutzt und mehr als 7 GET-Variablen benötigt kann in der globalvars.php die Variable $webutler_config['urlgetvars'] erhöhen und in der Root-htaccess die RewriteRules ergänzen.

## Modul-Suchplugin

Ein eigenes Modul kann in die Webutler-Suchfunktion integriert werden. Dafür muß die Datei search.php existieren und in der search.php die Funktion searchinmodcontent__MODULVERZEICHNIS__. Die Funktion muß ein Array mit Titel, Inhalt und URL zurück liefern. Beispiel:
$result = array('title' => 'Seitentitel',
'contents' => 'Seiteninhalt mit Suchbegriff',
'url' => 'index.php?page=modulname&var=wert');
return $result;
Damit die Webutlersuche das Modul auch findet muß es noch in die Datei /settings/searching.php eingetragen werden.

## Headerdaten

Javascripte und CSS-Dateien eines Moduls können mittels $webutlercouple->autoheaderdata[] in den Header der Seite geladen werden.
$webutlercouple->autoheaderdata[] = '<link href="modulestyles.css" rel="stylesheet" type="text/css" />';
$webutlercouple->autoheaderdata[] = '<script type="text/javascript" src="modulescript.js"></script>';
Der Titel der Webutler-Seite kann mit der Variablen $webutlercouple->setnewtitlefrommod durch einen spezielleren Titel aus dem Modul ersetzt werden.
$webutlercouple->setnewtitlefrommod = 'Mein neuer Seitentitel';

## Modul-Login

Wenn das Modul einen Administrationsbereich besitzt/bekommen soll, gibt es 2 Möglichkeiten für einen Login:

1. Für den automatischen Login des Seitenbetreibers kann mit der Funktion $webutlercouple->checkadmin() geprüft, ob die Sessiondaten des Webmasters gesetzt sind.
2. Alternativ kann eine eigene Loginverwaltung für Benutzer, die nur Zugriff auf das Modul erhalten sollen, erstellt werden.

Für die Realisierung eines Lese- und/oder Schreibzugriffs eingeloggter Webutler-User können folgende Sessiondaten eines Benutzers abgefragt werden:
Gruppen-ID: $_SESSION['userauth']['groupid']
ID des Benutzers: $_SESSION['userauth']['userid']
Benutzername: $_SESSION['userauth']['username']
eMail-Adresse: $_SESSION['userauth']['usermail']

In der Benutzerverwaltung können User aktiv, gesperrt oder gelöscht geschaltet werden. Wenn der Status in einem Modul benötigt wird, muß dieser in der User-DB abgefragt werden. Rückgabewerte:
Aktiv: status='enabled'
Gesperrt: status='disabled'
Gelöscht: status='deleted'