Wer ist online nur für bestimmte Benutzergruppen [ERLEDIGT]

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.
Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Wer ist online nur für bestimmte Benutzergruppen [ERLEDIGT]

Beitrag von Stefan M. »

Liebe phpBB.de-Member,

ich habe mir gerade das phpBB2 runtergeladen und erfolgreich installiert.
Ich suche nun folgenden Hack/Mod, den ich nach der Suchfunktion im Forum und in der Mod-Datenbank nicht gefunden habe. Dies habe ich gefunden:

http://www.phpbb.de/moddb/mod.php?id=509

Leider entspricht das nicht ganz meinem Wunsch.

Ich möchte gerne einen Mod/Hack, bei dem ich am besten im ACP unter den Gruppenberechtigungen einstellen kann, ob diese Gruppe den Frame "Wer ist online" sehen kann. Es muss nicht unbedingt im ACP sein, ich kann es auch manuell im CODE ändern!

Gibt es schon so etwas hier? Ich weis, dass es so was für Gäste gibt, aber das reicht mir nicht ganz aus!

Bis jetzt wurden noch keine anderen Mods eingebaut!

Ich währe jedem sehr dankbar, wenn jemand mir dies machen könnte oder jemand auf einen schon vorhandenen Mod/Hack verweisen könnte!

Vielen Dank!

Gruß Stefan M.
Zuletzt geändert von Stefan M. am 12.09.2007 19:36, insgesamt 1-mal geändert.
Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Beitrag von Stefan M. »

Hallo Zusammen,

eine Frage: Warum hat sich bis jetzt noch keiner gemeldet? Fehlen noch Inforamtionen zu dem Forum?

Gruß Stefan M.
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Beitrag von Stefan M. »

Seimon hat geschrieben:Hilft das?
http://www.phpbb.de/doku/kb/best_gruppen
Wenn ich nun die includes/functions.php und die includes/page_header.php ändere, ist das dann nur die Voraussetzung dafür, dass das dieser Code funktioniert:
<!-- BEGIN switch_usergroup_123 -->
Hier der Code der nur für die Gruppe sichtbar sein soll.
<!-- END switch_usergroup_123 -->
Und in welchen Dateien muss ich dann die jeweiligen Codes verändern, wenn ich die "Who is online" für bestimmte Gruppen deaktiveren möchte?

Gruß Stefan M.
Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Beitrag von Stefan M. »

Kann mir meine o.g. Frage beantworten?
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

index_body.tpl
Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Beitrag von Stefan M. »

Seimon hat geschrieben:index_body.tpl
Also meine wo in der Index_Body.tpl muss ich dann den o.g. Code eingeben, dass man die Mitgliederliste, Wer ist Online und die Suchfunktion nicht sehen kann?

Meine includes/functions.php sieht nun so aus:

Code: Alles auswählen

	// Behave as per HTTP/1.1 spec for others
	header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url);
	exit;
}
# 
function member_of($group_id, &$userdata) 
{ 
        global $db; 
        if ( !$userdata['session_logged_in'] ) 
        { 
                return false; 
        } 
        if ( isset($userdata['user_member_of_' . $group_id]) ) 
        { 
                return $userdata['user_member_of_' . $group_id]; 
        } 
        $sql = "SELECT count(*) AS num FROM " . USER_GROUP_TABLE . " 
                WHERE user_id = '" . $userdata['user_id'] . "' AND user_pending = 0 AND group_id IN ( " . $group_id . " )"; 
          if ( !($result = $db->sql_query($sql)) ) 
        { 
                message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql); 
        } 
        $row = $db->sql_fetchrow($result); 
        if ( $row['num'] > 0 ) 
        { 
                return $userdata['user_member_of_' . $group_id] = true; 
        } 
        return $userdata['user_member_of_' . $group_id] = false; 
} 
#
?>
Ist das richtig?

Und nun meine includes/page_header.php

Code: Alles auswählen

else
{
	$template->assign_block_vars('switch_user_logged_in', array());

	if ( !empty($userdata['user_popup_pm']) )
	{
		$template->assign_block_vars('switch_enable_pm_popup', array());
	}
}
if ( member_of('123', $userdata) ) 
        { 
                $template->assign_block_vars('switch_usergroup_1,2,3,4,5,6,7,8,9', array()); 
        }
Ist das richtig? Ist das mit den Gruppen richtig? Oder muss dort 1,2,3,4,5,6,7,8,9 hin?

Vielen Dank!
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

Hab grad nochmal geschaut und versteh den Code nicht... :D

Eine Lösung wär:

in der functions:
nimm das wieder raus und ersetze durch:

Code: Alles auswählen

function member_of($group_id, &$userdata) 
{ 
        global $db;
        if ( !$userdata['session_logged_in'] ) 
        { 
                return false; 
        } 
        $group_id = implode(',',$group_id);
        $sql = "SELECT count(*) AS num FROM " . USER_GROUP_TABLE . " 
                WHERE user_id = '" . $userdata['user_id'] . "' AND user_pending = 0 AND group_id IN ( " . $group_id . " )"; 
          if ( !($result = $db->sql_query($sql)) ) 
        { 
                message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql); 
        } 
        $row = $db->sql_fetchrow($result); 
        if ( $row['num'] > 0 ) 
        { 
                return true; 
        } 
        return false; 
} 

in der page_header:
nimm das wieder raus und

finde:

Code: Alles auswählen

else
{
	$template->assign_block_vars('switch_user_logged_in', array());

	if ( !empty($userdata['user_popup_pm']) )
	{
		$template->assign_block_vars('switch_enable_pm_popup', array());
	}
}
danach füge ein:

Code: Alles auswählen

        if ( member_of(array('3','4'), $userdata) ) 
        { 
                $template->assign_block_vars('switch_usergroup', array()); 
        }
in der index_body.tpl:

finde:

Code: Alles auswählen

<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
  <tr>
	<td class="catHead" colspan="2" height="28"><span class="cattitle"><a href="{U_VIEWONLINE}" class="cattitle">{L_WHO_IS_ONLINE}</a></span></td>
  </tr>
  <tr>
	<td class="row1" align="center" valign="middle" rowspan="2"><img src="templates/subSilver/images/whosonline.gif" alt="{L_WHO_IS_ONLINE}" /></td>
	<td class="row1" align="left" width="100%"><span class="gensmall">{TOTAL_POSTS}<br />{TOTAL_USERS}<br />{NEWEST_USER}</span>
	</td>
  </tr>
  <tr>
	<td class="row1" align="left"><span class="gensmall">{TOTAL_USERS_ONLINE} &nbsp; [ {L_WHOSONLINE_ADMIN} ] &nbsp; [ {L_WHOSONLINE_MOD} ]<br />{RECORD_USERS}<br />{LOGGED_IN_USER_LIST}</span></td>
  </tr>
</table>

<table width="100%" cellpadding="1" cellspacing="1" border="0">
<tr>
	<td align="left" valign="top"><span class="gensmall">{L_ONLINE_EXPLAIN}</span></td>
</tr>
</table>
ersetze durch:

Code: Alles auswählen

<!-- BEGIN switch_usergroup -->
<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
  <tr>
	<td class="catHead" colspan="2" height="28"><span class="cattitle"><a href="{U_VIEWONLINE}" class="cattitle">{L_WHO_IS_ONLINE}</a></span></td>
  </tr>
  <tr>
	<td class="row1" align="center" valign="middle" rowspan="2"><img src="templates/subSilver/images/whosonline.gif" alt="{L_WHO_IS_ONLINE}" /></td>
	<td class="row1" align="left" width="100%"><span class="gensmall">{TOTAL_POSTS}<br />{TOTAL_USERS}<br />{NEWEST_USER}</span>
	</td>
  </tr>
  <tr>
	<td class="row1" align="left"><span class="gensmall">{TOTAL_USERS_ONLINE} &nbsp; [ {L_WHOSONLINE_ADMIN} ] &nbsp; [ {L_WHOSONLINE_MOD} ]<br />{RECORD_USERS}<br />{LOGGED_IN_USER_LIST}</span></td>
  </tr>
</table>

<table width="100%" cellpadding="1" cellspacing="1" border="0">
<tr>
	<td align="left" valign="top"><span class="gensmall">{L_ONLINE_EXPLAIN}</span></td>
</tr>
</table>
<!-- END switch_usergroup -->
Stefan M.
Mitglied
Beiträge: 114
Registriert: 07.09.2007 16:37

Beitrag von Stefan M. »

Okay, das klappt soweit, nun möchte ich aber einstellen, dass bestimmte Gruppen bzw. bestimmte Gruppen-ID's diese Liste sehen dürfen, da ich nur die Who ist Online Liste sehen kann. Ich bin Admin.

Wo finde cih die Gruppen-ID's und in welcher Datei beim

<!-- BEGIN switch_usergroup --> und <!-- END switch_usergroup -->

muss ich das ändern?

Vielen Dank!

Gruß Fluero
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

hier: (page_header.php)

Code: Alles auswählen

if ( member_of(array('3','4'), $userdata) )
'3' und '4' sind die Gruppen.
Ich denke es ist klar wie man mehr hinzufügt
Antworten

Zurück zu „phpBB 2.0: Mod Support“