Rechteabfrage für Beitragssichtbarkeit

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
hmmder3
Mitglied
Beiträge: 21
Registriert: 28.10.2011 16:16

Rechteabfrage für Beitragssichtbarkeit

Beitrag von hmmder3 »

Hallo zusammen

ich weiß nicht, ob ich hier richtig gelandet bin, ansonsten bitte einfach verschieben.

Ich habe folgendes Problem:

Für mein Eigenbau Clan-portal habe ich auf der Startseite eine Übersicht mit den neusten Beiträgen gemacht.
In meinem PHP Code sieht das ganze so aus:

Code: Alles auswählen

//Neusten Beiträge (Übersicht)

	$sql =
		'SELECT
			topic_last_post_id,
			topic_last_poster_id,
			topic_last_poster_name,
			topic_last_poster_colour,
			topic_title,
			topic_time,
			topic_last_post_time,
			forum_id,
			topic_id
		FROM
			'.$table_prefix.'topics
		WHERE
			forum_id NOT LIKE 20 AND
			forum_id NOT LIKE 21 AND
			forum_id NOT LIKE 22 AND 
			forum_id NOT LIKE 23 AND 
			forum_id NOT LIKE 24 AND 
			forum_id NOT LIKE 25 AND 
			forum_id NOT LIKE 26 AND
			forum_id NOT LIKE 37 AND
			forum_id NOT LIKE 39
		ORDER BY
			topic_last_post_id DESC LIMIT 5';
	
	$result = $db->sql_query($sql);

//Ausgabe, ob die Abfrage auch funktioniert. nicht wichtig für das eigentliche Script
	
	if(!$result)
	{
		$fehler = ('SQL Abfrage fehlgeschlagen!: '.mysql_error());
	}
	else
	{
		$fehler = ('KEIN FEHLER!');
	}
		
	$no_content = '0';	

//Bearbeiten der SQl Ergebnisse und schreiben ins Template
		
if ($result->num_rows) {
	
	while ($row = $db->sql_fetchrow($result))
	{
				
		$cp_row = array();
		
		$topicrow = array(
	
			'TOPIC_FEHLER'		=> $fehler,
			'TOPIC_POSTER'		=> $row['topic_last_poster_name'],
			'TOPIC_TEXT'		=> $row['topic_title'],
			'TOPIC_DATE'		=> $user->format_date($row['topic_last_post_time']),
			'TOPIC_LINK'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", '&p='.$row['topic_last_post_id'].'#p'.$row['topic_last_post_id']) ,
			'TOPIC_USER_LINK'	=> append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u='.$row['topic_last_poster_id']) ,
			'TOPIC_USER_COLOUR'	=> $row['topic_last_poster_colour'],
	
		);
	
		
		if (isset($cp_row['row']) && sizeof($cp_row['row']))
		{
			$postrow = array_merge($topicrow, $cp_row['row']);
		}

		// Dump vars into template
		$template->assign_block_vars('topicrow', $topicrow);

		if (!empty($cp_row['blockrow']))
		{
			foreach ($cp_row['blockrow'] as $field_data)
			{
				$template->assign_block_vars('topicrow.custom_fields', $field_data);
			}
		}
	}
}
else {
	$topic_no_content = ('Kein Inhalt'); //Wenn keine neusten Beiträge vorhanden, dann ausgeben (Nur bei einem leeren Forum)
}
Nun möchte ich ganz gerne, das auch nur die Benutzer die neusten Beiträge sehen können, die im Forum auch das Recht dazu haben.
Ich habe dazu schon ein wenig in den function...php Dateien gesucht und auch die viewforum.php abgeklappert. Dabei ist mir die Funktion: "acl_gets" in der "auth.php" ins Auge gefallen. Kann es sein, das ich mein Ergebnis mit dieser Funktion erzielen kann? Und wenn ja, dann bräuchte ich mal jemanden, der mich ein wenig leiten kann, da ich aus dieser Funktion nicht so ganz schlau werde :(

PS: Ja, ich weiß das es die Board3 - Portal Mod gibt, allerdings ist diese mir "zu" umfangreich, und ich bin halt ein Bastler und mache so etwas aus Selbstlernzwecken gerne selber (bis ich nicht mehr weiterkomme).

MfG

hmm der 3.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12256
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: Rechteabfrage für Beitragssichtbarkeit

Beitrag von Mahony »

Hallo
Eventuell reicht dir ja dieses Snippet Template Variable zur Prüfung der Gruppen Mitgliedschaft

Ansonsten schau mal hier http://wiki.phpbb.com/Tutorial.Permissions


Grüße: Mahony
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
hmmder3
Mitglied
Beiträge: 21
Registriert: 28.10.2011 16:16

Re: Rechteabfrage für Beitragssichtbarkeit

Beitrag von hmmder3 »

Ich danke dir für die schnelle Antwort und OMG!

Es gibt ein Wiki und ich kannte es noch nicht :(

Ich werds mal mit "$auth->acl_get('f_list', $forum_id);" versuchen, hört sich ziemlich gut an. Werde mich dann nochmal melden, obs funktioniert hat.

EDIT:

Also, es funktioniert, allerdings habe ich bis jetzt die Anzahl angezeigter Themen direkt in der SQL abfrage angegeben "LIMIT 5" also liest er auch nur 5 Einträge aus. Problem ist nur, das wenn ich die Abfrage wie folgt erstelle, listet er mir nichts mehr auf, wenn ich abgemeldet bin, weil die Post nicht unter den neusten 5 liegen, die die SQL Abfrage nur ausliest.

Code: Alles auswählen

//Neusten Beiträge (Übersicht)

	$sql =
		'SELECT
			topic_last_post_id,
			topic_last_poster_id,
			topic_last_poster_name,
			topic_last_poster_colour,
			topic_title,
			topic_time,
			topic_last_post_time,
			forum_id,
			topic_id
		FROM
			'.$table_prefix.'topics
		WHERE
			forum_id NOT LIKE 20 AND
			forum_id NOT LIKE 21 AND
			forum_id NOT LIKE 22 AND 
			forum_id NOT LIKE 23 AND 
			forum_id NOT LIKE 24 AND 
			forum_id NOT LIKE 25 AND 
			forum_id NOT LIKE 26 AND
			forum_id NOT LIKE 37 AND
			forum_id NOT LIKE 39
		ORDER BY
			topic_last_post_id DESC LIMIT 5';
	
	$result = $db->sql_query($sql);
	
	if(!$result)
	{
		$fehler = ('SQL Abfrage fehlgeschlagen!: '.mysql_error());
	}
	else
	{
		$fehler = ('KEIN FEHLER!');
	}
		
	$no_content = '0';	
		
if ($result->num_rows) {
	
	while ($row = $db->sql_fetchrow($result))
	{
		If($auth->acl_get('f_list', $row['forum_id']))
		{
		
			$cp_row = array();
		
			$topicrow = array(
	
				'TOPIC_FEHLER'		=> $fehler,
				'TOPIC_POSTER'		=> $row['topic_last_poster_name'],
				'TOPIC_TEXT'		=> $row['topic_title'],
				'TOPIC_DATE'		=> $user->format_date($row['topic_last_post_time']),
				'TOPIC_LINK'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", '&p='.$row['topic_last_post_id'].'#p'.$row['topic_last_post_id']) ,
				'TOPIC_USER_LINK'	=> append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u='.$row['topic_last_poster_id']) ,
				'TOPIC_USER_COLOUR'	=> $row['topic_last_poster_colour'],
	
			);
	
		
			if (isset($cp_row['row']) && sizeof($cp_row['row']))
			{
				$postrow = array_merge($topicrow, $cp_row['row']);
			}

			// Dump vars into template
			$template->assign_block_vars('topicrow', $topicrow);
	
			if (!empty($cp_row['blockrow']))
			{
				foreach ($cp_row['blockrow'] as $field_data)
				{
					$template->assign_block_vars('topicrow.custom_fields', $field_data);
				}
			}
		}
	}
}
else {
	$topic_no_content = ('Kein Inhalt');
}
Frage ist nun, wie ich die "topicrow" limitieren kann. (Sorry, bin durch das "mehrere Zeilen in Tamplate ausgeben nicht so ganz eingeweiht, aber es geht :))

EDIT2:

Habs hinbekommen.

Einfach in die Whileschleife eine hoch zählende Variable gesetzt und am ende der schleife abgefragt, ob diese bei einem gewissen wert ist. Wenn ja dann "break;".
Danke für die Mühen, bis zum nächsten mal :)


MfG

hmm der 3.
Antworten

Zurück zu „[3.0.x] Mod Support“