Coden für das wBB2

rellek

relativ sensationell
Teammitglied
(Bevor es losgeht: Diese Anleitung habe ich mal Mitte 2006 verfasst. Urspünglich war geplant, dass sie auf myWBB publiziert wird, was meines Wissens aber nicht geschah. Deshalb möchte ich die Chance nutzen und sie hier posten. Geändert wurden nur einige obsolet gewordene Links. Es geht hier um das wBB2 und nicht ums wBB3!)

Vorab-Information
Dies ist keine konkrete Anleitung, wie ein Hack oder ein Addon für das wBB2 zu programmieren ist. Es ist viel mehr eine Vorgehensweise, wie etwas für das wBB2 gecodet werden und das Ergebnis veröffentlicht werden kann. Es wird vielleicht nicht der beste und auf jeden Fall nicht der einzige Weg, um einen Hack oder ein Addon zu schreiben und zu veröffentlichen.

Unterschied Mod/Hack <-> Addon
Was ein Hack (bzw. Mod) und was ein Addon ist, ist nicht konkret festgelegt. Im Laufe der Zeit hat es sich aber herauskristallisiert, dass ein Hack/Mod ein Eingriff in den Code der Software ist, der eine vorhandene Funktion verändert oder erweitert. Ein Addon hingegen ist ein eigenständiges Script, das prinzipiell nur „mit“ der eigentlichen Software arbeitet, d.h., würde es irgendwo anders seine Informationen herbekommen, wäre ein wBB nicht für das Funktionieren notwendig. Ein Addon charakterisiert sich zumeist dadurch, dass es eine eigene Seite und eine (oder mehrere) eigene PHP-Datei hat, im Gegensatz zu einem Hack/Mod, das auf vorhandene Code-Stellen aufbaut.

Voraussetzungen
Bevor du dich daran machst, deine Vorhaben in die Tat umzusetzen, solltest du einige Punkte vorher genau durchdacht haben:
  • Was möchte ich mit dem Hack/Addon erreichen?
  • Wie soll es arbeiten?
  • Wie kann ich die notwendigen Daten möglichst effektiv speichern und wieder abfragen?
  • (nur bei Addons) In wie fern soll es mit dem wBB2 zusammenarbeiten?
Um ein Hack oder Addon zu programmieren, solltest du dir auf jeden Fall im Umgang mit dem wBB selber sicher sein. Auch solltest du code-technisch gut bescheid wissen, wie das wBB intern funktioniert und seine Daten verwaltet. Die Sprachen PHP und MySQL sollten dir ebenfalls durchaus bekannt sein, wenn du etwas coden möchtest.
Es wäre recht vorteilhaft, wenn du das Ganze Prozedere auf einem Testboard durchziehst, das so weit wie möglich dem Originalzustand von WoltLab entspricht. Damit ersparst du dir beim Support später den Ärger, wenn du als zu suchende Textstelle eine individuelle Veränderung verwendet hast und deine User diese entsprechend nicht finden. Allerdings empfiehlt sich der Performance-Statistik-Hack, denn mit dem kannst du im Auge behalten, wie langsam die Software durch deine Änderungen wird (und Optimierungen lassen sich besser und präziser feststellen).

Dann mal los: Addons
Addons sind immer etwas leichter zu handhaben für den Endanwender, denn sie haben i.d.R. keine großen Änderungen an der wBB-Software zufolge, was ein Update enorm erleichtert. Auch für den Autor ist ein Addon meistens etwas günstiger, denn bedingt durch die wenigeren Änderungen an der Software selber, muss nicht ganz so viel Support geleistet werden wie bei einem Hack, weil die Fehleranfälligkeit beim Einbau deutlich geringer ist. Wenn das eigentliche Addon in eine eigene PHP-Datei gepackt werden soll (was üblich ist), dann sieht selbige schemenhaft wie folgt aus:
PHP:
<?php

$filename = 'dateiname.php';
require "./global.php";

// Hier kommt jetzt der eigentliche Code hinein...

?>
Nachdem die Datei ./global.php in das Script eingebunden ist, stehen dir alle aus dem wBB bekannten Funktionen und Variablen zur Verfügung. Du kannst nun also schon mit
Code:
$db->query("SELECT * FROM tabelle LIMIT 30;");
auf die Datenbank zugreifen etc. Ganz am Ende der Datei muss noch ein Template aufgerufen werden, damit die Ergebnisse auch sichtbar werden. Dies geschieht mit der folgenden Zeile:
Code:
 eval("\$tpl->output(\"".$tpl->get("TEMPLATENAME")."\");");

Möchtest hingegen ein Template in eine Variable verpacken, sodass du dieses dann später irgendwo einordnen kannst, dann machst du dies mit der Zeile:
Code:
 eval("\$VARIABLENNAME = \"".$tpl->get("TEMPLATENAME")."\";");
Wird diese Zeile gebraucht, um Einträge, die in einer Schleife entstehen, anzuzeigen, musst du ggf. noch einen Punkt vor das =-Zeichen setzen (direkt davor, kein Leerzeichen zwischen Punkt und Ist-Gleich-Zeichen). Dies ist jedoch mit Vorsicht zu genießen, denn unter bestimmten Voraussetzungen kann ein böser Benutzer die Variable mittels Adresszeile seines Browsers schon vorher mit Inhalt füllen. Um solche Probleme, die leicht auch zu Sicherheitslöchern führen können, zu beheben, solltest du dir darüber im Klaren sein, wie Sicherheitslöcher entstehen, wie sie genutzt werden und wie man als Hack-/Addon-Autor dagegen vorgehen kann. Eine kleine Übersicht über die gängigsten Sicherheitsprobleme und wie man sie beheben kann, findest du im passenden Thema.

Damit die Wer-Ist-Wo-Liste bei deinem Addon nicht „Sonstiges“ anzeigt, wenn es jemand nutzt, ist noch ein kleiner Eingriff in der Datei ./acp/lib/class_wiw.php von Nöten.
Hierfür suchst du dir die folgende Code-Stelle:
Code:
 case "index.php":
	$location = $lang->get("LANG_WIW_FILE_INDEX", array('$SID_ARG_1ST' => $SID_ARG_1ST));
	break;

und baust sie entsprechend um. Das Ergebnis könnte dann beispielsweise so aussehen und muss unter die o.g. Codestelle gesetzt werden:
Code:
 case "dateiname.php":
	$location = $lang->get("LANG_WIW_FILE_DATEINAME", array('$SID_ARG_1ST' => $SID_ARG_1ST));
	break;

Hier kommt auch zum ersten Mal eine Sprachvariable zwangsläufig zum Einsatz.
Ihr Name ist:
LANG_WIW_FILE_DATEINAME
und sie muss folgenden Inhalt haben:
Code:
 [url="dateiname.php$SID_ARG_1ST"]Name des Addons[/url]

Bei einem Addon ist der größte Teil nun schon erledigt. Was ggf. noch fehlen würde, ist eine Verlinkung im Forum zum Addon.


Hacks/Modifikationen
Bei Hacks hat, wie eingangs schon erwähnt, der Autor i.d.R. mehr mit dem Support zu tun. Dafür kann es bei Hacks passieren, dass sie recht schnell fertig gestellt sind, weil nicht viel Code hinzugefügt oder geändert werden muss.

Ganz wichtig beim Erstellen eines Hacks sind im Vorfeld folgende Fragen:
- Was möchte ich durch den Hack erreichen?
- Wo muss ich im wBB dazu etwas ändern?

Für letztere Frage ist es auch, wie oben schon beschrieben, empfehlenswert zu wissen, wie das wBB funktioniert. Ohne dieses Wissen dürfte das Programmieren eines Hacks deutlich schwieriger werden, bzw. die Performance würde darunter leiden.

Zum Abschluss, also für die Veröffentlichung eines Hacks, müssen die Änderungen natürlich noch in einer „readme“-Datei zusammengefasst werden. Wenn du dir sehr sicher bist mit deinem Handeln und in deinen Kenntnissen mit PHP und MySQL, dann kannst du die Änderungen parallel zum Ändern der Dateien auch gleich in eine Text-Datei schreiben. Dies kann jedoch fehleranfällig sein, wenn du beispielsweise an einer Funktion noch herumbasteln möchtest. Daher empfiehlt es sich eher, die Änderungen erst am Schluss zusammen zu fassen. Hierfür würde sich entweder ein Vergleichsprogramm anbieten, oder du hast beim Programmieren schon darauf geachtet, dass dein eigener Quellcode (sprich: der vom Hack) mit deinem Kommentar anfängt und aufhört. Ein solcher Kommentar kann beispielsweise so aussehen:
Code:
// ********** Hackname by Autorname Anfang **********

Der abschließende Kommentar könnte dann entsprechend so aussehen:
Code:
// ********** Hackname by Autorname Ende **********

Prominentes Beispiel für einen solchen Coding-Stil ist u.a. der Guthabenhack von Lasall.

Das Ende: Sprachvariablen und Release
Wenn dein Hack oder Addon soweit fertig ist, solltest du dich noch an den Funktionen des wBB orientieren – beispielsweise, dass Sprachvariablen genutzt werden und Einstellungen im ACP vorgenommen werden können. Zu Zeiten des wBB 2.1 hat sich Troublegum bei WoltLab die Mühe gemacht und erklärt, wie die Sache mit den Sprachvariablen funktioniert. Ebenfalls findest du da eine Beschreibung, wie du zusätzliche Einstellungen ins ACP einbauen kannst und auch neue Gruppenrechte verwaltest.

Wie du vielleicht schon mitbekommen hast, ist das Erstellen einer LNG-Datei eine ziemlich fummelige Arbeit. Jedoch hat da Afterburner von JGS-XA eine sehr nette Lösung gefunden – er hat ein kleines Programm geschrieben, das diese Arbeit ungemein erleichtert.

Wenn du fertig bist, kann der Release deines Hacks oder Addons folgen. Dieser beschränkt sich darauf, die geschriebene Text-Datei (die eigentliche Anleitung) und ggf. weitere benötigte Dateien (z.B. eine LNG-Datei für Sprachvariablen oder eine WBB-Datei für Gruppenrechte und Einstellmöglichkeiten, sowie ggf. ein Setup-Script für das Vornehmen von Datenbank-Änderungen) in ein ZIP- oder neuerdings auch immer häufiger ein RAR-Archiv zu packen und der Öffentlichkeit bereitzustellen.

Tipps für einen erfolgreichen Release
  • (vor allem bei Hacks) Copyright-Zeilen sind, vor allem bei minimalen Code-Änderungen, sehr ungern gesehen (bei Addons ist das schon etwas anderes) – der Programmcode wird auch ohne den Vermerk durch das Urheberrecht geschützt
  • Stelle dein Hack/Addon einem möglichst großen Personenkreis zur Verfügung, indem du es auf einem großen Board veröffentlichst (beispielsweise myWBB)
  • Verwende einen übersichtlichen und verständlichen Stil in deiner Anleitung
  • (vor allem bei Addons) Kommentiere deinen Programmcode, damit andere User ggf. leichter damit arbeiten können (z.B. Fehler finden oder um Funktionen erweitern)
 
Oben