erLhcoreClassModelUser::getUserList PHP Method

getUserList() public static method

public static getUserList ( $paramsSearch = [] )
    public static function getUserList($paramsSearch = array())
    {
        $paramsDefault = array('limit' => 500000, 'offset' => 0);
        $params = array_merge($paramsDefault, $paramsSearch);
        $session = erLhcoreClassUser::getSession();
        $q = $session->createFindQuery('erLhcoreClassModelUser');
        $conditions = array();
        if (!isset($paramsSearch['smart_select'])) {
            if (isset($params['filter']) && count($params['filter']) > 0) {
                foreach ($params['filter'] as $field => $fieldValue) {
                    $conditions[] = $q->expr->eq($field, $q->bindValue($fieldValue));
                }
            }
            if (isset($params['filterin']) && count($params['filterin']) > 0) {
                foreach ($params['filterin'] as $field => $fieldValue) {
                    $conditions[] = $q->expr->in($field, $fieldValue);
                }
            }
            if (isset($params['filterlt']) && count($params['filterlt']) > 0) {
                foreach ($params['filterlt'] as $field => $fieldValue) {
                    $conditions[] = $q->expr->lt($field, $q->bindValue($fieldValue));
                }
            }
            if (isset($params['filtergt']) && count($params['filtergt']) > 0) {
                foreach ($params['filtergt'] as $field => $fieldValue) {
                    $conditions[] = $q->expr->gt($field, $q->bindValue($fieldValue));
                }
            }
            if (count($conditions) > 0) {
                $q->where($conditions);
            }
            $q->limit($params['limit'], $params['offset']);
            $q->orderBy(isset($params['sort']) ? $params['sort'] : 'id DESC');
        } else {
            $q2 = $q->subSelect();
            $q2->select('pid')->from('lh_users');
            if (isset($params['filter']) && count($params['filter']) > 0) {
                foreach ($params['filter'] as $field => $fieldValue) {
                    $conditions[] = $q2->expr->eq($field, $q->bindValue($fieldValue));
                }
            }
            if (isset($params['filterin']) && count($params['filterin']) > 0) {
                foreach ($params['filterin'] as $field => $fieldValue) {
                    $conditions[] = $q2->expr->in($field, $fieldValue);
                }
            }
            if (isset($params['filterlt']) && count($params['filterlt']) > 0) {
                foreach ($params['filterlt'] as $field => $fieldValue) {
                    $conditions[] = $q2->expr->lt($field, $q->bindValue($fieldValue));
                }
            }
            if (isset($params['filtergt']) && count($params['filtergt']) > 0) {
                foreach ($params['filtergt'] as $field => $fieldValue) {
                    $conditions[] = $q2->expr->gt($field, $q->bindValue($fieldValue));
                }
            }
            if (count($conditions) > 0) {
                $q2->where($conditions);
            }
            $q2->limit($params['limit'], $params['offset']);
            $q2->orderBy(isset($params['sort']) ? $params['sort'] : 'id DESC');
            $q->innerJoin($q->alias($q2, 'items'), 'lh_users.id', 'items.id');
        }
        $objects = $session->find($q);
        return $objects;
    }

Usage Example

コード例 #1
0
 /**
  * Gets pending chats
  */
 public static function getTopTodaysOperators($limit = 100, $offset = 0)
 {
     $time = time() - 24 * 3600;
     $SQL = 'SELECT lh_chat.user_id,count(lh_chat.id) as assigned_chats FROM lh_chat WHERE time > :time AND user_id > 0 GROUP BY user_id';
     $db = ezcDbInstance::get();
     $stmt = $db->prepare($SQL);
     $stmt->bindValue(':time', $time, PDO::PARAM_INT);
     $stmt->setFetchMode(PDO::FETCH_ASSOC);
     $stmt->execute();
     $rows = $stmt->fetchAll();
     $usersID = array();
     foreach ($rows as $item) {
         $usersID[] = $item['user_id'];
     }
     if (!empty($usersID)) {
         $users = erLhcoreClassModelUser::getUserList(array('limit' => $limit, 'filterin' => array('id' => $usersID)));
     }
     $usersReturn = array();
     foreach ($rows as $row) {
         $usersReturn[$row['user_id']] = $users[$row['user_id']];
         $usersReturn[$row['user_id']]->statistic_total_chats = $row['assigned_chats'];
         $usersReturn[$row['user_id']]->statistic_total_messages = erLhcoreClassChat::getCount(array('filtergte' => array('time' => $time), 'filter' => array('user_id' => $row['user_id'])), 'lh_msg');
         $usersReturn[$row['user_id']]->statistic_upvotes = erLhcoreClassChat::getCount(array('filtergte' => array('time' => $time), 'filter' => array('fbst' => 1, 'user_id' => $row['user_id'])));
         $usersReturn[$row['user_id']]->statistic_downvotes = erLhcoreClassChat::getCount(array('filtergte' => array('time' => $time), 'filter' => array('fbst' => 2, 'user_id' => $row['user_id'])));
     }
     return $usersReturn;
 }
All Usage Examples Of erLhcoreClassModelUser::getUserList