Una cura per la conversione da snitz a phpBB

Rispondi
Avatar utente
TheGib
Ammiraglio di Flotta
Ammiraglio di Flotta
Messaggi: 7931
Iscritto il: 16 gen 2005, 10:21
Località: Livorno - Italy

Una cura per la conversione da snitz a phpBB

Messaggio da TheGib » 28 ago 2015, 8:08

Lo scopo è rettificare i problemi dovuti alla conversione da snitz a phpBB, nel caso specifico dove lo snitz di partenza era stato più volte personalizzato e ricreato.
Tutta la cura è una procedura empirica, testata su phpBB 3.1.3, 3.1.4, 3.1.5, con MySQL(i) 5.1.73, non supportata da alcuna fonte ufficiale di phpBB.
L'esecuzione richiede un minimo di conoscenza degli strumenti utilizzati, altrimenti soprassedere.

Tutte le attività sono state svolte in locale sinché possibile, per minimizzare problemi di linea e possibilità di errore sull'ambiente effettivo, anche se solitamente in questo modo ci vuole più tempo. Questo significa:
  • Installare in locale un ambiente tipo XAMPP
  • Creare in locale un ambiente identico al forum
  • Bloccare l'accesso al forum
  • Salvare i dati in remoto e ripristinarli in locale
  • Lanciare le procedure (sql+php) in locale
  • Verificare i risultati
  • Controaggiornare il forum in remoto dalle tabelle modificate/aggiunte in locale
  • Sbloccare l'accesso al forum
La cura è divisa in tre parti:
  1. Correzione ordinamento vecchi post per loro corretta gestione nelle liste riassuntive: gli indici(liste) dei forum/sottoforum con le indicazioni/ordinamenti sui post/topic, autore di ogni topic, autore e posizione dell'ultimo post di ogni topic;
  2. Aggiornamento codici speciali alla versione phpBB: formattazioni, firme, emoticons, link, ecc.; è un problema in parte generale, in parte dovuto alle personalizzazioni di snitz del caso specifico
  3. Risincronizzazione forum e ricreazione indice di ricerca (se presente)
Le fasi 1 e 2 sono indipendenti, in teoria possono anche essere lanciate in momenti differenti.
La risincronizzazione forum serve solo per la fase 1, mentre la ricreazione indice serve per entrambi; poiché quest'ultima è assolutamente l'operazione che richiede più tempo, eseguire le fasi 1 e 2 insieme accorcia il lavoro.
Tutta la cura può essere lanciata sia subito dopo la conversione, sia quando il forum è andato avanti e vi sono state fatte aggiunte direttamente in ambiente phpBB; non ci sono problemi al riguardo, i nuovi post al limite cambiano numerazione a causa della Fase 1; l'unica cosa da controllare manualmente è la presenza eventuale di link diretti ad un numero specifico di post, che ovviamente risulteranno non corretti e andranno sistemati usando la tabella verifica_posts (vedi dopo); al contrario la numerazione dei topic non viene toccata, quindi link ai topic funzioneranno senza problemi sia per quelli vecchi sia per quelli nuovi.

La Fase 1 è universale, poiché corregge un problema di conversione indipendente dalle impostazioni del forum.

La Fase 2 è da verificare ad ogni utilizzo, poiché fortemente legata sia ai codici speciali esistenti nella versione snitz di partenza, sia alle emoticons utilizzate prima e dopo, sia al tipo di firme esistenti, sia alle formattazioni presenti. NON DEVE MAI ESSERE LANCIATA AD OCCHI CHIUSI, VA VERIFICATA CASO PER CASO.
L'unico modo per essere (abbastanza) tranquilli sul risultato è predisporre un ambiente di test (in locale o in remoto) e poi PROVARE, PROVARE, PROVARE...

Nota Bene:
In generale qualcosa può andare storto, qualche codice può non essere riportato completo, qualche casistica in altre situazioni può avere risvolti differenti, ci può essere una maledizione di Yog-Sothoth.
L'unica assicurazione è SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI...
"La nostra vera nazionalità è l'umanità." H.G.Wells
--------------------------
"...c'è una certa drammatica ironia in tutto questo, una sincronia che sconfina con la predestinazione, si potrebbe dire..." R.Giles

Avatar utente
TheGib
Ammiraglio di Flotta
Ammiraglio di Flotta
Messaggi: 7931
Iscritto il: 16 gen 2005, 10:21
Località: Livorno - Italy

Fase 1 - Ordinamenti

Messaggio da TheGib » 28 ago 2015, 8:08

Ricordo che questo è un problema della conversione, che "accoda" come ulteriore post ciò che in snitz era la creazione del topic, e l'accodamento assegna un numero ovviamente superiore. In pratica prima vengono convertiti i post, e in snitz quello di creazione NON lo era, poi vengono convertiti i topic e aggiunto il post di creazione del topic.

Questa fase della cura è reversibile, nel senso che se ci sono problemi può essere annullata e rieseguita (vedi in fondo)
Dove non diversamente specificato, il codice è SQL; se specificato subito prima del codice, allora è php :wink:

Creare tabella 'verifica_posts'

Codice: Seleziona tutto

CREATE TABLE IF NOT EXISTS `verifica_posts` (
  `post_new_id` mediumint(8) NOT NULL,
  `post_old_id` mediumint(8) NOT NULL,
  `post_time` int(11) NOT NULL,
  `topic_id` mediumint(8) NOT NULL,
  `poster_id` mediumint(8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin;

ALTER TABLE `verifica_posts`
 ADD PRIMARY KEY (`post_new_id`), ADD UNIQUE KEY `post_new_id` (`post_new_id`);

ALTER TABLE `verifica_posts`
 MODIFY `post_new_id` mediumint(8) NOT NULL AUTO_INCREMENT;
  

Segnare l'ultimo numero usato della numerazione post, servirà alla fine

Codice: Seleziona tutto

SELECT MAX(`post_id`) FROM `phpbb_posts`;
Nel ns. caso [VECCHIO] = 465393

Rinominare 'phpbb_posts' in 'phpbb_posts_old'

Codice: Seleziona tutto

RENAME TABLE `phpbb_posts` TO `phpbb_posts_old`;
Copiare 'phpbb_posts_old' (SOLO STRUTTURA, NO DATI) in 'phpbb_posts'

Codice: Seleziona tutto

CREATE TABLE `phpbb_posts` LIKE `phpbb_posts_old`;
Assicurarsi che 'phpbb_posts' e 'verifica_posts' partano da 1

Codice: Seleziona tutto

ALTER TABLE `phpbb_posts` auto_increment = 1;
ALTER TABLE `verifica_posts` auto_increment = 1;
Salvare la rinumerazione che verrà usata:

Codice: Seleziona tutto

INSERT INTO `verifica_posts`
(
SELECT 0, `post_id`, `post_time`, `topic_id`, `poster_id` 
FROM `phpbb_posts_old` ORDER BY `post_time`, `post_id`
);
Rinumerare:

Codice: Seleziona tutto

INSERT INTO `phpbb_posts`
(
SELECT 0, `topic_id`, `forum_id`, `poster_id`, `icon_id`,
`poster_ip`, `post_time`, `post_reported`, `enable_bbcode`, `enable_smilies`, `enable_magic_url`, `enable_sig`,
`post_username`, `post_subject`, `post_text`, `post_checksum`, `post_attachment`, `bbcode_bitfield`, `bbcode_uid`,
`post_postcount`, `post_edit_time`, `post_edit_reason`, `post_edit_user`, `post_edit_count`, `post_edit_locked`,
`post_visibility`, `post_delete_time`, `post_delete_reason`, `post_delete_user`
FROM `phpbb_posts_old` ORDER BY `post_time`, `post_id`
);
Reimpostare indice di 'phpbb_posts' a [VECCHIO]+1, affinché i nuovi post inseriti successivamente siano salvi e non doppioni nel caso ci sia da tornare indietro, nonché doppiare numeri post cancellati effettivamente ed esistenti nei log.

Codice: Seleziona tutto

SELECT MAX(`post_id`)+1 FROM `phpbb_posts_old`
[questo è VECCHIO+1 nel nostro caso] 465394

Codice: Seleziona tutto

ALTER TABLE `phpbb_posts` auto_increment = [VECCHIO+1];
per sicurezza rifare quest'istruzione sql in remoto se si lavora in locale e poi si ricaricano gli archivi

Sistemare gli indici sulle altre tabelle interessate eseguendo i php:

update_warnings.php

Codice: Seleziona tutto

<?php
    set_time_limit(0);

    define('IN_PHPBB', true);
    $phpbb_root_path = './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.'.$phpEx);
    
    // Apre sessione
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();


    $number = 0;
    $offset = 1000000;

    // Scorre tabella con salvataggio numerazione
    $sql = "SELECT post_new_id, post_old_id FROM verifica_posts ORDER BY post_old_id";
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
       // Aggiorna la tabella phpbb_warnings + 1000000, per evitare sovrapposizioni
       if ($row['post_old_id']>0)
       {
       
          $number = $row['post_new_id'] + $offset ;
          
          $sql = "UPDATE " . WARNINGS_TABLE . " SET post_id = " . $number . "  
          WHERE post_id = " . $row['post_old_id'];
          $db->sql_query($sql);

          echo '<br />' . "\n POST_ID = " . $row['post_old_id'] . " ==> <strong>" . $number . "</strong>";
          
          flush();
       }
    }
    $db->sql_freeresult($result);

    echo "<br>Updating warnings...<br>";
    
    // Riporta al numero originale
    $sql = "UPDATE " . WARNINGS_TABLE . " SET post_id = post_id - " . $offset . " WHERE post_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    echo "<br>Finished with warnings...<br>";

    // Finito
    $db->sql_close();
    ?>
update_attachments.php

Codice: Seleziona tutto

<?php
    set_time_limit(0);

    define('IN_PHPBB', true);
    $phpbb_root_path = './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.'.$phpEx);
    
    // Apre sessione
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();


    $number = 0;
    $offset = 1000000;

    // Scorre tabella con salvataggio numerazione
    $sql = "SELECT post_new_id, post_old_id FROM verifica_posts ORDER BY post_old_id";
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
       // Aggiorna la tabella phpbb_attachments + 1000000, per evitare sovrapposizioni
       if ($row['post_old_id']>0)
       {
       
          $number = $row['post_new_id'] + $offset ;
          
          $sql = "UPDATE " . ATTACHMENTS_TABLE . " SET post_msg_id = " . $number . "
          WHERE post_msg_id = " . $row['post_old_id'];
          $db->sql_query($sql);

          echo '<br />' . "\n POST_MSG_ID = " . $row['post_old_id'] . " ==> <strong>" . $number . "</strong>";
          
          flush();
       }
    }
    $db->sql_freeresult($result);

    echo "<br>Updating attachments...<br>";
    
    // Riporta al numero originale
    $sql = "UPDATE " . ATTACHMENTS_TABLE . " SET post_msg_id = post_msg_id - " . $offset . " WHERE post_msg_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    echo "<br>Finished with attachments...<br>";

    // Finito
    $db->sql_close();
    ?>
update_notifications.php

Codice: Seleziona tutto

<?php
    set_time_limit(0);

    define('IN_PHPBB', true);
    $phpbb_root_path = './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.'.$phpEx);
    
    // Apre sessione
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();


    $number = 0;
    $offset = 1000000;

    // Scorre tabella con salvataggio numerazione
    $sql = "SELECT post_new_id, post_old_id FROM verifica_posts ORDER BY post_old_id";
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
       // Aggiorna la tabella phpbb_notifications + 1000000, per evitare sovrapposizioni
       if ($row['post_old_id']>0)
       {
       
          $number = $row['post_new_id'] + $offset ;
          
          $sql = "UPDATE " . NOTIFICATIONS_TABLE . " SET item_id = " . $number . " 
          WHERE notification_type_id IN (3, 4, 6, 8, 9, 10, 16) AND item_id = " . $row['post_old_id'];
          $db->sql_query($sql);

          echo '<br />' . "\n ITEM_ID = " . $row['post_old_id'] . " ==> <strong>" . $number . "</strong>";
          
          flush();
       }
    }
    $db->sql_freeresult($result);


    echo "<br>Updating notifications...<br>";
    
    // Riporta al numero originale
    $sql = "UPDATE " . NOTIFICATIONS_TABLE . " SET item_id = item_id - " . $offset . " WHERE notification_type_id IN (3, 4, 6, 8, 9, 10, 16) AND item_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    echo "<br>Finished with notifications...<br>";

    // Finito
    $db->sql_close();
    ?>
ATTENZIONE: impostare dove serve nelle procedure php la variabile $offset ad un numero superiore al massimo numero post esistente, cioè rilanciare

Codice: Seleziona tutto

SELECT MAX(`post_id`) FROM `phpbb_posts`
e prendere un numero MAGGIORE E FACILMENTE RICONOSCIBILE

se ci sono problemi e si vuole tornare indietro anche più tardi, eseguire il seguente
rollback_posts

Codice: Seleziona tutto

<?php
    set_time_limit(0);

    define('IN_PHPBB', true);
    $phpbb_root_path = './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.'.$phpEx);
    
    // Apre sessione
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();


    $number = 0;
    $offset = 1000000;

    // Scorre tabella con salvataggio numerazione
    $sql = "SELECT post_new_id, post_old_id FROM verifica_posts ORDER BY post_new_id ";
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
       // Ritorna al numero prima della rinumerazione + 1000000, per evitare sovrapposizioni
       if ($row['post_old_id']>0)
       {
          $number = $row['post_old_id'] + $offset ;
          
          $sql = "UPDATE " . POSTS_TABLE . " SET post_id = " . $number . "   
          WHERE post_id = " . $row['post_new_id'] ;
          $db->sql_query($sql);
          
          $sql = "UPDATE " . ATTACHMENTS_TABLE . " SET post_msg_id = " . $number . "  
          WHERE post_msg_id = " . $row['post_new_id'] ;
          $db->sql_query($sql);
          
          $sql = "UPDATE " . WARNINGS_TABLE . " SET post_id = " . $number . "  
          WHERE post_id = " . $row['post_new_id'] ;
          $db->sql_query($sql);
          
          $sql = "UPDATE " . NOTIFICATIONS_TABLE . " SET item_id = " . $number . "  
          WHERE notification_type_id IN (3, 4, 6, 8, 9, 10, 16) AND item_id = " . $row['post_new_id'] ;
          $db->sql_query($sql);


          echo '<br />' . "\n POST_ID = " . $row['post_new_id'] . " ==> <strong>" . $number . "</strong>";
          
          flush();
       }
    }
    $db->sql_freeresult($result);
    
    echo "<br>Topics rinumerati + " . $offset . " <br>";
    
    // Riporta al numero originale
    $sql = "UPDATE " . POSTS_TABLE . " SET post_id = post_id - " . $offset . " WHERE post_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    $sql = "UPDATE " . ATTACHMENTS_TABLE . " SET post_msg_id = post_msg_id - " . $offset . " WHERE post_msg_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    $sql = "UPDATE " . WARNINGS_TABLE . " SET post_id = post_id - " . $offset . " WHERE post_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    
    $sql = "UPDATE " . NOTIFICATIONS_TABLE . " SET item_id = item_id - " . $offset . " WHERE notification_type_id IN (3, 4, 6, 8, 9, 10, 16) and item_id > " . $offset ;
    $db->sql_query($sql);
    flush();
    

    echo "<br>Topics risistemati<br>";

    // Finito
    $db->sql_close();
    ?>
"La nostra vera nazionalità è l'umanità." H.G.Wells
--------------------------
"...c'è una certa drammatica ironia in tutto questo, una sincronia che sconfina con la predestinazione, si potrebbe dire..." R.Giles

Avatar utente
TheGib
Ammiraglio di Flotta
Ammiraglio di Flotta
Messaggi: 7931
Iscritto il: 16 gen 2005, 10:21
Località: Livorno - Italy

Fase 2 - BBcode & formattazioni

Messaggio da TheGib » 28 ago 2015, 8:12

Questa fase della cura è irreversibile, nel senso che se ci sono problemi l'unico modo per tornare indietro è ripristinare una copia di salvataggio della tabella phpbb_posts

Devono esistere, oltre ai classici, i BBcode:

Codice: Seleziona tutto

[center]{TEXT}[/center] ==> <div style="text-align: center;">{TEXT}</div>
[right]{TEXT}[/right] ==> <div style="text-align: right;">{TEXT}</div>
[left]{TEXT}[/left] ==> <div style="text-align: left;">{TEXT}</div>  
[hr]{TEXT}[/hr] ==> {TEXT}<hr>
[strike]{TEXT}[/strike] ==> <s>{TEXT}</s>
Dove non diversamente specificato, il codice seguente è SQL; se specificato subito prima del codice, allora è php :wink:

Gli SQL sono vampirizzati, come struttura, da altri proposti per cure analoghe (ad esempio qui), però il concetto base è: verificarli uno per uno sulla propria installazione.

Le versioni e le personalizzazioni di snitz sono tali e tante che alcune sintassi hanno piccole variazioni; ad esempio per le citazioni si può trovare sia "blockquote" sia "BLOCKQUOTE", così come a volte nei codici html ci sono le virgolette e a volte no.

Le mie scelte si sono basate sulla situazione del forum corrente, facendo n-mila prove in locale prima di passare all'effettivo.
Ad esempio non ho convertito completamente le emoticons e per niente i font alternativi; nel primo caso perché ne abbiamo un sacco personalizzate, e voglio rifarlo -se lo farò- in un secondo momento; nel secondo caso perché l'uso dei font alternativi era talmente raro che non è valsa la pena "annullarli"; chi vuole risistemerà i propri.

Gli SQL sono in ordine dai più complessi ai più semplici, per filtrare le formattazioni complesse in modo giusto.

La procedura php serve, alla fine, ad aggiornare la tabella phpbb_posts affinché siano correttamente interpretati i BBcode sulla base dei campi; in pratica genera, per tutti i codici che non sono testo semplice, una forma di criptazione che può essere diversa per ogni messaggio, in base ai due campi bbcode_uid e bbcode_bitmap.
La procedura è stata a sua volta vampirizzata (e moooolto sistemata...) da una più generica, adjust_bbcodes.php, che ho trovato qui: http://startrekguide.com/community/view ... hp?p=47648 (un nome, una garanzia... ::p: )
E' la parte più lunga della procedura, dopo averla lanciata ci si mette comodi e si attende senza fretta.

Istruzioni generali
  • Lanciare un gruppo per volta e verificare ogni volta; se si fa in più sessioni, usare comunque gli SQL [INIZIO] e [FINE] prima e dopo ogni gruppo; servono a gestire agilmente il carattere doppio apice nelle ricerche.
  • Alla fine eseguire il php, mettendo nella variabile $primonuovo il numero del primo post inserito direttamente, cioè il primo non convertito da snitz, se si preferisce che i nuovi post non siano rigenerati; io ho lasciato per esso il nome adjust_posts.php
Per ogni SQL, se il titolo è rosso il codice è sicuramente da personalizzare caso per caso (cioè forum per forum); altrimenti può anche darsi che vada bene. Se si preferisce NON far girare gli SQL (e il php finale) su eventuali post inseriti dopo la conversione snitz/phpBB, aggiungere come clausola "WHERE" di TUTTE le istruzioni SQL la condizione:

Codice: Seleziona tutto

post_id < $primonuovo
dove $primonuovo è il numero del primo post inserito dopo la conversione, da inserire esplicitamente negli SQL e come valore della variabile in php.

INIZIO, serve a gestire facilmente i doppi apici onnipresenti, trattandoli come asterisco; alla fine girerà il suo opposto

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "*", "a1b2c3d4e6f8g0")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, """", "*")) ;
FIRME PARTICOLARI

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<hr noshade size=*1*>
<center>
<br>
<img src=*http://web.tiscali.it/dracon/Varie/ghepardo.gif * border=0><br>
<a href=*http://web.tiscali.it/dracon*><b><font color=*#ff0000*><font size=*5*>La mia Afrika</font></b></font></a><br>
<b><font color=*#ff0000*><font size=*3*><font face=*comic sans ms*>Usicheze na simba ukamtia mkono kinywani</font></b></font></a><br>
</center>", "[center][img]http://web.tiscali.it/dracon/Varie/ghepardo.gif[/img][/center][center][url=http://web.tiscali.it/dracon][color=#FF0000][size=165]La mia Afrika[/size][/color][/url][/center][center][color=#FF0000][size=100]Usicheze na simba ukamtia mkono kinywani[/size][/color][/center]")) WHERE post_text LIKE "%frika%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<br>
<a href=*http://web.tiscali.it/dracon*><b><font color=*#ff0000*><font size=*5*>La mia Afrika</font></b></font></a><br>
<b><font color=*#ff0000*><font size=*3*><font face=*comic sans ms*>Usicheze na simba ukamtia mkono kinywani</font></b></font></a><br>
</center>", "[center][url=http://web.tiscali.it/dracon][color=#FF0000][size=165]La mia Afrika[/size][/color][/url][/center][center][color=#FF0000][size=100]Usicheze na simba ukamtia mkono kinywani[/size][/color][/center]")) WHERE post_text LIKE "%frika%" ;
QUOTE

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<blockquote id=*quote*><font size=*1* face=*Verdana, Arial, Helvetica* id=*quote*>quote:<hr height=*1* noshade id=*quote*>", "[quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<hr height=*1* noshade id=*quote*></font id=*quote*></blockquote id=*quote*>", "[/quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<BLOCKQUOTE id=*quote*><font size=*1* face=*Verdana, Arial, Helvetica* id=*quote*>quote:<hr height=*1* noshade id=*quote*>", "[quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<hr height=*1* noshade id=*quote*></font id=*quote*></BLOCKQUOTE id=*quote*>", "[/quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<blockquote id=quote><font size=1 face=*Verdana, Arial, Helvetica* id=quote>quote:<hr height=1 noshade id=quote>", "[quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<hr height=1 noshade id=quote></font id=quote></blockquote id=quote>", "[/quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<BLOCKQUOTE id=quote><font size=1 face=*Verdana, Arial, Helvetica* id=quote>quote:<hr height=1 noshade id=quote>", "[quote]")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<hr height=1 noshade id=quote></font id=quote></BLOCKQUOTE id=quote>", "[/quote]")) ;
URL tipo 1

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "[url=*", "[url=")) WHERE post_text LIKE "%[url=*%";
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "*]", "]")) WHERE post_text LIKE "%*]%" ;
URL INTERNI DEL VECCHIO FORUM

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "http://www.startrekitalia.com/public/topic.asp?ARCHIVE=&TOPIC_ID=", "http://startrekitalia.net/viewtopic.php?t=")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "http://www.startrekitalia.com/publicnew/topic.asp?ARCHIVE=&TOPIC_ID=", "http://startrekitalia.net/viewtopic.php?t=")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "http://www.startrekitalia.com/public/topic.asp?&TOPIC_ID=", "http://startrekitalia.net/viewtopic.php?t=")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "http://www.startrekitalia.com/publicnew/topic.asp?&TOPIC_ID=", "http://startrekitalia.net/viewtopic.php?t=")) ;
LINEA

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<hr align=*center* width=*95%* noshade color=*black*>", "[hr][/hr]")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<hr noshade size=*1*>", "[hr][/hr]")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<hr align=*center* width=*30%* noshade color=*teal*>", "[hr][/hr]")) ;
COLORI tipo 1

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*black*>", "[color=#000000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*black*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*red*>", "[color=#FF0000]")) ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*red*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*yellow*>", "[color=#FFFF00]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*yellow*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*green*>", "[color=#008000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*green*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*orange*>", "[color=#FFBF00]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*orange*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*purple*>", "[color=#8040BF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*purple*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*blue*>", "[color=#0000FF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*blue*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*beige*>", "[color=#FFFFFF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*beige*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*brown*>", "[color=#800000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*brown*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*teal*>", "[color=#008080]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*teal*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*navy*>", "[color=#0040BF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*navy*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*maroon*>", "[color=#400000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*maroon*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*limegreen*>", "[color=#80FF80]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*limegreen*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*violet*>", "[color=#BF0080]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*violet*>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=*pink*>", "[color=#FF40FF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=*pink*>", "[/color]")) WHERE post_text LIKE "%font%" ;
COLORI tipo 2

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=black>", "[color=#000000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=black>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=red>", "[color=#FF0000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=red>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=yellow>", "[color=#FFFF00]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=yellow>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=green>", "[color=#008000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=green>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=orange>", "[color=#FFBF00]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=orange>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=purple>", "[color=#8040BF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=purple>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=blue>", "[color=#0000FF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=blue>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=beige>", "[color=#FFFFFF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=beige>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=brown>", "[color=#800000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=brown>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=teal>", "[color=#008080]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=teal>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=navy>", "[color=#0040BF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=navy>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=maroon>", "[color=#400000]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=maroon>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=limegreen>", "[color=#80FF80]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=limegreen>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=violet>", "[color=#BF0080]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=violet>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=pink>", "[color=#FF40FF]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</font id=pink>", "[/color]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#9933ff>", "[color=#9933FF]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#9933FF>", "[color=#9933FF]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#00FFFF>", "[color=#00FFFF]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#00ffff>", "[color=#00FFFF]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#FFFF00>", "[color=#FFFF00]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<font color=#ffff00>", "[color=#FFFF00]")) WHERE post_text LIKE "%font color=#%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</color>", "[/color]")) WHERE post_text LIKE "%font color=#%" ;
DIMENSIONI tipo 1

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*1*>", "[size=80]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size1*>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*2*>", "[size=90]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size2*>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*3*>", "[size=100]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size3*>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*4*>", "[size=130]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size4*>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*5*>", "[size=165]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size5*>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=*6*>", "[size=200]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=*size6*>", "[/size]")) WHERE post_text LIKE "%font%" ;
DIMENSIONI tipo 2

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=1>", "[size=80]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size1>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=2>", "[size=90]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size2>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=3>", "[size=100]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size3>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=4>", "[size=130]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size4>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=5>", "[size=165]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size5>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<font size=6>", "[size=200]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</font id=size6>", "[/size]")) WHERE post_text LIKE "%font%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h1>", "[size=80]")) WHERE post_text LIKE "%<h1>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h1>", "[/size]")) WHERE post_text LIKE "%</h1>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h2>", "[size=90]")) WHERE post_text LIKE "%<h2>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h2>", "[/size]")) WHERE post_text LIKE "%</h2>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h3>", "[size=100]")) WHERE post_text LIKE "%<h3>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h3>", "[/size]")) WHERE post_text LIKE "%</h3&gt%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h4>", "[size=130]")) WHERE post_text LIKE "%<h4>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h4>", "[/size]")) WHERE post_text LIKE "%</h4>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h5>", "[size=165]")) WHERE post_text LIKE "%<h5>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h5>", "[/size]")) WHERE post_text LIKE "%</h5>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<h6>", "[size=200]")) WHERE post_text LIKE "%<h6>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</h6>", "[/size]")) WHERE post_text LIKE "%</h6>%" ;
IMMAGINI

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[img]*", "[img]")) WHERE POST_TEXT like "%[img]*%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "*[/img]", "[/img]")) WHERE POST_TEXT like "%*[/img]%" ;
FORMATTAZIONE tipo 1

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</p>", "[/center]")) WHERE POST_TEXT like "%<p align=*center*>%" or POST_TEXT like "%<p align=center>%";
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</p>", "[/right]")) WHERE POST_TEXT like "%<p align=*right*>%" or POST_TEXT like "%<p align=right>%";
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</p>", "[/left]")) WHERE POST_TEXT like "%<p align=*left*>%" or POST_TEXT like "%<p align=left>%";
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=*center*>", "[center]")) WHERE POST_TEXT like "%<p align=*center*>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=*right*>", "[right]")) WHERE POST_TEXT like "%<p align=*right*>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=*left*>", "[left]")) WHERE POST_TEXT like "%<p align=*left*>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=center>", "[center]")) WHERE POST_TEXT like "%<p align=center>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=right>", "[right]")) WHERE POST_TEXT like "%<p align=right>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<p align=left>", "[left]")) WHERE POST_TEXT like "%<p align=left>%" ;
FORMATTAZIONE tipo 2

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<b>", "[b]")) WHERE POST_TEXT like "%<b>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</b>", "[/b]")) WHERE POST_TEXT like "%</b>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<i>", "[i]")) WHERE POST_TEXT like "%<i>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</i>", "[/i]")) WHERE POST_TEXT like "%</i>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<u>", "[u]")) WHERE POST_TEXT like "%<u>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</u>", "[/u]")) WHERE POST_TEXT like "%</u>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<center>", "[center]")) WHERE POST_TEXT like "%<center>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</center>", "[/center]")) WHERE POST_TEXT like "%</center>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<br />", " ")) WHERE POST_TEXT like "%<br />%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<br/>", " ")) WHERE POST_TEXT like "%<br/>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<br>", " ")) WHERE POST_TEXT like "%<br>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "<s>", "[strike]")) WHERE POST_TEXT like "%<s>%" ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "</s>", "[/strike]")) WHERE POST_TEXT like "%</s>%" ;
EMOTICONS

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:hat]", " <!-- s:smokin: --><img src=*{SMILIES_PATH}/tow/pimp.gif* alt=*:smokin:* title=*fuma* /><!-- s:smokin: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:smokin]", " <!-- s:smokin: --><img src=*{SMILIES_PATH}/tow/pimp.gif* alt=*:smokin:* title=*fuma* /><!-- s:smokin: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:bandit]", " <!-- s:bandit: --><img src=*{SMILIES_PATH}/sito/bandit.gif* alt=*:bandit:* title=*bandito* /><!-- s:bandit: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:D]", " <!-- s:grin: --><img src=*{SMILIES_PATH}/icon_biggrin.gif* alt=*:grin:* title=*Very Happy* /><!-- s:grin: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-D]", " <!-- s:grin: --><img src=*{SMILIES_PATH}/icon_biggrin.gif* alt=*:grin:* title=*Very Happy* /><!-- s:grin: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:)]", " <!-- s:smile: --><img src=*{SMILIES_PATH}/icon_smile.gif* alt=*:smile:* title=*Smile* /><!-- s:smile: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-)]", " <!-- s:smile: --><img src=*{SMILIES_PATH}/icon_smile.gif* alt=*:smile:* title=*Smile* /><!-- s:smile: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[;)]", " <!-- s:wink: --><img src=*{SMILIES_PATH}/icon_wink.gif* alt=*:wink:* title=*Wink* /><!-- s:wink: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[;-)]", " <!-- s:wink: --><img src=*{SMILIES_PATH}/icon_wink.gif* alt=*:wink:* title=*Wink* /><!-- s:wink: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:mucca]", " <!-- s:mucca: --><img src=*{SMILIES_PATH}/tow/cow.gif* alt=*:mucca:* title=*mucca* /><!-- s:mucca: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[8)]", " <!-- s:cool: --><img src=*{SMILIES_PATH}/icon_cool.gif* alt=*:cool:* title=*Cool* /><!-- s:cool: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[B)]", " <!-- s:cool: --><img src=*{SMILIES_PATH}/icon_cool.gif* alt=*:cool:* title=*Cool* /><!-- s:cool: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[8-)]", " <!-- s:cool: --><img src=*{SMILIES_PATH}/icon_cool.gif* alt=*:cool:* title=*Cool* /><!-- s:cool: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[8D]", " <!-- s:geek: --><img src=*{SMILIES_PATH}/icon_geek.gif* alt=*:geek:* title=*geek* /><!-- s:geek: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:(]", " <!-- s:sad: --><img src=*{SMILIES_PATH}/icon_sad.gif* alt=*:sad:* title=*Sad* /><!-- s:sad: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-(]", " <!-- s:sad: --><img src=*{SMILIES_PATH}/icon_sad.gif* alt=*:sad:* title=*Sad* /><!-- s:sad: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:o]", " <!-- s:surprised: --><img src=*{SMILIES_PATH}/icon_surprised.gif* alt=*:surprised:* title=*Surprised* /><!-- s:surprised: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-o]", " <!-- s:surprised: --><img src=*{SMILIES_PATH}/icon_surprised.gif* alt=*:surprised:* title=*Surprised* /><!-- s:surprised: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:O]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-O]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:0]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-0]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:P]", " <!-- s:razz: --><img src=*{SMILIES_PATH}/icon_razz.gif* alt=*:razz:* title=*Razz* /><!-- s:razz: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:p]", " <!-- s:razz: --><img src=*{SMILIES_PATH}/icon_razz.gif* alt=*:razz:* title=*Razz* /><!-- s:razz: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-P]", " <!-- s:razz: --><img src=*{SMILIES_PATH}/icon_razz.gif* alt=*:razz:* title=*Razz* /><!-- s:razz: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:b]", " <!-- s::p: --><img src=*{SMILIES_PATH}/tow/tongue.gif* alt=*::p:* title=*lingua* /><!-- s::p: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-b]", " <!-- s::p: --><img src=*{SMILIES_PATH}/tow/tongue.gif* alt=*::p:* title=*lingua* /><!-- s::p: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:eek]", " <!-- s:eek: --><img src=*{SMILIES_PATH}/tow/eek.gif* alt=*:eek:* title=*eek* /><!-- s:eek: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:lol]", " <!-- s:lol: --><img src=*{SMILIES_PATH}/icon_lol.gif* alt=*:lol:* title=*Laughing* /><!-- s:lol: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:lol1]", " <!-- s:lol1: --><img src=*{SMILIES_PATH}/Altri/lol1.gif* alt=*:lol1:* title=*lol1* /><!-- s:lol1: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:lol2]", " <!-- s:lol2: --><img src=*{SMILIES_PATH}/Altri/lol2.gif* alt=*:lol2:* title=*lol2* /><!-- s:lol2: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:lol3]", " <!-- s:lol3: --><img src=*{SMILIES_PATH}/Altri/lol3.gif* alt=*:lol3:* title=*lol3* /><!-- s:lol3: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:mago]", " <!-- s:mago: --><img src=*{SMILIES_PATH}/Altri/mago.gif* alt=*:mago:* title=*mago* /><!-- s:mago: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:asd]", " <!-- s:mrgreen: --><img src=*{SMILIES_PATH}/icon_mrgreen.gif* alt=*:mrgreen:* title=*Mr. Green* /><!-- s:mrgreen: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:rolleyes]", " <!-- s:rolleyes: --><img src=*{SMILIES_PATH}/tow/eyes.gif* alt=*:rolleyes:* title=*emmm* /><!-- s:rolleyes: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:smokin1]", " <!-- s:smokin1: --><img src=*{SMILIES_PATH}/tow/smokin.gif* alt=*:smokin1:* title=*fuma 1* /><!-- s:smokin1: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:smokin2]", " <!-- s:smokin2: --><img src=*{SMILIES_PATH}/tow/smokin2.gif* alt=*:smokin2:* title=*fuma 2* /><!-- s:smokin2: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:evil]", " <!-- s:evil: --><img src=*{SMILIES_PATH}/tow/devil.gif* alt=*:evil:* title=*Evil* /><!-- s:evil: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[}:)]", " <!-- s:twisted: --><img src="{SMILIES_PATH}/icon_twisted.gif" alt=":twisted:" title="Twisted Evil" /><!-- s:twisted: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:evil2]", " <!-- s:evil2: --><img src=*{SMILIES_PATH}/tow/devil2.gif* alt=*:evil2:* title=*evil2* /><!-- s:evil2: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:bravo]", " <!-- s:bravo: --><img src=*{SMILIES_PATH}/sito/bravo.gif* alt=*:bravo:* title=*bravo* /><!-- s:bravo: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:-|]", " <!-- s:indifferente: --><img src=*{SMILIES_PATH}/tow/indifferent.gif* alt=*:indifferente:* title=*indifferente* /><!-- s:indifferente: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:|]", " <!-- s:indifferente: --><img src=*{SMILIES_PATH}/tow/indifferent.gif* alt=*:indifferente:* title=*indifferente* /><!-- s:indifferente: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:/]", " <!-- s:vabbe: --><img src=*{SMILIES_PATH}/tow/ohwell.gif* alt=*:vabbe:* title=*Vabbè* /><!-- s:vabbe: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[:\]", " <!-- s:vabbe: --><img src=*{SMILIES_PATH}/tow/ohwell.gif* alt=*:vabbe:* title=*Vabbè* /><!-- s:vabbe: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[xx(]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[XX(]", " <!-- s::O: --><img src=*{SMILIES_PATH}/tow/sick.gif* alt=*::O:* title=*a bocca aperta* /><!-- s::O: --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[>:]", " <!-- s:evil --><img src=*{SMILIES_PATH}/tow/devil.gif* alt=*:evil* title=*evil* /><!-- s:evil --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[V]", " <!-- s:? --><img src=*{SMILIES_PATH}/icon_confused.gif* alt=*:?* title=*Confused* /><!-- s:? --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[v]", " <!-- s:? --><img src=*{SMILIES_PATH}/icon_confused.gif* alt=*:?* title=*Confused* /><!-- s:? --> ")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "[^]", " <!-- s:cool: --><img src=*{SMILIES_PATH}/icon_cool.gif* alt=*:cool:* title=*Cool* /><!-- s:cool: --> ")) ;
URL tipo 2

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "*>", "]")) WHERE post_text LIKE "%<a href=*%" AND post_text NOT LIKE "%!-- m --%";
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "</a>", "[/url]")) WHERE post_text LIKE "%</a>%" AND post_text NOT LIKE "%!-- m --%";
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "* border=0>", "[/img]")) WHERE post_text LIKE "%<img SRC=*%" or post_text like "%<img src=*%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "*>", "[/img]")) WHERE post_text LIKE "%<img SRC=*%" or post_text like "%<img src=*%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<a href=*", "[url=")) WHERE post_text LIKE "%<a href=*%" AND post_text NOT LIKE "%!-- m --%";
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<img SRC=*", "[img]")) WHERE post_text LIKE "%<img SRC=*%" ;
UPDATE phpbb_posts SET post_text=(REPLACE(post_text, "<img src=*", "[img]")) WHERE post_text LIKE "%<img src=*%" ;

FINE, ripristina il giusto valore per asterisco e doppio apice

Codice: Seleziona tutto

UPDATE phpbb_posts set post_text=(REPLACE(post_text, "*", """")) ;
UPDATE phpbb_posts set post_text=(REPLACE(post_text, "a1b2c3d4e6f8g0", "*")) ;
Di seguito il programma php da eseguire dopo tutti i suddetti SQL:
adjust_posts.php

Codice: Seleziona tutto

<?php
    
    set_time_limit(0);

    define('IN_PHPBB', true);
    $phpbb_root_path = './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.'.$phpEx);
    include($phpbb_root_path . 'includes/message_parser.' . $phpEx);

    // Apre sessione
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    // Predispone i parametri
    $primonuovo = 99999999; //mettere il numero del primo post dopo la conversione, se non si vogliono rielaborare i nuovi post
    $message_parser = new parse_message();
    $message_parser->mode = 'post';
    $message_parser->bbcode_init();

    // Aggiorna posts
    $sql = "SELECT post_id, post_text, bbcode_uid, enable_bbcode, enable_smilies, enable_sig
       FROM " . POSTS_TABLE . " WHERE post_id < " . $primonuovo . " AND post_text LIKE '%[%' " ; 
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
       // Se c'è qualcosa da fare
       if ($row['enable_bbcode'])
       {
          
          // Predispone
          $uid = $row['bbcode_uid'];
          $text = $row['post_text'];
          $bitfield = $row['bbcode_bitfield'];
          
                    
          decode_message($text, $uid);
          $text = str_replace("&#58;",":", $text);
          $text = str_replace("&#46;",".", $text);
          
          // Riassembla
          $uid = $bitfield = $options = '';
          $allow_bbcode = $allow_urls = $allow_smilies = true;
          generate_text_for_storage($text, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);   
          $update_sql = "UPDATE " . POSTS_TABLE . " SET `post_text` = '" . $db->sql_escape($text) . "' 
          , `bbcode_uid` = '" . $uid . "' , `bbcode_bitfield` = '" . $bitfield . "' 
          WHERE `post_id` = " . $row["post_id"] . " LIMIT 1 ;";
          $db->sql_query($update_sql);
          // Fine riassembla
          
          echo '<br />' . "\n <strong>POST_ID = " . $row['post_id'] . "</strong>";
          
          flush();
       }
       else
       {
          $sql = 'UPDATE ' . POSTS_TABLE . " SET bbcode_bitfield = ''
             WHERE post_id = " . $row['post_id'];
          $db->sql_query($sql);
       }
    }
    $db->sql_freeresult($result);

    echo "<br>Finished with topics...<br>";

    // Finito
    $db->sql_close();
    ?>
"La nostra vera nazionalità è l'umanità." H.G.Wells
--------------------------
"...c'è una certa drammatica ironia in tutto questo, una sincronia che sconfina con la predestinazione, si potrebbe dire..." R.Giles

Avatar utente
TheGib
Ammiraglio di Flotta
Ammiraglio di Flotta
Messaggi: 7931
Iscritto il: 16 gen 2005, 10:21
Località: Livorno - Italy

Fase 3 - Allineamento dati

Messaggio da TheGib » 28 ago 2015, 8:14

Riportare in effettivo le seguenti tabelle rettificate o create:

Codice: Seleziona tutto

phpbb_posts
phpbb_warnings
phpbb_attachments
phpbb_notifications
verifica_posts
Se non si è eseguita la Fase 1, è sufficiente riportare la sola tabella phpbb_posts
Io ho (in ambiente effettivo):
  • Rinominato la prima in phpbb_posts_old (vedi codice SQL inserito in Fase 1)
  • Cancellato le ulteriori 3 con iniziale phpbb_
  • La tabella verifica_posts non è tra quelle standard di phpBB, quindi prima della cura non esiste in ambiente effettivo
  • A questo punto caricato in remoto le tabelle sistemate/create in locale di cui alla lista precedente
Operazioni finali:
  • Risincronizzare tutti i sottoforum, quindi forum e poi gruppi, con una ricerca ad albero (attenzione a forum particolari tipo "forum admin" e "forum moderatori"); serve solo se eseguita la Fase 1.
  • Se utilizzato, ricreare indice di ricerca; serve per entrambe le Fasi.
Dopo la cura sono presenti due nuove tabelle:
  • phpbb_posts_old
  • verifica_posts
La prima è la copia dell'archivio messaggi prima della cura, pesantissima; la seconda è la tabella di correlazione vecchio-nuovo numero messaggio, leggerissima.
Sono entrambe inutili al forum, ma ci sono per le opportune verifiche prima di dire "va tutto bene" :;): ; consiglio comunque, al minimo, due backup da sistema: il primo "subito prima", il secondo "subito dopo" la cura.

La prima tabella, previo salvataggio singolo di essa stessa, la toglierei dopo un tot di giorni, durante i quali si verifica che non ci siano problemi.
La seconda tabella può tornare sempre utile, ad esempio per correggere eventuali link contenenti anche il numero del messaggio, che la cura non ha potuto sanare.

Nota Bene (repetita iuvant):
Qualcosa può andare storto, qualche codice può non essere riportato completo, qualche casistica in altre situazioni può avere risvolti differenti, ci può essere una maledizione di Yog-Sothoth.
L'unica assicurazione è SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI, SALVATAGGI...
"La nostra vera nazionalità è l'umanità." H.G.Wells
--------------------------
"...c'è una certa drammatica ironia in tutto questo, una sincronia che sconfina con la predestinazione, si potrebbe dire..." R.Giles

Rispondi

Torna a “StarTrekItalia.net”

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti