Gruppenberechtigung

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

Beitrag von Karsten A »

Hallo,

ich habe alles noch einmal von vorn angefangen und jetzt funktioniert ist.
Vielen Dank für Deine Mühe.

Gruß
Karsten
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Kleine Änderung, damit das auch mit der Suche funktioniert und auch nicht per direktem Zugriff auf die Posts zugegriffen werden kann:

Finde in der viewtopic.php

Code: Alles auswählen

$sql = "SELECT t.topic_id, t.topic_title, t.topic_status, 
füge in dieser Zeile direkt nach dem Ausschnitt ein:

Code: Alles auswählen

t.topic_poster, 
Dann ein paar Zeilen später das bereits eingefügte

Code: Alles auswählen

if( $is_auth['auth_read_self_topics'] )
ersetzen durch

Code: Alles auswählen

if( $is_auth['auth_read_self_topics'] && $forum_topic_data['topic_poster'] == $userdata['user_id'] )
Jetzt ist der direkte Zugriff auch gesperrt.

Um die Suche anzupassen sind ein paar Anpassungen an der search.php notwendig.
Suche hier nach

Code: Alles auswählen

if ( $search_forum != -1 )
		{
			$is_auth = auth(AUTH_READ, $search_forum, $userdata);
Danach hinzufügen:

Code: Alles auswählen

$auth_read_self = auth(AUTH_READ_SELF_TOPICS, $search_forum, $userdata);
Direkt darunter nach

Code: Alles auswählen

if ( !$is_auth['auth_read'] )
			{
				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
			}
muss das hier:

Code: Alles auswählen

elseif(($is_auth['auth_read'] === AUTH_SELF && $auth_read_self['auth_read_self_topics'] == false))
			{
				$auth_self_list[] = $search_forum; //Speichern, dass in dem Forum nur eigene Themen gesehen werden dürfen.
			}
Wieder ein paar Zeilen später dann nach dem hier:

Code: Alles auswählen

$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
dann dass:

Code: Alles auswählen

$auth_read_self = auth(AUTH_READ_SELF_TOPICS, AUTH_LIST_ALL, $userdata); //AUTH_READ_SELF
Dieser kurze Block:

Code: Alles auswählen

if ( !$value['auth_read'] )
				{
					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
					
				}
wird ersetzt durch das hier:

Code: Alles auswählen

if ( !$value['auth_read'] || ($value['auth_read'] === AUTH_SELF && $auth_read_self[$key]['auth_read_self_topics'] == false) ) //Foren in denen nur eigene Themen gesehen werden dürfen ignorieren.
				{
					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
					if($value['auth_read'] === AUTH_SELF)//Zwischenspeichern wenn man nur eigene Themen in diesem Forum sehen darf.
					{
						$auth_self_list[] = $key;
					}
				}
Das hier:

Code: Alles auswählen

if ( $ignore_forum_sql != '' )
			{
				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
			}
wird ersetzt durch

Code: Alles auswählen

if ( $ignore_forum_sql != '' )
			{
				if($auth_self_list)
				{
					$auth_self_list = implode(', ', $auth_self_list);
					$auth_sql .= ( $auth_sql != '' ) ? " AND (f.forum_id NOT IN ($ignore_forum_sql) OR (t.topic_poster = ".$userdata['user_id']." AND f.forum_id IN ($auth_self_list) ))" : "(f.forum_id NOT IN ($ignore_forum_sql) OR (t.topic_poster = ".$userdata['user_id']." AND f.forum_id IN ($auth_self_list))) ";
				}
				else
				{
					$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
				}
			}
Zum Abschluss muss noch nach

Code: Alles auswählen

$from_sql = POSTS_TABLE . " p";
und nach

Code: Alles auswählen

$select_sql = ( $search_author == '' && $auth_sql == '' ) ? 'post_id' : 'p.post_id';
					$from_sql = (  $search_author == '' && $auth_sql == '' ) ? POSTS_TABLE : POSTS_TABLE . ' p';
jeweils das hier:

Code: Alles auswählen

if(isset($auth_self_list) && $auth_self_list) //ADDED
						{
							$from_sql .= ", " . TOPICS_TABLE . " t";
							$where_sql .= " AND t.topic_id = p.topic_id ";
						}
Ich hoffe dass ich da jetzt keine der vielen Änderungen in der Datei vergessen habe, auf jeden Fall sollte im Anschluss auch die Suche nur noch die Themen zeigen die man tatsächlich sehen darf.
Und das ganze hat sich mal wieder in Richtung eines kleinen Mods entwickelt :-?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Code: Alles auswählen

, f.auth_reply_self_topics, f.auth_read_self_topics
Fehlt noch in viewtopic.php bei der db-Abfrage, ansonsten resultiert das jeweilige Recht mit TRUE in auth.php.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „phpBB 2.0: Mod Support“