示例#1
0
文件: admin.users.php 项目: cwcw/cms
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);
}
示例#2
0
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);
}