Allora, in pratica devo mostrare gli ultimi post nella index del forum e fin qui ci sono riuscito, l'unico problema che mi sorgeva è che visto che ci sono alcune sezioni nascoste, lo script non controllava se l'utente poteva accederci, così volevo controllare i permessi dell'utente dalla sessione.
Alla fine, visto che le sezioni hidden sono solo quelle staff, bloccherò il problema alla fonte, prenderò dal DB solo i post nelle sezioni non admin.
Capire il problema dell'errore era più un cercare di capire, anche perchè dalla wiki ufficiale sembra debba funzionare senza problemi quello script..
[Errore] Dichiarazione classe phpbb\class_loader
- Mask
- Nuovo Utente
- Messaggi: 9
- Iscritto il: 09/11/2019, 20:21
- Link del Forum: http://80.211.75.170/forum
- Micogian
- Globalmod
- Messaggi: 599
- Iscritto il: 17/03/2016, 17:53
- Link del Forum: https://www.actaplantarum.org
Re: [Errore] Dichiarazione classe phpbb\class_loader
Ma i controlli dei permessi di lettura ci sono, lo script che utilizzo nella espansione è questa:
La parte che controlla i permessi di lettura è questa
E proprio per il fatto che nella estrazioni dei dati ci siano topics riservati la query estrae gli ultimo 20 records, poi vengono controllati i permessi di lettura e infine vengono presi in considerazioni solo gli ultimi 10 posts tra quelli rimasti.
Ma ripeto che è sconsigliato inserire codice personalizzato nel codice sorgente, va usata una estensione.
Codice: Seleziona tutto
//---------- New posts start -----------//
/** SELEZIONE DEGLI ULTIMI POSTS */
$sql3 = "SELECT tt.topic_id, tt.forum_id, tt.topic_moved_id, tt.topic_last_post_id, tt.topic_last_poster_id, tt.topic_last_poster_name, tt.topic_last_post_subject, tt.topic_last_post_time,
ft.forum_id, ft.forum_name
FROM " . TOPICS_TABLE . " tt, " . FORUMS_TABLE . " ft
WHERE tt.forum_id IN (". $list_posts .")
AND tt.topic_type = 0
AND tt.topic_moved_id = 0
AND tt.forum_id = ft.forum_id
AND tt.topic_visibility=1
ORDER BY tt.topic_last_post_time DESC LIMIT 0,20";
$result3 = $this->db->sql_query($sql3);
$n3 = 0;
$bg3 = "bg1";
while ($row3 = $this->db->sql_fetchrow($result3))
{
if ($this->auth->acl_get('f_read', $row3['forum_id']) == 1)
{
if ($n3 < 10)
{
$post_subject3 = str_replace("Re: ", "", $row3['topic_last_post_subject']) ;
if (strlen($post_subject3) > 60)
{
$post_title3 = substr($post_subject3,0,57) . "...";
}else{
$post_title3 = $post_subject3 ;
}
$last_post_link[$n3] = append_sid("{$this->root_path}viewtopic.$this->phpEx", "f=" . $row3['forum_id'] . "&t=" . $row3['topic_id'] . "#p" . $row3['topic_last_post_id']);
$last_post_title[$n3] = $row3['topic_last_post_subject'];
$last_post_title_short[$n3] = $post_title3;
$last_post_forum[$n3] = $row3['forum_name'];
$last_post_author[$n3] = $row3['topic_last_poster_name'];
$last_post_data[$n3] = date("d/m/Y",$row3['topic_last_post_time']);
// assegna le variabili da passare al file HTML
$this->template->assign_block_vars('topten3_list', array(
'LAST_POST_LINK' => $last_post_link[$n3],
'LAST_POST_TITLE' => $last_post_title[$n3],
'LAST_POST_TITLE_SHORT' => $last_post_title_short[$n3],
'LAST_POST_FORUM' => $last_post_forum[$n3],
'LAST_POST_AUTHOR' => $last_post_author[$n3],
'LAST_POST_DATA' => $last_post_data[$n3],
'LAST_POST_BG' => $bg3 ,
));
if ($bg3 == "bg1" ){
$bg3 = "bg2" ;
}else{
$bg3 = "bg1" ;
}
++$n3 ;
}else{
break ;
}
}
}
//---------- New posts end -----------//
$this->template->assign_vars(array(
'TOPTEN_MODE' => $mode_cor,
'TOPTEN_TITLE' => "Ultimi posts del forum",
));
Codice: Seleziona tutto
if ($this->auth->acl_get('f_read', $row3['forum_id']) == 1)
Ma ripeto che è sconsigliato inserire codice personalizzato nel codice sorgente, va usata una estensione.