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);
}