Start FAQ Roundcube Webmail Tipp: Minimal RoundCube MySQL Admin per Trigger

Funktionen

Buchen

Anmeldung

Tipp: Minimal RoundCube MySQL Admin per Trigger Drucken
Roundcube Webmail

Da Roundcube kein eigenes administratives Interface hat (hat es auch nicht zwingend nötig) lassen sich über die Datenbank ein paar einfache Tasks unter der Zuhilfenahme von Triggern realisieren. Glück hat hier auch, wessen MySQL Installation bereits Trigger unterstützt aber keine InnoDB Datenbanken, da Roundcube per default InnoDB verwendet und contraints enthält.

Insbesondere wenn ein Benutzer gelöscht wird, macht es Sinn seine abhängigen Daten ebenfalls zu entfernen. Der harte Approach ist das Löschen aller abhängigen Sätze, wobei das in Stufen erfolgen soll.

Annahmen:

  1. Wenn eine Adressgruppe gelöscht wird sollen die enthaltenen Kontaktverknüpfungen gelöscht werden.
  2. Wenn eine Adresse gelöscht wird sollen ihr zugrundeliegende Verknüpfungen aus den Adressgruppen gelöscht werden (sofern vorhanden).
  3. Wenn ein Benutzer gelöscht wird sollen seine Identitäten, seine Adressgruppen und seine Adressen gelöscht werden.

 

Realisation mittels Trigger in MySQL:

USE roundcube;
DELIMITER //
CREATE TRIGGER delete_contactgroupmembers
AFTER DELETE ON contactgroups
FOR EACH ROW BEGIN
DELETE FROM contactgroupmembers
WHERE contactgroup_id=old.contactgroup_id;
END
//
CREATE TRIGGER delete_contactgroupmember
AFTER DELETE ON contacts
FOR EACH ROW BEGIN
DELETE FROM contactgroupmembers
WHERE contact_id=old.contact_id;
END
//
CREATE TRIGGER delete_userentries
AFTER DELETE ON users
FOR EACH ROW BEGIN
DELETE FROM identities
WHERE user_id=old.user_id;
DELETE FROM contactgroups
WHERE user_id=old.user_id;
DELETE FROM contacts
WHERE user_id=old.user_id;
END
//

Jetzt kann z.B. der phpmyadmin Administrator einen Benutzer löschen und hinterlässt keine Leichensätze. Das Beispiel kann beliebig erweitert werden, wenn eigene Tabellen dazugekommen sind und ebenfalls mit der User_id verknüpft sind. Wem das zu hart ist, der ersetzt die DELETE FROM für die Dateien identities, contacts und contactgroups durche ein UPDATE SET del=1 WHERE um das delete flag zu verwenden.

siehe auch: Default Werte für neue Benutzer

RSS zu dieser FAQ

 
Copyright © 2012 Neubauer - Software Technik, Development. Alle Rechte vorbehalten.
Joomla! ist freie, unter der GNU/GPL-Lizenz veröffentlichte Software.
 

GnuPG Key Signing
GnuPG Key Signing