<?php
/**
 * iCal import and export via Horde iCalendar classes
 *
 * @link http://www.egroupware.org
 * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
 * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
 * @package calendar
 * @subpackage export
 * @version $Id$
 */

use EGroupware\Api;

$GLOBALS['egw_info'] = array(
	'flags' => array(
		'currentapp' => 'calendar',
		'noheader'   => True,
		'nofooter'   => True,
	),
);
// check if we are loged in, by checking sessionid and kp3, as the sessionid get set automaticaly by php for php4-sessions
if (!($loged_in = @$_REQUEST['sessionid'] && @$_REQUEST['kp3']))
{
	$GLOBALS['egw_info']['flags']['currentapp'] = 'login';
	$GLOBALS['egw_info']['flags']['noapi'] = True;
}
include ('../header.inc.php');

function fail_exit($msg)
{
	echo "<html>\n<head>\n<title>$msg</title>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=".
		Api\Translation::charset()."\" />\n</head>\n<body><h1>$msg</h1>\n</body>\n</html>\n";

	exit();
}

if (!$loged_in)
{
	include ('../phpgwapi/inc/functions.inc.php');
	$GLOBALS['egw_info']['flags']['currentapp'] = 'calendar';
}
// fix for SOGo connector, which does not decode the = in our f/b url
if (strpos($_SERVER['QUERY_STRING'],'=3D') !== false && substr($_GET['user'],0,2) == '3D')
{
	$_GET['user'] = substr($_GET['user'],2);
	if (isset($_GET['password'])) $_GET['password'] = substr($_GET['password'],2);
	if (isset($_GET['cred'])) $_GET['cred'] = substr($_GET['cred'],2);
}
if (!is_numeric($user = $_GET['user']))
{
	// check if user contains the current domain --> remove it
	list(,$domain) = explode('@',$user);
	if ($domain === $GLOBALS['egw_info']['user']['domain'])
	list($user) = explode('@',$user);
	$user = $GLOBALS['egw']->accounts->name2id($user,'account_lid','u');
}
if ($user === false || !($username = $GLOBALS['egw']->accounts->id2name($user)))
{
	fail_exit(lang("freebusy: Unknow user '%1', wrong password or not availible to not loged in users !!!"." $username($user)",$_GET['user']));
}
if (!$loged_in)
{
	if (empty($_GET['cred']))
	{
		$GLOBALS['egw_info']['user']['account_id'] = $user;
		$GLOBALS['egw_info']['user']['account_lid'] = $username;
		$GLOBALS['egw']->preferences->account_id = $user;
		$GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->read_repository();
		$cal_prefs = &$GLOBALS['egw_info']['user']['preferences']['calendar'];
		$loged_in = !empty($cal_prefs['freebusy']) &&
			(empty($cal_prefs['freebusy_pw']) || $cal_prefs['freebusy_pw'] == $_GET['password']);
	}
	else
	{
		$credentials = base64_decode($_GET['cred']);
		list($authuser, $password) = explode(':', $credentials, 2);
		if (strpos($authuser, '@') === false)
		{
			$domain = $GLOBALS['egw_info']['server']['default_domain'];
			$authuser .= '@' . $domain;
		}
		else
		{
			list(, $domain) = explode('@',$authuser, 2);
		}
		if (array_key_exists($domain, $GLOBALS['egw_domain']))
		{
			$_POST['login'] = $authname;
			$_REQUEST['domain'] = $domain;
			$GLOBALS['egw_info']['server']['default_domain'] = $domain;
			$GLOBALS['egw_info']['user']['domain'] = $domain;
			$GLOBALS['egw_info']['flags']['currentapp'] = 'login';
			$GLOBALS['egw_info']['flags']['noapi'] = false;
			require_once(EGW_API_INC . '/functions.inc.php');
			$loged_in =  $GLOBALS['egw']->session->create($authuser, $password, 'text');
			session_unset();
			session_destroy();
		}
	}
	if (!$loged_in)
	{
		fail_exit(lang("freebusy: Unknow user '%1', or not available for unauthenticated users!", $_GET['user']));
	}
}
if ($_GET['debug'])
{
	echo "<pre>";
}
else
{
	Api\Header\Content::type('freebusy.ifb','text/calendar');
}
$ical = new calendar_ical();
echo $ical->freebusy($user, $_GET['end']);