Seite 1 von 1
User wiederherstellen
Verfasst: 01.03.2004 19:29
von RogerM
Ich habe fälschlicherweise einen User gelöscht (Über Admin-Panel). Ichhabe daraufhin im phpMyAdmin den User mit der gleichen ID wieder erstellt. Wir kann ich es nun machen, dass die rund 2000 Beiträge wieder diesem User zugeordnet werden? Muss ich bei allen Beiträge manuell wieder den Benutzernamen (bzw. die ID) hinzufügen?
Oder kann man da gar nichts machen?
Verfasst: 01.03.2004 20:19
von Dennis63
Da kann man nicht viel machen. Gelöscht ist gelöscht...
Hast Du dem User denn auch eine Gruppe erstellt und ihn da reingepackt, um das phpbb-Rechte-System nicht zu verwirren?
Tip: Der DB-Maintenance-Mod kann das automatisch machen.
Die 2000 Beiträge mußt Du wohl manuell wieder ihm zuteilen. Denn die wurden alles auf "von Gast" gestellt. Ausser Du hast noch ein altes Backup. Dann könntest Du Dir ein Script schreiben, welches die Beiträge Updatet. Sowas gibt es aber glaube ich nicht fertig...
Grüße
Dennis
Verfasst: 01.03.2004 20:35
von RogerM
Dennis Böge hat geschrieben:Da kann man nicht viel machen. Gelöscht ist gelöscht...
Hast Du dem User denn auch eine Gruppe erstellt und ihn da reingepackt, um das phpbb-Rechte-System nicht zu verwirren?
Tip: Der DB-Maintenance-Mod kann das automatisch machen.
Die 2000 Beiträge mußt Du wohl manuell wieder ihm zuteilen. Denn die wurden alles auf "von Gast" gestellt. Ausser Du hast noch ein altes Backup. Dann könntest Du Dir ein Script schreiben, welches die Beiträge Updatet. Sowas gibt es aber glaube ich nicht fertig...
Den DB-Maintenance-Mod habe ich mal durchlaufen lassen. Hat die Gruppe erstellt.
Klar wurde alles auf Gast gestellt, aber überall wurde ja der Username des ehemals registrierten hinzugefügt. Also wenn der User "Peter" z.B. 10 Beiträge geschrieben hat und dann der User gelöscht wird, werden seine Beiträge ja auf "Peter Gast" (sozusagen) umgestellt. In der Tabelle phpbb_post wurde ja einfach die Poster_ID auf -1 gesetzt und bei post_username der Name hinzugefügt (in diesem Beispiel Peter). Also kann ich ja mit "Teilweise Anzeigen" alle Post herausfiltern, die post_username=Peter sind. Allso wäre es problemlos herauszufinden, welche Beiträge dem User wieder zugeordnet werden müssen. Nur bin ich nicht wirklich gut im Programmieren, also wüsste ich nicht, wie es automatisieren könnte, dass in alle Zeilen mit post_username=Peter die Zelle poster_id=-1 in poster_id=10 (ID von Peter) geändert werden.
Verfasst: 01.03.2004 20:43
von Dennis63
Stimmt, da habe ich gar nicht dran gedacht.
!! Ohne Gewähr !!
Code: Alles auswählen
UPDATE phpbbb_posts SET poster_id = 5 WHERE post_username='Pedddder'
- Der MySQLCode ist nur flüchtig zusammengeschrieben und ungetestet. Username und Poster_Id mußt Du anpassen. Danach sollte es gehen, ist aber ungeprüft (ich lösche keinen User, nur um das zu überprüfen...) - Mache also vorher ein Backup...
!! Ohne Gewähr !!
Grüße
Dennis
Verfasst: 01.03.2004 20:59
von RogerM
Wenn man das dritte b bei phpbbb_posts herausnimmt, funktioniert es (habs an einem Testfourm ausprobiert). Nur die Darstellung des Autors (wenn der betroffenen User einmal ein neuer Thread erstellte, ist nicht mehr auf den User verlinkt. Aber das ist nicht so schlimm)
Vielen Dank Dennis
Verfasst: 01.03.2004 21:27
von CyberCop
oder du Installiert dir die Mod mit Userposts editieren =)
PS: Sry hatte keine zeit alles zu lesen deswegen wei sich nicht ob schon vorgeschalgen wurde.
Verfasst: 01.03.2004 21:35
von Dennis63
Hi. Ja, das 3. B war absichtlich da. Du solltest Dir den Code wenigsten angucken, bevor Du ihn nutzt
Zu Den Topics: Es gibt die Spalte "phpbb_topics_topic_poster_id"... Die muss auch noch wiederhergestellt werden. Mit Hilfe der Spalte first_topic_post_id kann man dann prüfen, ob der Topic_Poster der selbe Poster für das Posting ist...
Jedoch wird der MySQL Code dafür etwas länger.
Den Anfang geb ich Dir mal (Leider ist meine alte Version von MySQLFront mal wieder abgeschmiert - daher tippe ich den Code mal so ein - da sind bestimmt diverse Feher drinne..
Code: Alles auswählen
SELECT phpbb_topics.topic_id FROM (....)
WHERE phpbb_topics.first_post_id = phpbb_posts.post_id
AND phpbb_topics.poster_id <> phpbb_posts.poster_id
Das Ergebnis sollten alle Topic_IDs sein, die von dem besagen User kommen,aber NICHT seine User ID tragen. Aber der Code ist jetzt wirklich "ungeprüft" - Denn bei meinem Check konnte ich irgendwie das Ergebnis nicht nachvollziehen - Aber es sollte Dir als kleine Hilfe bestimmt reichen, wenigsten die Topic_Ids zu bekommen.
Grüße
Dennis
Verfasst: 01.03.2004 22:42
von RogerM
Mit
Code: Alles auswählen
SELECT phpbb_topics.topic_id FROM (phpbb_topics, phpbb_posts)
WHERE phpbb_topics.topic_first_post_id = phpbb_posts.post_id
AND phpbb_topics.topic_poster <> phpbb_posts.poster_id AND phpbb_posts.post_username = 'Peddder'
wird mir die Liste angezeigt. Und da ich es nicht automatisieren kann, werde ich einfach bei den neusten paar Threads das ganze Manuell anpassen.