PHPOpenChat v3 - Handbuch

letzte Änderung am 01.05.2003

Revision History
Revision 0.113.04.2003letreo
Gliederung und allgemeine Funktionsbeschreibung
Beschreibung der Optionen innerhalb der Konfiguration
Kurzbeschreibung der wichtigsten Klassen
Revision 12.05.2003letreo
Kapitel Support addiert
Einführung überarbeitet

Abstract

Dieses Dokument wendet sich sowohl an Webmaster als auch Designer, die die Einrichtung, Anpassung bzw. Konfiguration einer Community auf Basis des PHPOpenChat durchführen. Es beschreibt detailiert den Installationsvorgang und die Möglichkeiten der Anpassung von Templates an vorhandene Corporate Designs sowie das Erstellen eines komplett neuen Motivs, auch Theme genannt. Desweiteren werden die Admninistrationsmöglichkeiten beschrieben, die dem Communitybetreiber zur Verfügung gestellt werden.


Der PHPOpenChat ist ein in PHP4 geschriebenes Chatsystem, welches zur freien Verfügung als Open Source Software (OSS) zum Download angeboten wird. Der Vorteil ist die Möglichkeit der Benutzung ohne etwas dafür bezahlen zu müssen oder anderen kommerziellen Einschränkungen unterworfen zu sein. Der Nachteil ist, dass es keinen Anspruch auf Hilfeleistungen oder sonstige Unterstützung gibt. Sicher gibt es aber auch andere Benutzer, die ihre Erfahrungen zur Verfügung stellen oder bei eventuellen Erweiterungen helfen. Siehe dazu den Abschnitt Support.

Der PHPOpenChat wird unter der GNU General Public License als Open Source Software veröffentlicht und ist somit für jederman kostenlos verfügbar.

Der PHPOpenChat wurde von 1996 bis 2000 von Michael Oertel innerhalb des Projektes SchulWeb an der Abt. "Pädagogik und Informatik" der Humboldt-Universität zu Berlin entwickelt. Nach Abschluss des Projektes konnte der Source Code unter die GNU General Public License gestellt und damit öffentlich gemacht werden. Seitdem setzt sich das Entwickler-Team des PHPOpenChat wie folgt zusammen.

The PHPOpenChat is an open system which can be extended over interfaces and combined with other systems or applications. International standards are supported. To begin using PHPOpenChat is therefore very easy. For example existing websites may be used further on without major changes if PHPOpenChat features are integrated.

The PHPOpenChat is developed in PHP and is therefore platform independent. It runs a wide range of operation systems (e.g. Linux, Solaris, Windows 2000, Windows NT). Windows 95 and Windows 98 are unsupported.

The PHPOpenChat uses three distinct layers (three tiers) which implement the presentation, control logic and database access.

In the database access layer there is no requirement for a particular database. Instead you may use any database system supported by ADOdb. For authentification you may use a database table or as an alternative you may even use LDAP.

In the presentation layer all browsers with a working implementation of XHTML 1.0 and Javascript 1.2 are supported. These are for example:

  • every browser using the Gecko layout engine like Mozilla, Phoenix, Netscape 6.2 or higher, Galeon, etc.

  • Internet Explorer since version 5.5 and

  • Opera since version 6.0

admin/

Admin scripts to administrate the rooms/channels and users

doc/

Documentation of the POC

include/

PHP classes used by the POC. See also the API documentation. Subdirectories contain the following:

include/adodb/

Database abstraction layer named ADOdb for database independence. See also the official ADOdb documentation.

include/languages

Language localization files. To add a new language the POC should support you need to create a new language file by translating one of the existing files in this directory. Next you need to add the name of your language file in the config file config.inc.php to the Array $supported_languages.

include/templates

Theme directory for different templates you may use to change the overall look and feel of the presentation. If you want to adapt the POC to your website design here are the files to change. Artistically talented people are welcome to create new templates and submit them to the public.

test/

Miscellaenous tests of the PHP environment

All classes you'll find in the include/ directory. They have the file name prefix class.. For detailed information see the API documentation.

Channel_Buffer_DB

The ring buffer for lines of text of a channel based on a database.

Channel_Buffer_Mem

The ring buffer for lines of text of a channel based on shared memory.

class.Channel.inc

A channel or room in the chat system.

class.Chat.inc

Base functionality of the chat system.

class.Chatter.inc

A chat user (chatter) known to the chat system

class.Guestbook.inc

Implementiert ein Benutzer-Gästebuch

class.Guestbook_Post.inc

One entry in the guest book.

class.Language.inc

Language setting

class.Line.inc

One line of text written by a chatter.

class.Logger.inc

A logging mechanism using syslogd(SM) where possible.

class.Mailbox.inc

A mailbox for offline mail messages between chatters in the mail modul

class.Mail_Dispatcher.inc

Dispatch that is send and receive mail messages

class.Mail.inc

The mail message modul.

class.Template.inc

Templates for the presentation of the chat interface.

class.Translator.inc

Switch the language of text output automatically according to the HTTP-REQUEST-HEADER setting.

class.UploadFile.inc

Handles the upload of files like individual chatter icons.

Die Installation des PHPOpenChat teilt sich auf in zwei Schritte. Zum Einen muss installiert und zum Anderen konfiguriert werden. Beide Schritte werden folgend erklärt und beschrieben.

Der PHPOpenChat steht als TAR- oder ZIP-Archiv zum Herunterladen bereit. Er entpackt sich automatisch in ein Verzeichnis 'phpopenchat-3.x'. Empfohlen wird das Entpacken direkt in der Document Root des Webservers. Bei den meisten Internet Service Providern (ISP) steht ein HOME-Verzeichnis und ein Verzeichnis zur Verfügung, wo alle, vom Webserver lesbaren und auszuliefernden Dateien stehen. Dieses Verzeichnis wird auch Document Root genannt und ist das angesprochene Zielverzeichnis für das Entpacken des PHPOpenChat-Pakets.

Vorraussetzungen für die einzelnen LAMP-Komponenten wären:

Die LAMP-Architektur ist empfohlen, jedoch nicht Voraussetzung für das Betreiben des PHPOpenChats. Allgemeine Vorraussetzungen sind:

Ist der PHPOpenChat entpackt und die Vorraussetzungen geklärt, muss eine Datenbank erstellt, die Datenstrukturen importiert und ein Datenbankbenutzer angelegt werden. Der Datenbankbenutzer muss eine Zugriffsberechtigung für diese Datenbank besitzen. Am Beispiel von MySQL seien diese Schritte hier kurz beschrieben.

Datenbank erstellen: # mysqladmin create DATABASE_TABLESPACE

Datenbankbenutzer anlegen: # mysqlaccess DATABASE_HOST DATABASE_USER DATABASE_TABLESPACE

Datenstrukturen importieren: # mysql -u DATABASE_USER -pDATABASE_PASSWORD DATABASE_TABLESPACE < /your/path/to/phpopenchat/db.schema

Diese Datenbank-Zugangsdaten und andere Systemspezifika, müssen innerhalb der Konfiguration dem PHPOpenChat noch bekanntgemacht werden.

Die Konfigurationsdatei config.inc.php ist die zentrale Stelle für Einstellungen des PHPOpenChat. Im folgenden Abschnitt, werden alle Einstellungsmöglichkeiten detailiert beschrieben.

Die Datei config.inc.php, zu finden innerhalb des Installationsverzeichnisses, ist die zentrale Konfigurationsdatei des POC. Alle Schalter sind entweder als Konstanten oder als Arrays definiert. Folgend werden alle Schalter ausführlich beschrieben.

TMPDIR

Verzeichnis für temporäre Daten, für das der Webserver Schreibrechte haben muss. Das Verzeichnis wird automatisch gesetzt, kann aber auch per Hand definiert werden. Für Unix/Linux-Systeme wird das Verzeichnis /tmp als schreibbar für den Webserver angenommen. Manche ISPs schränken diese Rechte allerdings über safe_mode oder open_basedir ein. In diesem Falle ist ein Verzeichnis außerhalb der Document Root des Webservers mit schreibrechten für den Webserver anzulegen und TMPDIR entsprechend zu definieren.

Für Windowssysteme wird versucht eine entsprechende Umgebungsvariable auszulesen. Ist keine solche gesetzt, wird C:\WINDOWS\TEMP angenommen. Dies kann auch beliebig geändert werden, das Verzeichnis kann auch auf anderen Laufwerken als auf C: liegen.

POC_OS

Beschreibt das Betriebssystem, auf dem der POC installiert ist. Diese Einstellung sollte nicht verändert werden.

POC_BASE

Beschreibt das Installationsverzeichnis absolut. Hauptsächlich dazu verwandt, in allen Skripten und Klassen die jeweiligen include- oder require_once-Statements korrekt zu formulieren, so das die entsprechenden Dateien auch gefunden werden.

Diese Einstellung sollte nicht verändert werden.

POC_INCLUDE_PATH

Beschreibt das POC-Include-Verzeichnis absolut.

Diese Einstellung sollte nicht verändert werden.

COOKIE_EXPIRE

Verfallszeit eines, durch den POC gesetzten Cookies. Z.Z. gesetzt auf 25 Jahre

Der POC läuft auch unabhängig von Cookies, sie werden zum einen von PHP selbst benutzt, um automatisch die Session-ID zu übertragen und zum anderen vom POC, um das vom Benutzer ausgewählte Motiv/Theme beim ersten Zugriff sofort auswählen zu können.

COOKIE_PATH

Cookie-Pfad

COOKIE_DOMAIN

Cookie-Domain

COOKIE_SECURE

Cookie-Sicherheitseinstellung

AUTHENTICATION_METHOD

Beschreibt die Methode, mit der ein Benutzer beim Login authentifiziert wird. Implementiert ist z.Z. zum einen die Methode 'poc', es wird zur Authentifizierung die Benutzerdatenbank des POC benutzt und zum anderen die Methode 'ldap', hier wird ein ggf. im Intranet/Internet erreichbarer LDAP-Server zur Authentifizierung der Benutzer verwandt.

LDAP_DN

LDAP-Einstellungen die, wenn nicht bekannt, auch mittels des Skriptes test/ldap.php vom LDAP-Server erfragt werden können.

Beim LDAP stellt dn, Distinguished Name, das Äquivalent zum FQND (Fully Qualified Domain Name) des DNS (Domain Name Service) dar. Diese Bezeichnung ist innerhalb eines Verzeichnisses immer einzigartig. Zum Beispiel lautet mein dn: uid=michael.oertel, ou=NTUser, ou=Accounts, o=pixelpark.com

CHANNEL_BUFFER_TYPE

Bestimmt die Lage des Zeilenpuffers. Er kann entweder in der Datenbank oder im Shared Memory liegen.

Im Fall des Shard Memory, muss PHP mit SHM- und SEM-Unterstützung kompiliert worden sein. Außerdem ist die Größe des Shard Memory (SHM) innerhalb der php.ini mit sysvshm.init_mem = 32595000 anzupassen bzw. zu vergrößern.

Jede Zeile ist durchschnittlich zwischen 3,8 und 4 kB groß, wobei pro Raum ein Zeilenpuffer von je 50 Zeilen exsistiert, also ein Platzbedarf an Shared Memory pro Raum von ca. 200 kByte besteht.

Voreingestellt ist die Lage innerhalb der Datenbank. Hier müssen keine zusätzlichen Anpassungen durchgeführt werden, allerdings ist das, im Gegensatz zur Lage im SHM, nicht die performanteste Lösung!

DATABASE_HOST

Host, auf dem die Datenbank installiert ist und läuft.

DATABASE_USER

Loginname des Datenbank-Accounts

DATABASE_PASSWORD

Kennwort des Datenbank-Accounts

DATABASE_TABLESPACE

Name des eigenen Tablespaces. Der Platz also, wo die eigenen SQL-Tabellen liegen. Bei einigen Datenbanken auch einfach nur Datenbank genannt.

DATABASE_DRIVER

Treiber, passend zur eingesetzten Datenbank. Mögliche Werte können sein:

Für mehr Optionen siehe ADOdb HomePage.

USE_PCONNECT

Ist der Wert FALSE, werden alle Datenbankverbindungen sofort wieder geschlossen, sobald sie nicht mehr gebraucht werden. Andernfalls wird die Datenbankverbindung erst mit dem Beenden des Webserver-Prozesses geschlossen.

Note

Empfohlen wird die Einstellung FALSE, weil so die Zahl der Datenbankprozesse und damit der Hauptspeicherverbrauch gering gehalten wird.

TEMPLATE_EXTENSION

Dateiendung der Template-Dateien unter /path/to/phpopenchat/include/templates.

DEFAULT_THEME

Das Standard-Motiv, welches alle neuregistrierten Benutzer voreingestellt bekommen. Alle Motive befinden sich innerhalb des Verzeichznisses /path/to/phpopenchat/include/templates.

BASETEMPLATE_PATH

Relativer Pfad zu den Motiven (Themes). Muss in den meisten Fällen nicht speziell angepasst werden.

ALLOW_TEMPLATE_CHANGES

Schalter, um den Benutzern das selbstständige Auswählen und Ändern der installierten Motive (Themes) zu erlauben.

PN_MODULE_NAME

Verzeichnissname des PHPOpenChat innerhalb des PostNuke-Modulverzeichnisses /path/to/postnuke/modules/

TRIM_OUTPUT

Ist der Wert true, werden alle Leerzeichen aus dem auszuliefernden XHTML-Code entfernt, um Bandbreite zu sparen.

$supported_languages

Dieses Array enthält alle unterstützen Sprachen, zweistellig nach ISO-639. Die Standardsprache, auf die immer wieder zurückgegriffen wird, wenn keine Übersetzungen für die aktuell ausgewählte Sprache existieren, muss hier an erster Stelle stehen. Standardeinstellung für die Standardsprache ist Englisch ('en')

CHAT_NAME

Wird an verschiedenen Stellen (z.B. HTML-Titel) benutzt. Soll durch den jeweiligen Namen des realisierten Chats definiert sein.

EXIT_URL

Der URL, auf die beim Verlassen des Chats verwiesen wird. Ist der Wert leer, wird auf die HomePage des Chats verwiesen.

Note

Ein URL hat das Format: http://host.domain.tld/

DISABLE_CONTEXT_MENU

Schalter für das Contextmenü, welches auf einen Rechtsklick innerhalb des Textausgabefensters erscheint. Der Standardwert ist 'true'

Note

Der Wert muss vom Typ String sein, also in Hochkomma angegeben werden!

DISABLE_CONTEXT_MENU_ICONS

Schalter für die Icons im Kontextmenü. Jede Option des Contextmenüs wird mit einem Icon näher beschrieben.

ALLOW_GUEST_LOGIN

Schalter für die Möglichkeit für Benutzer, sich ohne Registrierung in den Chat einzuloggen. Sie erhalten dann einen Spitznamen im Format 'Gast_1234'.

STATUS_BOT_NAME

Alle Meldungen des Chats, wie 'Benutzer betritt den Raum', werden von diesem imaginären Benutzer gesagt.

PASSWORD_MIN_LENGTH

Geforderte Minimallänge der Benutzerpasswörter.

MAX_CONCURRENT_CHATTER

Maximalzahl der innerhalb eines Raumes gleichzeitig chattenden Benutzer.

Tip

Wegen der Übersichtlichkeit, wird eine Zahl von maximal 100 pro Raum empfohlen. Technisch stellen Größen von über 200 allerdings auch kein Problem dar.
SEND_CONFIRMATION_MAIL

Schalter für das Versenden von Bestätigungsmails. Diese Mails, die an den bei der Registrierung angegebenen E-Mailaccount gesendet werden, enthalten einen Link, der zum Bestätigen der Registrierung vom Benutzer angeklickt werden muss.

SEND_MAIL_TO_FREEMAIL_ACCOUNTS

Schalter für das Versenden von Bestätigungsmails an Free-Mail-Accounts, wie GMX oder WEB.DE

Der Standardwert ist true. Ist der Wert false, werden keine Mails an diese Free-Mail-Accounts verschickt.

ADMIN_MAIL_ADDRESS

E-Mail-Adresse des Chatbetreibers, wird innerhalb des Contextmenüs zur Kontaktaufnahme angeboten.

ADMIN_MAIL_NAME

Name des Chatbetreibers.

UNACCEPTABLE_CONTENT

URLs, die innerhalb des Chats von Benutzern 'gesagt' bzw. geschrieben werden, werden automatisch in Links umgewandelt. Enthalten Web-Seiten einen dieser hier angegebenen Werte, scheitert das Weiterleiten auf diesen URL.

$NO_NICKS

Spitznamen, die vom System nicht vergeben werden.

$DEATHLESS_CHATTERS

Diese Spitznamen werden vom System nie automatisch gelöscht.

ENTRY_CHANNEL

Der PHPOpenChat unterstützt auch das Einloggen aus anderen PHP-Applikationen heraus. Innerhalb der anderen Applikation können die zur Chat-Authentifizierung nötigen Session-Objekte angelegt werden. Sind beim Zugriff auf den Chat diese Session-Objekte vorhanden, wird der Benutzer sofort in den hier angegebenen Raum geleitet.

AUTOLOGIN_DIRECTLY

Schalter für das direkte Einloggen aus anderen PHP-Applikationen heraus.

Sind beim Zugriff auf den Chat die zur Authentifizierung nötigen Session-Objekte vorhanden (siehe dafür auch das Beispielskript /path/to/phpopenchat/external_login.php), kann der Benutzer entwerden sofort in den unter ENTRY_CHANNEL angegebenene Raum geleitet werden oder er wird auf die Chat-HomePage geleitet, wo er sich, ohne sich nochmals authentifizieren zu müssen, den Raum selbst aussuchen kann, in dem er seine Chatsitzung beginnen möchte.

CHANNEL_SELECTED

Name des Raumes, der auf der Chat-HomePage von allen vorhandenen Räumen vorausgewählt ist.

LINE_POLLING_INTERVAL

Zeitinterval, mit dem auf dem Server nach neuen Zeilen für den jeweiligen Benutzer geschaut wird.

Note

Je kleiner der Interval, desto größer die Serverbelastung. Je größer der Interval, desto länger müssen die Benutzer auf neue Zeilen vom Server warten.

Tip

Ein Interval von minimal fünf und maximal zehn Sekunden, hat sich in der Praxis als optimal erwiesen.

MAX_INACTIVE_ONLINETIME

Zeitangabe in Sekunden, wie lange ein Benutzer den Online-Status behält, ohne aktiv zu sein. Wird die hier angegebene Zeit vom Benutzer überschritten, wird er automatisch ausgeloggt.

MAX_INACTIVE_LIFETIME

Zeitangabe in Tagen, innerhalb der sich ein Benutzer mindestens einmal einloggen muss, damit er nicht automatisch aus der Registrationsdatenbank gelöscht wird.

IRC_QUERY_OPENS_WINDOW

Schalter für das IRC-Kommano 'query'. Ist der Wert true, wird auf ein '/query nickname' im Chat, ein weiteres Fenster für einen privaten Chat geöffnet.

Ist der Wert false, wird der angegebene Benutzer in den jeweils eigenen privaten Raum eingeladen und benachrichtigt. Der Einladende Benutzer wechselt automatisch in seinen eigenen privaten Raum.

SMILEYS_AS_IMAGES

Schalter für Emoticons innerhalb des Chats. Ist der Wert true, werden alle Emoticons, wie bspw. :-) automatisch in Grafiken gewandelt.

MAX_SMILEYS_PER_LINE

Maximale Anzahl von Grafik-Smileys pro Zeile.

ALLOW_PRIVATE_IMAGES

Schalter für benutzereigene Grafikdateien/private Icons. Ist der Wert true, können Benutzer innerhalb ihres Profils Grafikdateien hochladen und sie als Smileys im Chat benutzen.

  • :me steht für das eigene,

  • :you für ein fremdes privates Icon

Wird :you benutzt, muss ein Benutzer direkt angesprochen werden, damit das Ersetzen des Codes funktionieren kann.

PRIVATE_IMG_MAX_BYTES

Maximalgröße in Bytes eines privaten Icons.

PRIVATE_IMG_SIZE_X

Maximale Breite des privaten Icons in Pixeln

PRIVATE_IMG_SIZE_Y

Maximale Höhe des privaten Icons in Pixeln

$ACCEPTED_MIME_TYPES

MIME-Typen, die beim Hochladen des privaten Icons erlaubt sind.

PRIVATE_IMG_SAVE_MODE

Speichermodus für das private Icon. Mögliche Werte können sein:

  • 1 (eine ggf. schon vorhandene Datei wird überschrieben)

  • 2 (ist schon eine Grafikdatei vorhanden, wird der Upload abgebrochen)

SHOW_GENDER_ICON

Schalter für das Icon des Geschlechts des jeweiligen Benutzers. Ist der Wert true, wird ein Icon für das Gechlecht des Benutzers innerhalb des Ausgabefensters angezeigt.

MIN_BIRTHDAY_YEAR

Erstes Jahr, was innerhalb des Profiles als Geburtsjahr zur Auswahl angeboten wird.

MIN_MAIL_LENGTH

Mindestlänge des Inhalts einer Chat-Mail.

MAX_NOTE_SIZE

Maximalgröße einer Notiz von einem Benutzer über einen Benutzer.

COL_COUNT_CHATTER_LIST

Spaltenanzahl der Tabelle zur Anzeige der gerade engeloggten Benuzter.

SHOW_GRADE_ICONS

Schalter für die Anzeige des Ranges der Benutzers.

MULTIPLE_LINE_INPUT

Schalter für die mehrzeilige Texteingabe beim Chatten.

$GRADES

Mindestwerte für das Erreichen der insgesamt vier Ränge für Benutzer. Die folgende Tabelle enthält die Standardwerte, die an die jeweiligen Bedürfnisse angepasst werden können.

  1. Herunterladen des PHPOpenChat

  2. Entpacken des Pakets nach /path/to/postnuke/modules

  3. Editieren der Konfiguration und Anpassen von PN_MODULE_NAME. Diese Einstellung muss den Verzeichnisnamen des PHPOpenChat innerhalb des PostNuke-Modulsverzeichnisses haben, also der Form "phpopenchat-3.x.x" entsprechen.

  4. Als 'Admin' bei PostNuke einloggen und den PHPOpenChat als neues Modul installieren.

    • Gehe nach: Administration -> Modules -> List und initialisiere und aktiviere das neue PHPOpenChat Modul.

    • Um den PHPOpenChat auch in der Navigation anzuzeigen, gehe nach: Adminidtration -> Blocks und editiere den Block "Main Menu". Unter dem Punkt Content kann dann ein neuer Menüpunkt angelegt werden.

      Title: Chat

      URL: modules.php?op=modload&name=phpopenchat-3.x.x&file=index

      Description: Chat about PHPOpenChat

Bei der Registration bei den meisten Chatverzeichnissen, wie bspw. webchat.de, kann ein Skript angegeben werden, das es dem Chatverzeichnis ermöglicht, automatisch die Zahl der Benutzer und die jeweiligen Spitznamen innerhalb der einzelnen Channels zu ermitteln. Der PHPOpenChat stellt dafür das Skript /path/to/phpopenchat/participants.php zur Verfügung.

Beim POC ist ein Theme ein Paket aus allen nötigen Templatedateien mit der Dateiendung TPL und anderen Dateien, wie den CSS-Dateien unter css/ oder den Sounddateien unter sound/. Ein Template befindet sich immer in einem Verzeichnis unterhalb von /path/to/phpopenchat/include/templates. So findet man das Standard-Theme "openchat" unter /path/to/phpopenchat/include/templates/openchat. Alle installierten Themes, werden den Benutzern unter "Mein Profil" sofort zur Auswahl angeboten, so die Option ALLOW_TEMPLATE_CHANGES das innerhalb der Konfiguration vorsieht.

Um neue Themes zu installieren, müssen die unter http://phpopenchat.org/themes.php heruntergeladenen Themearchive nach /path/to/phpopenchat/include/templates entpackt werden.

Um eigene Themes zu erstellen, empfiehlt sich das Kopieren und anschließende umbenennen des Standardthemes "openchat". Beim Umbenennen muss darauf geachtet werden, dass ein solches Theme unter http://phpopenchat.org/themes.php noch nicht existiert. Innerhalb dieses neuen Verzeichnisses unter /path/to/phpopenchat/include/templates kann dann das neue Theme implementiert werden. In den einzelnen Templatedateien kann ausnahmslos alles verändert werden, nur beim eventuellen Entfernen von PHP-Tags (z.B. <?=$TEMPLATE_OUT['foo']?>) sollte man Vorsicht walten lassen.

Note

Die Templatedateien sind so implementiert, das in den meisten Fällen das Ändern der CSS-Dateien unter /path/to/phpopenchat/include/templates/theme_foo/css für ein komplett neues Theme ausreichen sollte.

Es gibt insgesamt zwei verschiedene Typen von Templates

In den Templates der Form a findet man keine direkten Textausgaben, sondern ausschließlich Platzhalter für diese. Solche Platzhalter für Textausgaben können sein:

Für eigene Erweiterungen steht eine Vorlage ohne Platzhalter für Textausgaben zur Verfügung.

skeleton.php, ein PHP-Skript, was beliebig mit PHP-Code ausgebaut werden kann
skeleton.tpl.en, das Template für die Sprache Englisch
skeleton.tpl.de, das Template für die Sprache Deutsch

Für eigene Erweiterungen, die die Platzhaltertechnologie, also den POC-Translator ausnutzen wollen, muss

eine Skriptdatei, ähnlich der index.php innerhalb von /path/to/phpopenchat und
eine dazugehörige Templatedatei innerhalb von /path/to/phpopenchat/include/templates/theme_foo angelegt werden.