Crop daytimes
[tine20] / tine20 / Calendar / Config.php
1 <?php
2 /**
3  * @package     Calendar
4  * @subpackage  Config
5  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
6  * @author      Cornelius Weiss <c.weiss@metaways.de>
7  * @copyright   Copyright (c) 2011-2013 Metaways Infosystems GmbH (http://www.metaways.de)
8  */
9
10 /**
11  * calendar config class
12  * 
13  * @package     Calendar
14  * @subpackage  Config
15  */
16 class Calendar_Config extends Tinebase_Config_Abstract
17 {
18     /**
19      * Fixed Calendars
20      * 
21      * @var string
22      */
23     const FIXED_CALENDARS = 'fixedCalendars';
24     
25     /**
26      * Attendee Status Available
27      * 
28      * @var string
29      */
30     const ATTENDEE_STATUS = 'attendeeStatus';
31     
32     /**
33      * Attendee Roles Available
34      * 
35      * @var string
36      */
37     const ATTENDEE_ROLES = 'attendeeRoles';
38
39     /**
40      * Crop days view
41      *
42      * @var string
43      */
44     const CROP_DAYS_VIEW = 'daysviewcroptime';
45
46     /**
47      * MAX_FILTER_PERIOD_CALDAV
48      * 
49      * @var string
50      */
51     const MAX_FILTER_PERIOD_CALDAV = 'maxfilterperiodcaldav';
52     
53     /**
54      * MAX_NOTIFICATION_PERIOD_FROM
55      * 
56      * @var string
57      */
58     const MAX_NOTIFICATION_PERIOD_FROM = 'maxnotificationperiodfrom';
59     
60     /**
61      * MAX_JSON_DEFAULT_FILTER_PERIOD_FROM
62      * 
63      * @var string
64      */
65     const MAX_JSON_DEFAULT_FILTER_PERIOD_FROM = 'maxjsondefaultfilterperiodfrom';
66     
67     /**
68      * MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL
69      * 
70      * @var string
71      */
72     const MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL = 'maxjsondefaultfilterperioduntil';
73     
74     /**
75      * (non-PHPdoc)
76      * @see tine20/Tinebase/Config/Definition::$_properties
77      */
78     protected static $_properties = array(
79         self::FIXED_CALENDARS => array(
80                                    //_('Fixed Calendars')
81             'label'                 => 'Fixed Calendars',
82                                    //_('Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.')
83             'description'           => 'Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.',
84             'type'                  => 'array',
85             'contents'              => 'string', // in fact this are ids of Tinebase_Model_Container of app Calendar and we might what to have te ui to autocreate pickers panel here? x-type? -> later
86             'clientRegistryInclude' => TRUE
87         
88         ),
89         self::CROP_DAYS_VIEW => array(
90                                    //_('Crop Days')
91             'label'                 => 'Crop Days',
92                                    //_('Crop calendar view configured start and endtime.')
93             'description'           => 'Crop calendar view configured start and endtime.',
94             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
95             'clientRegistryInclude' => true,
96             'default'               => false
97         
98         ),
99         self::ATTENDEE_STATUS => array(
100                                    //_('Attendee Status Available')
101             'label'                 => 'Attendee Status Available',
102                                    //_('Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.')
103             'description'           => 'Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.',
104             'type'                  => 'keyFieldConfig',
105             'options'               => array('recordModel' => 'Calendar_Model_AttendeeStatus'),
106             'clientRegistryInclude' => TRUE,
107             'default'               => 'NEEDS-ACTION'
108         ),
109         self::ATTENDEE_ROLES => array(
110                                    //_('Attendee Roles Available')
111             'label'                 => 'Attendee Roles Available',
112                                    //_('Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.')
113             'description'           => 'Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.',
114             'type'                  => 'keyFieldConfig',
115             'options'               => array('recordModel' => 'Calendar_Model_AttendeeRole'),
116             'clientRegistryInclude' => TRUE,
117             'default'               => 'REQ'
118         ),
119         self::MAX_FILTER_PERIOD_CALDAV => array(
120         //_('Filter timeslot for CalDAV events')
121             'label'                 => 'Filter timeslot for events',
122         //_('For how long in the past (in months) the events should be synchronized.')
123             'description'           => 'For how long in the past (in months) the events should be synchronized.',
124             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
125             'clientRegistryInclude' => FALSE,
126             'setByAdminModule'      => FALSE,
127             'setBySetupModule'      => TRUE,
128             'default'               => 2,
129         ),
130         self::MAX_NOTIFICATION_PERIOD_FROM => array(
131         //_('Timeslot for event notifications')
132             'label'                 => 'Timeslot for event notifications',
133         //_('For how long in the past (in weeks) event notifications should be sent.')
134             'description'           => 'For how long in the past (in weeks) event notifications should be sent.',
135             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
136             'clientRegistryInclude' => FALSE,
137             'setByAdminModule'      => FALSE,
138             'setBySetupModule'      => TRUE,
139             'default'               => 1, // 1 week is default
140         ),
141         self::MAX_JSON_DEFAULT_FILTER_PERIOD_FROM => array(
142         //_('Default filter period (from) for events fetched via JSON API')
143             'label'                 => 'Default filter period (from) for events fetched via JSON API',
144         //_('For how long in the past (in months) the events should be fetched.')
145             'description'           => 'For how long in the past (in months) the events should be fetched.',
146             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
147             'clientRegistryInclude' => FALSE,
148             'setByAdminModule'      => FALSE,
149             'setBySetupModule'      => TRUE,
150             'default'               => 0,
151         ),
152         self::MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL => array(
153         //_('Default filter period (until) for events fetched via JSON API')
154             'label'                 => 'Default filter period (until) for events fetched via JSON API',
155         //_('For how long in the future (in months) the events should be fetched.')
156             'description'           => 'For how long in the future (in months) the events should be fetched.',
157             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
158             'clientRegistryInclude' => FALSE,
159             'setByAdminModule'      => FALSE,
160             'setBySetupModule'      => TRUE,
161             'default'               => 1,
162         ),
163     );
164     
165     /**
166      * (non-PHPdoc)
167      * @see tine20/Tinebase/Config/Abstract::$_appName
168      */
169     protected $_appName = 'Calendar';
170     
171     /**
172      * holds the instance of the singleton
173      *
174      * @var Tinebase_Config
175      */
176     private static $_instance = NULL;
177     
178     /**
179      * the constructor
180      *
181      * don't use the constructor. use the singleton 
182      */    
183     private function __construct() {}
184     
185     /**
186      * the constructor
187      *
188      * don't use the constructor. use the singleton 
189      */    
190     private function __clone() {}
191     
192     /**
193      * Returns instance of Tinebase_Config
194      *
195      * @return Tinebase_Config
196      */
197     public static function getInstance() 
198     {
199         if (self::$_instance === NULL) {
200             self::$_instance = new self();
201         }
202         
203         return self::$_instance;
204     }
205     
206     /**
207      * (non-PHPdoc)
208      * @see tine20/Tinebase/Config/Abstract::getProperties()
209      */
210     public static function getProperties()
211     {
212         return self::$_properties;
213     }
214 }