MyBB.de Forum
Online User für Gäste verbergen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: Online User für Gäste verbergen (/thread-22426.html)



Online User für Gäste verbergen - yomifrog - 13.06.2010

Hallo,

nach einigen rumfummeln an der index.php bin ich leider nicht zu den gewünschten Ergebnis bekommen. Ich habe vor die auf der Startseite befindlichen zur Zeit online User in der whoisonline Liste Gästen zu verbergen. Im Template wird das Feld durch {$onlinemembers} definiert.

Das gleiche habe ich auch mit den Zusatzinfos vor, die wie folgt lauten:

X Benutzer aktiv in den letzten 15 Minuten: X Mitglied(er), X davon unsichtbar und X Gäste

Im Template ist das die Variable {$lang->online_note}

Wo muss ich in welcher Datei, was verändern, damit die Gäste das nicht sehen können bzw. einen Alternativtext zu sehen ist. Für Mitglieder soll das natürlich sichtbar sein. Smile

Danke schon mal.



yomifrog


RE: Online User für Gäste verbergen - StefanT - 13.06.2010

Schau mal in der inc/languages/*Sprache*/index.lang.php.


RE: Online User für Gäste verbergen - Jockl - 13.06.2010

Solltest Du generell den Gästen die Boardstats auf der Startseite nicht zeigen wollen, dann kannst Du ggf. auch folgendes machen.
Suche in der index.php
PHP-Code:
// Show the board statistics table only if one or more index statistics are enabled.
if($mybb->settings['showwol'] != || $mybb->settings['showindexstats'] != || ($mybb->settings['showbirthdays'] != && $bdaycount 0))
{
    if(!
is_array($stats))
    {
        
// Load the stats cache.
        
$stats $cache->read("stats");
    }
        eval(
"\$boardstats = \"".$templates->get("index_boardstats")."\";");

und ändere das in
PHP-Code:
// Show the board statistics table only if one or more index statistics are enabled.
if($mybb->settings['showwol'] != || $mybb->settings['showindexstats'] != || ($mybb->settings['showbirthdays'] != && $bdaycount 0))
{
    if(!
is_array($stats))
    {
        
// Load the stats cache.
        
$stats $cache->read("stats");
    }
    
// Do not load boardstats for guests
    
if ($mybb->usergroup['gid'] != "1"){
        eval(
"\$boardstats = \"".$templates->get("index_boardstats")."\";");
    }

Das lässt sich auch auf Deine Wünsche anpassen. Du musst nur nach den entsprechenden Variablen und dem jeweiligen eval-Code suchen.


RE: Online User für Gäste verbergen - yomifrog - 13.06.2010

Danke Jockl, das war sehr hilfreich, allerdings musste ich aus:

PHP-Code:
// Do not load boardstats for guests
    
if ($mybb->usergroup['gid'] != "1"){
        eval(
"\$boardstats = \"".$templates->get("index_boardstats")."\";");
    } 
Das machen, weil es irgendwie nicht funzte:
PHP-Code:
// Do not load boardstats for guests
    
if ($mybb->user['usergroup'] != "1"){
        eval(
"\$boardstats = \"".$templates->get("index_boardstats")."\";");
    } 
Eine unwichtige Frage habe ich noch nebenbei, gibt es irgendwo eine Auflistung der Usergroup ID's? Zudem würde mich noch interessieren, wie das dann mit eigenen (selbst erstellten) Benutzergruppen aussieht.



yomifrog


RE: Online User für Gäste verbergen - Jockl - 13.06.2010

(13.06.2010, 18:24)yomifrog schrieb: ...gibt es irgendwo eine Auflistung der Usergroup ID's?
Ja, im ACP unter Tools&Verwaltung->Chache Manager -> usergroups.

(13.06.2010, 18:24)yomifrog schrieb: Zudem würde mich noch interessieren, wie das dann mit eigenen (selbst erstellten) Benutzergruppen aussieht.
Eigentlich genauso. Wink


RE: Online User für Gäste verbergen - yomifrog - 14.06.2010

Ah ok, danke sehr.^^



yomifrog


RE: Online User für Gäste verbergen - Jan - 15.06.2010

Wichtig ist nur,
PHP-Code:
$mybb->user['usergroup'
ist nur die primäre Benutzergruppe. Andere Benutzergruppen sind als kommagetrennter String in der Variablen
PHP-Code:
$mybb->user['additionalgroups'
Du musst daher hier auch diese prüfen, da Gäste ja nur in einer Gruppe, der primären sind, ist das da nicht notwendig, für eigene Benutzergruppen aber schon. Folgender Code hilft dir dabei vielleicht. Das ganze ist in einer Funktion verpackt, kann aber auch direkt benutzt werden. Es sollte funktionieren, kann es aber leider nicht garantieren.
PHP-Code:
/**
* checks if the user is in one of the allowed usergroups
* @param $P_allowed the allowed usergroups; seperated with ","(COMMA) e.g.: "4,10,2"
* @return boolean true if user is in one of the allowed usergroups
*/
function check_user($allowed false)
{
    
// $mybb exist in the global content
    
global $mybb;

    
// explode the allowed usergroups to an array
    
$allowed_usergroups explode(','$allowed);

    
// explode the additional usergroups of the user to an array
    
$usergroups explode(','$mybb->user['additionalgroups']);
    
// Add the primary usergroup of the user the the usergroups
    
$usergroups[] = $mybb->user['usergroup'];

    
// is the user logged in
    
if ($mybb->user['uid'] != '0')
    {
        
// check if allowed usergroups are set
        
if ($allowed!=false)
        {
            
// check the permission for each usergroup of the user
            
foreach ($usergroups as $usergroup)
            {
                
// check if the usergroup is one of the allowed usergroups
                
if(in_array($usergroup,$allowed_usergroups))
                {
                    return 
true;
                }
            }
        }
    }
    return 
false;