[Errore] Dichiarazione classe phpbb\class_loader

Area dedicata al phpBB 3.2.X
Rispondi
Avatar utente
Mask
Nuovo Utente
Nuovo Utente
Messaggi: 9
Iscritto il: 09/11/2019, 20:21
Link del Forum: http://80.211.75.170/forum

Re: [Errore] Dichiarazione classe phpbb\class_loader

Messaggio da Mask »

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..
Avatar utente
Micogian
Globalmod
Globalmod
Messaggi: 588
Iscritto il: 17/03/2016, 17:53
Link del Forum: https://www.actaplantarum.org

Re: [Errore] Dichiarazione classe phpbb\class_loader

Messaggio da Micogian »

Ma i controlli dei permessi di lettura ci sono, lo script che utilizzo nella espansione è questa:

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'] . "&amp;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",
			));
La parte che controlla i permessi di lettura è questa

Codice: Seleziona tutto

if ($this->auth->acl_get('f_read', $row3['forum_id']) == 1) 
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.
Rispondi