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