Seite 1 von 3

user online liste nur für bestimmte usergruppe

Verfasst: 24.08.2005 09:07
von holzi12
Hallo,

Ich möchte die Wer ist online Anzeige für einen Teil der user nicht sichtbar machen.
Ich hab hier die Anleitung gefunden, wie man sie für Gäste unsichtbar macht, sobald sich der user aber registriert kann er die Liste wieder sehen.
Ich möchte aber, daß z.b: nur user der Gruppe "Gruppe1" die "Wer ist online" sehen können, alle anderen egal ob Gast oder andere reg. User nicht.
Funktioniert das mit phpbb?

TIA,
holzi12

Verfasst: 24.08.2005 09:51
von shwepsi
klar, aber du musst dafür ein paar Zeilen Code einbauen

möchtest du das eher Mod like mit Admin Panel unterstützung?
Also bei den Gruppen eine Einstellung Wer ist online sichtbar erlauben /verbieten
(viele änderungen in vielen Dateien)

oder reicht dir wenn du das im Quelltext einstellen kannst?
(wenig Änderungen in wenig Dateien)

Verfasst: 24.08.2005 10:25
von holzi12
hallo,

Danke für die Antwort. Am liebsten wärs mir schon, wenn ich es für die einzelnen Gruppen einstellen kann (also mit Admin-Panel).

lg
holzi12

Verfasst: 24.08.2005 10:59
von shwepsi
ok, das machen wir dann in 2 Schritten
a) das ACP mit einstellen

danach wird kontrolliert ob das klappt mit den Berechtigungen setzen

b) das in der overall_header

dann wird das auch funktionstüchtig für das die Wer ist online Liste umgesetzt

PS: hast du die Codechanges wegen der Gäste? dann kann ich da vielleicht mit einer kleinen Änderung das machen. Sonst ist das doppelt gemoppelt oder macht das mit den Gästen sogar wieder kaputt.

Gleich kommt auch der Post mit den ersten Satz an Änderungen

Verfasst: 24.08.2005 11:21
von holzi12
ok, vielen Dank :)

folgende Änderungen für die "wer ist online" hab ich gemacht:

http://www.phpbb.de/viewtopic.php?t=88459

nebenbei hab ich auch folgende Änderung an der memberliste durchgeführt, aber das ist nicht so wichtig
http://www.phpbb.de/viewtopic.php?p=263706#263706

Verfasst: 24.08.2005 11:34
von shwepsi
achte bei SQL auf das prefix !!
SQL:

Code: Alles auswählen

ALTER TABLE `phpbb_groups` ADD `group_wiol` TINYINT( 4 ) DEFAULT '0' NOT NULL ;
Öffne includes/constants.php
Suche:

Code: Alles auswählen

// Group settings
define('GROUP_OPEN', 0);
define('GROUP_CLOSED', 1);
define('GROUP_HIDDEN', 2);
Füge danach ein:

Code: Alles auswählen

// Who Is Online List Permission
define('WIOL_DENIED', 0);
define('WIOL_PERMITED', 1);
Öffne admin/admin_groups.php
Suche:

Code: Alles auswählen

		$group_info = array (
			'group_name' => '',
			'group_description' => '',
			'group_moderator' => '',
Füge danach ein:

Code: Alles auswählen

			'group_wiol' => WIOL_DENIED),
Suche:

Code: Alles auswählen

$group_open = ' checked="checked"';
Füge danach ein:

Code: Alles auswählen

		$wiol_permitted = ' checked="checked"';
Suche:

Code: Alles auswählen

	$group_open = ( $group_info['group_type'] == GROUP_OPEN ) ? ' checked="checked"' : '';
	$group_closed = ( $group_info['group_type'] == GROUP_CLOSED ) ? ' checked="checked"' : '';
	$group_hidden = ( $group_info['group_type'] == GROUP_HIDDEN ) ? ' checked="checked"' : '';
Füge danach ein:

Code: Alles auswählen

	$wiol_permitted = ( $group_info['group_wiol'] == WIOL_PERMITED ) ? ' checked="checked"' : '';
	$wiol_denied = ( $group_info['group_wiol'] == WIOL_DENIED ) ? ' checked="checked"' : '';
Suche:

Code: Alles auswählen

		'L_GROUP_OPEN' => $lang['group_open'],
		'L_GROUP_CLOSED' => $lang['group_closed'],
		'L_GROUP_HIDDEN' => $lang['group_hidden'],
füge danach ein:

Code: Alles auswählen

		'L_GROUP_WIOL' => $lang['group_wiol'],
		'L_PERMITTED' => $lang['permitted'],
		'L_DENIED' => $lang['denied'],
Suche:

Code: Alles auswählen

		'S_GROUP_OPEN_CHECKED' => $group_open,
		'S_GROUP_CLOSED_CHECKED' => $group_closed,
		'S_GROUP_HIDDEN_CHECKED' => $group_hidden,
Füge danach ein:

Code: Alles auswählen

		'S_WIOL_DENIED_CHECKED' => $wiol_denied,
		'S_WIOL_PERMITTED_CHECKED' => $wiol_permitted,
		'S_WIOL_DENIED' => WIOL_DENIED,
		'S_WIOL_PERMITED' => WIOL_PERMITED,
Suche:

Code: Alles auswählen

			$sql = "UPDATE " . GROUPS_TABLE . "
				SET group_type = $group_type, group_name = '" . str_replace("\'", "''", $group_name) . "', group_description = '" . str_replace("\'", "''", $group_description) . "', group_moderator = $group_moderator 
				WHERE group_id = $group_id";
darin suche:

Code: Alles auswählen

SET group_type = $group_type,
füge danach ein: (Leerzeichen auch !)

Code: Alles auswählen

 group_wiol = $group_wiol,
Suche

Code: Alles auswählen

			$sql = "INSERT INTO " . GROUPS_TABLE . " (group_type, group_name, group_description, group_moderator, group_single_user) 
				VALUES ($group_type, '" . str_replace("\'", "''", $group_name) . "', '" . str_replace("\'", "''", $group_description) . "', $group_moderator,	'0')";
ersetze mit:

Code: Alles auswählen

			$sql = "INSERT INTO " . GROUPS_TABLE . " (group_type, group_wiol, group_name, group_description, group_moderator, group_single_user) 
				VALUES ($group_type, $group_wiol, '" . str_replace("\'", "''", $group_name) . "', '" . str_replace("\'", "''", $group_description) . "', $group_moderator,	'0')";
Öffne templates\subSilver\admin\group_edit_body.tpl
Suche:

Code: Alles auswählen

	<!-- BEGIN group_edit -->
Füge DAVOR ein:

Code: Alles auswählen

	<tr>
	  <td class="row1" width="38%"><span class="gen">{L_GROUP_WIOL}:</span></td>
	  <td class="row2" width="62%"> 
		<input type="radio" name="group_wiol" value="{S_WIOL_PERMITED}" {S_WIOL_PERMITTED_CHECKED} /> {L_PERMITTED} &nbsp;&nbsp;<input type="radio" name="group_wiol" value="{S_WIOL_DENIED}" {S_WIOL_DENIED_CHECKED} />	{L_DENIED}</td> 
	</tr>
Öffne jede language\lang_****\lang_admin.php
Suche:

Code: Alles auswählen

// That's all Folks!
// Na Gott sei Dank!
//
Füge DAVOR ein:

Code: Alles auswählen

// Who is online Permission
$lang['group_wiol'] = 'Wer ist online Liste Sichtbarkeit';
$lang['permitted'] = 'erlaubt';
$lang['denied'] = 'verbieten';
Speichern, schliessen, hochladen

Nun gehen ins ACP und schaue mithilfe von phpmyadmin ob die Einstellung auch schön in der Datenbank ankommt

klappt es soweit?

Verfasst: 24.08.2005 12:36
von holzi12
Danke erstmal, eine Kleines Problem hab ich da:

Wenn ich versuche bei einer Gruppe die Berechtigung zu setzen kommt im apc diese Meldung:

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' group_name = "Gruppe.1', group_description = '', group_moderator = 2 ' at line 2

UPDATE phpbb_groups SET group_type = 2, group_wiol = , group_name = 'Gruppe.1', group_description = '', group_moderator = 2 WHERE group_id = 3

Line : 343
File : admin_groups.php

dort ist folgender Code

Code: Alles auswählen

$sql = "UPDATE " . GROUPS_TABLE . "
				SET group_type = $group_type,  group_wiol = $group_wiol,  group_name = '" . str_replace("\'", "''", $group_name) . "', group_description = '" . str_replace("\'", "''", $group_description) . "', group_moderator = $group_moderator 
				WHERE group_id = $group_id";
			if ( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not update group', '', __LINE__, __FILE__, $sql);
			}
Ich hab wahrscheinlich grad Tomaten auf den Augen, aber ich finde den Fehler nicht *heul*

Verfasst: 24.08.2005 13:40
von shwepsi
sorry, da fehlte eine Zeile

öffne admin/admin_groups.php
suche:

Code: Alles auswählen

$group_type = isset($HTTP_POST_VARS['group_type']) ? intval($HTTP_POST_VARS['group_type']) : GROUP_OPEN;
füge danach ein:

Code: Alles auswählen

		$group_wiol = isset($HTTP_POST_VARS['group_wiol']) ? intval($HTTP_POST_VARS['group_wiol']) : WIOL_DENIED;

Verfasst: 24.08.2005 13:57
von holzi12
ok danke :)

das funktioniert mal 8)

Verfasst: 24.08.2005 13:59
von shwepsi
holzi12 hat geschrieben:ok danke :)

das funktioniert mal 8)
gut, der Rest muss mal leider warten ... ich muss leider gerade 2 Stunden weg