Pagina 1 di 1

Query sql sostituire slash nei posts

Inviato: 12/02/2012, 12:16
da maxweb
Ciao a tutti, so che non è un argomento inerente il supporto phpbb, premetto che ho fatto numerose ricerche su google e nessuna soluzione proposta è riuscita a risolvere il mio problema, ma vorrei condividere questa problematica sperando che qualcuno di voi possa aiutarmi.
In pratica devo sostituire in tutti i post del forum la stringa

[/url] con

[/url][/hide]

Ho provato con le seguenti query ma senza risultato:

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[/url]","[/url][/hide]");
e pure con

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[\/url]","[\/url][\/hide]");
e pure con i codici ascii

Codice: Seleziona tutto

UPDATE phpbb_posts SET post_text = REPLACE(post_text,"[/url]","[/url][/hide]");

Dove sbaglio? Esiste eventualmente un modo diverso da quello che ho già provato io?

Re: Query sql sostituire slash nei posts

Inviato: 12/02/2012, 14:45
da Micogian
A parte il fatto che non capisco perchè tu debba inserire il tag di chiusura [/hide] senza mettere quello di apertura [hide], il motivo perchè non funzionano le tue query è semplice, il fatto è che la stringa [/url] non la trova perchè ai bbcode viene associato il bbcode_uid.
In sostanza, nel database viene memorizzata una stringa di questo tipo: [/url:23k7fukq].
Ogni post ha un diverso bbcode_uid.

Re: Query sql sostituire slash nei posts

Inviato: 12/02/2012, 20:19
da maxweb
quindi con questo vuoi dirmi che non potrò mai effettuare questa modifica?

p.s.: il tag [hide] l'ho già inserito all'inizio dell'url che dovrei nascondere

Re: Query sql sostituire slash nei posts

Inviato: 13/02/2012, 11:06
da Micogian
maxweb ha scritto:quindi con questo vuoi dirmi che non potrò mai effettuare questa modifica?

p.s.: il tag [hide] l'ho già inserito all'inizio dell'url che dovrei nascondere
Non ho detto che non si può fare, ho detto che non è quello il modo.
Per poterlo fare bisogna conoscere il "bbcode_uid" di ciascun Post, quindi va fatta una interrogazione per recuperare questo dato e poi puoi fare la modifica dell'url che poteva essere fatta in un colpo solo.
Ad esempio il seguente codice è una query che controlla i posts del Forum indicato nell'url, controlla la presenza del bbcode [url] nel testo ed estrae il bbcode_uid. Con il bbcode_uid puoi usare il comando str_replace().

Codice: Seleziona tutto

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

// Initial var setup
$forum_id    = request_var('f', 0);

$user->setup();

$sql = "SELECT post_id, forum_id, post_text, bbcode_uid
    FROM " . POSTS_TABLE . "
    WHERE post_text like '%[url:%'
    AND forum_id = " . $forum_id . "
    ORDER BY post_id LIMIT 10";

$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$text_cor = $row['post_text'];
$bbcode_uid_cor = $row['bbcode_uid'] ;
// aggiunge il tag [hide] prima del tag [url:
$text_new = str_replace("[url:", "[hide][url:", $text_cor) ;
// aggiunge il tag [/hide] dopo il tag /[url:
$text_new = str_replace("[/url:" . $bbcode_uid_cor . "]","[/url:" . $bbcode_uid_cor . "][/hide]", $text_new );
echo $text_cor . "<br />";   // testo originale
echo $text_new . "<br />";  // testo modificato
echo "----------------------------------------------------------------------<br />";
}
?>
Prova a creare un file "prova_url.php" e poi lancia l'url prova_url.php?f=XX (dove XX è il Forum che vuoi controllare.
L'esempio si limita al cotrollo di 10 posts.

ATTENZIONE: l'esempio si limita a visualizzare il testo precedente e quello modificato, non esegue la modifica, ma a questo punto ci sono tutti i dati per poterla fare con UPLOAD

Re: Query sql sostituire slash nei posts

Inviato: 13/02/2012, 11:13
da maxweb
ti ringrazio infinitamente per l'interesse mostrato ma considerato il tempo che mi farebbe perdere sperimentare per poi riuscire a modificare tutto, ci siamo messi al lavoro con gli altri admin e stiamo modificando manualmente i post.

Grazie lo stesso :D

Re: Query sql sostituire slash nei posts

Inviato: 13/02/2012, 11:16
da Micogian
La query postata ti permette per lo meno di conoscere quali sono i topics/posts che contengono l'url e con una piccola modifica si potrebbe creare l'elenco (linkabile) dei posts che contengono l'url da modificare.

Con il PHP si può fare tutto.

Re: Query sql sostituire slash nei posts

Inviato: 13/02/2012, 11:56
da maxweb
infatti, immaginavo si potesse fare, ma alcune volte le mie "conoscenze" mi impediscono di andare oltre per evitare magari di fare qualche pasticcio

Re: Query sql sostituire slash nei posts

Inviato: 14/02/2012, 16:37
da Barrnet
Al posto di usare il bbcode hide, potresti direttamente modificare il bbcode alla fonte per includere il codice che nasconde il bbcode o installare una mod di questo genere.

Re: Query sql sostituire slash nei posts

Inviato: 14/02/2012, 17:07
da maxweb
ci avevo pensato ma non sono riuscito a trovare una mod simile, sapresti, gentilmente, indicarmene una?