Merge branch '2013.10'
[tine20] / tine20 / Tool / Application / templates / Preference.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     ExampleApplication
6  * @subpackage  Preference
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Alexander Stintzing <a.stintzing@metaways.de>
9  * @copyright   Copyright (c) 2012 Metaways Infosystems GmbH (http://www.metaways.de)
10  */
11
12
13 /**
14  * backend for ExampleApplication preferences
15  *
16  * @package     ExampleApplication
17  * @subpackage  Preference
18  */
19 class ExampleApplication_Preference extends Tinebase_Preference_Abstract
20 {
21     /**************************** application preferences/settings *****************/
22     
23     /**
24      * default container for example record
25      */
26     const DEFAULT_EXAMPLERECORD_CONTAINER = 'defaultExampleRecordContainer';
27     
28     /**
29      * @var string application
30      */
31     protected $_application = 'ExampleApplication';
32         
33     /**************************** public functions *********************************/
34     
35     /**
36      * get all possible application prefs
37      *
38      * @return  array   all application prefs
39      */
40     public function getAllApplicationPreferences()
41     {
42         $allPrefs = array(
43             self::DEFAULT_EXAMPLERECORD_CONTAINER,
44         );
45             
46         return $allPrefs;
47     }
48     
49     /**
50      * get translated right descriptions
51      * 
52      * @return  array with translated descriptions for this applications preferences
53      */
54     public function getTranslatedPreferences()
55     {
56         $translate = Tinebase_Translation::getTranslation($this->_application);
57
58         $prefDescriptions = array(
59             self::DEFAULT_EXAMPLERECORD_CONTAINER  => array(
60                 'label'         => $translate->_('Default Example Record Container'),
61                 'description'   => $translate->_('The default container for new records'),
62             )
63         );
64         return $prefDescriptions;
65     }
66     
67     /**
68      * get preference defaults if no default is found in the database
69      *
70      * @param string $_preferenceName
71      * @param string|Tinebase_Model_User $_accountId
72      * @param string $_accountType
73      * @return Tinebase_Model_Preference
74      */
75     public function getApplicationPreferenceDefaults($_preferenceName, $_accountId = NULL, $_accountType = Tinebase_Acl_Rights::ACCOUNT_TYPE_USER)
76     {
77         $preference = $this->_getDefaultBasePreference($_preferenceName);
78         
79         switch($_preferenceName) {
80             case self::DEFAULT_EXAMPLERECORD_CONTAINER:
81                 $this->_getDefaultContainerPreferenceDefaults($preference, $_accountId);
82                 break;
83             default:
84                 throw new Tinebase_Exception_NotFound('Default preference with name ' . $_preferenceName . ' not found.');
85         }
86         
87         return $preference;
88     }
89 }