Table des matières

Réintégrer un membre précédemment désinscrit

Cette astuce peut vous être utile si vous vous trouvez dans le situation suivante : vous avez supprimé le compte d'un membre sans effacer ses messages, et vous souhaitez réintégrer ce membre en lui réattribuant ses anciens messages.

:!: Ce tutoriel a été testé avec SMF 1.0.x mais, a priori, il doit fonctionner avec SMF 1.1. Si vous avez pu en faire l'expérience, merci d'en donner les résultats sur cette page ou sur le forum.

Pré-requis

:!: Veuillez noter que l'utilisateur à réintégrer peut avoir posté des messages sous son nouveau compte ou pas : cela n'a aucune importance et ne jouera en rien sur les anciens messages à lui réattribuer.

Procédure

C'est parti ! Suivez dans l'ordre les étapes suivantes.

Réattribuer les anciens messages

Il vous suffit d'exécuter la requête suivante :

UPDATE smf_messages SET ID_MEMBER="xxx", posterEmail="yyy" WHERE ID_MEMBER="0" AND posterName="zzz"

en remplaçant :

Modifier la date d'inscription de l'utilisateur

En réattribuant les anciens messages de l'utilisateur à son nouveau compte, un problème se pose : la date de son premier message est antérieure à sa date d'inscription ! Cela peut mener à des incohérences, notamment dans les statistiques. Pour résoudre ce problème, exécutez la requête suivante :

SELECT posterTime FROM smf_messages WHERE ID_MEMBER="xxx" ORDER BY ID_MSG ASC LIMIT 0,1

en remplaçant :

et notez soigneusement le résultat obtenu (il s'agit de la date du tout premier message). Exécutez ensuite la requête suivante :

UPDATE smf_members SET dateRegistered="ttt" WHERE ID_MEMBER="xxx"

en remplaçant :

Rafraîchir le nombre de messages postés

Pour ce faire, il faut exécuter cette requête :

SELECT COUNT(*) FROM smf_messages WHERE ID_MEMBER="xxx"

en remplaçant :

et notez, là encore, le résultat obtenu. Enfin, exécutez la requête suivante :

UPDATE smf_members SET posts="ppp" WHERE ID_MEMBER="xxx"

en remplaçant :

Réattribuer les anciens messages personnels

Cette modification permet de récupérer les messages personnels envoyés par cet utilisateur.

UPDATE smf_personal_messages SET ID_MEMBER_FROM="xxx" WHERE fromName="zzz"

en remplaçant :

Pour réattribuer les messages personnels reçus par ce membre, il faut connaître l'ancien numéro d'inscrit de l'utilisateur et exécuter l'une des requêtes suivantes selon votre version de SMF.

UPDATE smf_recipients SET ID_MEMBER="xxx" WHERE ID_MEMBER="uuu"
UPDATE smf_pm_recipients SET ID_MEMBER="xxx" WHERE ID_MEMBER="uuu"

en remplaçant :

Réattribuer les anciens sujets

Il suffit d'exécuter la requête suivante :

UPDATE smf_topics SET ID_MEMBER_STARTED="xxx" WHERE ID_FIRST_MSG IN (SELECT ID_MSG FROM smf_messages WHERE id_member="xxx")

en remplaçant :

Finalisation

Si vous avez suivi ces étapes, l'utilisateur doit être correctement réintégré à votre forum. Cependant veuillez noter que, si votre forum dispose de plusieurs groupes d'utilisateurs fondés sur le nombre de messages postés, les informations relatives à ces groupes seront rafraîchies lorsque l'utilisateur aura posté un nouveau message.

Liens

Sujet original qui a permis la mise au point de cette astuce

Sujet secondaire, où le problème de groupe se résout tout seul ;)