Admin - searchQuotaNodes
[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-2017 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      * the right to view quota usage
129      * @staticvar string
130      */
131     const VIEW_QUOTA_USAGE = 'view_quota_usage';
132         
133     /**
134      * holds the instance of the singleton
135      *
136      * @var Admin_Acl_Rights
137      */
138     private static $_instance = NULL;
139     
140     /**
141      * the clone function
142      *
143      * disabled. use the singleton
144      */
145     private function __clone() 
146     {
147     }
148     
149     /**
150      * the constructor
151      *
152      */
153     private function __construct()
154     {
155     }    
156     
157     /**
158      * the singleton pattern
159      *
160      * @return Admin_Acl_Rights
161      */
162     public static function getInstance() 
163     {
164         if (self::$_instance === NULL) {
165             self::$_instance = new Admin_Acl_Rights;
166         }
167         
168         return self::$_instance;
169     }
170     
171     /**
172      * get all possible application rights
173      *
174      * @return  array   all application rights
175      */
176     public function getAllApplicationRights()
177     {
178         $allRights = parent::getAllApplicationRights();
179         
180         $addRights = array (
181             self::MANAGE_ACCESS_LOG, 
182             self::MANAGE_ACCOUNTS,
183             self::MANAGE_APPS, 
184             self::MANAGE_SHARED_TAGS,
185             self::MANAGE_ROLES,
186             self::MANAGE_COMPUTERS,
187             self::MANAGE_CONTAINERS,
188             self::MANAGE_CUSTOMFIELDS,
189             self::VIEW_ACCESS_LOG,
190             self::VIEW_ACCOUNTS,
191             self::VIEW_APPS, 
192             self::VIEW_ROLES,
193             self::VIEW_COMPUTERS,
194             self::VIEW_CONTAINERS,
195             self::VIEW_CUSTOMFIELDS,
196             self::VIEW_SERVERINFO,
197             self::VIEW_QUOTA_USAGE,
198         );
199         $allRights = array_merge($allRights, $addRights);
200         
201         return $allRights;
202     }
203
204     /**
205      * get translated right descriptions
206      * 
207      * @return  array with translated descriptions for this applications rights
208      */
209     public static function getTranslatedRightDescriptions()
210     {
211         $translate = Tinebase_Translation::getTranslation('Admin');
212         
213         $rightDescriptions = array(
214             self::MANAGE_ACCESS_LOG   => array(
215                 'text'          => $translate->_('manage access log'),
216                 'description'   => $translate->_('delete access log entries'),
217             ),
218             self::MANAGE_ACCOUNTS   => array(
219                 'text'          => $translate->_('manage accounts'),
220                 'description'   => $translate->_('add and edit users and groups, add group members, change user passwords'),
221             ),
222             self::MANAGE_APPS   => array(
223                 'text'          => $translate->_('manage applications'),
224                 'description'   => $translate->_('enable and disable applications, edit application settings'),
225             ),
226             self::MANAGE_ROLES  => array(
227                 'text'          => $translate->_('manage roles'),
228                 'description'   => $translate->_('add and edit roles, add new members to roles, add application rights to roles'),
229             ),
230             self::MANAGE_SHARED_TAGS    => array(
231                 'text'          => $translate->_('manage shared tags'),
232                 'description'   => $translate->_('add, delete and edit shared tags'),
233             ),
234             self::MANAGE_COMPUTERS => array(
235                 'text'          => $translate->_('manage computers'),
236                 'description'   => $translate->_('add, delete and edit (samba) computers'),
237             ),
238             self::MANAGE_CONTAINERS => array(
239                 'text'          => $translate->_('manage containers'),
240                 'description'   => $translate->_('add, delete and edit containers and manage container grants'),
241             ),
242             self::MANAGE_CUSTOMFIELDS   => array(
243                 'text'          => $translate->_('manage customfields'),
244                 'description'   => $translate->_('add and edit customfields'),
245             ),            
246             self::VIEW_ACCESS_LOG   => array(
247                 'text'          => $translate->_('view access log'),
248                 'description'   => $translate->_('view access log list'),
249             ),
250             self::VIEW_ACCOUNTS   => array(
251                 'text'          => $translate->_('view accounts'),
252                 'description'   => $translate->_('view accounts list and details'),
253             ),
254             self::VIEW_APPS   => array(
255                 'text'          => $translate->_('view applications'),
256                 'description'   => $translate->_('view applications list and details'),
257             ),
258             self::VIEW_ROLES  => array(
259                 'text'          => $translate->_('view roles'),
260                 'description'   => $translate->_('view roles list and details'),
261             ),
262             self::VIEW_COMPUTERS  => array(
263                 'text'          => $translate->_('view computers'),
264                 'description'   => $translate->_('view computers list and details'),
265             ),
266             self::VIEW_CONTAINERS  => array(
267                 'text'          => $translate->_('view containers'),
268                 'description'   => $translate->_('view personal and shared containers'),
269             ),
270             self::VIEW_CUSTOMFIELDS   => array(
271                 'text'          => $translate->_('view customfields'),
272                 'description'   => $translate->_('view customfields list'),
273             ),
274             self::VIEW_SERVERINFO   => array(
275                 'text'          => $translate->_('view serverinfo'),
276                 'description'   => $translate->_('view serverinfo list'),
277             ),
278             self::VIEW_QUOTA_USAGE => array(
279                 'text'          => $translate->_('view quota usage'),
280                 'description'   => $translate->_('view quota usage'),
281             ),
282         );
283         
284         $rightDescriptions = array_merge($rightDescriptions, parent::getTranslatedRightDescriptions());
285         return $rightDescriptions;
286     }
287 }