[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/modules/mod_whosonline/src/Helper/ -> WhosonlineHelper.php (source)

   1  <?php
   2  
   3  /**
   4   * @package     Joomla.Site
   5   * @subpackage  mod_whosonline
   6   *
   7   * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
   8   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   9   */
  10  
  11  namespace Joomla\Module\Whosonline\Site\Helper;
  12  
  13  use Joomla\CMS\Factory;
  14  
  15  // phpcs:disable PSR1.Files.SideEffects
  16  \defined('_JEXEC') or die;
  17  // phpcs:enable PSR1.Files.SideEffects
  18  
  19  /**
  20   * Helper for mod_whosonline
  21   *
  22   * @since  1.5
  23   */
  24  class WhosonlineHelper
  25  {
  26      /**
  27       * Show online count
  28       *
  29       * @return  array  The number of Users and Guests online.
  30       *
  31       * @since   1.5
  32       **/
  33      public static function getOnlineCount()
  34      {
  35          $db = Factory::getDbo();
  36  
  37          // Calculate number of guests and users
  38          $result      = [];
  39          $user_array  = 0;
  40          $guest_array = 0;
  41  
  42          $whereCondition = Factory::getApplication()->get('shared_session', '0') ? 'IS NULL' : '= 0';
  43  
  44          $query = $db->getQuery(true)
  45              ->select('guest, client_id')
  46              ->from('#__session')
  47              ->where('client_id ' . $whereCondition);
  48          $db->setQuery($query);
  49  
  50          try {
  51              $sessions = (array) $db->loadObjectList();
  52          } catch (\RuntimeException $e) {
  53              $sessions = [];
  54          }
  55  
  56          if (\count($sessions)) {
  57              foreach ($sessions as $session) {
  58                  // If guest increase guest count by 1
  59                  if ($session->guest == 1) {
  60                      $guest_array++;
  61                  }
  62  
  63                  // If member increase member count by 1
  64                  if ($session->guest == 0) {
  65                      $user_array++;
  66                  }
  67              }
  68          }
  69  
  70          $result['user']  = $user_array;
  71          $result['guest'] = $guest_array;
  72  
  73          return $result;
  74      }
  75  
  76      /**
  77       * Show online member names
  78       *
  79       * @param   mixed  $params  The parameters
  80       *
  81       * @return  array   (array) $db->loadObjectList()  The names of the online users.
  82       *
  83       * @since   1.5
  84       **/
  85      public static function getOnlineUserNames($params)
  86      {
  87          $whereCondition = Factory::getApplication()->get('shared_session', '0') ? 'IS NULL' : '= 0';
  88  
  89          $db    = Factory::getDbo();
  90          $query = $db->getQuery(true)
  91              ->select($db->quoteName(['a.username', 'a.userid', 'a.client_id']))
  92              ->from($db->quoteName('#__session', 'a'))
  93              ->where($db->quoteName('a.userid') . ' != 0')
  94              ->where($db->quoteName('a.client_id') . ' ' . $whereCondition)
  95              ->group($db->quoteName(['a.username', 'a.userid', 'a.client_id']));
  96  
  97          $user = Factory::getUser();
  98  
  99          if (!$user->authorise('core.admin') && $params->get('filter_groups', 0) == 1) {
 100              $groups = $user->getAuthorisedGroups();
 101  
 102              if (empty($groups)) {
 103                  return array();
 104              }
 105  
 106              $query->leftJoin($db->quoteName('#__user_usergroup_map', 'm'), $db->quoteName('m.user_id') . ' = ' . $db->quoteName('a.userid'))
 107                  ->leftJoin($db->quoteName('#__usergroups', 'ug'), $db->quoteName('ug.id') . ' = ' . $db->quoteName('m.group_id'))
 108                  ->whereIn($db->quoteName('ug.id'), $groups)
 109                  ->where($db->quoteName('ug.id') . ' <> 1');
 110          }
 111  
 112          $db->setQuery($query);
 113  
 114          try {
 115              return (array) $db->loadObjectList();
 116          } catch (\RuntimeException $e) {
 117              return array();
 118          }
 119      }
 120  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer