Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

astuces:reintegrer_membre [2010/06/30 14:53] (Version actuelle)
Ligne 1: Ligne 1:
 +===== 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 ====
 +  * Le membre que vous souhaitez réintégrer possède un nouveau compte (c'est à dire qu'il s'est réinscrit, ou qu'en tant qu'​administrateur vous lui avez créé un compte)
 +  * Vous possédez et savez utiliser un outil de gestion de base de données (phpmyadmin,​ eskuel, etc.)
 +  * Vous connaissez le pseudo utilisé par l'​utilisateur sur son ancien compte, et son numéro d'​inscrit pour son nouveau compte
 +
 +:!: 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 :
 +<code sql>​UPDATE smf_messages SET ID_MEMBER="​xxx",​ posterEmail="​yyy"​ WHERE ID_MEMBER="​0"​ AND posterName="​zzz"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +  * //yyy// par le mail actuel de l'​utilisateur
 +  * //zzz// par l'​ancien pseudo de l'​utilisateur (que ce soit ou non le même que l'​actuel)
 +
 +=== 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 :
 +<code sql>​SELECT posterTime FROM smf_messages where ID_MEMBER="​xxx"​ ORDER BY ID_MSG ASC LIMIT 0,​1</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +et notez soigneusement le résultat obtenu (il s'agit de la date du tout premier message). Exécutez ensuite la requête suivante :
 +<code sql>​UPDATE smf_members SET dateRegistered="​ttt"​ WHERE ID_MEMBER="​xxx"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +  * //ttt// par le numéro précédemment noté
 +
 +=== Rafraîchir le nombre de messages postés ===
 +Pour ce faire, il faut exécuter cette requête :
 +<code sql>​SELECT COUNT(*) FROM smf_messages WHERE ID_MEMBER="​xxx"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +et notez, là encore, le résultat obtenu. Enfin, exécutez la requête suivante :
 +<code sql>​UPDATE smf_members SET posts="​ppp"​ WHERE ID_MEMBER="​xxx"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +  * //ppp// par le numéro précédemment noté
 +
 +=== Réattribuer les anciens messages personnels ===
 +Cette modification permet de récupérer les messages personnels envoyés par cet utilisateur.
 +<code sql>​UPDATE smf_personal_messages SET ID_MEMBER_FROM="​xxx"​ WHERE fromName="​zzz"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +  * //zzz// par l'​ancien pseudo de l'​utilisateur (que ce soit ou non le même que l'​actuel)
 +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.
 +  * Pour 1.0.x ou 1.1 Beta 3 Public :
 +<code sql>​UPDATE smf_recipients SET ID_MEMBER="​xxx"​ WHERE ID_MEMBER="​uuu"</​code>​
 +  * Pour 1.1 RCx :
 +<code sql>​UPDATE smf_pm_recipients SET ID_MEMBER="​xxx"​ WHERE ID_MEMBER="​uuu"</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +  * //uuu// par l'​ancien numéro d'​inscrit de l'​utilisateur
 +
 +=== Réattribuer les anciens sujets ===
 +Il suffit d'​exécuter la requête suivante :
 +<code sql>​UPDATE smf_topics SET ID_MEMBER_STARTED="​xxx"​ WHERE ID_FIRST_MSG IN (SELECT ID_MSG FROM smf_messages WHERE id_member="​xxx"​)</​code>​
 +en remplaçant :
 +  * //xxx// par le numéro d'​inscrit actuel de l'​utilisateur
 +
 +==== 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 ====
 +[[http://​www.simplemachines.org/​community/​index.php?​topic=42781.msg309699#​msg309699|Sujet original]] qui a permis la mise au point de cette astuce
 +
 +[[http://​www.simplemachines-fr.org/​aforum/​index.php?​topic=916.msg7293#​msg7293|Sujet secondaire]],​ où le problème de groupe se résout tout seul ;) 
astuces/reintegrer_membre.txt · Dernière modification: 2010/06/30 14:53 (modification externe)
Haut de page
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0