Merge branch '2016.11-develop' into 2017.11
[tine20] / tine20 / Felamimail / Config.php
1 <?php
2 /**
3  * @package     Felamimail
4  * @subpackage  Config
5  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
6  * @author      Philipp Schüle <p.schuele@metaways.de>
7  * @copyright   Copyright (c) 2012-2017 Metaways Infosystems GmbH (http://www.metaways.de)
8  */
9
10 /**
11  * Felamimail config class
12  * 
13  * @package     Felamimail
14  * @subpackage  Config
15  */
16 class Felamimail_Config extends Tinebase_Config_Abstract
17 {
18     /**
19      * is email body cached
20      * 
21      * @var string
22      */
23     const CACHE_EMAIL_BODY = 'cacheEmailBody';
24
25     /**
26      * delete archived mail
27      *
28      * @var string
29      */
30     const DELETE_ARCHIVED_MAIL = 'deleteArchivedMail';
31
32     /**
33      * Tine 2.0 flag feature
34      *
35      * @var string
36      * @see 0010576: show a tine20 icon on each message which was written in tine20
37      */
38     const FEATURE_TINE20_FLAG = 'tine20Flag';
39
40     /**
41      * Tine 2.0 filter message uris (only allow <a> uris)
42      *
43      * @var string
44      */
45     const FILTER_EMAIL_URIS = 'filterEmailUris';
46
47     /**
48      * system account special folders
49      *
50      * @var string
51      */
52     const SYSTEM_ACCOUNT_FOLDER_DEFAULTS = 'systemAccountFolderDefaults';
53
54     /**
55      * id of (filsystem) container for vacation templates
56      *
57      * @var string
58      */
59     const VACATION_TEMPLATES_CONTAINER_ID = 'vacationTemplatesContainerId';
60
61     /**
62      * id of (filsystem) container for email notification templates
63      *
64      * @var string
65      */
66     const EMAIL_NOTIFICATION_TEMPLATES_CONTAINER_ID = 'emailNotificationTemplatesContainerId';
67
68     /**
69      * the email address to notifify about notification bounces
70      *
71      * @var string
72      */
73     const SIEVE_ADMIN_BOUNCE_NOTIFICATION_EMAIL = 'sieveAdminBounceNotificationEmail';
74
75     /**
76      * allow only sieve redirect rules to internal (primary/secondary) email addresses
77      *
78      * @var string
79      */
80     const SIEVE_REDIRECT_ONLY_INTERNAL = 'sieveRedirectOnlyInternal';
81
82     /**
83      * user can set custom vacation message
84      *
85      * @var string
86      */
87     const VACATION_CUSTOM_MESSAGE_ALLOWED = 'vacationMessageCustomAllowed';
88
89     /**
90      * allow self signed tls cert for IMAP connection
91      *
92      * @see 0009676: activate certificate check for TLS/SSL
93      * @var string
94      */
95     const IMAP_ALLOW_SELF_SIGNED_TLS_CERT = 'imapAllowSelfSignedTlsCert';
96
97     /**
98      * (non-PHPdoc)
99      * @see tine20/Tinebase/Config/Definition::$_properties
100      */
101     protected static $_properties = array(
102         self::VACATION_TEMPLATES_CONTAINER_ID => array(
103         //_('Vacation Templates Node ID')
104             'label'                 => 'Vacation Templates Node ID',
105             'description'           => 'Vacation Templates Node ID',
106             'type'                  => Tinebase_Config_Abstract::TYPE_STRING,
107             'clientRegistryInclude' => FALSE,
108             'setByAdminModule'      => FALSE,
109             'setBySetupModule'      => FALSE,
110         ),
111         self::EMAIL_NOTIFICATION_TEMPLATES_CONTAINER_ID => array(
112             //_('Email Notification Templates Node ID')
113             'label'                 => 'Email Notification Templates Node ID',
114             'description'           => 'Email Notification Templates Node ID',
115             'type'                  => Tinebase_Config_Abstract::TYPE_STRING,
116             'clientRegistryInclude' => FALSE,
117             'setByAdminModule'      => FALSE,
118             'setBySetupModule'      => FALSE,
119         ),
120         self::VACATION_CUSTOM_MESSAGE_ALLOWED => array(
121         //_('Custom Vacation Message')
122             'label'                 => 'Custom Vacation Message',
123         // _('User is allowed to set custom vacation message for system account')
124             'description'           => 'User is allowed to set custom vacation message for system account',
125             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
126             'clientRegistryInclude' => TRUE,
127             'setByAdminModule'      => FALSE,
128             'setBySetupModule'      => FALSE,
129             'default'               => 1,
130         ),
131         self::CACHE_EMAIL_BODY => array(
132         //_('Cache email body')
133             'label'                 => 'Cache email body',
134         // _('Should the email body be cached (recommended for slow IMAP server connections)')
135             'description'           => 'Should the email body be cached (recommended for slow IMAP server connections)',
136             'type'                  => Tinebase_Config_Abstract::TYPE_INT,
137             'clientRegistryInclude' => FALSE,
138             'setByAdminModule'      => FALSE,
139             'setBySetupModule'      => TRUE,
140             'default'               => 1,
141         ),
142         self::DELETE_ARCHIVED_MAIL => array(
143             //_('Delete Archived Mail')
144             'label'                 => 'Delete Archived Mail',
145             'description'           => 'Delete Archived Mail',
146             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
147             'clientRegistryInclude' => FALSE,
148             'setByAdminModule'      => FALSE,
149             'setBySetupModule'      => TRUE,
150             'default'               => false,
151         ),
152         self::ENABLED_FEATURES => array(
153             //_('Enabled Features')
154             'label'                 => 'Enabled Features',
155             //_('Enabled features in Felamimail application.')
156             'description'           => 'Enabled features in Felamimail application.',
157             'type'                  => 'object',
158             'class'                 => 'Tinebase_Config_Struct',
159             'clientRegistryInclude' => TRUE,
160             'content'               => array(
161                 self::FEATURE_TINE20_FLAG => array(
162                     'label'         => 'Tine 2.0 Flag', //_('Tine 2.0 Flag')
163                     'description'   => 'Add a Tine 2.0 flag to sent messages', //_('Add a Tine 2.0 flag to sent messages')
164                 ),
165             ),
166             'default'               => array(
167                 self::FEATURE_TINE20_FLAG => true,
168             ),
169         ),
170         self::FILTER_EMAIL_URIS => array(
171             //_('Filter E-Mail URIs')
172             'label'                 => 'Filter E-Mail URIs',
173             // _('Should the email body uris be filtered. Only anchors with URIs are allowed if this is turned on.)')
174             'description'           => 'Should the email body uris be filtered. Only anchors with URIs are allowed if this is turned on',
175             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
176             'clientRegistryInclude' => FALSE,
177             'setByAdminModule'      => FALSE,
178             'setBySetupModule'      => TRUE,
179             'default'               => true,
180         ),
181         /**
182          * possible keys/values::
183          *
184          * 'sent_folder'       => 'Sent',
185          * 'trash_folder'      => 'Trash',
186          * 'drafts_folder'     => 'Drafts',
187          * 'templates_folder'  => 'Templates',
188          */
189         self::SYSTEM_ACCOUNT_FOLDER_DEFAULTS => array(
190             //_('System Account Folder Defaults')
191             'label'                 => 'System Account Folder Defaults',
192             // _('Paths of the special folders (like Sent, Trash, ...)')
193             'description'           => 'Paths of the special folders (like Sent, Trash, ...)',
194             'type'                  => Tinebase_Config_Abstract::TYPE_ARRAY,
195             'clientRegistryInclude' => FALSE,
196             'setByAdminModule'      => TRUE,
197             'setBySetupModule'      => TRUE,
198             'default'               => null,
199         ),
200         self::IMAP_ALLOW_SELF_SIGNED_TLS_CERT => array(
201             //_('Allow self signed TLS cert for IMAP connection')
202             'label'                 => 'Allow self signed TLS cert for IMAP connection',
203             'description'           => '',
204             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
205             'clientRegistryInclude' => FALSE,
206             'setByAdminModule'      => FALSE,
207             'setBySetupModule'      => TRUE,
208             'default'               => false,
209         ),
210         self::SIEVE_REDIRECT_ONLY_INTERNAL => array(
211             //_('Sieve Redirect Only Internal')
212             'label'                 => 'Sieve Redirect Only Internal',
213             // _('Allow only sieve redirect rules to internal (primary/secondary) email addresses')
214             'description'           => 'Allow only sieve redirect rules to internal (primary/secondary) email addresses',
215             'type'                  => Tinebase_Config_Abstract::TYPE_BOOL,
216             'clientRegistryInclude' => true,
217             'setByAdminModule'      => true,
218             'setBySetupModule'      => false,
219             'default'               => false,
220         ),
221         self::SIEVE_ADMIN_BOUNCE_NOTIFICATION_EMAIL => array(
222             //_('Sieve Notification Bounces Reporting Email')
223             'label'                 => 'Sieve Notification Bounces Reporting Email',
224             // _('Sieve Notification Bounces Reporting Email')
225             'description'           => 'Sieve Notification Bounces Reporting Email',
226             'type'                  => Tinebase_Config_Abstract::TYPE_STRING,
227             'clientRegistryInclude' => false,
228             'setByAdminModule'      => true,
229             'setBySetupModule'      => false,
230             'default'               => null,
231         ),
232     );
233     
234     /**
235      * (non-PHPdoc)
236      * @see tine20/Tinebase/Config/Abstract::$_appName
237      */
238     protected $_appName = 'Felamimail';
239     
240     /**
241      * holds the instance of the singleton
242      *
243      * @var Tinebase_Config
244      */
245     private static $_instance = NULL;
246     
247     /**
248      * the constructor
249      *
250      * don't use the constructor. use the singleton 
251      */    
252     private function __construct() {}
253     
254     /**
255      * the constructor
256      *
257      * don't use the constructor. use the singleton 
258      */    
259     private function __clone() {}
260     
261     /**
262      * Returns instance of Tinebase_Config
263      *
264      * @return Tinebase_Config
265      */
266     public static function getInstance() 
267     {
268         if (self::$_instance === NULL) {
269             self::$_instance = new self();
270         }
271         
272         return self::$_instance;
273     }
274     
275     /**
276      * (non-PHPdoc)
277      * @see tine20/Tinebase/Config/Abstract::getProperties()
278      */
279     public static function getProperties()
280     {
281         return self::$_properties;
282     }
283 }