SOP Pluginverwaltung

Aus SOP World

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[bearbeiten] Stand der Dokumentation: 27.06.2007

[bearbeiten] Pluginverwaltung

Die Pluginveraltung ermöglicht eine automatische Installation neuer Plugins. Diese können über die Spezialseite "SOPPlugins" installiert und aktiviert werden. Bei der Installation werden sämtliche Änderungen an der Datenbank vorgenommen, so dass das Plugin direkt verwendet werden kann. Erst nach der Aktivierung ist das Plugin auch im System registiert und alle benötigten Dateien werden von Mediawiki geladen. Dies hat den Vorteil, dass das System schlank bleibt und benötigte Klassen und Dateien werden nur dann geladen, wenn das Plugin im System aktiviert ist. Ebenfalls kann die Installation der Dokumentation als Wikiseiten einzelner Plugins automatisch erfolgen.

[bearbeiten] Struktur eines Plugins

Alle Plugins liegen im Verzeichnis /extensions/sop_plugins. Hier existiert für jedes Plugin ein eigenes Verzeichnis. Nicht angezeigt werden alle Plugins, die in einem Verzeichnis gespeichert sind, dessen Name mit "_" anfängt.

[bearbeiten] Beispielhafte Verzeichnis- und Dateistruktur

-sop_plugins
--_test (Wird nicht angezeigt)
--testplugin (Wird angezeigt)
---db
----install_db.php
---docs
----Dokumentation.xml
---etc
----acl.php
---hooks
----hooks.php
---languages
----language.php
----languageDe.php
---specialpage
----special_page.php
---register_plugin.php

[bearbeiten] Verzeichnis _test

Dieses Verzeichnis wird auf der Spezialseite SOPPlugins nicht angezeigt, da der Name mit einem Unterstrich (_) beginnt.

[bearbeiten] Verzeichnis testplugin

Hier liegt das Plugin, das in das System integriert werden soll.

[bearbeiten] Datei register_plugin.php

In der Datei register_plugin.php müssen folgende Variablen angepasst werden:

//Interner Name der Plugins, am besten ein kurzer 
//Name ohne Sonderzeichen, da der Name als Varaible verwendet wird
$internalname = "testplugin";

//externer Name des Plugins, wird auf der Spezialseite angezeigt
$sop_plugins[$internalname]["name"] = "TestPlugin 1.0";
//Beschreibung des Plugins, wird auf der Spezialseite angezeigt
$sop_plugins[$internalname]["description"] = "Ein Muster-Plugin zur weiteren Verwendung";
//Name des Autors, wird auf der Spezialseite angezeigt
$sop_plugins[$internalname]["author"] = "Harald Wonneberger";
//Email-Adresse des Autors, wird auf der Spezialseite angezeigt
$sop_plugins[$internalname]["email"] = "Harald.Wonneberger@iese.fhg.de";

[bearbeiten] Datei install_db.php

In dieser Datei werden alle Komponenten registriert, die zum installieren und deinstallieren des Plugins verwendet werden. Es werden sömtliche Datenbankbefehle gespeichert, um das Plugin zu installieren. Des weiteren wird definiert, welche Tabellen und Attribute einzelner Tabellen benötigt werden, damit das Plugin korrekt arbeiten kann. Werden keine Manipulationen an der Datenbank vorgenommen, so muss die Datei trotzdem vorhanden sein, jedoch sind dann alle Array leer zu lassen.

In der Datei install_db.php müssen folgende Variablen angepasst werden:


//SQL-Befehl zum installieren neuer Tabellen
$sop_plugins[$internalname]["db"]["install"] = array(
"CREATE TABLE `w_lsp_vocabulary_testdb` (
  `voc_id` int(11) NOT NULL auto_increment,
  `voc_name` varchar(30) NOT NULL default '',
  `voc_type` varchar(30) NOT NULL default '',
  PRIMARY KEY  (`voc_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
");

//SQL-Befehl zum deinstallieren der Tabellen
$sop_plugins[$internalname]["db"]["deinstall"] = array(
"DROP TABLE `w_lsp_vocabulary_testdb`"
);


//Folgende Tabellen müssen vorhanden sein, damit das Plugin korrekt
//arbeiten kann. ACHTUNG: hier ohne DB-Präfix angegeben!
$sop_plugins[$internalname]["db"]["tables"] = array(
"lsp_vocabulary_testdb"
);


//Folgende Attribute einzelner Tabellen müssen vorhanden sein,
//damit das Plugin korrekt arbeiten kann. ACHTUNG: hier ohne DB-Präfix angegeben!
//Format: "tablename" => array('field1', 'field2', 'fieldn')
$sop_plugins[$internalname]["db"]["fields"] = array(
"lsp_vocabulary_testdb" => array('voc_id', 'voc_name', 'voc_type')
);

[bearbeiten] Datei hooks.php

Hier werden alle Hooks registriert und implementiert, die von dem Plugin verwendet werden.

[bearbeiten] Datei languageDe.php

Für jede Sprache wird das globale Array $wgAllSOPMessagesSprachCode; also für Deutsch z.B. $wgAllSOPMessagesDe; angelegt. Anschließend werden alle Schlüssel-Wert-Paare wie folgt definiert:

global $wgAllSOPMessagesDe;
$wgAllSOPMessagesDe["sop_plugins_test"] = "TestMessage";

Auf die Schlüssel kann über die globale Funktion wfSOPMsg('sop_plugins_test') zugegriffen werden. Zurückgeliefert wird demensprechend "TestMessage".

[bearbeiten] Datei special_page.php

Hier werden die Spezialseiten wir üblich implementiert. Der Dateiname ist nicht festgelegt, muss jedoch in der Datei register_plugin.php angepasst werden.

[bearbeiten] Verzeichnis etc

Hier werden alle weiteren Dateien abgelegt, die vom Plugin verwendet werden.

[bearbeiten] Datei acl.php

Hier können spezielle Zugriffsrechte eingetragen werden

[bearbeiten] Verzeichnis docs

Alle XML-Dateien in diesem Verzeichnis werden automatisch als Wiki-Seiten eingefügt. Die XML-Dateien müssen mit dem Export-Tool von MediaWiki erzeugt werden.

[bearbeiten] Neues Plugin schreiben

Um ein neues Plugin zu schreiben, kopiert man das Musterplugin _testplugin in ein neues Verzeichnis und passt entsprechend die Variablen in der Dateien register_plugin.php, install_db.php und languageDe.php an.

[bearbeiten] Plugin installieren

Um ein Plugin zu installieren muss das Plugin in das Pluginverzeichnis extensions/sop_plugins verschoben werden und dort in einem eigenen Verzeichnis liegen.

[bearbeiten] Installation

Installiert und aktiviert wird das Plugin auf der Spezialseite Spezial:SOPPlugins. Ein Plugin ist installiert, wenn alle Tabellen und Felder in der Datenbank verfügbar sind. Durch einen Klick auf den Haken unter "Installiert" werden sämtliche Befehle ausgeführt, um die Datenbank anzupassen. Achtung: Wird der Haken entfernt, so gehen auch sämtliche pluginbezogene Datensätze verloren.

[bearbeiten] Aktivierung

Erst wenn ein Plugin aktiviert ist, werden alle Dateien in Mediawiki geladen. So wird das System schlank gehalten und nur die benötigten Daten werden geladen. Ist ein Plugin aktiviert, so enthält das entsprehende Pluginverzeichnis eine Datei plugin.active. Ist ein Plugin nicht aktiv, so wird die Datei entfernt.

[bearbeiten] Probleme

[bearbeiten] Aktivierung/Deaktivierung bzw Installation nicht möglich

Achten Sie darauf, dass die nötigen Schreibrechte für das jeweilige Plugin gesetzt sind. Hier muss vollständiger Schreib und Lesezugriff möglich sein. Das selbe gilt für die Datenbank. Hier müssen vor allem die Befehle "CREATE TABLE", "DROP TABLE", "CREATE DATABASE", "DROP DATABASE" sowie "SELECT", "INSERT" und "UPDATE" möglich sein.

Navigation