Merge branch '2016.11' into 2016.11-develop
[tine20] / tine20 / Timetracker / Preference.php
1 <?php
2 /**
3  * Tine 2.0
4  *
5  * @package     Timetracker
6  * @subpackage  Backend
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Philipp Schuele <p.schuele@metaways.de>
9  * @copyright   Copyright (c) 2009 Metaways Infosystems GmbH (http://www.metaways.de)
10  * 
11  */
12
13
14 /**
15  * backend for Timetracker preferences
16  *
17  * @package     Timetracker
18  * @subpackage  Backend
19  */
20 class Timetracker_Preference extends Tinebase_Preference_Abstract
21 {
22     /**************************** application preferences/settings *****************/
23     
24     /**
25      * use tine user credentials for imap connection
26      *
27      */
28     const TSODSEXPORTCONFIG = 'tsOdsExportConfig';
29
30     /**
31      * application
32      *
33      * @var string
34      */
35     protected $_application = 'Timetracker';
36         
37     /**************************** public functions *********************************/
38     
39     /**
40      * get all possible application prefs
41      *
42      * @return  array   all application prefs
43      */
44     public function getAllApplicationPreferences()
45     {
46         $allPrefs = array(
47             self::TSODSEXPORTCONFIG,
48         );
49             
50         return $allPrefs;
51     }
52     
53     /**
54      * get translated right descriptions
55      * 
56      * @return  array with translated descriptions for this applications preferences
57      */
58     public function getTranslatedPreferences()
59     {
60         $translate = Tinebase_Translation::getTranslation($this->_application);
61
62         $prefDescriptions = array(
63             self::TSODSEXPORTCONFIG  => array(
64                 'label'         => $translate->_('Timesheets ODS export configuration'),
65                 'description'   => $translate->_('Use this configuration for the timesheet ODS export.'),
66             ),
67         );
68         
69         return $prefDescriptions;
70     }
71     
72     /**
73      * get preference defaults if no default is found in the database
74      *
75      * @param string $_preferenceName
76      * @return Tinebase_Model_Preference
77      */
78     public function getApplicationPreferenceDefaults($_preferenceName, $_accountId = NULL, $_accountType=Tinebase_Acl_Rights::ACCOUNT_TYPE_USER)
79     {
80         $preference = $this->_getDefaultBasePreference($_preferenceName);
81         
82         switch($_preferenceName) {
83             case self::TSODSEXPORTCONFIG:
84                 $preference->value      = 'ts_default_ods';
85                 break;
86             default:
87                 throw new Tinebase_Exception_NotFound('Default preference with name ' . $_preferenceName . ' not found.');
88         }
89         
90         return $preference;
91     }
92     
93     /**
94      * get special options
95      *
96      * @param string $_value
97      * @return array
98      */
99     protected function _getSpecialOptions($_value)
100     {
101         $translate = Tinebase_Translation::getTranslation($this->_application);
102         
103         $result = array();
104         switch($_value) {
105             case self::TSODSEXPORTCONFIG:
106                 // get names from import export definitions
107                 $filter = new Tinebase_Model_ImportExportDefinitionFilter(array(
108                     array('field' => 'plugin', 'operator' => 'equals', 'value' => 'Timetracker_Export_Ods_Timesheet'),
109                 ));
110                 $configs = Tinebase_ImportExportDefinition::getInstance()->search($filter);
111                 if (! empty($configs)) {
112                     foreach($configs as $tsConfig) {
113                         $result[] = array($tsConfig->name, $tsConfig->name);
114                     }
115                 } else {
116                     $result[] = array('default', $translate->_('default'));
117                 }
118                 break;
119             default:
120                 $result = parent::_getSpecialOptions($_value);
121         }
122         
123         return $result;
124     }
125 }