Seite 7 von 8

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 04.06.2012 02:13
von Knowhow-Sauger
Ja, die Seite ist mir bekannt. Aber dort sind leider auch überall Zahlen angegeben.
Ich möchte ja eben keine Zahlen verwenden, da jeder eine andere Bildschirmauflösung hat.
Ich möchte gerne, dass die rote Box immer unten rechts erscheint, egal welche Bildschirmauflösung jemand hat und egal wie gross oder klein sein Bildschirm ist.
Aber solch eine Funktion gibt es wahrscheinlich nicht.. :o

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 04.06.2012 09:06
von Miriam
Knowhow-Sauger hat geschrieben:...Wisst ihr eigentlich, wie man es so einstellen kann, dass die rote Box IMMER unten rechts am Bildschirmrand platziert ist?...
Du hast es also nicht gelesen, das ist schade.
Deshalb habe ich Dir mal den entspechenden Abschnitt herausgesucht -> Klick. Und so sieht's aus, wenn es umgesetzt wurde: Klack.

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 29.06.2012 19:14
von Knowhow-Sauger
Hallo,

ich habe mal eine Frage:

Momentan ist es ja so, dass, wenn einer aus der Gruppe Moderatoren oder Admins online ist, wird eine rote Grafik angezeigt.
Könnte man es nicht so machen, dass die Moderatoren und Admins einzeln angezeigt werden?

Wenn sagen wir mal Benjamin online ist, wird ein Banner angezeigt.
Ist Lukas online, wird ebenso ein Banner angezeigt..
Natürlich für jeden Staff-user ein eigener Banner...

Müsste man da nicht einfach nur etwas kleines abändern?
Es geht konkret nur um diesen Code-Schnipsel in der includes/functions.php:

Code: Alles auswählen

	$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_time, s.session_viewonline
		FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
		WHERE u.user_id = s.session_user_id
			AND u.group_id IN (4, 5)
			AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . '
			AND s.session_viewonline = 1
		ORDER BY s.session_viewonline';
	$result = $db->sql_query($sql);
    if ($row = $db->sql_fetchrow($result) AND (($user->data['group_id'] < 4) OR ($user->data['group_id'] > 5)))
            {
                    $template->assign_vars(array(
                            'S_STAFF_ONLINE'    => true,
                    ));
            }
Und da möchte ich gerne, dass da statt der 2 Gruppen (Admins und Mods) die Moderatoren und Admins EINZELN aufgelistet sind.
Geht das? Ist sicher nur eine Kleinigkeit, oder?


Danke :)

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 17.08.2012 22:28
von Knowhow-Sauger
Hallo erstmal,

ich habe folgendes Problem:

Ich habe gerade bemerkt, wenn ich online bin, wird der rote Banner angezeigt (ich bin in der Gruppe der Admins!).
Ist aber ein Moderator online, wird der rote Banner komischerweise nicht angezeigt. Sollte er aber eigentlich!

Kann mir jemand helfen?

Es geht um folgenden Code-Schnippsel in der includes/functions.php:
$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_time, s.session_viewonline
FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
WHERE u.user_id = s.session_user_id
AND u.group_id IN (4, 5)
AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . '
AND s.session_viewonline = 1
ORDER BY s.session_viewonline';
$result = $db->sql_query($sql);
if ($row = $db->sql_fetchrow($result) AND (($user->data['group_id'] < 4) OR ($user->data['group_id'] > 5)))
{
$template->assign_vars(array(
'S_STAFF_ONLINE' => true,
));
}
Moderatoren haben bei mir die ID 4 und Admins die ID 5.

Probem:
Bei Admins wird der rote Banner angezeigt, bei Moderatoren nicht.
Warum?

Danke :)

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 11:32
von Miriam
Knowhow-Sauger hat geschrieben:Warum?
Weil Deine Moderatoren die Globale-Moderatoren-Gruppe (ID = 5) nicht als Hauptgruppe haben.

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 12:41
von BNa
Mit der function group_memberships() gibt es dieses Problem nicht.
Diese registriert auch Nicht-Hauptgruppen-Zugehörigkeiten.

http://phpbbmodders.net/board/viewtopic ... 118&t=6533

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 14:42
von Miriam
Entweder das (mit ein bißchen Programmieraufwand)...
...oder Du tauschst die Zeile: gegen diese aus:
  • Code: Alles auswählen

    AND u.user_id IN ( SELECT DISTINCT user_id FROM ' . USER_GROUP_TABLE . ' WHERE group_id IN (4, 5) ) 

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 18:10
von BNa
Es geht doch nichts über die gute alte manuelle Methode :wink:

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 19:15
von Knowhow-Sauger
Miriam hat geschrieben:
Knowhow-Sauger hat geschrieben:Warum?
Weil Deine Moderatoren die Globale-Moderatoren-Gruppe (ID = 5) nicht als Hauptgruppe haben.
Das ist aber merkwürdig.
Ich sehe gerade im ACP, dass dort bei allen Moderatoren steht: "Zur Hauptgruppe des Mitglieds machen? NEIN".
Warum aber werden alle meine Moderatoren dann in roter Schrift angezeigt?
Diese rote Farbe gibt es ja nur bei Moderatoren.
Und die wird auch nur dann angezeigt, wenn es die Hauptgruppe ist. Andernfalls erscheint die Schrift in Blau und auch der Moderatoren-Rang wird dann nicht mehr öffentlich angezeigt.

Re: In der "Wer ist online-Liste" NUR Mods & Admins anzeigen

Verfasst: 18.08.2012 19:38
von Miriam
Sehr funktionell. :roll:

Aber gut, dann machen wir es nach den phpBB3 Coding Guidelines und unter Einbeziehung dieser hilfreichen Funktion ->

finde (vor den nochmaligen Anpassungen)
  • Code: Alles auswählen

    $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_time, s.session_viewonline
        FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
            WHERE u.user_id = s.session_user_id
            AND u.group_id IN (4, 5)
            AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . '
            AND s.session_viewonline = 1
            ORDER BY s.session_viewonline'; 
und tausche aus gegen:
  • Code: Alles auswählen

    // Check what group a user is in
    if ( !function_exists('group_memberships') )
    {
        include($phpbb_root_path . 'includes/functions_user.'.$phpEx);
    }
    
    $groups = group_memberships(array(4, 5), false, false);
    foreach ($groups as $grouprec)
    {
        $user_ids_groups[] = $grouprec['user_id'];
    }
    
    $sql_array = array(
        'SELECT'    => 'u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_time, s.session_viewonline',
    
        'FROM'        => array(
            USERS_TABLE        => 'u',
            SESSIONS_TABLE    => 's'
        ),
    
        'WHERE'        => 'u.user_id = s.session_user_id
            AND ' . $db->sql_in_set('u.user_id', $user_ids_groups) . '
            AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . '
            AND s.session_viewonline =1',
    );
    
    $sql = $db->sql_build_query('SELECT', $sql_array);