Ein kleiner Vorgeschmack auf das was kommt: Die BaseClass zur ModulAPI:
<?php
class CModuleBase
{
var $name_int;
var $name_ext;
var $classtype;
var $admin; // true, if administration is avaiable
var $require; // imploded array of required modules
var $incomp; // imploded array of incompatible modules
function show($template) { return ""; }
function install() {}
function uninstall() {}
function admin_event($event, $param) {}
function admin() {}
};
?>
Bei der Funktion "admin_event" ist $event eine der folgenden Konstanten:
EV_NULL, EV_MODULE_ADD, EV_MODULE_DELETE, EV_USER_ADD, EV_USER_DELETE
(EV_NULL ist nur als Default-Wert für die Datenbank vorhanden)
$param ist ein implodierter Array, mit Semikola getrennt
Ich behalte mir Änderungen vor.
Ausserdem ein Teil vom Code vom Modul "navigation":
<?php
class m_navigation extends mBase
{
function m_navigation()
{
$this->name_int = "navigation";
$this->name_pub = "Navigation";
$this->classtype = "B1";
$this->admin = TRUE;
$this->require = array(""); // Requires no mod
$this->incomp = array(""); // Works with every mod
}
function show($template)
{
global $oDB, $aDB;
$LINKS = "";
$rindex = $oDB->QUERY("SELECT name, link FROM p" . $aDB['key'] . "_mod_navigation ORDER BY ord ASC");
while($result = $oDB->FETCH_ARRAY($rindex))
$LINKS .= "<a href=\"" . $result['link'] . "\">" . $result['name'] . "</a><br>";
$template->assign("TITLE", $this->name_pub);
$template->assign("CONTENT", $LINKS);
return $template->getData();
}
function admin() {}
function install() {}
function uninstall () {}
};
?>
Der Code ist noch unvollständig, zeigt aber, dass das Modul nun eine eigene Tabelle benutzt, die es ermöglicht auch auf Inhalte ausserhalb des Portals zu linken (z.B. externe Forensoftware ;) )