0010046: config for disabling external imip
[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-2014 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      * DISABLE_EXTERNAL_IMIP
69      *
70      * @var string
71      */
72     const DISABLE_EXTERNAL_IMIP = 'disableExternalImip';
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::ATTENDEE_STATUS => array(
90                                    //_('Attendee Status Available')
91             'label'                 => 'Attendee Status Available',
92                                    //_('Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.')
93             'description'           => 'Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.',
94             'type'                  => 'keyFieldConfig',
95             'options'               => array('recordModel' => 'Calendar_Model_AttendeeStatus'),
96             'clientRegistryInclude' => TRUE,
97             'default'               => 'NEEDS-ACTION'
98         ),
99         self::ATTENDEE_ROLES => array(
100                                    //_('Attendee Roles Available')
101             'label'                 => 'Attendee Roles Available',
102                                    //_('Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.')
103             'description'           => 'Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.',
104             'type'                  => 'keyFieldConfig',
105             'options'               => array('recordModel' => 'Calendar_Model_AttendeeRole'),
106             'clientRegistryInclude' => TRUE,
107             'default'               => 'REQ'
108         ),
109         self::MAX_FILTER_PERIOD_CALDAV => array(
110         //_('Filter timeslot for CalDAV events')
111             'label'                 => 'Filter timeslot for events',
112         //_('For how long in the past (in months) the events should be synchronized.')
113             'description'           => 'For how long in the past (in months) the events should be synchronized.',
114             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
115             'clientRegistryInclude' => FALSE,
116             'setByAdminModule'      => FALSE,
117             'setBySetupModule'      => TRUE,
118             'default'               => 2,
119         ),
120         self::MAX_NOTIFICATION_PERIOD_FROM => array(
121         //_('Timeslot for event notifications')
122             'label'                 => 'Timeslot for event notifications',
123         //_('For how long in the past (in weeks) event notifications should be sent.')
124             'description'           => 'For how long in the past (in weeks) event notifications should be sent.',
125             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
126             'clientRegistryInclude' => FALSE,
127             'setByAdminModule'      => FALSE,
128             'setBySetupModule'      => TRUE,
129             'default'               => 1, // 1 week is default
130         ),
131         self::MAX_JSON_DEFAULT_FILTER_PERIOD_FROM => array(
132         //_('Default filter period (from) for events fetched via JSON API')
133             'label'                 => 'Default filter period (from) for events fetched via JSON API',
134         //_('For how long in the past (in months) the events should be fetched.')
135             'description'           => 'For how long in the past (in months) the events should be fetched.',
136             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
137             'clientRegistryInclude' => FALSE,
138             'setByAdminModule'      => FALSE,
139             'setBySetupModule'      => TRUE,
140             'default'               => 0,
141         ),
142         self::MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL => array(
143         //_('Default filter period (until) for events fetched via JSON API')
144             'label'                 => 'Default filter period (until) for events fetched via JSON API',
145         //_('For how long in the future (in months) the events should be fetched.')
146             'description'           => 'For how long in the future (in months) the events should be fetched.',
147             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
148             'clientRegistryInclude' => FALSE,
149             'setByAdminModule'      => FALSE,
150             'setBySetupModule'      => TRUE,
151             'default'               => 1,
152         ),
153         self::DISABLE_EXTERNAL_IMIP => array(
154         //_('Disable iMIP for external organizers')
155             'label'                 => 'Disable iMIP for external organizers',
156         //_('Disable iMIP for external organizers')
157             'description'           => 'Disable iMIP for external organizers',
158             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
159             'clientRegistryInclude' => false,
160             'setByAdminModule'      => false,
161             'setBySetupModule'      => true,
162             'default'               => false,
163         ),
164     );
165     
166     /**
167      * (non-PHPdoc)
168      * @see tine20/Tinebase/Config/Abstract::$_appName
169      */
170     protected $_appName = 'Calendar';
171     
172     /**
173      * holds the instance of the singleton
174      *
175      * @var Tinebase_Config
176      */
177     private static $_instance = NULL;
178     
179     /**
180      * the constructor
181      *
182      * don't use the constructor. use the singleton 
183      */    
184     private function __construct() {}
185     
186     /**
187      * the constructor
188      *
189      * don't use the constructor. use the singleton 
190      */    
191     private function __clone() {}
192     
193     /**
194      * Returns instance of Tinebase_Config
195      *
196      * @return Tinebase_Config
197      */
198     public static function getInstance() 
199     {
200         if (self::$_instance === NULL) {
201             self::$_instance = new self();
202         }
203         
204         return self::$_instance;
205     }
206     
207     /**
208      * (non-PHPdoc)
209      * @see tine20/Tinebase/Config/Abstract::getProperties()
210      */
211     public static function getProperties()
212     {
213         return self::$_properties;
214     }
215 }