Modul mod_whosonline nur bestimmte Namen zeigen

  • aldra13
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
16 März 2010 20:57 #25245 von aldra13
Hallo, zusammen!
Ich habe folgendes Problem:
Ich benutze auf meiner Seite das Standardmodul von Joomla mod_whosonline, um die Anzahl der Gäste / Besucher und die Namen angemeldeter User anzuzeigen. Da ich auf meiner Seite ein Forum betreibe und es adann vorkommen kann, dass sehr viele Besucher gleichzeitig angemeldet sind, möchte ich die Anzeige der Namen auf die von Admins und Moderatoren des Forums beschränken. So sieht jeder Seitenbesucher sofort, ob Moderatoren für das Forum online sind.
Das ist mir wichtig, da es das Forum einer Selbsthilfegruppe ist, wo einige User froh sind, einen Ansprechpartner zu finden.
Kann man diese Beschränkung auf bestimmte Benutzer (Superadministratorer und Administratoren) irgendwie erreichen, indem man die function getOnlineMemberNames() in der helper.php ändert?

Vielleicht weiß ja jemand was dazu?!

Gruß, Alex

Meine Joomla-Version: 1.5.15

Hier der Code der Funktion in der helper.php, der vermutlich umgemodelt werden muss:
Code:
function getOnlineMemberNames() { $db =& JFactory::getDBO(); $result = null; $query = 'SELECT DISTINCT a.username' . ' FROM #__session AS a' . ' WHERE client_id = 0' . ' AND a.guest = 0'; $db->setQuery($query); $result = $db->loadObjectList(); if ($db->getErrorNum()) { JError::raiseWarning( 500, $db->stderr() ); } return $result; }

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
16 März 2010 23:03 #25246 von Tribal6
Hi Alex

Das geht schon, du müsstest aber in der besagten Query zusätzlich noch die Tabelle mit den Admins und Moderatoren des Forums mit einem Join referenzieren. Kommt halt drauf an, welches Forum du benutzt, und wie die Tabellenstruktur der Forums-Benutzerverwaltung aussieht.

Das mod_whosonline fragt "nur" die Joomla-Session-Tabelle ab, und da kannst du höchstens nach Joomla-Usertypen filtern, etwa so:
Code:
function getOnlineMemberNames() { $db =& JFactory::getDBO(); $result = null; $query = 'SELECT DISTINCT a.username' . ' FROM #__session AS a' . ' WHERE a.client_id = 0' . ' AND a.guest = 0' . ' AND (a.usertype = 'Super Administrator' OR a.usertype = 'Administrator'); $db->setQuery($query); $result = $db->loadObjectList(); if ($db->getErrorNum()) { JError::raiseWarning( 500, $db->stderr() ); } return $result; }

Aber auf dem richtigen Weg bist du immerhin schon ;)

Cheers
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • aldra13
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
16 März 2010 23:35 #25247 von aldra13
Hi, Roger!
Ich habs mir rel. einfach gemacht: Alle Admins und Superadmins sind gleichzeitig Forumsmoderatoren. Daher kann ich das ganze nur auf die Abfrage reduzieren ob einer Administrator oder Superadministrator ist.

Bin php-Anfänger! Kannst du mir noch mal auf die Sprünge helfen?
Reicht deine Ergänzung in dem Code-Schnipsel dafür aus?

Es soll die korrekte Anzahl aller Gäste und Benutzer der Seite, aber nur die Namen der angemeldeten Admins und Superadmins angezeigt werden. Andere registrierte und angemeldete User sollen aber als Benutzer gezählt werden:

z.B.:
Auf der Seite sind 10 Gäste, 4 angemeldete User, moderator1=Administrator (angemeldet), moderator2=Superadministrator (angemeldet)

gewünschte Modul-Anzeige im Frontend:

Wir haben 10 Gäste und 6 Benutzer online
-> moderator1
-> moderator2

Wäre wirklich dankbar für deine Hilfe!

Gruß, Alex

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
17 März 2010 08:15 #25249 von Tribal6
Wenn dem so ist, dann müsste meine geänderte Query für deine Zwecke schon ausreichen:
Die liest in diesem Beispiel nur die Benutzernamen der Usertypen 'Super Administrator' und 'Administrator' aus.
Einfach mal ausprobieren ;)

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • aldra13
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
17 März 2010 15:34 #25253 von aldra13
Hi, Roger!

Funktioniert leider nicht:
Frontend wird nicht mehr angezeigt (weiße Seite).
Dafür Fehlermeldung:
"Parse error: syntax error, unexpected T_STRING in [...] \modules\mod_whosonline\helper.php on line 66"

Zeile 66 enthält:
Code:
' AND (a.usertype = 'Super Administrator' OR a.usertype = 'Administrator');

Hier noch mal der komplette Code der (geänderten) helper.php:
Code:
<?php /** * @version $Id: helper.php 10381 2008-06-01 03:35:53Z pasamio $ * @package Joomla * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // no direct access defined('_JEXEC') or die('Restricted access'); class modWhosonlineHelper { // show online count function getOnlineCount() { $db =& JFactory::getDBO(); $sessions = null; // calculate number of guests and members $result = array(); $user_array = 0; $guest_array = 0; $query = 'SELECT guest, usertype, client_id' . ' FROM #__session' . ' WHERE client_id = 0'; $db->setQuery($query); $sessions = $db->loadObjectList(); if ($db->getErrorNum()) { JError::raiseWarning( 500, $db->stderr() ); } if (count($sessions)) { foreach ($sessions as $session) { // if guest increase guest count by 1 if ($session->guest == 1 && !$session->usertype) { $guest_array ++; } // if member increase member count by 1 if ($session->guest == 0) { $user_array ++; } } } $result&#91;'user'&#93; = $user_array; $result&#91;'guest'&#93; = $guest_array; return $result; } // show online member names function getOnlineMemberNames() { $db =& JFactory::getDBO(); $result = null; $query = 'SELECT DISTINCT a.username' . ' FROM #__session AS a' . ' WHERE a.client_id = 0' . ' AND a.guest = 0' . ' AND (a.usertype = 'Super Administrator' OR a.usertype = 'Administrator'); $db->setQuery($query); $result = $db->loadObjectList(); if ($db->getErrorNum()) { JError::raiseWarning( 500, $db->stderr() ); } return $result; } }

Ist nicht ganz der gewünschte Effekt, wenn die Seite gar nicht mehr angezeigt wird. ;)

Gruß, Alex

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
17 März 2010 15:47 #25254 von Tribal6
...das denke ich auch, ich hab die Query nur im phpMyAdmin ausprobiert, nicht im File. Und da sind die Hochkommas "schief".

Ersetz mal das da
Code:
' AND (a.usertype = 'Super Administrator' OR a.usertype = 'Administrator');

mit dem da
Code:
' AND (a.usertype = \'Super Administrator\' OR a.usertype = \'Administrator\')';

Bei mir läuft's jetzt so. ;)

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • aldra13
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
17 März 2010 16:05 #25255 von aldra13
Das war's auch bei mir!
Funktioniert jetzt genau wie gewollt. :D

Vielen Dank für die schnelle und perfekte Hilfe! G_O_O_D O_O_D

Gruß, Alex

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
17 März 2010 21:07 #25259 von Tribal6
Yo, gerngeschehn....

....dafür ist das Forum ja schliesslich da ;)

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Buffyison
  • Neues Mitglied
  • Neues Mitglied
Mehr
15 Sep. 2010 23:45 #27052 von Buffyison
Hallo Zusammen

Ich schleich mich mal in diesem Thread ein.

Weil ich denke hier bin ich meiner Frage etwas näher,also ich suche/versuche in der mod_whosonline

folgendes zu ändern "Wir haben 14 Gäste online
1 Mitglied liest --ALTER LINK WURDE ENTFERNT-- "

Aber komme leider auf den Funken wie ich das umsetzten könnte man hat mir in 2 Foren gesagt ich sollte besser auf schon bestehnde Module zurück greifen aber für das Joomla 1.5 gibt es ja nur das mod_whosonline Modul.

nach einigem suchen habe ich das gefunden
Code:
echo $row&#91;'ip'&#93;." liest gerade ".$row&#91;'where'&#93;;

Ich weiss nicht ob ich das einsetzten kann,weil wenn würde ich es ja so dann schreiben
Code:
echo $row&#91;'user&#93;." liest gerade ".$row&#91;'where'&#93;;

Hoffe das Ihr einen Tip für mich habt.

Gruss ANdrea

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Buffyison
  • Neues Mitglied
  • Neues Mitglied
Mehr
16 Sep. 2010 20:17 #27061 von Buffyison
Hallo

Schade ich werd noch verrückt das muss doch ürgentwie gehen HILFE *Heul

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden