function user_download_csv($userids, $fields, $includecompanyfield)
{
    global $CFG, $SESSION, $DB;
    require_once $CFG->dirroot . '/user/profile/lib.php';
    $filename = clean_filename(get_string('users') . '.csv');
    header("Content-Type: application/download\n");
    header("Content-Disposition: attachment; filename={$filename}");
    header("Expires: 0");
    header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
    header("Pragma: public");
    $delimiter = get_string('listsep', 'langconfig');
    $encdelim = '&#' . ord($delimiter);
    $row = array();
    foreach ($fields as $fieldname) {
        if ($includecompanyfield || $fieldname != "profile_field_company") {
            $row[] = str_replace($delimiter, $encdelim, $fieldname);
        }
    }
    $row[] = "temppassword";
    echo implode($delimiter, $row) . "\n";
    foreach ($userids as $userid) {
        // Stop the script from timing out on large numbers of users.
        set_time_limit(30);
        $row = array();
        if (!($user = $DB->get_record('user', array('id' => $userid)))) {
            continue;
        }
        profile_load_data($user);
        foreach ($fields as $field => $unused) {
            // Stop the script from timing out on large numbers of users.
            set_time_limit(30);
            if ($includecompanyfield || $field != "profile_field_company") {
                $row[] = str_replace($delimiter, $encdelim, $user->{$field});
            }
        }
        $row[] = str_replace($delimiter, $encdelim, company_user::get_temporary_password($user));
        echo implode($delimiter, $row) . "\n";
    }
    die;
}