MultiTriggerFramework

Aus Contao Community Documentation

Das Multi Trigger Framework erlaubt einem Entwickler, mehrere Trigger auf einfache Art und Weise zu definieren.

Erweiterungs-Übersicht
Name des Entwicklers Tristan Lins
Version der Erweiterung 1.0.0
Kompatibilität mit Contao Version 2.11+
Link zum Extension Repository http://www.contao.org/erweiterungsliste/view/MySQLMultiTriggerFramework.de.html
Link zum Tracker https://github.com/InfinitySoft/contao-mysqlmultitriggerframework/issues
Abhängig von ff. Erweiterungen MySQL 5+


Multi Trigger Framework

MySQL 5+ unterstützt Trigger, leider wird pro Time/Event nur ein einziger Trigger unterstützt. Das Multi Trigger Framework gestattet es Extension-Entwicklern, Trigger zu definieren, ohne sich um diesen Umstand Gedanken machen zu müssen. Das Framework löscht automatisch nicht mehr benötigte Trigger und legt neue an.

Trigger definieren

Trigger werden in der config.php einer Erweiterung, in der globalen Variable $GLOBALS['TL_TRIGGER'] definiert. Die Variable ist folgendermaßen aufgebaut:

$GLOBALS['TL_TRIGGER']['<table>']['<time>']['<event>'] = array('<sql>');

<table> definiert die Tabelle, auf der der Trigger angelegt wird.
<time> definiert den Zeitpunkt, wann der Trigger ausgeführt wird: before oder after.
<event> definiert das Event, zu dem der Trigger ausgeführt wird: insert, update oder delete.

Beispiel

/**
 * Multi Triggers
 */
$GLOBALS['TL_TRIGGER']['tl_avisota_recipient']['after']['insert'][]     = 'CALL avisota_recipient_list(NEW.id, NEW.lists);';
$GLOBALS['TL_TRIGGER']['tl_avisota_recipient']['after']['update'][]     = 'CALL avisota_recipient_list(NEW.id, NEW.lists);';
$GLOBALS['TL_TRIGGER']['tl_avisota_recipient']['before']['delete'][]    = 'DELETE FROM tl_avisota_recipient_list WHERE recipient=OLD.id;';
$GLOBALS['TL_TRIGGER']['tl_member']['after']['insert'][]                = 'CALL avisota_member_list(NEW.id, NEW.avisota_lists);';
$GLOBALS['TL_TRIGGER']['tl_member']['after']['update'][]                = 'CALL avisota_member_list(NEW.id, NEW.avisota_lists);';
$GLOBALS['TL_TRIGGER']['tl_member']['before']['delete'][]               = 'DELETE FROM tl_avisota_member_list WHERE member=OLD.id;';
$GLOBALS['TL_TRIGGER']['tl_avisota_mailing_list']['before']['delete'][] = 'DELETE FROM tl_avisota_recipient_list WHERE list=OLD.id;
DELETE FROM tl_avisota_member_list WHERE list=OLD.id;';

Trigger aktualisieren

Die Trigger werden über das Install Tool bzw. die Datenbankaktualisierung aktualisiert.

Trigger anlegen

Werden weitere Erweiterungen installiert, die ebenfalls Trigger verwenden, werden die alten Trigger gelöscht und neue angelegt.

Trigger aktualisieren

Werden alle Erweiterungen gelöscht, die Trigger verwenden, werden die Trigger gelöscht.

Trigger löschen

Trigger Namenskonvention

Die Trigger sind nach folgendem Schema benannt: CMT__

Ansichten
Meine Werkzeuge

Contao Community Documentation

Andreas, leg dich da hinten hin und schlaf, dann kommen wir vorwaerts.

Tristan Lins
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge