f35740491c190237c35afedf563deb710d3dea81
[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      * MAX_FILTER_PERIOD_CALDAV
41      * 
42      * @var string
43      */
44     const MAX_FILTER_PERIOD_CALDAV = 'maxfilterperiodcaldav';
45     
46     /**
47      * MAX_NOTIFICATION_PERIOD_FROM
48      * 
49      * @var string
50      */
51     const MAX_NOTIFICATION_PERIOD_FROM = 'maxnotificationperiodfrom';
52     
53     /**
54      * MAX_JSON_DEFAULT_FILTER_PERIOD_FROM
55      * 
56      * @var string
57      */
58     const MAX_JSON_DEFAULT_FILTER_PERIOD_FROM = 'maxjsondefaultfilterperiodfrom';
59     
60     /**
61      * MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL
62      * 
63      * @var string
64      */
65     const MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL = 'maxjsondefaultfilterperioduntil';
66     
67     /**
68      * (non-PHPdoc)
69      * @see tine20/Tinebase/Config/Definition::$_properties
70      */
71     protected static $_properties = array(
72         self::FIXED_CALENDARS => array(
73                                    //_('Fixed Calendars')
74             'label'                 => 'Fixed Calendars',
75                                    //_('Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.')
76             'description'           => 'Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.',
77             'type'                  => 'array',
78             '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
79             'clientRegistryInclude' => TRUE,
80         
81         ),
82         self::ATTENDEE_STATUS => array(
83                                    //_('Attendee Status Available')
84             'label'                 => 'Attendee Status Available',
85                                    //_('Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.')
86             'description'           => 'Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.',
87             'type'                  => 'keyFieldConfig',
88             'options'               => array('recordModel' => 'Calendar_Model_AttendeeStatus'),
89             'clientRegistryInclude' => TRUE,
90             'default'               => 'NEEDS-ACTION'
91         ),
92         self::ATTENDEE_ROLES => array(
93                                    //_('Attendee Roles Available')
94             'label'                 => 'Attendee Roles Available',
95                                    //_('Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.')
96             'description'           => 'Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.',
97             'type'                  => 'keyFieldConfig',
98             'options'               => array('recordModel' => 'Calendar_Model_AttendeeRole'),
99             'clientRegistryInclude' => TRUE,
100             'default'               => 'REQ'
101         ),
102         self::MAX_FILTER_PERIOD_CALDAV => array(
103         //_('Filter timeslot for CalDAV events')
104             'label'                 => 'Filter timeslot for events',
105         //_('For how long in the past (in months) the events should be synchronized.')
106             'description'           => 'For how long in the past (in months) the events should be synchronized.',
107             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
108             'clientRegistryInclude' => FALSE,
109             'setByAdminModule'      => FALSE,
110             'setBySetupModule'      => TRUE,
111             'default'               => 2,
112         ),
113         self::MAX_NOTIFICATION_PERIOD_FROM => array(
114         //_('Timeslot for event notifications')
115             'label'                 => 'Timeslot for event notifications',
116         //_('For how long in the past (in weeks) event notifications should be sent.')
117             'description'           => 'For how long in the past (in weeks) event notifications should be sent.',
118             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
119             'clientRegistryInclude' => FALSE,
120             'setByAdminModule'      => FALSE,
121             'setBySetupModule'      => TRUE,
122             'default'               => 1, // 1 week is default
123         ),
124         self::MAX_JSON_DEFAULT_FILTER_PERIOD_FROM => array(
125         //_('Default filter period (from) for events fetched via JSON API')
126             'label'                 => 'Default filter period (from) for events fetched via JSON API',
127         //_('For how long in the past (in months) the events should be fetched.')
128             'description'           => 'For how long in the past (in months) the events should be fetched.',
129             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
130             'clientRegistryInclude' => FALSE,
131             'setByAdminModule'      => FALSE,
132             'setBySetupModule'      => TRUE,
133             'default'               => 0,
134         ),
135         self::MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL => array(
136         //_('Default filter period (until) for events fetched via JSON API')
137             'label'                 => 'Default filter period (until) for events fetched via JSON API',
138         //_('For how long in the future (in months) the events should be fetched.')
139             'description'           => 'For how long in the future (in months) the events should be fetched.',
140             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
141             'clientRegistryInclude' => FALSE,
142             'setByAdminModule'      => FALSE,
143             'setBySetupModule'      => TRUE,
144             'default'               => 1,
145         ),
146     );
147     
148     /**
149      * (non-PHPdoc)
150      * @see tine20/Tinebase/Config/Abstract::$_appName
151      */
152     protected $_appName = 'Calendar';
153     
154     /**
155      * holds the instance of the singleton
156      *
157      * @var Tinebase_Config
158      */
159     private static $_instance = NULL;
160     
161     /**
162      * the constructor
163      *
164      * don't use the constructor. use the singleton 
165      */    
166     private function __construct() {}
167     
168     /**
169      * the constructor
170      *
171      * don't use the constructor. use the singleton 
172      */    
173     private function __clone() {}
174     
175     /**
176      * Returns instance of Tinebase_Config
177      *
178      * @return Tinebase_Config
179      */
180     public static function getInstance() 
181     {
182         if (self::$_instance === NULL) {
183             self::$_instance = new self();
184         }
185         
186         return self::$_instance;
187     }
188     
189     /**
190      * (non-PHPdoc)
191      * @see tine20/Tinebase/Config/Abstract::getProperties()
192      */
193     public static function getProperties()
194     {
195         return self::$_properties;
196     }
197 }