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 month of free busy information sets.
  4:  *
  5:  * Copyright 2004-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information.
  8:  *
  9:  * @author  Gunnar Wrobel <wrobel@pardus.de>
 10:  * @author  Jan Schneider <jan@horde.org>
 11:  * @package Kronolith
 12:  */
 13: class Kronolith_FreeBusy_View_Month extends Kronolith_FreeBusy_View
 14: {
 15:     /**
 16:      * This view type
 17:      *
 18:      * @var string
 19:      */
 20:     public $view = 'month';
 21: 
 22:     /**
 23:      * Number of days
 24:      *
 25:      * @var integer
 26:      */
 27:     protected $_days = 30;
 28: 
 29: 
 30:     protected function _title()
 31:     {
 32:         $end = new Horde_Date($this->_start);
 33:         $end->mday += $this->_days - 1;
 34:         $prev = new Horde_Date($this->_start);
 35:         $prev->month--;
 36:         $next = new Horde_Date($this->_start);
 37:         $next->month++;
 38:         return Horde::url('#')->link(array('title' => _("Previous Month"), 'onclick' => 'return switchDate(' . $prev->dateString() . ');'))
 39:             . Horde::img('nav/left.png', '<')
 40:             . '</a>'
 41:             . $this->_start->strftime('%B %Y')
 42:             . Horde::url('#')->link(array('title' => _("Next Month"), 'onclick' => 'return switchDate(' . $next->dateString() . ');'))
 43:             . Horde::img('nav/right.png', '>')
 44:             . '</a>';
 45:     }
 46: 
 47:     protected function _hours()
 48:     {
 49:         global $prefs;
 50: 
 51:         $hours_html = '';
 52:         $dayWidth = round(100 / $this->_days);
 53:         $date_format = $prefs->getValue('date_format');
 54: 
 55:         $week = Date_Calc::weekOfYear(1, $this->_start->month, $this->_start->year);
 56:         $span = (7 - $week) % 7 + 1;
 57:         $span_left = $this->_days;
 58:         $t = new Horde_Date($this->_start);
 59:         while ($span_left > 0) {
 60:             $span_left -= $span;
 61:             $week_label = Horde::url('#')->link(array('onclick' => 'return switchDateView(\'Week\',' . $t->dateString() . ');'))
 62:                 . ("Week") . ' ' . $week . '</a>';
 63:             $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
 64:                                    $span, $dayWidth, $week_label);
 65:             $week++;
 66:             $t->mday += 7;
 67:             $span = min($span_left, 7);
 68:         }
 69:         $hours_html .= '</tr><tr><td width="100" class="label">&nbsp;</td>';
 70: 
 71:         for ($i = 0; $i < $this->_days; $i++) {
 72:             $t = new Horde_Date(array('month' => $this->_start->month,
 73:                                       'mday' => $this->_start->mday + $i,
 74:                                       'year' => $this->_start->year));
 75:             $day_label = Horde::url('#')->link(array('onclick' => 'return switchDateView(\'Day\',' . $t->dateString() . ');'))
 76:                 . ($i + 1) . '.</a>';
 77:             $hours_html .= sprintf('<th width="%s%%">%s</th>',
 78:                                    $dayWidth, $day_label);
 79:         }
 80: 
 81:         for ($i = 0; $i < $this->_days; $i++) {
 82:             $start = new Horde_Date(array('hour' => $this->_startHour,
 83:                                           'month' => $this->_start->month,
 84:                                           'mday' => $this->_start->mday + $i,
 85:                                           'year' => $this->_start->year));
 86:             $end = new Horde_Date(array('hour' => $this->_endHour,
 87:                                         'month' => $this->_start->month,
 88:                                         'mday' => $this->_start->mday + $i,
 89:                                         'year' => $this->_start->year));
 90:             $this->_timeBlocks[] = array($start, $end);
 91:         }
 92: 
 93:         return $hours_html;
 94:     }
 95: 
 96:     protected function _render(Horde_Date $day = null)
 97:     {
 98:         $this->_start = new Horde_Date($day);
 99:         $this->_start->mday = 1;
100:         $this->_days = Horde_Date_Utils::daysInMonth($day->month, $day->year);
101:         $this->_end = new Horde_Date($this->_start);
102:         $this->_end->hour = 23;
103:         $this->_end->min = $this->_end->sec = 59;
104:         $this->_end->mday = $this->_days;
105:     }
106: 
107: }
108: 
API documentation generated by ApiGen