function login($user, $pass, $remember = 0, $prevpage = '/', $newuser = FALSE)
{
    // only go further if the user exists and has given us a valid password
    if (file_exists("{$_SERVER['PWUSERS_DIR']}/{$user}/userinfo.dat") && user_is_valid($user, $pass)) {
        parse_str(user_read_info($user));
        // sets the expiry of the cookie to 3 hours from now, or 5 years
        if ($remember) {
            $time = time() + 86400 * 365 * 5;
        } else {
            $time = 0;
        }
        $cookie_name = $_SERVER['AUTH_COOKIE'];
        $cookie_data = user_get_fingerprint($user, $pass);
        $cookie_host = $_SERVER['HTTP_HOST'];
        if (substr_count($cookie_host, '.') < 2) {
            $cookie_host = ".{$cookie_host}";
        }
        $cookie_host = str_replace('www', '', $cookie_host);
        setcookie($cookie_name, $cookie_data, $time, $_SERVER['WEB_ROOT'] . "/", $cookie_host);
        setcookie('remember', "remember={$remember}", time() + 86400 * 365 * 5, $_SERVER['WEB_ROOT'] . "/", $cookie_host);
        if ($prevpage === FALSE) {
            $prevpage = '/';
        }
        Header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['WEB_ROOT']}/scripts/cookie-test.php?fingerprint_v4={$cookie_data}&newuser={$newuser}&redirect_page={$prevpage}");
    } else {
        redirect("/failed");
        /*		echo "<div class='alert'><h1>Login failed for $user.</h1> Double check the username and password you provided, and try again. If you keep getting this message and you shouldn't, email <a href='mailto:help@planwatch.org'>help@planwatch.org</a></div>
        		<form action='/scripts/form_shim.php' method='post' name='loginForm'>
        		user <input id='login_username' type='text' name='user' size='10' />
        		pass <input id='login_userpass' type='password'  name='pass' size='6' />
        		<input type='checkbox' name='remember' id='remember' value='1' />
        		<label for='remember'>remember me</label>
        		<input type='hidden' name='action' value='login'/>
        		<input type='submit' name='action' value='login' onclick='document.forms.loginForm.submit();' />
        		<input type='hidden' name='prevpage' value=''/>
        	</form>"*/
    }
}
    $nolinebreaks = TRUE;
}
if (stristr($message_parsed['Subject'], 'nofeed') === TRUE) {
    $nofeed = "<!--no feed-->";
}
if (stristr($message_parsed['Subject'], 'markdown') === TRUE) {
    $markdown = "<!--markdown-->";
}
$_SERVER['EMAIL_POST'] = TRUE;
$_SERVER['EMAIL_FROM'] = $message_parsed['From'][0]['address'];
set_include_path('/home/planwatc/public_html/v4:/home/planwatc/public_html/v4/scripts:..:.:/home/planwatc/public_html/v4/backend:/home/planwatc/public_html/v4/resources/skins:/home/planwatc/public_html/v4/scripts/standard_library');
include_once "siteconfig.php";
include_once "essential.php";
include_once 'user_info_functions.php';
// find out about the writer
user_read_info($writer, TRUE);
// if the secret word matches, authenticate the user
if ($secretword && $secretword == $_SERVER['USERINFO_ARRAY']['secretword']) {
    $message_parsed['Subject'] = str_replace($_SERVER['USERINFO_ARRAY']['removefromtitles'], '', $message_parsed['Subject']);
    $post_params['action'] = 'Update Journaling Plan';
    $post_params['writer'] = $writer;
    $post_params['private'] = $private;
    $post_params['nolinebreaks'] = $nolinebreaks;
    $post_params['nofeed'] = $nofeed;
    $post_params['markdown'] = $markdown;
    $post_params['newplan'] = $message_parsed['Data'] . "<!--TITLE {$message_parsed['Subject']}--><!--nolinebreaks-->";
    //."<!--email post\n".serialize($message_parsed)."-->";
    $post_params['sid'] = user_get_fingerprint($_SERVER['USER'], $_SERVER['USERINFO_ARRAY']['userpass']);
    $post_params['mailpost'] = 1;
    $request_url = "http://planwatch.org/scripts/plan_update.php";
    $ch = curl_init();
function blogger_getUserInfo($m)
{
    $appkey = $m->getParam(0);
    // discarded
    $username = $m->getParam(1);
    $password = $m->getParam(2);
    unset($appkey);
    // this is just to drive the point home that we aren't using appkey.
    // i suppose we could log the appkeys just for the heck of it.
    $username = $username->scalarval();
    $password = $password->scalarval();
    if (user_is_valid($username, $password)) {
        parse_str(user_read_info($username), $userinfo);
    }
    list($firstname, $lastname) = explode(' ', $userinfo['real_name']);
    $returnlist['nickname'] = new xmlrpcval($username, 'string');
    $returnlist['userid'] = new xmlrpcval($username, 'string');
    $returnlist['firstname'] = new xmlrpcval($firstname, 'string');
    $returnlist['lastname'] = new xmlrpcval($lastname, 'string');
    $returnlist['nickname'] = new xmlrpcval($userinfo['email'], 'string');
    $returnlist['url'] = new xmlrpcval("http://planwatch.org/read/{$username}", 'string');
    $xmlarray = new xmlrpcval(array(xmlrpc_encode($returnlist)), 'array');
    $returnval = new xmlrpcresp($xmlarray);
    // if we generated an error, create an error return response
    if ($err) {
        return new xmlrpcresp(0, $xmlrpcerruser, $err);
    } else {
        // otherwise, we create the right response
        return $returnval;
    }
}
function user_is_valid($user = '', $pass = '')
{
    $valid = FALSE;
    if ($user && $user != 'guest') {
        if (file_exists("{$_SERVER['PWUSERS_DIR']}/{$user}/userinfo.dat")) {
            extract(unserialize(file_get_contents("{$_SERVER['PWUSERS_DIR']}/{$user}/userinfo.dat")));
        } else {
            parse_str(user_read_info($user));
        }
        if (strtolower($user) == strtolower($username) && strtolower($pass) == strtolower($userpass)) {
            $valid = TRUE;
        } else {
            $valid = FALSE;
        }
    }
    return $valid;
}
function plan_is_local($planowner)
{
    $valid = 0;
    $planowner = trim($planowner);
    parse_str(user_read_info(plan_repair_local_name($planowner)));
    if (strpos($plantype, 'local') !== FALSE) {
        $valid = 1;
    }
    if (strpos($plantype, 'planwatch') !== FALSE) {
        $valid = 1;
    }
    if ($plantype == '' && file_exists("{$_SERVER['PWUSERS_DIR']}/{$planowner}/userinfo.dat")) {
        $valid = 1;
    }
    return $valid;
}