L'assegnazione della variabile $forum_list devi metterla prima delle query, altrimenti non hai nessun risultato,
in pratica prima delle query ma dopo la parte di collegamento a phpbb che sono le prime righe.
Adesso non ho il codice sottomano ma puoi metterla subito dopo le variabili che assegnano il numero dei topics da elaborare e quelli da visualizzare, subito dopo la variabile $list_rec, ad esempio.
Questa è la parte che deve essere prima delle query, altrimenti che valore elabora la query se la metti dopo?:
Codice: Seleziona tutto
if ($user->data['user_id'] == '1' )
{
$forum_list = "1,2,3,4";
}else{
$forum_list = "1,2,3,4,5,6,7,8";
}
Si potrebbe anche aumentare il numero dei records da elaborare, in pratica il valore della variabile $list_rec che è il numero dei records da elaborare, tanto poi sono sempre 10 a entrare nelle liste, ma anche in questo caso non saresti sicuro che ci siano 10 topics visibili tra quelli elaborati. Se tu metti 50 e tra gli ultimi 50 topics non ci sono 10 topics "visibili" avresti sempre lo stesso problema.
Anche il "diverso da...." è più complicato perchè necessita di creare due query diverse, una per gli iscritti e una per i visitatori.
Ad esempio
Codice: Seleziona tutto
$sql1 = "SELECT tt.topic_id, tt.forum_id, tt.topic_title, tt.topic_time, tt.topic_moved_id, tt.topic_first_poster_name,
ft.forum_id, ft.forum_name
FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
WHERE tt.forum_id <> '1'
AND tt.forum_id <> '2'
...............e tutti gli altri forum_id da escludere
AND tt.topic_type = 0
AND tt.topic_moved_id = 0
Che ci vuole a creare una lista dei forums ?
Un'altra strada sarebbe sempre quella di fare due query diverse:
Codice: Seleziona tutto
if ($user->data['user_id'] == '1' )
{
// la query per i visitatori
$sql1 = "SELECT tt.topic_id, tt.forum_id, tt.topic_title, tt.topic_time, tt.topic_moved_id, tt.topic_first_poster_name,
ft.forum_id, ft.forum_name
FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
WHERE tt.forum_id IN(1,2,3,4,5)
AND tt.topic_type = 0
AND tt.topic_moved_id = 0
AND tt.forum_id = ft.forum_id
ORDER BY tt.topic_time DESC LIMIT 0,$list_rec";
}else{
//la query attuale
$sql1 = "SELECT tt.topic_id, tt.forum_id, tt.topic_title, tt.topic_time, tt.topic_moved_id, tt.topic_first_poster_name,
ft.forum_id, ft.forum_name
FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
WHERE tt.topic_type = 0
AND tt.topic_moved_id = 0
AND tt.forum_id = ft.forum_id
ORDER BY tt.topic_time DESC LIMIT 0,$list_rec";
}
Così devi fare solo l'elenco dei forums per i visitatori.
A seguire il resto del codice (per ogni lista)
Resto comunque dell'idea che la soluzione di creare due variabili con l'elenco dei forum_id sia la più semplice.
Se poi i forum visibili e quelli riservati sono in Categorie separate si potrebbe usare il parent_id al posto del forum_id-
Il parent_id è il numero ID della Categoria. Ovviamente dipende da come è concepito il forum.