Merge branch '2015.11' into 2015.11-develop
[tine20] / tine20 / Addressbook / Config.php
1 <?php
2 /**
3  * @package     Addressbook
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) 2011 Metaways Infosystems GmbH (http://www.metaways.de)
8  */
9
10 /**
11  * Addressbook config class
12  * 
13  * @package     Addressbook
14  * @subpackage  Config
15  */
16 class Addressbook_Config extends Tinebase_Config_Abstract
17 {
18
19     /**
20      * contact nominatim during contact import
21      *
22      * @var string
23      */
24     const CONTACT_IMPORT_NOMINATIM = 'contactImportNominatim';
25
26     /**
27      * fields for contact record duplicate check
28      * 
29      * @var string
30      */
31     const CONTACT_DUP_FIELDS = 'contactDupFields';
32     
33     /**
34      * fields for contact salutations
35      * 
36      * @var string
37      */
38     const CONTACT_SALUTATION = 'contactSalutation';
39     
40     /**
41      * fields for list type
42      *
43      * @var string
44      */
45     const LIST_TYPE = 'listType';
46     
47     /**
48      * config for address parsing rules file
49      * 
50      * @var string
51      */
52     const CONTACT_ADDRESS_PARSE_RULES_FILE = 'parseRulesFile';
53
54     /**
55      * FEATURE_LIST_VIEW
56      *
57      * @var string
58      */
59     const FEATURE_LIST_VIEW = 'featureListView';
60
61     /**
62      * (FEATURE_LIST_VIEW-PHPdoc)
63      * @see tine20/Tinebase/Config/Definition::$_properties
64      */
65     protected static $_properties = array(
66         self::ENABLED_FEATURES => array(
67            //_('Enabled Features')
68            'label'                 => 'Enabled Features',
69            //_('Enabled Features in Calendar Application.')
70            'description'           => 'Enabled Features in Addressbook Application.',
71            'type'                  => 'object',
72            'class'                 => 'Tinebase_Config_Struct',
73            'clientRegistryInclude' => TRUE,
74            'content'               => array(
75                self::FEATURE_LIST_VIEW => array(
76                    'label'         => 'Addressbook List View', //_('Addressbook List View')
77                    'description'   => 'Shows an additional view for lists inside the addressbook', //_('Shows an additional view for lists inside the addressbook)
78                ),
79            ),
80            'default'               => array(
81                self::FEATURE_LIST_VIEW => false,
82            ),
83         ),
84         self::CONTACT_DUP_FIELDS => array(
85                                    //_('Contact duplicate check fields')
86             'label'                 => 'Contact duplicate check fields',
87                                    //_('These fields are checked when a new contact is created. If a record with the same data in the fields is found, a duplicate exception is thrown.')
88             'description'           => 'These fields are checked when a new contact is created. If a record with the same data in the fields is found, a duplicate exception is thrown.',
89             'type'                  => 'array',
90             'contents'              => 'array',
91             'clientRegistryInclude' => TRUE,
92         // @todo make default work
93             'default'               => array(               // array of alternatives
94                 array('n_given', 'n_family', 'org_name'),   // all fields must match
95                 array('email'),                             // single field that needs to match
96             ),
97         ),
98         self::CONTACT_SALUTATION => array(
99         //_('Contact salutations available')
100             'label'                 => 'Task priorities available',
101         //_('Possible contact salutations. Please note that additional values might impact other Addressbook systems on export or syncronisation.')
102             'description'           => 'Possible contact salutations. Please note that additional values might impact other Addressbook systems on export or syncronisation.',
103             'type'                  => 'keyFieldConfig',
104             'options'               => array('recordModel' => 'Addressbook_Model_Salutation'),
105             'clientRegistryInclude' => TRUE,
106             'default'               => array(
107                 'records' => array(
108                     array('id' => 'MR',      'value' => 'Mr',      'gender' => Addressbook_Model_Salutation::GENDER_MALE,   'image' => 'images/empty_photo_male.png',    'system' => true), //_('Mr')
109                     array('id' => 'MS',      'value' => 'Ms',      'gender' => Addressbook_Model_Salutation::GENDER_FEMALE, 'image' => 'images/empty_photo_female.png',  'system' => true), //_('Ms')
110                     array('id' => 'COMPANY', 'value' => 'Company', 'gender' => Addressbook_Model_Salutation::GENDER_OTHER,  'image' => 'images/empty_photo_company.png', 'system' => true), //_('Company')
111                 ),
112 //                'default' => 'MR'
113             )
114         ),
115         self::CONTACT_ADDRESS_PARSE_RULES_FILE => array(
116         //_('Parsing rules for addresses')
117             'label'                 => 'Parsing rules for addresses',
118         //_('Path to a XML file with address parsing rules.')
119             'description'           => 'Path to a XML file with address parsing rules.',
120             'type'                  => 'string',
121             'clientRegistryInclude' => FALSE,
122             'setByAdminModule'      => FALSE,
123             'setBySetupModule'      => FALSE,
124         ),
125         self::LIST_TYPE => array(
126                 //_('List types available')
127                 'label'                 => 'List types available',
128                 //_('List types available.')
129                 'description'           => 'List types available.',
130                 'type'                  => 'keyFieldConfig',
131                 'clientRegistryInclude' => TRUE,
132                 'setByAdminModule'      => true,
133                 'default'               => array(
134                     'records' => array(
135                         array('id' => 'DEPARTMENT',    'value' => 'Department'), //_('Department')
136                         array('id' => 'MAILINGLIST',    'value' => 'Mailing list'), //_('Mailing list')
137                     ),
138             )
139         ),
140         self::CONTACT_IMPORT_NOMINATIM => array(
141             //_('Use Nominatim during contact import')
142             'label'                 => 'Use Nominatim during contact import',
143             'description'           => 'Use Nominatim during contact import',
144             'type'                  => 'bool',
145             'default'               => false,
146             'clientRegistryInclude' => false,
147             'setByAdminModule'      => true,
148             'setBySetupModule'      => true,
149         ),
150     );
151     
152     /**
153      * (non-PHPdoc)
154      * @see tine20/Tinebase/Config/Abstract::$_appName
155      */
156     protected $_appName = 'Addressbook';
157     
158     /**
159      * holds the instance of the singleton
160      *
161      * @var Tinebase_Config
162      */
163     private static $_instance = NULL;
164     
165     /**
166      * the constructor
167      *
168      * don't use the constructor. use the singleton 
169      */    
170     private function __construct() {}
171     
172     /**
173      * the constructor
174      *
175      * don't use the constructor. use the singleton 
176      */    
177     private function __clone() {}
178     
179     /**
180      * Returns instance of Tinebase_Config
181      *
182      * @return Tinebase_Config
183      */
184     public static function getInstance() 
185     {
186         if (self::$_instance === NULL) {
187             self::$_instance = new self();
188         }
189         
190         return self::$_instance;
191     }
192     
193     /**
194      * (non-PHPdoc)
195      * @see tine20/Tinebase/Config/Abstract::getProperties()
196      */
197     public static function getProperties()
198     {
199         return self::$_properties;
200     }
201 }