Es liegt ja grundlegend erst mal das Problem vor, die Verbindung mit einer anderen Datenbank aufzubauen. Damit habe ich auch eine Zeit Lang rummachen müssen, bis ich mir einfach eine Ableitung der
MySQLDatabase.class.php aus
wcf/lib/system/database/ erstellt habe.
PHP Code:
<?php
require_once(WCF_DIR.'lib/system/database/MySQLDatabase.class.php');
class MyNewDatabase extends MySQLDatabase {
protected function connect() {
if ($this->usePConnect) {
$this->linkID = @mysql_pconnect($this->host, $this->user, $this->password, $newLink = true);
}
else {
$this->linkID = @mysql_connect($this->host, $this->user, $this->password, $newLink = true);
}
if ($this->linkID === false) {
throw new DatabaseException("Connecting to MySQL server '".$this->host."' failed.", $this);
}
// set connection character set
if (!empty($this->charset)) {
$this->setCharset($this->charset);
}
}
}
?>
Wichtig ist hierbei: Es wird die Klasse MySQLDatabase.class.php erweitert und nur die connect()-Methode überschrieben. Der Rest der Methoden wird 1:1 vererbt und ganz normal ausgeführt. Außerdem muss der $newLink - Parameter auf
true stehen.
Dann musst du dir noch Eventlistener setzen, die z.B auf das Registrierungsformular und das Passwort ändern Formular reagieren und dort musst du mittels
PHP Code:
new MyNewDatabase($host, $user, $password, $database);
/**
* MyAwesomeCode
*/
Wenn man sich mit Eventlistenern auskennt und weiß, wie man über die Paketverwaltung Optionen registriert, ist das ganze Verwaltungstechnisch sogar noch sehr viel angenehmer. Ich habe die Ableitung der Datenbank für eine Charakteranzeige der Charaktere für Metin2 gebastelt.