<?php
/**
- * $Horde: kronolith/add.php,v 1.7 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/attend.php,v 1.11 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2005-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Jan Schneider <jan@horde.org>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
*/
@define('AUTH_HANDLER', true);
<?php
/**
- * $Horde: kronolith/attendees.php,v 1.47 2009/01/07 13:05:20 jan Exp $
- *
* Copyright 2004-2007 Code Fusion <http://www.codefusion.co.za/>
* Copyright 2004-2007 Stuart Binge <s.binge@codefusion.co.za>
*
@define('KRONOLITH_BASE', dirname(__FILE__));
require_once KRONOLITH_BASE . '/lib/base.php';
-require_once KRONOLITH_BASE . '/lib/FreeBusy.php';
-require_once KRONOLITH_BASE . '/lib/FBView.php';
-require_once KRONOLITH_BASE . '/lib/Imple.php';
require_once 'Horde/Identity.php';
-require_once 'Horde/UI/Tabs.php';
require_once 'Horde/Variables.php';
// Get the current attendees array from the session cache.
// Perform the specified action, if there is one.
switch ($actionID) {
case 'add':
- require_once 'Mail/RFC822.php';
$parser = new Mail_RFC822;
// Add new attendees. Multiple attendees can be seperated on a single line
// by whitespace and/or commas.
$vfb_html = $attendee_view->render($date);
// Add the ContactAutoCompleter
-Imple::factory('ContactAutoCompleter', array('triggerId' => 'newAttendees'));
+Kronolith_Imple::factory('ContactAutoCompleter', array('triggerId' => 'newAttendees'));
$title = _("Edit attendees");
require KRONOLITH_TEMPLATES . '/common-header.inc';
<?php
/**
- * $Horde: kronolith/contacts.php,v 1.26 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2002-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/data.php,v 1.97 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2001-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Jan Schneider <jan@horde.org>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
*/
function _cleanup()
@define('KRONOLITH_BASE', dirname(__FILE__));
require_once KRONOLITH_BASE . '/lib/base.php';
-require_once 'Horde/Data.php';
if (!$conf['menu']['import_export']) {
require KRONOLITH_BASE . '/index.php';
case EXPORT_ICALENDAR:
require_once 'Horde/Identity.php';
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
$calNames = array();
<?php
/**
- * $Horde: kronolith/day.php,v 1.79 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
require_once dirname(__FILE__) . '/lib/base.php';
<?php
/**
- * $Horde: kronolith/delete.php,v 1.15 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
@define('KRONOLITH_BASE', dirname(__FILE__));
<?php
/**
- * $Horde: kronolith/edit.php,v 1.13 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
function _save(&$event)
<?php
/**
- * $Horde: kronolith/event.php,v 1.12 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
@define('KRONOLITH_BASE', dirname(__FILE__));
<?php
/**
- * $Horde: kronolith/fb.php,v 1.43 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
@define('AUTH_HANDLER', true);
@define('KRONOLITH_BASE', dirname(__FILE__));
$session_control = 'none';
require_once KRONOLITH_BASE . '/lib/base.php';
-require_once KRONOLITH_BASE . '/lib/FreeBusy.php';
-require_once 'Horde/Cache.php';
// We want to always generate UTF-8 iCalendar data.
NLS::setCharset('UTF-8');
<?php
/**
- * $Horde: kronolith/ics.php,v 1.23 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
@define('AUTH_HANDLER', true);
@define('KRONOLITH_BASE', dirname(__FILE__));
$session_control = 'none';
require_once KRONOLITH_BASE . '/lib/base.php';
-require_once 'Horde/Cache.php';
-require_once 'Horde/iCalendar.php';
// We want to always generate UTF-8 iCalendar data.
NLS::setCharset('UTF-8');
@define('KRONOLITH_BASE', dirname(__FILE__));
require_once KRONOLITH_BASE . '/lib/base.php';
-require_once KRONOLITH_BASE . '/lib/Imple.php';
$path = Util::getFormData('imple');
if (!$path) {
$path = explode('/', $path);
$impleName = array_shift($path);
-$imple = Imple::factory($impleName);
+$imple = Kronolith_Imple::factory($impleName);
if (!$imple) {
exit;
}
switch ($ct) {
case 'json':
header('Content-Type: application/json');
- require_once 'Horde/Serialize.php';
echo Horde_Serialize::serialize($result, SERIALIZE_JSON, NLS::getCharset());
break;
<?php
/**
- * $Horde: kronolith/index.php,v 1.35 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
/**
* The Kronolith_Day:: class provides an API for dealing with days.
*
- * $Horde: kronolith/lib/Day.php,v 1.32 2008/10/13 23:00:16 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith_Day extends Horde_Date {
* Kronolith_Driver defines an API for implementing storage backends for
* Kronolith.
*
- * $Horde: kronolith/lib/Driver.php,v 1.303 2008/10/24 21:10:06 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith_Driver {
/**
* Returns a configuration for this driver.
*
- * @since Kronolith 3.0
- *
* @param string $param A parameter name.
*
* @return mixed The parameter value or null if not set.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith_Event {
/**
* Whether this is an all-day event.
*
- * @since Kronolith 3.0
- *
* @var boolean
*/
var $allday = false;
if ($alarm) {
$alarm['start'] = new Horde_Date($alarm['start']);
$alarm['end'] = new Horde_Date($alarm['end']);
- require_once 'Horde/Alarm.php';
$horde_alarm = Horde_Alarm::factory();
$horde_alarm->set($alarm);
}
}
if ($this->start && $this->end) {
- require_once 'Date/Calc.php';
$dur_day_match = Date_Calc::dateDiff($this->start->mday,
$this->start->month,
$this->start->year,
}
if (!$this->_varRenderer) {
- require_once 'Horde/UI/VarRenderer.php';
$this->_varRenderer = Horde_UI_VarRenderer::factory('html');
}
* The Kronolith_Driver_holidays implements support for the PEAR package
* Date_Holidays.
*
- * $Horde: kronolith/lib/Driver/holidays.php,v 1.13 2008/11/15 15:43:24 jan Exp $
- *
* @see http://pear.php.net/packages/Date_Holidays
* @author Stephan Hohmann <webmaster@dasourcerer.net>
* @package Kronolith
- * @since Kronolith 2.2
*/
class Kronolith_Driver_holidays extends Kronolith_Driver {
* The Kronolith_Driver_ical:: class implements the Kronolith_Driver
* API for iCalendar data.
*
- * $Horde: kronolith/lib/Driver/ical.php,v 1.11 2008/04/30 21:32:13 chuck Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.0
* @package Kronolith
*/
class Kronolith_Driver_ical extends Kronolith_Driver {
/**
* Horde Kronolith driver for the Kolab IMAP Server.
- * Copyright 2004-2009 The Horde Project (http://www.horde.org/)
*
- * $Horde: kronolith/lib/Driver/kolab.php,v 1.77 2009/01/06 18:01:01 jan Exp $
+ * Copyright 2004-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
* @author Thomas Jarosch <thomas.jarosch@intra2net.com>
* @author Gunnar Wrobel <wrobel@pardus.de>
* @author Stuart Binge <omicron@mighty.co.za>
- * @since Kronolith 2.0
* @package Kronolith
*/
class Kronolith_Driver_kolab extends Kronolith_Driver {
* The Kronolith_Driver_sql:: class implements the Kronolith_Driver
* API for a SQL backend.
*
- * $Horde: kronolith/lib/Driver/sql.php,v 1.214 2008/10/22 21:14:07 jan Exp $
- *
* @author Luc Saillard <luc.saillard@fr.alcove.com>
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 0.3
* @package Kronolith
*/
class Kronolith_Driver_sql extends Kronolith_Driver {
+++ /dev/null
-<?php
-
-require_once 'Horde/Template.php';
-
-/**
- * This class represent a view of multiple free busy information sets.
- *
- * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information.
- *
- * $Horde: kronolith/lib/FBView.php,v 1.33 2009/01/07 13:05:21 jan Exp $
- *
- * @author Mike Cochrane <mike@graftonhall.co.nz>
- * @author Jan Schneider <jan@horde.org>
- * @package Kronolith
- */
-class Kronolith_FreeBusy_View {
-
- var $_requiredMembers = array();
- var $_optionalMembers = array();
- var $_timeBlocks = array();
-
- var $_startHour;
- var $_endHour;
-
- var $_start;
- var $_end;
-
- function addRequiredMember($vFreebusy)
- {
- $this->_requiredMembers[] = Util::cloneObject($vFreebusy);
- }
-
- function addOptionalMember($vFreebusy)
- {
- $this->_optionalMembers[] = Util::cloneObject($vFreebusy);
- }
-
- function render($day = null)
- {
- global $prefs;
-
- $this->_startHour = floor($prefs->getValue('day_hour_start') / 2);
- $this->_endHour = floor(($prefs->getValue('day_hour_end') + 1) / 2);
-
- $this->_render($day);
-
- require_once 'Horde/iCalendar.php';
- $vCal = new Horde_iCalendar();
- $required = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
- foreach ($this->_requiredMembers as $member) {
- $required->merge($member, false);
- }
- $required->simplify();
-
- $optional = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
- foreach ($this->_optionalMembers as $member) {
- $optional->merge($member, false);
- }
- $optional->simplify();
-
- $optimal = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
- $optimal->merge($required, false);
- $optimal->merge($optional);
-
- $base_url = Horde::selfUrl();
- $base_url = Util::removeParameter($base_url, 'date');
- $base_url = Util::removeParameter($base_url, 'fbview');
- $base_url = Util::addParameter($base_url, 'fbview', $this->view);
-
- $template = &new Horde_Template();
- $template->set('title', $this->_title());
-
- $html = $template->fetch(KRONOLITH_TEMPLATES . '/fbview/header.html') .
- '<div class="fbgrid">';
-
- $hours_html = $this->_hours();
-
- // Set C locale to avoid localized decimal separators during CSS width
- // calculation.
- $lc = setlocale(LC_NUMERIC, 0);
- setlocale(LC_NUMERIC, 'C');
-
- // Required to attend.
- if (count($this->_requiredMembers) > 0) {
- $template = new Horde_Template();
- $rows = '';
- foreach ($this->_requiredMembers as $member) {
- $member->simplify();
- $blocks = $this->_getBlocks($member, $member->getBusyPeriods(), 'busyblock.html', _("Busy"));
- $template = new Horde_Template();
- $template->set('blocks', $blocks);
- $template->set('name', $member->getName());
- $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
- }
-
- $template = new Horde_Template();
- $template->set('title', _("Required Attendees"));
- $template->set('rows', $rows);
- $template->set('span', count($this->_timeBlocks));
- $template->set('hours', $hours_html);
- $template->set('legend', '');
- $html .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html');
- }
-
- // Optional to attend.
- if (count($this->_optionalMembers) > 0) {
- $template = new Horde_Template();
- $rows = '';
- foreach ($this->_optionalMembers as $member) {
- $member->simplify();
- $blocks = $this->_getBlocks($member, $member->getBusyPeriods(), 'busyblock.html', _("Busy"));
- $template = new Horde_Template();
- $template->set('blocks', $blocks);
- $template->set('name', $member->getName());
- $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
- }
-
- $template = new Horde_Template();
- $template->set('title', _("Optional Attendees"));
- $template->set('rows', $rows);
- $template->set('span', count($this->_timeBlocks));
- $template->set('hours', $hours_html);
- $template->set('legend', '');
- $html .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html');
- }
-
- // Possible meeting times.
- $optimal->setAttribute('ORGANIZER', _("All Attendees"));
- $blocks = $this->_getBlocks($optimal,
- $optimal->getFreePeriods($this->_start->timestamp(), $this->_end->timestamp()),
- 'meetingblock.html', _("All Attendees"));
-
- $template = new Horde_Template();
- $template->set('name', _("All Attendees"));
- $template->set('blocks', $blocks);
- $rows = $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
-
- // Possible meeting times.
- $required->setAttribute('ORGANIZER', _("Required Attendees"));
- $blocks = $this->_getBlocks($required,
- $required->getFreePeriods($this->_start->timestamp(), $this->_end->timestamp()),
- 'meetingblock.html', _("Required Attendees"));
-
- $template = new Horde_Template();
- $template->set('name', _("Required Attendees"));
- $template->set('blocks', $blocks);
- $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
-
- // Reset locale.
- setlocale(LC_NUMERIC, $lc);
-
- $template = new Horde_Template();
- $template->set('rows', $rows);
- $template->set('title', _("Overview"));
- $template->set('span', count($this->_timeBlocks));
- $template->set('hours', $hours_html);
- if ($prefs->getValue('show_fb_legend')) {
- $template->setOption('gettext', true);
- $template->set('legend', $template->fetch(KRONOLITH_TEMPLATES . '/fbview/legend.html'));
- } else {
- $template->set('legend', '');
- }
-
- return $html . $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html') . '</div>';
- }
-
- /**
- * Attempts to return a concrete Kronolith_FreeBusy_View instance based on
- * $view.
- *
- * @param string $view The type of concrete Kronolith_FreeBusy_View
- * subclass to return.
- *
- * @return mixed The newly created concrete Kronolith_FreeBusy_View
- * instance, or false on an error.
- */
- function factory($view)
- {
- $driver = basename($view);
- require_once dirname(__FILE__) . '/FBView/' . $driver . '.php';
- $class = 'Kronolith_FreeBusy_View_' . $driver;
- if (class_exists($class)) {
- return new $class($user, $params);
- }
-
- return false;
- }
-
- /**
- * Attempts to return a reference to a concrete Kronolith_FreeBusy_View
- * instance based on $view. It will only create a new instance if no
- * Kronolith_FreeBusy_View instance with the same parameters currently
- * exists.
- *
- * This method must be invoked as:
- * $var = &Kronolith_FreeBusy_View::singleton()
- *
- * @param string $view The type of concrete Kronolith_FreeBusy_View
- * subclass to return.
- *
- * @return mixed The created concrete Kronolith_FreeBusy_View instance, or
- * false on an error.
- */
- function &singleton($view)
- {
- static $instances = array();
-
- if (!isset($instances[$view])) {
- $instances[$view] = Kronolith_FreeBusy_View::factory($view);
- }
-
- return $instances[$view];
- }
-
- function _getBlocks($member, $periods, $blockfile, $label)
- {
- $template = new Horde_Template();
- $template->set('label', $label);
-
- reset($periods);
- list($periodStart, $periodEnd) = each($periods);
-
- $blocks = '';
- foreach ($this->_timeBlocks as $span) {
- /* Horde_iCalendar_vfreebusy only supports timestamps at the
- * moment. */
- $start = $span[0]->timestamp();
- $end = $span[1]->timestamp();
- if ($member->getStart() > $start ||
- $member->getEnd() < $end) {
- $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/unknownblock.html');
- continue;
- }
-
- while ($start > $periodEnd &&
- list($periodStart, $periodEnd) = each($periods));
-
- if (($periodStart <= $start && $periodEnd >= $start) ||
- ($periodStart <= $end && $periodEnd >= $end) ||
- ($periodStart <= $start && $periodEnd >= $end) ||
- ($periodStart >= $start && $periodEnd <= $end)) {
-
- $l_start = ($periodStart < $start) ? $start : $periodStart;
- $l_end = ($periodEnd > $end) ? $end : $periodEnd;
- $plen = ($end - $start) / 100.0;
-
- $left = ($l_start - $start) / $plen;
- $width = ($l_end - $l_start) / $plen;
-
- $template->set('left', $left . '%');
- $template->set('width', $width . '%');
-
- $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/' . $blockfile);
- } else {
- $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/emptyblock.html');
- }
- }
-
- return $blocks;
- }
-
-}
+++ /dev/null
-<?php
-/**
- * This class represent a single day of free busy information sets.
- *
- * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information.
- *
- * $Horde: kronolith/lib/FBView/day.php,v 1.30 2009/01/07 12:39:13 jan Exp $
- *
- * @author Mike Cochrane <mike@graftonhall.co.nz>
- * @author Jan Schneider <jan@horde.org>
- * @package Kronolith
- */
-class Kronolith_FreeBusy_View_day extends Kronolith_FreeBusy_View {
-
- var $view = 'day';
-
- function _title()
- {
- global $registry, $prefs;
-
- $prev = new Horde_Date($this->_start);
- $prev->mday--;
- $prev->correct();
- $next = new Horde_Date($this->_start);
- $next->mday++;
- $next->correct();
- return Horde::link('#', _("Previous Day"), '', '', 'return switchDate(' . $prev->dateString() . ');')
- . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
- . '</a>'
- . $this->_start->strftime($prefs->getValue('date_format'))
- . Horde::link('#', _("Next Day"), '', '', 'return switchDate(' . $next->dateString() . ');')
- . Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde'))
- . '</a>';
- }
-
- function _hours()
- {
- global $prefs;
-
- $hours_html = '';
- $width = round(100 / ($this->_endHour - $this->_startHour + 1));
- $start = new Horde_Date($this->_start);
- $end = new Horde_Date($this->_start);
- $end->min = 59;
- for ($i = $this->_startHour; $i < $this->_endHour; $i++) {
- $start->hour = $end->hour = $i;
- $this->_timeBlocks[] = array(clone $start, clone $end);
- $hours_html .= '<th width="' . $width . '%">' . $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00') . '</th>';
- }
-
- return $hours_html;
- }
-
- function _render($day = null)
- {
- $this->_start = new Horde_Date($day);
- $this->_start->hour = $this->_startHour;
- $this->_end = new Horde_Date($this->_start);
- $this->_end->hour = $this->_endHour;
- }
-
-}
+++ /dev/null
-<?php
-/**
- * This class represent a month of free busy information sets.
- *
- * Copyright 2004-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information.
- *
- * $Horde: kronolith/lib/FBView/month.php,v 1.8 2009/01/06 18:01:01 jan Exp $
- *
- * @author Gunnar Wrobel <wrobel@pardus.de>
- * @author Jan Schneider <jan@horde.org>
- * @package Kronolith
- */
-class Kronolith_FreeBusy_View_month extends Kronolith_FreeBusy_View {
-
- var $view = 'month';
- var $_days = 30;
-
- function _title()
- {
- global $registry, $prefs;
-
- $end = new Horde_Date($this->_start);
- $end->mday += $this->_days - 1;
- $end->correct();
- $prev = new Horde_Date($this->_start);
- $prev->month--;
- $prev->correct();
- $next = new Horde_Date($this->_start);
- $next->month++;
- $next->correct();
- return Horde::link('#', _("Previous Month"), '', '', 'return switchDate(' . $prev->dateString() . ');')
- . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
- . '</a>'
- . $this->_start->strftime('%B %Y')
- . Horde::link('#', _("Next Month"), '', '', 'return switchDate(' . $next->dateString() . ');')
- . Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde'))
- . '</a>';
- }
-
- function _hours()
- {
- global $prefs;
-
- $hours_html = '';
- $dayWidth = round(100 / $this->_days);
- $date_format = $prefs->getValue('date_format');
-
- $week = Date_Calc::weekOfYear(1, $this->_start->month, $this->_start->year);
- $span = (7 - $week) % 7 + 1;
- $span_left = $this->_days;
- $t = new Horde_Date($this->_start);
- while ($span_left > 0) {
- $span_left -= $span;
- $week_label = Horde::link('#', '', '', '', 'return switchDateView(\'week\',' . $t->dateString() . ');') . ("Week") . ' ' . $week . '</a>';
- $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
- $span, $dayWidth, $week_label);
- $week++;
- $t->mday += 7;
- $t->correct();
- $span = min($span_left, 7);
- }
- $hours_html .= '</tr><tr><td width="100" class="label"> </td>';
-
- for ($i = 0; $i < $this->_days; $i++) {
- $t = new Horde_Date(array('month' => $this->_start->month,
- 'mday' => $this->_start->mday + $i,
- 'year' => $this->_start->year));
- $day_label = Horde::link('#', '', '', '', 'return switchDateView(\'day\',' . $t->dateString() . ');') . sprintf("%s.", $i + 1) . '</a>';
- $hours_html .= sprintf('<th width="%s%%">%s</th>',
- $dayWidth, $day_label);
- }
-
- for ($i = 0; $i < $this->_days; $i++) {
- $start = new Horde_Date(array('hour' => $this->_startHour,
- 'month' => $this->_start->month,
- 'mday' => $this->_start->mday + $i,
- 'year' => $this->_start->year));
- $end = new Horde_Date(array('hour' => $this->_endHour,
- 'month' => $this->_start->month,
- 'mday' => $this->_start->mday + $i,
- 'year' => $this->_start->year));
- $this->_timeBlocks[] = array($start, $end);
- }
-
- return $hours_html;
- }
-
- function _render($day = null)
- {
- $this->_start = new Horde_Date($day);
- $this->_start->mday = 1;
- $this->_days = Horde_Date::daysInMonth($day->month, $day->year);
- $this->_end = new Horde_Date($this->_start);
- $this->_end->hour = 23;
- $this->_end->min = $this->_end->sec = 59;
- $this->_end->mday = $this->_days;
- }
-
-}
+++ /dev/null
-<?php
-/**
- * This class represent a week of free busy information sets.
- *
- * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information.
- *
- * $Horde: kronolith/lib/FBView/week.php,v 1.30 2009/01/06 18:01:01 jan Exp $
- *
- * @author Mike Cochrane <mike@graftonhall.co.nz>
- * @author Jan Schneider <jan@horde.org>
- * @package Kronolith
- */
-class Kronolith_FreeBusy_View_week extends Kronolith_FreeBusy_View {
-
- var $view = 'week';
- var $_days = 7;
-
- function _title()
- {
- global $registry, $prefs;
-
- $prev = new Horde_Date($this->_start);
- $prev->mday -= 7;
- $prev->correct();
- $next = new Horde_Date($this->_start);
- $next->mday += 7;
- $next->correct();
- $end = new Horde_Date($this->_start);
- $end->mday += $this->_days - 1;
- $end->correct();
- return Horde::link('#', _("Previous Week"), '', '', 'return switchDate(' . $prev->dateString() . ');')
- . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
- . '</a>'
- . $this->_start->strftime($prefs->getValue('date_format')) . ' - '
- . $end->strftime($prefs->getValue('date_format'))
- . Horde::link('#', _("Next Week"), '', '', 'return switchDate(' . $next->dateString() . ');') .
- Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde')) .
- '</a>';
- }
-
- function _hours()
- {
- global $prefs;
-
- $hours_html = '';
- $dayWidth = round(100 / $this->_days);
- $span = floor(($this->_endHour - $this->_startHour) / 3);
- if (($this->_endHour - $this->_startHour) % 3) {
- $span++;
- }
- $date_format = $prefs->getValue('date_format');
- for ($i = 0; $i < $this->_days; $i++) {
- $t = new Horde_Date(array('month' => $this->_start->month,
- 'mday' => $this->_start->mday + $i,
- 'year' => $this->_start->year));
- $t->correct();
- $day_label = Horde::link('#', '', '', '', 'return switchDateView(\'day\',' . $t->dateString() . ');') . $t->strftime($date_format) . '</a>';
- $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
- $span, $dayWidth, $day_label);
- }
- $hours_html .= '</tr><tr><td width="100" class="label"> </td>';
-
- $width = round(100 / ($span * $this->_days));
- for ($i = 0; $i < $this->_days; $i++) {
- for ($h = $this->_startHour; $h < $this->_endHour; $h += 3) {
- $start = new Horde_Date(array('hour' => $h,
- 'month' => $this->_start->month,
- 'mday' => $this->_start->mday + $i,
- 'year' => $this->_start->year));
- $end = new Horde_Date($start);
- $end->hour += 2;
- $end->min = 59;
- $this->_timeBlocks[] = array($start, $end);
-
- $hour = $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00');
- $hours_html .= sprintf('<th width="%d%%">%s</th>', $width, $hour);
- }
- }
-
- return $hours_html;
- }
-
- function _render($day = null)
- {
- $this->_start = new Horde_Date(Date_Calc::beginOfWeek($day->mday, $day->month, $day->year, '%Y%m%d000000'));
- $this->_end = new Horde_Date($this->_start);
- $this->_end->hour = 23;
- $this->_end->min = $this->_end->sec = 59;
- $this->_end->mday += $this->_days - 1;
- $this->_end->correct();
- }
-
-}
+++ /dev/null
-<?php
-
-require_once dirname(__FILE__) . '/week.php';
-
-/**
- * This class represent a work week of free busy information sets.
- *
- * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information.
- *
- * $Horde: kronolith/lib/FBView/workweek.php,v 1.18 2009/01/06 18:01:01 jan Exp $
- *
- * @author Mike Cochrane <mike@graftonhall.co.nz>
- * @author Jan Schneider <jan@horde.org>
- * @package Kronolith
- */
-class Kronolith_FreeBusy_View_workweek extends Kronolith_FreeBusy_View_week {
-
- var $view = 'workweek';
- var $_days = 5;
-
-}
/**
* Horde_Form for creating calendars.
*
- * $Horde: kronolith/lib/Forms/CreateCalendar.php,v 1.2 2007/12/19 17:41:15 chuck Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* creating a calendar.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_CreateCalendarForm extends Horde_Form {
/**
* Horde_Form for deleting calendars.
*
- * $Horde: kronolith/lib/Forms/DeleteCalendar.php,v 1.3 2007/12/20 05:55:31 chuck Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* deleting a calendar.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_DeleteCalendarForm extends Horde_Form {
/**
* Horde_Form for editing calendars.
*
- * $Horde: kronolith/lib/Forms/EditCalendar.php,v 1.2 2008/11/12 09:16:12 wrobel Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* editing a calendar.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_EditCalendarForm extends Horde_Form {
/**
* Horde_Form for editing remote calendars.
*
- * $Horde: kronolith/lib/Forms/EditRemoteCalendar.php,v 1.1 2007/12/19 19:32:33 chuck Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* editing a remote calendar.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_EditRemoteCalendarForm extends Horde_Form {
/**
* Horde_Form for subscribing to remote calendars.
*
- * $Horde: kronolith/lib/Forms/SubscribeRemoteCalendar.php,v 1.1 2007/12/19 19:32:33 chuck Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* for subscribing to remote calendars
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_SubscribeRemoteCalendarForm extends Horde_Form {
/**
* Horde_Form for unsubscribing from remote calendars.
*
- * $Horde: kronolith/lib/Forms/UnsubscribeRemoteCalendar.php,v 1.1 2007/12/19 19:32:34 chuck Exp $
- *
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* deleting a calendar.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_UnsubscribeRemoteCalendarForm extends Horde_Form {
/**
* Free/Busy functionality.
*
- * $Horde: kronolith/lib/FreeBusy.php,v 1.19 2009/01/07 13:03:55 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_FreeBusy {
global $kronolith_shares;
require_once 'Horde/Identity.php';
- require_once 'Horde/iCalendar.php';
require_once KRONOLITH_BASE . '/lib/version.php';
if (!is_array($calendar)) {
*/
function get($email)
{
- require_once 'Horde/iCalendar.php';
- require_once 'Mail/RFC822.php';
-
/* Properly handle RFC822-compliant email addresses. */
static $rfc822;
if (is_null($rfc822)) {
$options = array_merge($options, $GLOBALS['conf']['http']['proxy']);
}
- require_once 'HTTP/Request.php';
$http = new HTTP_Request($url, $options);
if (is_a($response = @$http->sendRequest(), 'PEAR_Error')) {
return PEAR::raiseError(sprintf(_("The free/busy url for %s cannot be retrieved."), $email));
--- /dev/null
+<?php
+/**
+ * This class represent a view of multiple free busy information sets.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
+ */
+class Kronolith_FreeBusy_View {
+
+ var $_requiredMembers = array();
+ var $_optionalMembers = array();
+ var $_timeBlocks = array();
+
+ var $_startHour;
+ var $_endHour;
+
+ var $_start;
+ var $_end;
+
+ function addRequiredMember($vFreebusy)
+ {
+ $this->_requiredMembers[] = Util::cloneObject($vFreebusy);
+ }
+
+ function addOptionalMember($vFreebusy)
+ {
+ $this->_optionalMembers[] = Util::cloneObject($vFreebusy);
+ }
+
+ function render($day = null)
+ {
+ global $prefs;
+
+ $this->_startHour = floor($prefs->getValue('day_hour_start') / 2);
+ $this->_endHour = floor(($prefs->getValue('day_hour_end') + 1) / 2);
+
+ $this->_render($day);
+
+ $vCal = new Horde_iCalendar();
+ $required = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
+ foreach ($this->_requiredMembers as $member) {
+ $required->merge($member, false);
+ }
+ $required->simplify();
+
+ $optional = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
+ foreach ($this->_optionalMembers as $member) {
+ $optional->merge($member, false);
+ }
+ $optional->simplify();
+
+ $optimal = &Horde_iCalendar::newComponent('vfreebusy', $vCal);
+ $optimal->merge($required, false);
+ $optimal->merge($optional);
+
+ $base_url = Horde::selfUrl();
+ $base_url = Util::removeParameter($base_url, 'date');
+ $base_url = Util::removeParameter($base_url, 'fbview');
+ $base_url = Util::addParameter($base_url, 'fbview', $this->view);
+
+ $template = new Horde_Template();
+ $template->set('title', $this->_title());
+
+ $html = $template->fetch(KRONOLITH_TEMPLATES . '/fbview/header.html') .
+ '<div class="fbgrid">';
+
+ $hours_html = $this->_hours();
+
+ // Set C locale to avoid localized decimal separators during CSS width
+ // calculation.
+ $lc = setlocale(LC_NUMERIC, 0);
+ setlocale(LC_NUMERIC, 'C');
+
+ // Required to attend.
+ if (count($this->_requiredMembers) > 0) {
+ $template = new Horde_Template();
+ $rows = '';
+ foreach ($this->_requiredMembers as $member) {
+ $member->simplify();
+ $blocks = $this->_getBlocks($member, $member->getBusyPeriods(), 'busyblock.html', _("Busy"));
+ $template = new Horde_Template();
+ $template->set('blocks', $blocks);
+ $template->set('name', $member->getName());
+ $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
+ }
+
+ $template = new Horde_Template();
+ $template->set('title', _("Required Attendees"));
+ $template->set('rows', $rows);
+ $template->set('span', count($this->_timeBlocks));
+ $template->set('hours', $hours_html);
+ $template->set('legend', '');
+ $html .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html');
+ }
+
+ // Optional to attend.
+ if (count($this->_optionalMembers) > 0) {
+ $template = new Horde_Template();
+ $rows = '';
+ foreach ($this->_optionalMembers as $member) {
+ $member->simplify();
+ $blocks = $this->_getBlocks($member, $member->getBusyPeriods(), 'busyblock.html', _("Busy"));
+ $template = new Horde_Template();
+ $template->set('blocks', $blocks);
+ $template->set('name', $member->getName());
+ $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
+ }
+
+ $template = new Horde_Template();
+ $template->set('title', _("Optional Attendees"));
+ $template->set('rows', $rows);
+ $template->set('span', count($this->_timeBlocks));
+ $template->set('hours', $hours_html);
+ $template->set('legend', '');
+ $html .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html');
+ }
+
+ // Possible meeting times.
+ $optimal->setAttribute('ORGANIZER', _("All Attendees"));
+ $blocks = $this->_getBlocks($optimal,
+ $optimal->getFreePeriods($this->_start->timestamp(), $this->_end->timestamp()),
+ 'meetingblock.html', _("All Attendees"));
+
+ $template = new Horde_Template();
+ $template->set('name', _("All Attendees"));
+ $template->set('blocks', $blocks);
+ $rows = $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
+
+ // Possible meeting times.
+ $required->setAttribute('ORGANIZER', _("Required Attendees"));
+ $blocks = $this->_getBlocks($required,
+ $required->getFreePeriods($this->_start->timestamp(), $this->_end->timestamp()),
+ 'meetingblock.html', _("Required Attendees"));
+
+ $template = new Horde_Template();
+ $template->set('name', _("Required Attendees"));
+ $template->set('blocks', $blocks);
+ $rows .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/row.html');
+
+ // Reset locale.
+ setlocale(LC_NUMERIC, $lc);
+
+ $template = new Horde_Template();
+ $template->set('rows', $rows);
+ $template->set('title', _("Overview"));
+ $template->set('span', count($this->_timeBlocks));
+ $template->set('hours', $hours_html);
+ if ($prefs->getValue('show_fb_legend')) {
+ $template->setOption('gettext', true);
+ $template->set('legend', $template->fetch(KRONOLITH_TEMPLATES . '/fbview/legend.html'));
+ } else {
+ $template->set('legend', '');
+ }
+
+ return $html . $template->fetch(KRONOLITH_TEMPLATES . '/fbview/section.html') . '</div>';
+ }
+
+ /**
+ * Attempts to return a concrete Kronolith_FreeBusy_View instance based on
+ * $view.
+ *
+ * @param string $view The type of concrete Kronolith_FreeBusy_View
+ * subclass to return.
+ *
+ * @return mixed The newly created concrete Kronolith_FreeBusy_View
+ * instance, or false on an error.
+ */
+ function factory($view)
+ {
+ $driver = basename($view);
+ require_once dirname(__FILE__) . '/FBView/' . $driver . '.php';
+ $class = 'Kronolith_FreeBusy_View_' . $driver;
+ if (class_exists($class)) {
+ return new $class($user, $params);
+ }
+
+ return false;
+ }
+
+ /**
+ * Attempts to return a reference to a concrete Kronolith_FreeBusy_View
+ * instance based on $view. It will only create a new instance if no
+ * Kronolith_FreeBusy_View instance with the same parameters currently
+ * exists.
+ *
+ * This method must be invoked as:
+ * $var = &Kronolith_FreeBusy_View::singleton()
+ *
+ * @param string $view The type of concrete Kronolith_FreeBusy_View
+ * subclass to return.
+ *
+ * @return mixed The created concrete Kronolith_FreeBusy_View instance, or
+ * false on an error.
+ */
+ function &singleton($view)
+ {
+ static $instances = array();
+
+ if (!isset($instances[$view])) {
+ $instances[$view] = Kronolith_FreeBusy_View::factory($view);
+ }
+
+ return $instances[$view];
+ }
+
+ function _getBlocks($member, $periods, $blockfile, $label)
+ {
+ $template = new Horde_Template();
+ $template->set('label', $label);
+
+ reset($periods);
+ list($periodStart, $periodEnd) = each($periods);
+
+ $blocks = '';
+ foreach ($this->_timeBlocks as $span) {
+ /* Horde_iCalendar_vfreebusy only supports timestamps at the
+ * moment. */
+ $start = $span[0]->timestamp();
+ $end = $span[1]->timestamp();
+ if ($member->getStart() > $start ||
+ $member->getEnd() < $end) {
+ $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/unknownblock.html');
+ continue;
+ }
+
+ while ($start > $periodEnd &&
+ list($periodStart, $periodEnd) = each($periods));
+
+ if (($periodStart <= $start && $periodEnd >= $start) ||
+ ($periodStart <= $end && $periodEnd >= $end) ||
+ ($periodStart <= $start && $periodEnd >= $end) ||
+ ($periodStart >= $start && $periodEnd <= $end)) {
+
+ $l_start = ($periodStart < $start) ? $start : $periodStart;
+ $l_end = ($periodEnd > $end) ? $end : $periodEnd;
+ $plen = ($end - $start) / 100.0;
+
+ $left = ($l_start - $start) / $plen;
+ $width = ($l_end - $l_start) / $plen;
+
+ $template->set('left', $left . '%');
+ $template->set('width', $width . '%');
+
+ $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/' . $blockfile);
+ } else {
+ $blocks .= $template->fetch(KRONOLITH_TEMPLATES . '/fbview/emptyblock.html');
+ }
+ }
+
+ return $blocks;
+ }
+
+}
--- /dev/null
+<?php
+/**
+ * This class represent a single day of free busy information sets.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
+ */
+class Kronolith_FreeBusy_View_Day extends Kronolith_FreeBusy_View {
+
+ var $view = 'day';
+
+ function _title()
+ {
+ global $registry, $prefs;
+
+ $prev = new Horde_Date($this->_start);
+ $prev->mday--;
+ $prev->correct();
+ $next = new Horde_Date($this->_start);
+ $next->mday++;
+ $next->correct();
+ return Horde::link('#', _("Previous Day"), '', '', 'return switchDate(' . $prev->dateString() . ');')
+ . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
+ . '</a>'
+ . $this->_start->strftime($prefs->getValue('date_format'))
+ . Horde::link('#', _("Next Day"), '', '', 'return switchDate(' . $next->dateString() . ');')
+ . Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde'))
+ . '</a>';
+ }
+
+ function _hours()
+ {
+ global $prefs;
+
+ $hours_html = '';
+ $width = round(100 / ($this->_endHour - $this->_startHour + 1));
+ $start = new Horde_Date($this->_start);
+ $end = new Horde_Date($this->_start);
+ $end->min = 59;
+ for ($i = $this->_startHour; $i < $this->_endHour; $i++) {
+ $start->hour = $end->hour = $i;
+ $this->_timeBlocks[] = array(clone $start, clone $end);
+ $hours_html .= '<th width="' . $width . '%">' . $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00') . '</th>';
+ }
+
+ return $hours_html;
+ }
+
+ function _render($day = null)
+ {
+ $this->_start = new Horde_Date($day);
+ $this->_start->hour = $this->_startHour;
+ $this->_end = new Horde_Date($this->_start);
+ $this->_end->hour = $this->_endHour;
+ }
+
+}
--- /dev/null
+<?php
+/**
+ * This class represent a month of free busy information sets.
+ *
+ * Copyright 2004-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information.
+ *
+ * @author Gunnar Wrobel <wrobel@pardus.de>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
+ */
+class Kronolith_FreeBusy_View_Month extends Kronolith_FreeBusy_View {
+
+ var $view = 'month';
+ var $_days = 30;
+
+ function _title()
+ {
+ global $registry, $prefs;
+
+ $end = new Horde_Date($this->_start);
+ $end->mday += $this->_days - 1;
+ $end->correct();
+ $prev = new Horde_Date($this->_start);
+ $prev->month--;
+ $prev->correct();
+ $next = new Horde_Date($this->_start);
+ $next->month++;
+ $next->correct();
+ return Horde::link('#', _("Previous Month"), '', '', 'return switchDate(' . $prev->dateString() . ');')
+ . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
+ . '</a>'
+ . $this->_start->strftime('%B %Y')
+ . Horde::link('#', _("Next Month"), '', '', 'return switchDate(' . $next->dateString() . ');')
+ . Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde'))
+ . '</a>';
+ }
+
+ function _hours()
+ {
+ global $prefs;
+
+ $hours_html = '';
+ $dayWidth = round(100 / $this->_days);
+ $date_format = $prefs->getValue('date_format');
+
+ $week = Date_Calc::weekOfYear(1, $this->_start->month, $this->_start->year);
+ $span = (7 - $week) % 7 + 1;
+ $span_left = $this->_days;
+ $t = new Horde_Date($this->_start);
+ while ($span_left > 0) {
+ $span_left -= $span;
+ $week_label = Horde::link('#', '', '', '', 'return switchDateView(\'week\',' . $t->dateString() . ');') . ("Week") . ' ' . $week . '</a>';
+ $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
+ $span, $dayWidth, $week_label);
+ $week++;
+ $t->mday += 7;
+ $t->correct();
+ $span = min($span_left, 7);
+ }
+ $hours_html .= '</tr><tr><td width="100" class="label"> </td>';
+
+ for ($i = 0; $i < $this->_days; $i++) {
+ $t = new Horde_Date(array('month' => $this->_start->month,
+ 'mday' => $this->_start->mday + $i,
+ 'year' => $this->_start->year));
+ $day_label = Horde::link('#', '', '', '', 'return switchDateView(\'day\',' . $t->dateString() . ');') . sprintf("%s.", $i + 1) . '</a>';
+ $hours_html .= sprintf('<th width="%s%%">%s</th>',
+ $dayWidth, $day_label);
+ }
+
+ for ($i = 0; $i < $this->_days; $i++) {
+ $start = new Horde_Date(array('hour' => $this->_startHour,
+ 'month' => $this->_start->month,
+ 'mday' => $this->_start->mday + $i,
+ 'year' => $this->_start->year));
+ $end = new Horde_Date(array('hour' => $this->_endHour,
+ 'month' => $this->_start->month,
+ 'mday' => $this->_start->mday + $i,
+ 'year' => $this->_start->year));
+ $this->_timeBlocks[] = array($start, $end);
+ }
+
+ return $hours_html;
+ }
+
+ function _render($day = null)
+ {
+ $this->_start = new Horde_Date($day);
+ $this->_start->mday = 1;
+ $this->_days = Horde_Date::daysInMonth($day->month, $day->year);
+ $this->_end = new Horde_Date($this->_start);
+ $this->_end->hour = 23;
+ $this->_end->min = $this->_end->sec = 59;
+ $this->_end->mday = $this->_days;
+ }
+
+}
--- /dev/null
+<?php
+/**
+ * This class represent a week of free busy information sets.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
+ */
+class Kronolith_FreeBusy_View_Week extends Kronolith_FreeBusy_View {
+
+ var $view = 'week';
+ var $_days = 7;
+
+ function _title()
+ {
+ global $registry, $prefs;
+
+ $prev = new Horde_Date($this->_start);
+ $prev->mday -= 7;
+ $prev->correct();
+ $next = new Horde_Date($this->_start);
+ $next->mday += 7;
+ $next->correct();
+ $end = new Horde_Date($this->_start);
+ $end->mday += $this->_days - 1;
+ $end->correct();
+ return Horde::link('#', _("Previous Week"), '', '', 'return switchDate(' . $prev->dateString() . ');')
+ . Horde::img('nav/left.png', '<', null, $registry->getImageDir('horde'))
+ . '</a>'
+ . $this->_start->strftime($prefs->getValue('date_format')) . ' - '
+ . $end->strftime($prefs->getValue('date_format'))
+ . Horde::link('#', _("Next Week"), '', '', 'return switchDate(' . $next->dateString() . ');') .
+ Horde::img('nav/right.png', '>', null, $registry->getImageDir('horde')) .
+ '</a>';
+ }
+
+ function _hours()
+ {
+ global $prefs;
+
+ $hours_html = '';
+ $dayWidth = round(100 / $this->_days);
+ $span = floor(($this->_endHour - $this->_startHour) / 3);
+ if (($this->_endHour - $this->_startHour) % 3) {
+ $span++;
+ }
+ $date_format = $prefs->getValue('date_format');
+ for ($i = 0; $i < $this->_days; $i++) {
+ $t = new Horde_Date(array('month' => $this->_start->month,
+ 'mday' => $this->_start->mday + $i,
+ 'year' => $this->_start->year));
+ $t->correct();
+ $day_label = Horde::link('#', '', '', '', 'return switchDateView(\'day\',' . $t->dateString() . ');') . $t->strftime($date_format) . '</a>';
+ $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
+ $span, $dayWidth, $day_label);
+ }
+ $hours_html .= '</tr><tr><td width="100" class="label"> </td>';
+
+ $width = round(100 / ($span * $this->_days));
+ for ($i = 0; $i < $this->_days; $i++) {
+ for ($h = $this->_startHour; $h < $this->_endHour; $h += 3) {
+ $start = new Horde_Date(array('hour' => $h,
+ 'month' => $this->_start->month,
+ 'mday' => $this->_start->mday + $i,
+ 'year' => $this->_start->year));
+ $end = new Horde_Date($start);
+ $end->hour += 2;
+ $end->min = 59;
+ $this->_timeBlocks[] = array($start, $end);
+
+ $hour = $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00');
+ $hours_html .= sprintf('<th width="%d%%">%s</th>', $width, $hour);
+ }
+ }
+
+ return $hours_html;
+ }
+
+ function _render($day = null)
+ {
+ $this->_start = new Horde_Date(Date_Calc::beginOfWeek($day->mday, $day->month, $day->year, '%Y%m%d000000'));
+ $this->_end = new Horde_Date($this->_start);
+ $this->_end->hour = 23;
+ $this->_end->min = $this->_end->sec = 59;
+ $this->_end->mday += $this->_days - 1;
+ $this->_end->correct();
+ }
+
+}
--- /dev/null
+<?php
+/**
+ * This class represent a work week of free busy information sets.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Jan Schneider <jan@horde.org>
+ * @package Kronolith
+ */
+class Kronolith_FreeBusy_View_Workweek extends Kronolith_FreeBusy_View_Week {
+
+ var $view = 'workweek';
+ var $_days = 5;
+
+}
<?php
/**
- * $Horde: kronolith/lib/Imple.php,v 1.4 2009/01/06 18:01:00 jan Exp $
- *
* Copyright 2005-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* @author Michael Slusarz <slusarz@horde.org>
* @package Kronolith
*/
-class Imple {
+class Kronolith_Imple {
/**
* Parameters needed by the subclasses.
* @author Michael Slusarz <slusarz@horde.org>
* @package Kronolith
*/
-class Imple_ContactAutoCompleter extends Imple
+class Kronolith_Imple_ContactAutoCompleter extends Kronolith_Imple
{
/**
* Constructor.
* websites. Meant to be called via a single script tag, therefore this will
* always return nothing but valid javascript.
*
- * $Horde: kronolith/lib/Imple/Embed.php,v 1.10 2009/01/06 18:01:01 jan Exp $
- *
* Copyright 2008-2009 The Horde Project (http://www.horde.org/)
*
* @author Michael J. Rubinsky <mrubinsk@horde.org>
*
* @package Ansel
*/
-class Imple_Embed extends Imple {
+class Kronolith_Imple_Embed extends Kronolith_Imple {
/**
* Override the parent method since it uses Horde::addScriptFile()
<?php
/**
- * $Horde: kronolith/lib/Kronolith.php,v 1.440 2008/11/10 05:07:19 chuck Exp $
- *
* @package Kronolith
*/
* The Kronolith:: class provides functionality common to all of Kronolith.
*
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith {
/**
* Output everything up to but not including the <body> tag.
*
- * @since Kronolith 3.0
- *
* @param string $title The title of the page.
* @param array $scripts Any additional scripts that need to be loaded.
* Each entry contains the three elements necessary
* Outputs the javascript code which defines all javascript variables
* that are dependent on the local user's account.
*
- * @since Kronolith 3.0
- *
* @private
*
* @return string
{
global $browser, $conf, $prefs, $registry;
- require_once 'Horde/Serialize.php';
-
$kronolith_webroot = $registry->get('webroot');
$horde_webroot = $registry->get('webroot', 'horde');
/**
* Add inline javascript to the output buffer.
*
- * @since Kronolith 2.2
- *
* @param mixed $script The script text to add (can be stored in an
* array also).
* @param string $onload Load the script after the page has loaded?
/**
* Print inline javascript to the output buffer.
*
- * @since Kronolith 2.2
- *
* @return string The javascript text to output.
*/
function outputInlineScript()
* Print inline javascript to output buffer after wrapping with necessary
* javascript tags.
*
- * @since Kronolith 3.0
- *
* @param array $script The script to output.
*
* @return string The script with the necessary HTML javascript tags
/**
* Outputs the necessary script tags, honoring local configuration choices
* as to script caching.
- *
- * @since Kronolith 3.0
*/
function includeScriptFiles()
{
break;
case 'horde_cache':
- require_once 'Horde/Cache.php';
$cache = &Horde_Cache::singleton($conf['cache']['driver'], Horde::getDriverConfig('cache', $conf['cache']['driver']));
$exists = $cache->exists($sig, empty($conf['server']['cachejsparams']['lifetime']) ? 0 : $conf['server']['cachejsparams']['lifetime']);
$js_url = Kronolith::getCacheURL('js', $sig);
* Outputs the necessary style tags, honoring local configuration choices
* as to stylesheet caching.
*
- * @since Kronolith 3.0
- *
* @param boolean $print Include print CSS?
*/
function includeStylesheetFiles($print = false)
break;
case 'horde_cache':
- require_once 'Horde/Cache.php';
$cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver']));
$exists = $cache->exists($sig, empty($GLOBALS['conf']['server']['cachecssparams']['lifetime']) ? 0 : $GLOBALS['conf']['server']['cachecssparams']['lifetime']);
$css_url = Kronolith::getCacheURL('css', $sig);
/**
* Creates a URL for cached Kronolith data.
*
- * @since Kronolith 3.0
- *
* @param string $type The cache type.
* @param string $cid The cache id.
*
/**
* Do garbage collection in the statically served file directory.
*
- * @since Kronolith 3.0
- *
* @access private
*
* @param string $type Either 'css' or 'js'.
$options = array_merge($options, $GLOBALS['conf']['http']['proxy']);
}
- require_once 'HTTP/Request.php';
$http = new HTTP_Request($url, $options);
/* Check for HTTP authentication credentials */
$cals = unserialize($GLOBALS['prefs']->getValue('remote_cals'));
return $data;
}
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
if (!$iCal->parsevCalendar($data)) {
return array();
return $data;
}
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
if (!$iCal->parsevCalendar($data)) {
return array();
}
/* Build the iCalendar data */
- require_once 'Horde/Data.php';
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
$iCal->setAttribute('METHOD', $method);
$iCal->setAttribute('X-WR-CALNAME', String::convertCharset($share->get('name'), NLS::getCharset(), 'utf-8'));
/**
* Returns the specified permission for the current user.
*
- * @since Kronolith 2.1
- *
* @param string $permission A permission, currently only 'max_events'.
*
* @return mixed The value of the specified permission.
$date = Kronolith::currentDate();
$date_stamp = $date->dateString();
- require_once 'Horde/UI/Tabs.php';
require_once 'Horde/Variables.php';
$tabs = new Horde_UI_Tabs('view', Variables::getDefaultVariables());
$tabs->preserve('date', $date_stamp);
return;
}
- require_once 'Horde/UI/Tabs.php';
require_once 'Horde/Variables.php';
$tabs = new Horde_UI_Tabs('event', Variables::getDefaultVariables());
*/
function foregroundColor($calendar)
{
- require_once 'Horde/Image.php';
return Horde_Image::brightness(Kronolith::backgroundColor($calendar)) < 128 ? '#f6f6f6' : '#000';
}
require_once $GLOBALS['registry']->get('fileroot', 'kronolith') . '/lib/base.php';
/**
- * $Horde: kronolith/lib/Maintenance/kronolith.php,v 1.2 2009/01/06 18:01:01 jan Exp $
- *
* The Maintenance_Kronolith class defines the maintenance operations run upon
* login to Kronolith
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @since Kronolith 2.2.1
* @package Horde_Maintenance
*/
class Maintenance_Kronolith extends Maintenance {
/**
* The Kronolith_View_Day:: class provides an API for viewing days.
*
- * $Horde: kronolith/lib/Views/Day.php,v 1.39 2008/10/21 21:58:29 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith_View_Day extends Kronolith_Day {
* The Kronolith_View_DeleteEvent:: class provides an API for viewing
* event delete forms.
*
- * $Horde: kronolith/lib/Views/DeleteEvent.php,v 1.4 2008/10/13 23:00:18 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_DeleteEvent {
* The Kronolith_View_EditEvent:: class provides an API for viewing
* event edit forms.
*
- * $Horde: kronolith/lib/Views/EditEvent.php,v 1.11 2008/10/13 23:00:18 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_EditEvent {
/**
* The Kronolith_View_Event:: class provides an API for viewing events.
*
- * $Horde: kronolith/lib/Views/Event.php,v 1.12 2008/11/10 05:13:43 chuck Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_Event {
* The Kronolith_View_ExportEvent:: class provides an API for exporting
* events.
*
- * $Horde: kronolith/lib/Views/ExportEvent.php,v 1.2 2008/03/14 13:55:05 jan Exp $
- *
* @author Jan Schneider <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_ExportEvent {
* The Kronolith_View_Month:: class provides an API for viewing
* months.
*
- * $Horde: kronolith/lib/Views/Month.php,v 1.20 2008/10/13 23:00:18 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_Month {
/**
* The Kronolith_View_Week:: class provides an API for viewing weeks.
*
- * $Horde: kronolith/lib/Views/Week.php,v 1.34 2008/11/03 22:50:06 jan Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 0.1
* @package Kronolith
*/
class Kronolith_View_Week {
* The Kronolith_View_WorkWeek:: class provides a shortcut for a week
* view that is only Monday through Friday.
*
- * $Horde: kronolith/lib/Views/WorkWeek.php,v 1.3 2006/11/07 21:47:42 chuck Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_WorkWeek extends Kronolith_View_Week {
/**
* The Kronolith_View_Year:: class provides an API for viewing years.
*
- * $Horde: kronolith/lib/Views/Year.php,v 1.17 2008/10/21 04:23:07 chuck Exp $
- *
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jan Schneider <jan@horde.org>
- * @since Kronolith 2.2
* @package Kronolith
*/
class Kronolith_View_Year {
switch ($content_type) {
case 'text/calendar':
case 'text/x-vcalendar':
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
if (!is_a($content, 'Horde_iCalendar_vevent')) {
if (!$iCal->parsevCalendar($content)) {
switch ($contentType) {
case 'text/calendar':
case 'text/x-vcalendar':
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
if (!is_a($content, 'Horde_iCalendar_vevent')) {
if (!$iCal->parsevCalendar($content)) {
case 'text/calendar':
$share = &$kronolith_shares->getShare($event->getCalendar());
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar($version);
$iCal->setAttribute('X-WR-CALNAME', String::convertCharset($share->get('name'), NLS::getCharset(), 'utf-8'));
case 'text/calendar':
$share = &$kronolith_shares->getShare($calendar);
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar($version);
$iCal->setAttribute('X-WR-CALNAME', String::convertCharset($share->get('name'), NLS::getCharset(), 'utf-8'));
case 'text/calendar':
case 'text/x-vcalendar':
if (!is_a($content, 'Horde_iCalendar_vevent')) {
- require_once 'Horde/iCalendar.php';
$iCal = new Horde_iCalendar();
if (!$iCal->parsevCalendar($content)) {
return PEAR::raiseError(_("There was an error importing the iCalendar data."));
$calendar = null)
{
require_once dirname(__FILE__) . '/base.php';
- require_once KRONOLITH_BASE . '/lib/FreeBusy.php';
if (is_null($calendar)) {
$calendar = Kronolith::getDefaultCalendar();
* @package Kronolith
*/
+$kronolith_dir = dirname(__FILE__);
+
// Check for a prior definition of HORDE_BASE.
if (!defined('HORDE_BASE')) {
/* Temporary fix - if horde does not live directly under the imp
* directory, the HORDE_BASE constant should be defined in
* imp/lib/base.local.php. */
- $krono_dir = dirname(__FILE__);
- if (file_exists($krono_dir . '/base.local.php')) {
- include $krono_dir . '/base.local.php';
+ if (file_exists($kronolith_dir . '/base.local.php')) {
+ include $kronolith_dir . '/base.local.php';
} else {
- define('HORDE_BASE', dirname(__FILE__) . '/../..');
+ define('HORDE_BASE', $kronolith_dir . '/../..');
}
}
/* Load the Horde Framework core, and set up inclusion paths. */
require_once HORDE_BASE . '/lib/core.php';
+Horde_Autoloader::addClassPath($kronolith_dir);
+Horde_Autoloader::addClassPattern('/^Kronolith_/', $kronolith_dir);
/* Registry. */
$session_control = Util::nonInputVar('session_control');
/* Find the base file path of Kronolith. */
if (!defined('KRONOLITH_BASE')) {
- define('KRONOLITH_BASE', dirname(__FILE__) . '/..');
+ define('KRONOLITH_BASE', $kronolith_dir . '/..');
}
/* Horde framework libraries. */
-require_once 'Horde/Date.php';
-require_once 'Horde/Date/Recurrence.php';
require_once 'Horde/Help.php';
-require_once 'Horde/History.php';
/* Notification system. */
$notification = &Notification::singleton();
$GLOBALS['cManager'] = new Prefs_CategoryManager();
$GLOBALS['cManager_fgColors'] = $GLOBALS['cManager']->fgColors();
-/* PEAR Date_Calc. */
-require_once 'Date/Calc.php';
-
/* Start compression, if requested. */
Horde::compressOutput();
NLS::setTimeZone();
/* Create a calendar backend object. */
-$GLOBALS['kronolith_driver'] = &Kronolith_Driver::factory();
+$GLOBALS['kronolith_driver'] = Kronolith_Driver::factory();
/* Create a share instance. */
-require_once 'Horde/Share.php';
$GLOBALS['kronolith_shares'] = &Horde_Share::singleton($registry->getApp());
Kronolith::initialize();
if (Kronolith::loginTasksFlag() &&
!strstr($_SERVER['PHP_SELF'], 'maintenance.php') &&
!headers_sent() && !defined('AUTH_HANDLER') &&
- $GLOBALS['prefs']->getValue('do_maintenance')) {
-
+ $GLOBALS['prefs']->getValue('do_maintenance')) {
Kronolith::loginTasksFlag(2);
- $maint = &Maintenance::factory('kronolith', array('last_maintenance' => $GLOBALS['prefs']->getValue('last_kronolith_maintenance')));
+ $maint = Maintenance::factory('kronolith', array('last_maintenance' => $GLOBALS['prefs']->getValue('last_kronolith_maintenance')));
if (!$maint) {
$GLOBALS['notification']->push(_("Could not execute maintenance operations."), 'horde.warning');
} else {
$maint->runMaintenance();
}
Kronolith::loginTasksFlag(0);
-
} elseif (Util::getFormData(MAINTENANCE_DONE_PARAM) &&
Kronolith::loginTasksFlag()) {
-
- $maint = &Maintenance::factory('kronolith', array('last_maintenance' => $GLOBALS['prefs']->getValue('last_kronolith_maintenance')));
- if (!$maint) {
- $GLOBALS['notification']->push(_("Could not execute maintenance operations."), 'horde.warning');
- } else {
- $maint->runMaintenance();
- }
- Kronolith::loginTasksFlag(0);
-
+ $maint = Maintenance::factory('kronolith', array('last_maintenance' => $GLOBALS['prefs']->getValue('last_kronolith_maintenance')));
+ if (!$maint) {
+ $GLOBALS['notification']->push(_("Could not execute maintenance operations."), 'horde.warning');
+ } else {
+ $maint->runMaintenance();
+ }
+ Kronolith::loginTasksFlag(0);
}
$key = Auth::getCredential('password');
if ($key) {
- require_once 'Horde/Secret.php';
$calUser = base64_encode(Secret::write($key, $calUser));
$calPasswd = base64_encode(Secret::write($key, $calPasswd));
}
if ($GLOBALS['prefs']->isDirty('event_alarms')) {
$alarms = $GLOBALS['registry']->callByPackage('kronolith', 'listAlarms', array($_SERVER['REQUEST_TIME']));
if (!is_a($alarms, 'PEAR_Error') && !empty($alarms)) {
- require_once 'Horde/Alarm.php';
$horde_alarm = Horde_Alarm::factory();
foreach ($alarms as $alarm) {
$alarm['start'] = new Horde_Date($alarm['start']);
<?php
/**
- * $Horde: kronolith/month.php,v 1.200 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/new.php,v 1.11 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/perms.php,v 1.10 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2002-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/pref_api.php,v 1.5 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2006-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
<?php
/**
- * $Horde: kronolith/search.php,v 1.28 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2004-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/view.php,v 1.15 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 2005-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
<?php
/**
- * $Horde: kronolith/week.php,v 1.60 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
require_once dirname(__FILE__) . '/lib/base.php';
<?php
/**
- * $Horde: kronolith/workweek.php,v 1.50 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
require_once dirname(__FILE__) . '/lib/base.php';
<?php
/**
- * $Horde: kronolith/year.php,v 1.29 2009/01/06 18:00:59 jan Exp $
- *
* Copyright 1999-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @package Kronolith
*/
require_once dirname(__FILE__) . '/lib/base.php';