function spa_get_members_info($userid)
{
    $data = sp_get_member_row($userid);
    if (empty($data)) {
        return '';
    }
    $first = spdb_select('row', '
			SELECT ' . SFPOSTS . '.forum_id, forum_name, forum_slug, ' . SFPOSTS . '.topic_id, topic_name, topic_slug, post_date
			FROM ' . SFPOSTS . '
			JOIN ' . SFTOPICS . ' ON ' . SFTOPICS . '.topic_id = ' . SFPOSTS . '.topic_id
			JOIN ' . SFFORUMS . ' ON ' . SFFORUMS . '.forum_id = ' . SFPOSTS . '.forum_id
			WHERE ' . SFPOSTS . ".user_id={$userid}\n\t\t\tORDER BY post_date ASC\n\t\t\tLIMIT 1");
    if ($first) {
        $url = '<a href="' . sp_build_url($first->forum_slug, $first->topic_slug, 1, 0) . '">' . sp_filter_title_display($first->topic_name) . '</a>';
        $data['first'] = sp_filter_title_display($first->forum_name) . '<br />' . $url . '<br />' . sp_date('d', $first->post_date);
    } else {
        $data['first'] = spa_text('No Posts');
    }
    $last = spdb_select('row', '
			SELECT ' . SFPOSTS . '.forum_id, forum_name, forum_slug, ' . SFPOSTS . '.topic_id, topic_name, topic_slug, post_date
			FROM ' . SFPOSTS . '
			JOIN ' . SFTOPICS . ' ON ' . SFTOPICS . '.topic_id = ' . SFPOSTS . '.topic_id
			JOIN ' . SFFORUMS . ' ON ' . SFFORUMS . '.forum_id = ' . SFPOSTS . '.forum_id
			WHERE ' . SFPOSTS . ".user_id={$userid}\n\t\t\tORDER BY post_date DESC\n\t\t\tLIMIT 1");
    if ($last) {
        $url = '<a href="' . sp_build_url($last->forum_slug, $last->topic_slug, 1, 0) . '">' . sp_filter_title_display($last->topic_name) . '</a>';
        $data['last'] = sp_filter_title_display($last->forum_name) . '<br />' . $url . '<br />' . sp_date('d', $last->post_date);
    } else {
        $data['last'] = spa_text('No posts');
    }
    if ($data['admin']) {
        $user_memberships = 'Admin';
        $status = 'Admin';
        $start = 0;
    } else {
        if ($data['moderator']) {
            $status = 'Moderator';
            $start = 1;
        } else {
            $status = 'User';
            $start = 1;
        }
    }
    $memberships = spdb_table(SFMEMBERSHIPS, "user_id={$userid}", '', '', '', ARRAY_A);
    if ($memberships) {
        foreach ($memberships as $membership) {
            $name = spdb_table(SFUSERGROUPS, 'usergroup_id=' . $membership['usergroup_id'], 'usergroup_name');
            if ($start) {
                $user_memberships = $name;
                $start = 0;
            } else {
                $user_memberships .= ', ' . $name;
            }
        }
    } else {
        if ($start) {
            $user_memberships = 'No Memberships';
        }
    }
    $data['memberships'] = $user_memberships;
    $rank = sp_get_user_forum_rank($status, $userid, $data['posts']);
    $data['rank'] = $rank[0]['name'];
    $user = get_userdata($userid);
    $data['login'] = $user->user_login;
    return $data;
}
function sp_update_member_data($userid)
{
    if (!$userid) {
        return '';
    }
    # are we syncing display names between WP and SPF?
    $member = sp_get_member_row($userid);
    $options = unserialize($member['user_options']);
    if ($options['namesync']) {
        $display_name = sp_filter_name_save(spdb_table(SFUSERS, "ID={$userid}", 'display_name'));
        sp_update_member_item($userid, 'display_name', $display_name);
        # update recent members list
        sp_update_newuser_name($member['display_name'], $display_name);
    }
}