Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[TUTO] Rendre un mod désactivable par l'administrateur (1.0)

Poster un nouveau sujet Répondre au sujet

Rechercher dans ce sujet :
Messages
Darathor Sexe : Masculin
Site Admin
Membre

Inscrit le : 02 Nov 2003
Messages : 1101
Localisation : Strasbourg
MessagePosté le : 21 Sep 2005 18:26
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Citation :
But : Ce tutoriel a bour but de fusionner "à la main" deux comptes utilisateurs directement dans la base de données.

Prérequis :
- connaissance minimale de phpMyAdmin et/ou connaissances en SQL.

Remarque :
Ce tutoriel a été testé sur un forum de test avec des comptes crées exprès pour ce test, pas dans des conditions "réelles". Il se peut donc que j'aie oublié des choses... Pensez-donc bien à sauvegarder votre base de données avant de commencer et n'hésitez pas à me contacter en cas de problèmes.

Auteur : Darathor (darathor@free.fr)
Version : 1.0 (21/09/2005)
Compatibilité phpBB : 2.0.17


0) Préalable :
On suppose donc que vous avez deux comptes distincts appartenant au même usilitateur et que vous voulez donc fusionner. Dans la suite, on nommera Compte1 le compte qui restera et Compte2 le compte à supprimer. On repérera par Id1 et Id2 leurs ids (les ids peuvent par exemple être récupérés dans l'adresse de la page correspondant à leur profil, il s'agit de la valeur passée à la variable u (sous la forme u=valeur)).
Avant cela, veillez bien à :
- ce que le compte 1 destiné à rester soit bien actif, sinon l'utilisateur ne pourra plus venir.
- également le prévenir avant...
- sauvegarder la base de données au cas où.
- désacriver le forum pour éviter les problèmes.

1) Transfert des messages.
Appliquer la requête suivante sans oublier de remplacer Id1 et Id2 par les ids correspondants :
Citation :
UPDATE phpbb_posts SET poster_id = Id1 WHERE poster_id = Id2
Ceci aura transféré les messages de Compte2 vers Compte1 mais les topics de Compte2 seront toujours indiqués comme postés par Compte1. Appliquons donc la requête suivante qui règlera ce problème (sans oublier de remplacer Id1 et Id2 par les ids correspondants) :
Citation :
UPDATE phpbb_topics SET topic_poster = Id1 WHERE topic_poster = Id2
Enfin il faut corriger le nombre de messages postés par Compte1 en y ajoutant le nombre posté par Compte2. Pour cela il nous faut calculer ce total que l'on appellera NbPosts. Vous pouvez le faire en additionnant vous-même les deux nombres de posts. Exécutez ensuite cette requête qui fera la mise à jour :
Citation :
UPDATE phpbb_users SET user_posts = NbPosts WHERE user_id = Id1


2) Transfert des messages privés.
On pourrait s'arrêter au transfert des messages mais il peut être intéressant de transférer aussi les massages privés... Attention cependant, car cela pourrait faire "déborder" les boîtes MPs de Compte1 en lui laissant plus de messages que ses boîtes n'ont le droit d'en contenir.

Transférons d'abord les messages que Compte2 a envoyé et indiquons-les comme envoyés par Compte1 :
Citation :
UPDATE phpbb_privmsgs SET privmsgs_from_userid = Id1 WHERE privmsgs_from_userid = Id2
Ensuite, faisons de même avec les messages reçus par Compte2 :
Citation :
UPDATE phpbb_privmsgs SET privmsgs_to_userid = Id1 WHERE privmsgs_to_userid = Id2


3) Effacement de Compte2.
D'autres données pourraient être transférées d'un compte à l'autre avant effacement comme les sujets souscrits ou les votes aux sondages mais la manip serait lourde pour un intérêt limité. On laissera donc ces données telles-quelles et elles seront simplement supprimés automatiquement lors de la suppression de Compte2. Vous pouvez maintenant vous rendre dans le panneeau d'administration et supprimer Compte2.

4) Fin de la fusion.
Tout devrait maintenant être en ordre et vous pouvez donc rouvrir le forum. Vérifiez tout de même rapidement que les messages ont bien été transférés au bon compte... En cas d'erreur, il suffit de restaurer la base préalablement sauvegardée et de recommencer...
Revenir en haut Aller en bas
Hors ligne | Profil | MP | E-mail | Site web
  Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum