Overview

Packages

  • Kronolith
  • None

Classes

  • Kronolith
  • Kronolith_Ajax_Application
  • Kronolith_Ajax_Imple_ContactAutoCompleter
  • Kronolith_Ajax_Imple_Embed
  • Kronolith_Ajax_Imple_TagActions
  • Kronolith_Ajax_Imple_TagAutoCompleter
  • Kronolith_Api
  • Kronolith_Calendar
  • Kronolith_Calendar_External
  • Kronolith_Calendar_External_Tasks
  • Kronolith_Calendar_Holiday
  • Kronolith_Calendar_Internal
  • Kronolith_Calendar_Remote
  • Kronolith_Calendar_Resource
  • Kronolith_Calendars_Base
  • Kronolith_Calendars_Default
  • Kronolith_Calendars_Kolab
  • Kronolith_Day
  • Kronolith_Driver
  • Kronolith_Driver_Holidays
  • Kronolith_Driver_Horde
  • Kronolith_Driver_Ical
  • Kronolith_Driver_Kolab
  • Kronolith_Driver_Mock
  • Kronolith_Driver_Resource
  • Kronolith_Driver_Sql
  • Kronolith_Event
  • Kronolith_Event_Holidays
  • Kronolith_Event_Horde
  • Kronolith_Event_Ical
  • Kronolith_Event_Kolab
  • Kronolith_Event_Resource
  • Kronolith_Event_Sql
  • Kronolith_Exception
  • Kronolith_Factory_Calendars
  • Kronolith_Factory_Geo
  • Kronolith_Form_CreateCalendar
  • Kronolith_Form_CreateResource
  • Kronolith_Form_CreateResourceGroup
  • Kronolith_Form_DeleteCalendar
  • Kronolith_Form_DeleteResource
  • Kronolith_Form_DeleteResourceGroup
  • Kronolith_Form_EditCalendar
  • Kronolith_Form_EditRemoteCalendar
  • Kronolith_Form_EditResource
  • Kronolith_Form_EditResourceGroup
  • Kronolith_Form_SubscribeRemoteCalendar
  • Kronolith_Form_UnsubscribeRemoteCalendar
  • Kronolith_FreeBusy
  • Kronolith_FreeBusy_View
  • Kronolith_FreeBusy_View_Day
  • Kronolith_FreeBusy_View_Month
  • Kronolith_FreeBusy_View_Week
  • Kronolith_FreeBusy_View_Workweek
  • Kronolith_Geo_Base
  • Kronolith_Geo_Mysql
  • Kronolith_Geo_Sql
  • Kronolith_LoginTasks_SystemTask_Upgrade
  • Kronolith_LoginTasks_Task_PurgeEvents
  • Kronolith_Notification_Listener_AjaxStatus
  • Kronolith_Resource
  • Kronolith_Resource_Base
  • Kronolith_Resource_Group
  • Kronolith_Resource_Single
  • Kronolith_Storage
  • Kronolith_Storage_Kolab
  • Kronolith_Storage_Sql
  • Kronolith_Tagger
  • Kronolith_Test
  • Kronolith_View_Day
  • Kronolith_View_DeleteEvent
  • Kronolith_View_EditEvent
  • Kronolith_View_Event
  • Kronolith_View_ExportEvent
  • Kronolith_View_Month
  • Kronolith_View_Week
  • Kronolith_View_WorkWeek
  • Kronolith_View_Year
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * This class represent a week of free busy information sets.
  4:  *
  5:  * Copyright 2003-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information.
  8:  *
  9:  * @author  Mike Cochrane <mike@graftonhall.co.nz>
 10:  * @author  Jan Schneider <jan@horde.org>
 11:  * @package Kronolith
 12:  */
 13: class Kronolith_FreeBusy_View_Week extends Kronolith_FreeBusy_View
 14: {
 15:     /**
 16:      * This view type
 17:      *
 18:      * @var string
 19:      */
 20:     public $view = 'week';
 21: 
 22:     /**
 23:      * Number of days
 24:      *
 25:      * @var integer
 26:      */
 27:     protected $_days = 7;
 28: 
 29:     protected function _title()
 30:     {
 31:         global $prefs;
 32: 
 33:         $prev = new Horde_Date($this->_start);
 34:         $prev->mday -= 7;
 35:         $next = new Horde_Date($this->_start);
 36:         $next->mday += 7;
 37:         $end = new Horde_Date($this->_start);
 38:         $end->mday += $this->_days - 1;
 39:         return Horde::url('#')->link(array('title' => _("Previous Week"), 'onclick' => 'return switchDate(' . $prev->dateString() . ');'))
 40:             . Horde::img('nav/left.png', '<')
 41:             . '</a>'
 42:             . $this->_start->strftime($prefs->getValue('date_format')) . ' - '
 43:             . $end->strftime($prefs->getValue('date_format'))
 44:             . Horde::url('#')->link(array('title' => _("Next Week"), 'onclick' => 'return switchDate(' . $next->dateString() . ');'))
 45:             . Horde::img('nav/right.png', '>')
 46:             . '</a>';
 47:     }
 48: 
 49:     protected function _hours()
 50:     {
 51:         global $prefs;
 52: 
 53:         $hours_html = '';
 54:         $dayWidth = round(100 / $this->_days);
 55:         $span = floor(($this->_endHour - $this->_startHour) / 3);
 56:         if (($this->_endHour - $this->_startHour) % 3) {
 57:             $span++;
 58:         }
 59:         $date_format = $prefs->getValue('date_format');
 60:         for ($i = 0; $i < $this->_days; $i++) {
 61:             $t = new Horde_Date(array('month' => $this->_start->month,
 62:                                       'mday' => $this->_start->mday + $i,
 63:                                       'year' => $this->_start->year));
 64:             $day_label = Horde::url('#')->link(array('onclick' => 'return switchDateView(\'Day\',' . $t->dateString() . ');'))
 65:                 . $t->strftime($date_format) . '</a>';
 66:             $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
 67:                                    $span, $dayWidth, $day_label);
 68:         }
 69:         $hours_html .= '</tr><tr><td width="100" class="label">&nbsp;</td>';
 70: 
 71:         $width = round(100 / ($span * $this->_days));
 72:         for ($i = 0; $i < $this->_days; $i++) {
 73:             for ($h = $this->_startHour; $h < $this->_endHour; $h += 3) {
 74:                 $start = new Horde_Date(array('hour' => $h,
 75:                                               'month' => $this->_start->month,
 76:                                               'mday' => $this->_start->mday + $i,
 77:                                               'year' => $this->_start->year));
 78:                 $end = new Horde_Date($start);
 79:                 $end->hour += 2;
 80:                 $end->min = 59;
 81:                 $this->_timeBlocks[] = array($start, $end);
 82: 
 83:                 $hour = $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00');
 84:                 $hours_html .= sprintf('<th width="%d%%">%s</th>', $width, $hour);
 85:             }
 86:         }
 87: 
 88:         return $hours_html;
 89:     }
 90: 
 91:     protected function _render(Horde_Date $day = null)
 92:     {
 93:         $this->_start = new Horde_Date(Date_Calc::beginOfWeek($day->mday, $day->month, $day->year, '%Y%m%d000000'));
 94:         $this->_end = new Horde_Date($this->_start);
 95:         $this->_end->hour = 23;
 96:         $this->_end->min = $this->_end->sec = 59;
 97:         $this->_end->mday += $this->_days - 1;
 98:     }
 99: 
100: }
101: 
API documentation generated by ApiGen