67 lines
2.0 KiB
PHP
67 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 1999-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (GPL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/gpl.
|
|
*
|
|
* @author Chuck Hagenbuch <chuck@horde.org>
|
|
* @package Kronolith
|
|
*/
|
|
|
|
require_once __DIR__ . '/lib/Application.php';
|
|
Horde_Registry::appInit('kronolith', array('authentication' => 'none', 'session_control' => 'none'));
|
|
|
|
// Determine the username to show free/busy time for.
|
|
$cal = Horde_Util::getFormData('c');
|
|
$user = Horde_Util::getFormData('u');
|
|
if (!empty($cal)) {
|
|
if (is_array($cal)) {
|
|
$cal = implode('|', $cal);
|
|
}
|
|
} elseif ($pathInfo = Horde_Util::getPathInfo()) {
|
|
$user = basename($pathInfo);
|
|
}
|
|
|
|
$cache = $injector->getInstance('Horde_Cache');
|
|
$key = 'kronolith.fb.' . ($user ? 'u.' . $user : 'c.' . $cal);
|
|
$fb = $cache->get($key, 360);
|
|
if (!$fb) {
|
|
if ($user) {
|
|
$prefs = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Prefs')->create('kronolith', array(
|
|
'cache' => false,
|
|
'user' => $user
|
|
));
|
|
$registry->setTimeZone();
|
|
$cal = @unserialize($prefs->getValue('fb_cals'));
|
|
if (is_array($cal)) {
|
|
$cal = implode('|', $cal);
|
|
}
|
|
|
|
// If the free/busy calendars preference is empty, default to
|
|
// the user's default_share preference, and if that's empty,
|
|
// to their username.
|
|
if (!$cal) {
|
|
$cal = $prefs->getValue('default_share');
|
|
if (!$cal) {
|
|
$cal = $user;
|
|
}
|
|
$cal = 'internal_' . $cal;
|
|
}
|
|
}
|
|
|
|
try {
|
|
$fb = Kronolith_FreeBusy::generate(explode('|', $cal), null, null, false, $user);
|
|
} catch (Exception $e) {
|
|
Horde::log($e, 'ERR');
|
|
exit;
|
|
}
|
|
$cache->set($key, $fb);
|
|
}
|
|
|
|
$browser->downloadHeaders(($user ? $user : $cal) . '.vfb',
|
|
'text/calendar; charset=' . 'UTF-8',
|
|
true,
|
|
strlen($fb));
|
|
echo $fb;
|