[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |