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+ |
Inhaltsverzeichnis
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.
Werden weitere Erweiterungen installiert, die ebenfalls Trigger verwenden, werden die alten Trigger gelöscht und neue angelegt.
Werden alle Erweiterungen gelöscht, die Trigger verwenden, werden die Trigger gelöscht.
Trigger Namenskonvention
Die Trigger sind nach folgendem Schema benannt:CMT__