Json::members PHP Method

members() public method

Members
public members ( ) : string
return string
  public function members()
  {
    $this->initialize();

    if ($this->check_xhr_required())
    {
      return '';
    }

    $default_fields = array(
      'm.member_id',
      'm.group_id',
      'm.username',
      'm.screen_name',
      'm.email',
      'm.signature',
      'm.avatar_filename',
      'm.avatar_width',
      'm.avatar_height',
      'm.photo_filename',
      'm.photo_width',
      'm.photo_height',
      'm.url',
      'm.location',
      'm.occupation',
      'm.interests',
      'm.bio',
      'm.join_date',
      'm.last_visit',
      'm.last_activity',
      'm.last_entry_date',
      'm.last_comment_date',
      'm.last_forum_post_date',
      'm.total_entries',
      'm.total_comments',
      'm.total_forum_topics',
      'm.total_forum_posts',
      'm.language',
      'm.timezone',
      'm.bday_d',
      'm.bday_m',
      'm.bday_y',
    );

    if (version_compare(APP_VER, '2.6', '<'))
    {
      $default_fields[] = 'm.daylight_savings';
    }

    $query = ee()->db->select('m_field_id, m_field_name')
                     ->get('member_fields');

    $custom_fields = $query->result_array();

    $query->free_result();

    $select = array();

    if ( ! empty($this->fields))
    {
      foreach ($default_fields as $field)
      {
        $key = substr($field, 2);

        if (in_array($key, $this->fields))
        {
          $select[] = $field;
        }
      }
    }
    else
    {
      $select = $default_fields;
    }

    foreach ($custom_fields as &$field)
    {
      if (empty($this->fields) || in_array($field['m_field_name'], $this->fields))
      {
        $select[] = 'd.'.ee()->db->protect_identifiers('m_field_id_'.$field['m_field_id']).' AS '.ee()->db->protect_identifiers($field['m_field_name']);
      }
    }

    ee()->db->select(implode(', ', $select), FALSE)
            ->from('members m')
            ->join('member_data d', 'm.member_id = d.member_id');

    if ($member_ids = ee()->TMPL->fetch_param('member_id'))
    {
      if ($member_ids === 'CURRENT_USER')
      {
        $member_ids = ee()->session->userdata('member_id');
      }

      ee()->db->where_in('m.member_id', explode('|', $member_ids));
    }
    else if (ee()->TMPL->fetch_param('username'))
    {
      ee()->db->where_in('m.member_id', explode('|', ee()->TMPL->fetch_param('member_id')));
    }

    if (ee()->TMPL->fetch_param('group_id'))
    {
      ee()->db->where_in('m.group_id', explode('|', ee()->TMPL->fetch_param('group_id')));
    }

    if (ee()->TMPL->fetch_param('limit'))
    {
      ee()->db->limit(ee()->TMPL->fetch_param('limit'));
    }

    if (ee()->TMPL->fetch_param('offset'))
    {
      ee()->db->offset(ee()->TMPL->fetch_param('offset'));
    }

    $query = ee()->db->get();

    $members = $query->result_array();

    $query->free_result();

    $date_fields = array(
      'join_date',
      'last_visit',
      'last_activity',
      'last_entry_date',
      'last_comment_date',
      'last_forum_post_date'
    );

    foreach ($members as &$member)
    {
      foreach ($date_fields as $field)
      {
        if (isset($member[$field]))
        {
          $member[$field] = $this->date_format($member[$field]);
        }
      }
    }

    return $this->respond($members);
  }