function showUsers($option) { global $database, $mainframe, $my, $acl, $mosConfig_list_limit; $limit = $mainframe->getUserStateFromRequest("viewlistlimit", 'limit', $mosConfig_list_limit); $limitstart = $mainframe->getUserStateFromRequest("view{$option}limitstart", 'limitstart', 0); $search = $mainframe->getUserStateFromRequest("search{$option}", 'search', ''); $search = $database->getEscaped(trim(strtolower($search))); $where = array(); if (isset($search) && $search != "") { $where[] = "(a.username LIKE '%{$search}%' OR a.email LIKE '%{$search}%' OR a.name LIKE '%{$search}%')"; } // exclude any child group id's for this user //$acl->_debug = true; $pgids = $acl->get_group_children($my->gid, 'ARO', 'RECURSE'); if (is_array($pgids) && count($pgids) > 0) { $where[] = "(a.gid NOT IN (" . implode(',', $pgids) . "))"; } $query = "SELECT COUNT(*)" . "\n FROM #__users AS a" . (count($where) ? "\nWHERE " . implode(' AND ', $where) : ""); $database->setQuery($query); $total = $database->loadResult(); require_once $GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php'; $pageNav = new mosPageNav($total, $limitstart, $limit); $query = "SELECT a.*, g.name AS groupname, s.userid AS loggedin" . "\n FROM #__users AS a" . "\n INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id" . "\n INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id" . "\n INNER JOIN #__core_acl_aro_groups AS g ON g.group_id = gm.group_id" . "\n LEFT JOIN #__session AS s ON s.userid = a.id" . (count($where) ? "\n WHERE " . implode(' AND ', $where) : "") . "\n GROUP BY a.id" . "\n LIMIT {$pageNav->limitstart}, {$pageNav->limit}"; $database->setQuery($query); $rows = $database->loadObjectList(); if ($database->getErrorNum()) { echo $database->stderr(); return false; } HTML_users::showUsers($rows, $pageNav, $search, $option); }
function showUsers($option) { global $database, $mainframe, $my, $acl, $mosConfig_list_limit; $filter_type = $mainframe->getUserStateFromRequest("filter_type{$option}", 'filter_type', 0); $filter_logged = $mainframe->getUserStateFromRequest("filter_logged{$option}", 'filter_logged', 0); $limit = $mainframe->getUserStateFromRequest("viewlistlimit", 'limit', $mosConfig_list_limit); $limitstart = $mainframe->getUserStateFromRequest("view{$option}limitstart", 'limitstart', 0); $search = $mainframe->getUserStateFromRequest("search{$option}", 'search', ''); $search = $database->getEscaped(trim(strtolower($search))); $where = array(); if (isset($search) && $search != "") { $where[] = "(a.username LIKE '%{$search}%' OR a.email LIKE '%{$search}%' OR a.name LIKE '%{$search}%')"; } if ($filter_type) { if ($filter_type == 'Public Frontend') { $where[] = "a.usertype = 'Registered' OR a.usertype = 'Author' OR a.usertype = 'Editor' OR a.usertype = 'Publisher'"; } else { if ($filter_type == 'Public Backend') { $where[] = "a.usertype = 'Manager' OR a.usertype = 'Administrator' OR a.usertype = 'Super Administrator'"; } else { $where[] = "a.usertype = LOWER( '{$filter_type}' )"; } } } if ($filter_logged == 1) { $where[] = "s.userid = a.id"; } else { if ($filter_logged == 2) { $where[] = "s.userid IS NULL"; } } // exclude any child group id's for this user //$acl->_debug = true; $pgids = $acl->get_group_children($my->gid, 'ARO', 'RECURSE'); if (is_array($pgids) && count($pgids) > 0) { $where[] = "(a.gid NOT IN (" . implode(',', $pgids) . "))"; } $query = "SELECT COUNT(a.id)" . "\n FROM #__users AS a"; if ($filter_logged == 1 || $filter_logged == 2) { $query .= "\n INNER JOIN #__session AS s ON s.userid = a.id"; } $query .= count($where) ? "\n WHERE " . implode(' AND ', $where) : ''; $database->setQuery($query); $total = $database->loadResult(); require_once $GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php'; $pageNav = new mosPageNav($total, $limitstart, $limit); $query = "SELECT a.*, g.name AS groupname" . "\n FROM #__users AS a" . "\n INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id" . "\n INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id" . "\n INNER JOIN #__core_acl_aro_groups AS g ON g.group_id = gm.group_id"; if ($filter_logged == 1 || $filter_logged == 2) { $query .= "\n INNER JOIN #__session AS s ON s.userid = a.id"; } $query .= (count($where) ? "\n WHERE " . implode(' AND ', $where) : "") . "\n GROUP BY a.id" . "\n LIMIT {$pageNav->limitstart}, {$pageNav->limit}"; $database->setQuery($query); $rows = $database->loadObjectList(); if ($database->getErrorNum()) { echo $database->stderr(); return false; } $template = 'SELECT COUNT(s.userid) FROM #__session AS s WHERE s.userid = %d'; $n = count($rows); for ($i = 0; $i < $n; $i++) { $row =& $rows[$i]; $query = sprintf($template, intval($row->id)); $database->setQuery($query); $row->loggedin = $database->loadResult(); } // get list of Groups for dropdown filter $query = "SELECT name AS value, name AS text" . "\n FROM #__core_acl_aro_groups" . "\n WHERE name != 'ROOT'" . "\n AND name != 'USERS'"; $types[] = mosHTML::makeOption('0', T_('- Select Group -')); $database->setQuery($query); $types = array_merge($types, $database->loadObjectList()); $lists['type'] = mosHTML::selectList($types, 'filter_type', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', "{$filter_type}"); // get list of Log Status for dropdown filter $logged[] = mosHTML::makeOption(0, T_('- Select Log Status - ')); $logged[] = mosHTML::makeOption(1, T_('Logged In')); $logged[] = mosHTML::makeOption(2, T_('Not Logged In')); $lists['logged'] = mosHTML::selectList($logged, 'filter_logged', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', "{$filter_logged}"); HTML_users::showUsers($rows, $pageNav, $search, $option, $lists); }