0010120: shorten long event summaries
[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      * Crop days view
41      *
42      * @var string
43      */
44     const CROP_DAYS_VIEW = 'daysviewcroptime';
45     
46     /**
47      * Allow events outside the definition created by the edit dialog
48      * 
49      * @var string
50      */
51     const CROP_DAYS_VIEW_ALLOW_ALL_EVENTS = 'daysviewallowallevents';
52
53     /**
54      * MAX_FILTER_PERIOD_CALDAV
55      * 
56      * @var string
57      */
58     const MAX_FILTER_PERIOD_CALDAV = 'maxfilterperiodcaldav';
59     
60     /**
61      * MAX_NOTIFICATION_PERIOD_FROM
62      * 
63      * @var string
64      */
65     const MAX_NOTIFICATION_PERIOD_FROM = 'maxnotificationperiodfrom';
66     
67     /**
68      * MAX_JSON_DEFAULT_FILTER_PERIOD_FROM
69      * 
70      * @var string
71      */
72     const MAX_JSON_DEFAULT_FILTER_PERIOD_FROM = 'maxjsondefaultfilterperiodfrom';
73     
74     /**
75      * MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL
76      * 
77      * @var string
78      */
79     const MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL = 'maxjsondefaultfilterperioduntil';
80     
81     /**
82      * DISABLE_EXTERNAL_IMIP
83      *
84      * @var string
85      */
86     const DISABLE_EXTERNAL_IMIP = 'disableExternalImip';
87     
88     /**
89      * (non-PHPdoc)
90      * @see tine20/Tinebase/Config/Definition::$_properties
91      */
92     protected static $_properties = array(
93         self::FIXED_CALENDARS => array(
94                                    //_('Fixed Calendars')
95             'label'                 => 'Fixed Calendars',
96                                    //_('Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.')
97             'description'           => 'Calendars always selected regardless of all filter parameters. A valid use case might be to force the display of an certain holiday calendar.',
98             'type'                  => 'array',
99             '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
100             'clientRegistryInclude' => TRUE
101         
102         ),
103         self::CROP_DAYS_VIEW => array(
104                                    //_('Crop Days')
105             'label'                 => 'Crop Days',
106                                    //_('Crop calendar view configured start and endtime.')
107             'description'           => 'Crop calendar view configured start and endtime.',
108             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
109             'clientRegistryInclude' => true,
110             'default'               => false
111         
112         ),
113         self::CROP_DAYS_VIEW_ALLOW_ALL_EVENTS => array(
114                                    //_('Crop Days Limit Override')
115             'label'                 => 'Crop Days Limit Override',
116                                    //_('Allow events outside start and endtime.')
117             'description'           => 'Allow events outside start and endtime.',
118             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
119             'clientRegistryInclude' => true,
120             'default'               => false
121         
122         ),
123         self::ATTENDEE_STATUS => array(
124                                    //_('Attendee Status Available')
125             'label'                 => 'Attendee Status Available',
126                                    //_('Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.')
127             'description'           => 'Possible event attendee status. Please note that additional attendee status might impact other calendar systems on export or syncronisation.',
128             'type'                  => 'keyFieldConfig',
129             'options'               => array('recordModel' => 'Calendar_Model_AttendeeStatus'),
130             'clientRegistryInclude' => TRUE,
131             'default'               => 'NEEDS-ACTION'
132         ),
133         self::ATTENDEE_ROLES => array(
134                                    //_('Attendee Roles Available')
135             'label'                 => 'Attendee Roles Available',
136                                    //_('Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.')
137             'description'           => 'Possible event attendee roles. Please note that additional attendee roles might impact other calendar systems on export or syncronisation.',
138             'type'                  => 'keyFieldConfig',
139             'options'               => array('recordModel' => 'Calendar_Model_AttendeeRole'),
140             'clientRegistryInclude' => TRUE,
141             'default'               => 'REQ'
142         ),
143         self::MAX_FILTER_PERIOD_CALDAV => array(
144         //_('Filter timeslot for CalDAV events')
145             'label'                 => 'Filter timeslot for events',
146         //_('For how long in the past (in months) the events should be synchronized.')
147             'description'           => 'For how long in the past (in months) the events should be synchronized.',
148             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
149             'clientRegistryInclude' => FALSE,
150             'setByAdminModule'      => FALSE,
151             'setBySetupModule'      => TRUE,
152             'default'               => 2,
153         ),
154         self::MAX_NOTIFICATION_PERIOD_FROM => array(
155         //_('Timeslot for event notifications')
156             'label'                 => 'Timeslot for event notifications',
157         //_('For how long in the past (in weeks) event notifications should be sent.')
158             'description'           => 'For how long in the past (in weeks) event notifications should be sent.',
159             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
160             'clientRegistryInclude' => FALSE,
161             'setByAdminModule'      => FALSE,
162             'setBySetupModule'      => TRUE,
163             'default'               => 1, // 1 week is default
164         ),
165         self::MAX_JSON_DEFAULT_FILTER_PERIOD_FROM => array(
166         //_('Default filter period (from) for events fetched via JSON API')
167             'label'                 => 'Default filter period (from) for events fetched via JSON API',
168         //_('For how long in the past (in months) the events should be fetched.')
169             'description'           => 'For how long in the past (in months) the events should be fetched.',
170             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
171             'clientRegistryInclude' => FALSE,
172             'setByAdminModule'      => FALSE,
173             'setBySetupModule'      => TRUE,
174             'default'               => 0,
175         ),
176         self::MAX_JSON_DEFAULT_FILTER_PERIOD_UNTIL => array(
177         //_('Default filter period (until) for events fetched via JSON API')
178             'label'                 => 'Default filter period (until) for events fetched via JSON API',
179         //_('For how long in the future (in months) the events should be fetched.')
180             'description'           => 'For how long in the future (in months) the events should be fetched.',
181             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
182             'clientRegistryInclude' => FALSE,
183             'setByAdminModule'      => FALSE,
184             'setBySetupModule'      => TRUE,
185             'default'               => 1,
186         ),
187         self::DISABLE_EXTERNAL_IMIP => array(
188         //_('Disable iMIP for external organizers')
189             'label'                 => 'Disable iMIP for external organizers',
190         //_('Disable iMIP for external organizers')
191             'description'           => 'Disable iMIP for external organizers',
192             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
193             'clientRegistryInclude' => false,
194             'setByAdminModule'      => false,
195             'setBySetupModule'      => true,
196             'default'               => false,
197         ),
198     );
199     
200     /**
201      * (non-PHPdoc)
202      * @see tine20/Tinebase/Config/Abstract::$_appName
203      */
204     protected $_appName = 'Calendar';
205     
206     /**
207      * holds the instance of the singleton
208      *
209      * @var Tinebase_Config
210      */
211     private static $_instance = NULL;
212     
213     /**
214      * the constructor
215      *
216      * don't use the constructor. use the singleton 
217      */    
218     private function __construct() {}
219     
220     /**
221      * the constructor
222      *
223      * don't use the constructor. use the singleton 
224      */    
225     private function __clone() {}
226     
227     /**
228      * Returns instance of Tinebase_Config
229      *
230      * @return Tinebase_Config
231      */
232     public static function getInstance() 
233     {
234         if (self::$_instance === NULL) {
235             self::$_instance = new self();
236         }
237         
238         return self::$_instance;
239     }
240     
241     /**
242      * (non-PHPdoc)
243      * @see tine20/Tinebase/Config/Abstract::getProperties()
244      */
245     public static function getProperties()
246     {
247         return self::$_properties;
248     }
249 }