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

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?