Seite 1 von 2

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

Verfasst: 09.09.2007 17:43
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.

Verfasst: 10.09.2007 13:12
von Stefan M.
Hallo Zusammen,

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

Gruß Stefan M.

Verfasst: 10.09.2007 17:56
von Seimon

Verfasst: 10.09.2007 18:24
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.

Verfasst: 11.09.2007 17:30
von Stefan M.
Kann mir meine o.g. Frage beantworten?

Verfasst: 11.09.2007 17:38
von Seimon
index_body.tpl

Verfasst: 11.09.2007 17:58
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!

Verfasst: 11.09.2007 18:37
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 -->

Verfasst: 11.09.2007 18:55
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

Verfasst: 11.09.2007 19:04
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