Doar ce am recuperat un topic ce mi-era drag dar pe care din graba l-am sters :D (am vrut sa sterg de fapt ultimul topic, da am apasat remove topic in loc de remove message).
0. se presupune ca exista un backup al bazei de date de pe forum, in format de mysql dump (creeat de functia de backup a forumului, in partea de administrare)
1. trebuie instalat mysql local (eu aveam instalat deja pentru ca mai bibilesc la forum), creeata o baza de date goala, si apoi lansata comanda:
mysql -u username -p dbname < backup_forum.sqlAceasta comanda importa in baza de date dbname toate datele de pe forum. Etapa este necesara datorita punctului 2:
2. Se porneste MySql Query Browser, deschisa noua baza, si apoi se izoleaza mesajele din topicul sters folosind:
SELECT * from {prefix}messages where ID_TOPIC=<old_topic_id>(old topic id se cauta folosind search dupa subiect, si se observa ce id avea)
3. Se exporta Result Set-ul obtinut intr-un fisier HTML (deoarece va fi multa nevoie de copy/paste - eu am recuperat folosind phpmyadmin si a fost mai usor sa fac copy paste dintr-un html deschis in browser in cealalta fereastra cu phpmyadmin).
4. Se porneste phpmyadmin pe server si se recreeaza topicul folosindu-se id-ul vechi. Trebuie completate mai multe informatii, cum ar fi carui board sa apartina, care sunt primul si ultimul mesaj (id-urile lor), cate mesaje sunt in topic si cate vizualizari au fost. Toate aceste informatii se iau tot din backup.
Atentie, topicul nou nu apare listat in board-ul caruia i se asigneaza decat dupa ce toate mesajele sunt puse la loc. Se poate vedea insa topicul in timpul reconstructiei folosindu-se action-ul de topic:
http://example.com/index.php?topic=<old_topic_id>5. Apoi tot din phpmyadmin trebuie deschis table-ul de mesaje, si cu insert trebuie adaugat mesaj cu mesaj. Aici trebuie acel HTML deschis, si facut copy paste din el in fereastra cu phpmyadmin.
6. Atasamentele care apar la mesaje sunt in {prefix}attachments. Pentru fiecare mesaj care a avut atasamentele, trebuie:
a) cautat ce atasamente a avut :
SELECT * from {prefix}messages WHERE ID_MSG = <message_id>b) din phpmyadmin inserat cate un row nou pentru fiecare atasament (in tabela cu atasamente) (valorile necesare se iau din mysql query admin)
c) din backup trebuie copiate atasamentele inapoi pe forum in directorul de atasamente (trebuie evident avut backup si la directorul cu atasamente de pe forum) - eu saptamanal fac backupuri. Atasamentele pe disk au un serial number, trebuie copiate exact cum erau in backup.
7. Forumul nu renumara posturile membrilor atunci cand mesajele sunt injectate din phpmyadmin, asa ca pentru cireasa de pe tort trebuie aduse la zi si numarul de posturi. din phpmyadmin se cauta fiecare membru in parte si se editeaza "posts count" cu cate mesaje a avut persoana respectiva in topicul recuperat.
:)
Asa ca... mai bine atentie sa nu stergeti topicuri, caci recuperarea unui topic de 15 posturi cu tot cu atasamente dureaza o ora, o ora jumate.
PS: Am vazut in phpmyadmin ca se poate popula fiecare tabela cu informatii dintr-un fisier text. Dar trebuie compus acel(e) fisier(e) si dureaza chiar si mai mult asa.