<?php
if (!defined('IN_PHPBB'))
{
	exit;
}

function haven_user()
{
    if(isset($_COOKIE["forumsess"])) {
	$sid = $_COOKIE["forumsess"];
	$db = dba_open("/srv/www/haven/var/forumsess.db", "r", "db4");
	if(dba_exists($sid, $db)) {
	    return(dba_fetch($sid, $db));
	} else {
	    return(false);
	}
	dba_close($db);
    } else {
	return(false);
    }
}

function autologin_haven()
{
    global $db;
    
    if(($username = haven_user()) === false)
	return(array());

    $sql = 'SELECT *
	    FROM ' . USERS_TABLE . "
	    WHERE username = '" . $db->sql_escape($username) . "'";
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);

    if ($row)
    {
	return ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) ? array() : $row;
    }

    if (!function_exists('user_add'))
    {
	global $phpbb_root_path, $phpEx;

	include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
    }

    user_add(user_row_haven($username));

    $sql = 'SELECT *
            FROM ' . USERS_TABLE . "
	    WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);

    if ($row)
    {
	return $row;
    }
    
    return(array());
}

function user_row_haven($username)
{
	global $db, $config, $user;
	// first retrieve default group id
	$sql = 'SELECT group_id
		FROM ' . GROUPS_TABLE . "
		WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
		AND group_type = " . GROUP_SPECIAL;
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	if (!$row)
	{
		trigger_error('NO_GROUP');
	}

	// generate user account data
	return array(
		'username'		=> $username,
		'user_password'	=> '',
		'user_email'	=> '',
		'group_id'		=> (int) $row['group_id'],
		'user_type'		=> USER_NORMAL,
		'user_ip'		=> $user->ip,
	);
}

function validate_session_haven(&$user)
{
    return(haven_user() === $user["username"]);
}
?>
