1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
DROP TRIGGER IF EXISTS `trig_updateuser`//
CREATE TRIGGER `trig_updateuser` BEFORE UPDATE ON `utilisateurs`
FOR EACH ROW BEGIN
#Avant de faire l'update, il faut controler que les nouvelles valeurs sont differentes des anciennes, sinon ca va faire
#Une boucle d'update avec l'autre trigger de la table forum...
SET @old_uid = 0;
SET @old_username = '';
SET @old_email = '';
SET @old_password = '';
SET @old_usergroupe = 0;
SET @new_usergroupe = 0;
SELECT forum.uid,forum.username, forum.email, forum.password, forum.usergroup FROM `forum`.mybb_users forum WHERE forum.uid=old.usr_id LIMIT 1 INTO @old_uid, @old_username, @old_email, @old_password, @old_usergroupe;
#Si on a un enregistrement de retourné, on gère les groupes
IF @old_uid > 0 THEN
#Si l'utilisateur n'avait pas les droits sur le forum (grp 5) et qu'il les a après modif, il faudra le placer dans le grp 2 (enregistrés).
#Si il n'a plus les droits, mais qu'il n'est pas dans le grp 5 (en attente activation), on le met dans le 5!
#Sinon, on le laisse dans le groupe ou il est actuellement (si c'est un admin, ou que les droits n'ont pas été modifiés...)
IF new.app_forum=1 AND new.usr_actif=1 AND @old_usergroupe=5 THEN
SET @new_usergroupe=2;
ELSEIF (new.app_forum=0 OR new.usr_actif=0) AND @old_usergroupe<>5 THEN
SET @new_usergroupe=5;
ELSE
SET @new_usergroupe=@old_usergroupe;
END IF;
#Si des valeurs sont à modifier, on lance l'update, sinon on fait rien.
IF @old_uid <> new.usr_id OR @old_username <> new.usr_pseudo OR @old_email <> new.usr_email OR @old_usergroupe <> @new_usergroupe OR @old_password <> MD5(CONCAT(MD5('kMxnPfk6'),new.usr_passwd)) THEN
UPDATE `forum`.mybb_users forum SET
forum.uid = new.usr_id,
forum.username = new.usr_pseudo,
forum.email = new.usr_email,
forum.password = MD5(CONCAT(MD5('kMxnPfk6'),new.usr_passwd)),
forum.usergroup = @new_usergroupe
WHERE uid=old.usr_id;
END IF;
END IF;
END
// |
Partager