c5b5c6cded497e6180bc2d20331e4c40246cb6fe
[tine20] / tine20 / Admin / Acl / Rights.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     Admin
6  * @subpackage  Acl
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @copyright   Copyright (c) 2007-2011 Metaways Infosystems GmbH (http://www.metaways.de)
9  * @author      Philipp Schüle <p.schuele@metaways.de>
10  * 
11  */
12
13 /**
14  * this class handles the rights for the admin application
15  * 
16  * a right is always specific to an application and not to a record
17  * examples for rights are: admin, run
18  * 
19  * to add a new right you have to do these 3 steps:
20  * - add a constant for the right
21  * - add the constant to the $addRights in getAllApplicationRights() function
22  * . add getText identifier in getTranslatedRightDescriptions() function
23  * 
24  * @package     Tinebase
25  * @subpackage  Acl
26  */
27 class Admin_Acl_Rights extends Tinebase_Acl_Rights_Abstract
28 {
29     /**
30      * the right to manage roles
31      * @staticvar string
32      */
33     const MANAGE_ACCESS_LOG = 'manage_access_log';
34     
35     /**
36      * the right to manage accounts
37      * @staticvar string
38      */
39     const MANAGE_ACCOUNTS = 'manage_accounts';
40     
41    /**
42      * the right to manage applications
43      * @staticvar string
44      */
45     const MANAGE_APPS = 'manage_apps';
46     
47     /**
48      * the right to manage shared tags
49      * @staticvar string
50      */
51     const MANAGE_SHARED_TAGS = 'manage_shared_tags';
52    
53     /**
54      * the right to manage roles
55      * @staticvar string
56      */
57     const MANAGE_ROLES = 'manage_roles';
58     
59     /**
60      * the right to manage computers
61      * @staticvar string
62      */
63     const MANAGE_COMPUTERS = 'manage_computers';
64     
65     /**
66      * the right to manage computers
67      * @staticvar string
68      */
69     const MANAGE_CONTAINERS = 'manage_containers';
70     
71     /**
72      * the right to manage customfields
73      * @staticvar string
74      */
75     const MANAGE_CUSTOMFIELDS = 'manage_customfields';
76     
77     /**
78      * the right to view roles
79      * @staticvar string
80      */
81     const VIEW_ACCESS_LOG = 'view_access_log';
82     
83     /**
84      * the right to view accounts
85      * @staticvar string
86      */
87     const VIEW_ACCOUNTS = 'view_accounts';
88     
89     /**
90      * the right to view applications
91      * @staticvar string
92      */
93     const VIEW_APPS = 'view_apps';
94     
95     /**
96      * the right to view roles
97      * @staticvar string
98      */
99     const VIEW_ROLES = 'view_roles';
100     
101     /**
102      * the right to manage computers
103      * @staticvar string
104      */
105     const VIEW_COMPUTERS = 'view_computers';
106     
107     /**
108      * the right to manage containers
109      * @staticvar string
110      */
111     const VIEW_CONTAINERS = 'view_containers';
112     
113     /**
114      * the right to customfields
115      * @staticvar string
116      */
117     const VIEW_CUSTOMFIELDS = 'view_customfields';
118         
119     /**
120      * MOD: added right
121      * 
122      * the right to manage serverinfo
123      * @staticvar string
124      */
125     const VIEW_SERVERINFO = 'view_serverinfo';
126         
127     /**
128      * holds the instance of the singleton
129      *
130      * @var Admin_Acl_Rights
131      */
132     private static $_instance = NULL;
133     
134     /**
135      * the clone function
136      *
137      * disabled. use the singleton
138      */
139     private function __clone() 
140     {
141     }
142     
143     /**
144      * the constructor
145      *
146      */
147     private function __construct()
148     {
149     }    
150     
151     /**
152      * the singleton pattern
153      *
154      * @return Admin_Acl_Rights
155      */
156     public static function getInstance() 
157     {
158         if (self::$_instance === NULL) {
159             self::$_instance = new Admin_Acl_Rights;
160         }
161         
162         return self::$_instance;
163     }
164     
165     /**
166      * get all possible application rights
167      *
168      * @return  array   all application rights
169      */
170     public function getAllApplicationRights()
171     {
172         $allRights = parent::getAllApplicationRights();
173         
174         $addRights = array (
175             self::MANAGE_ACCESS_LOG, 
176             self::MANAGE_ACCOUNTS,
177             self::MANAGE_APPS, 
178             self::MANAGE_SHARED_TAGS,
179             self::MANAGE_ROLES,
180             self::MANAGE_COMPUTERS,
181             self::MANAGE_CONTAINERS,
182             self::MANAGE_CUSTOMFIELDS,
183             self::VIEW_ACCESS_LOG,
184             self::VIEW_ACCOUNTS,
185             self::VIEW_APPS, 
186             self::VIEW_ROLES,
187             self::VIEW_COMPUTERS,
188             self::VIEW_CONTAINERS,
189             self::VIEW_CUSTOMFIELDS,
190             self::VIEW_SERVERINFO,
191         );
192         $allRights = array_merge($allRights, $addRights);
193         
194         return $allRights;
195     }
196
197     /**
198      * get translated right descriptions
199      * 
200      * @return  array with translated descriptions for this applications rights
201      */
202     public static function getTranslatedRightDescriptions()
203     {
204         $translate = Tinebase_Translation::getTranslation('Admin');
205         
206         $rightDescriptions = array(
207             self::MANAGE_ACCESS_LOG   => array(
208                 'text'          => $translate->_('manage access log'),
209                 'description'   => $translate->_('delete access log entries'),
210             ),
211             self::MANAGE_ACCOUNTS   => array(
212                 'text'          => $translate->_('manage accounts'),
213                 'description'   => $translate->_('add and edit users and groups, add group members, change user passwords'),
214             ),
215             self::MANAGE_APPS   => array(
216                 'text'          => $translate->_('manage applications'),
217                 'description'   => $translate->_('enable and disable applications, edit application settings'),
218             ),
219             self::MANAGE_ROLES  => array(
220                 'text'          => $translate->_('manage roles'),
221                 'description'   => $translate->_('add and edit roles, add new members to roles, add application rights to roles'),
222             ),
223             self::MANAGE_SHARED_TAGS    => array(
224                 'text'          => $translate->_('manage shared tags'),
225                 'description'   => $translate->_('add, delete and edit shared tags'),
226             ),
227             self::MANAGE_COMPUTERS => array(
228                 'text'          => $translate->_('manage computers'),
229                 'description'   => $translate->_('add, delete and edit (samba) computers'),
230             ),
231             self::MANAGE_CONTAINERS => array(
232                 'text'          => $translate->_('manage containers'),
233                 'description'   => $translate->_('add, delete and edit containers and manage container grants'),
234             ),
235             self::MANAGE_CUSTOMFIELDS   => array(
236                 'text'          => $translate->_('manage customfields'),
237                 'description'   => $translate->_('add and edit customfields'),
238             ),            
239             self::VIEW_ACCESS_LOG   => array(
240                 'text'          => $translate->_('view access log'),
241                 'description'   => $translate->_('view access log list'),
242             ),
243             self::VIEW_ACCOUNTS   => array(
244                 'text'          => $translate->_('view accounts'),
245                 'description'   => $translate->_('view accounts list and details'),
246             ),
247             self::VIEW_APPS   => array(
248                 'text'          => $translate->_('view applications'),
249                 'description'   => $translate->_('view applications list and details'),
250             ),
251             self::VIEW_ROLES  => array(
252                 'text'          => $translate->_('view roles'),
253                 'description'   => $translate->_('view roles list and details'),
254             ),
255             self::VIEW_COMPUTERS  => array(
256                 'text'          => $translate->_('view computers'),
257                 'description'   => $translate->_('view computers list and details'),
258             ),
259             self::VIEW_CONTAINERS  => array(
260                 'text'          => $translate->_('view containers'),
261                 'description'   => $translate->_('view personal and shared containers'),
262             ),
263             self::VIEW_CUSTOMFIELDS   => array(
264                 'text'          => $translate->_('view customfields'),
265                 'description'   => $translate->_('view customfields list'),
266             ),
267             self::VIEW_SERVERINFO   => array(
268                 'text'          => $translate->_('view serverinfo'),
269                 'description'   => $translate->_('view serverinfo list'),
270             ),
271         );
272         
273         $rightDescriptions = array_merge($rightDescriptions, parent::getTranslatedRightDescriptions());
274         return $rightDescriptions;
275     }
276 }