summaryrefslogtreecommitdiffstats
path: root/lib/group.php
blob: ed9482418bd4ba1a3421ac3dc89a08a29c8551f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<?php
/**
 * ownCloud
 *
 * @author Frank Karlitschek
 * @copyright 2012 Frank Karlitschek frank@owncloud.org
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 *
 * You should have received a copy of the GNU Affero General Public
 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

/**
 * This class provides all methods needed for managing groups.
 *
 * Hooks provided:
 *   pre_createGroup(&run, gid)
 *   post_createGroup(gid)
 *   pre_deleteGroup(&run, gid)
 *   post_deleteGroup(gid)
 *   pre_addToGroup(&run, uid, gid)
 *   post_addToGroup(uid, gid)
 *   pre_removeFromGroup(&run, uid, gid)
 *   post_removeFromGroup(uid, gid)
 */
class OC_Group {
	// The backend used for group management
	/**
	 * @var OC_Group_Interface[]
	 */
	private static $_usedBackends = array();

	/**
	 * @brief set the group backend
	 * @param  string  $backend  The backend to use for user managment
	 * @return bool
	 */
	public static function useBackend( $backend ) {
		if($backend instanceof OC_Group_Interface) {
			self::$_usedBackends[]=$backend;
		}
	}

	/**
	 * remove all used backends
	 */
	public static function clearBackends() {
		self::$_usedBackends=array();
	}

	/**
	 * @brief Try to create a new group
	 * @param string $gid The name of the group to create
	 * @return bool
	 *
	 * Tries to create a new group. If the group name already exists, false will
	 * be returned. Basic checking of Group name
	 */
	public static function createGroup( $gid ) {
		// No empty group names!
		if( !$gid ) {
			return false;
		}
		// No duplicate group names
		if( in_array( $gid, self::getGroups())) {
			return false;
		}

		$run = true;
		OC_Hook::emit( "OC_Group", "pre_createGroup", array( "run" => &$run, "gid" => $gid ));

		if($run) {
			//create the group in the first backend that supports creating groups
			foreach(self::$_usedBackends as $backend) {
				if(!$backend->implementsActions(OC_GROUP_BACKEND_CREATE_GROUP))
					continue;

				$backend->createGroup($gid);
				OC_Hook::emit( "OC_User", "post_createGroup", array( "gid" => $gid ));

				return true;
			}
			return false;
		}else{
			return false;
		}
	}

	/**
	 * @brief delete a group
	 * @param string $gid gid of the group to delete
	 * @return bool
	 *
	 * Deletes a group and removes it from the group_user-table
	 */
	public static function deleteGroup( $gid ) {
		// Prevent users from deleting group admin
		if( $gid == "admin" ) {
			return false;
		}

		$run = true;
		OC_Hook::emit( "OC_Group", "pre_deleteGroup", array( "run" => &$run, "gid" => $gid ));

		if($run) {
			//delete the group from all backends
			foreach(self::$_usedBackends as $backend) {
				if(!$backend->implementsActions(OC_GROUP_BACKEND_DELETE_GROUP))
					continue;

				$backend->deleteGroup($gid);
				OC_Hook::emit( "OC_User", "post_deleteGroup", array( "gid" => $gid ));

				return true;
			}
			return false;
		}else{
			return false;
		}
	}

	/**
	 * @brief is user in group?
	 * @param string $uid uid of the user
	 * @param string $gid gid of the group
	 * @return bool
	 *
	 * Checks whether the user is member of a group or not.
	 */
	public static function inGroup( $uid, $gid ) {
		foreach(self::$_usedBackends as $backend) {
			if($backend->inGroup($uid, $gid)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * @brief Add a user to a group
	 * @param string $uid Name of the user to add to group
	 * @param string $gid Name of the group in which add the user
	 * @return bool
	 *
	 * Adds a user to a group.
	 */
	public static function addToGroup( $uid, $gid ) {
		// Does the group exist?
		if( !OC_Group::groupExists($gid)) {
			return false;
		}

		// Go go go
		$run = true;
		OC_Hook::emit( "OC_Group", "pre_addToGroup", array( "run" => &$run, "uid" => $uid, "gid" => $gid ));

		if($run) {
			$success=false;

			//add the user to the all backends that have the group
			foreach(self::$_usedBackends as $backend) {
				if(!$backend->implementsActions(OC_GROUP_BACKEND_ADD_TO_GROUP))
					continue;

				if($backend->groupExists($gid)) {
					$success|=$backend->addToGroup($uid, $gid);
				}
			}
			if($success) {
				OC_Hook::emit( "OC_User", "post_addToGroup", array( "uid" => $uid, "gid" => $gid ));
			}
			return $success;
		}else{
			return false;
		}
	}

	/**
	 * @brief Removes a user from a group
	 * @param string $uid Name of the user to remove from group
	 * @param string $gid Name of the group from which remove the user
	 * @return bool
	 *
	 * removes the user from a group.
	 */
	public static function removeFromGroup( $uid, $gid ) {
		$run = true;
		OC_Hook::emit( "OC_Group", "pre_removeFromGroup", array( "run" => &$run, "uid" => $uid, "gid" => $gid ));

		if($run) {
			//remove the user from the all backends that have the group
			foreach(self::$_usedBackends as $backend) {
				if(!$backend->implementsActions(OC_GROUP_BACKEND_REMOVE_FROM_GOUP))
					continue;

				$backend->removeFromGroup($uid, $gid);
				OC_Hook::emit( "OC_User", "post_removeFromGroup", array( "uid" => $uid, "gid" => $gid ));
			}
			return true;
		}else{
			return false;
		}
	}

	/**
	 * @brief Get all groups a user belongs to
	 * @param string $uid Name of the user
	 * @return array with group names
	 *
	 * This function fetches all groups a user belongs to. It does not check
	 * if the user exists at all.
	 */
	public static function getUserGroups( $uid ) {
		$groups=array();
		foreach(self::$_usedBackends as $backend) {
			$groups=array_merge($backend->getUserGroups($uid), $groups);
		}
		asort($groups);
		return $groups;
	}

	/**
	 * @brief get a list of all groups
	 * @returns array with group names
	 *
	 * Returns a list with all groups
	 */
	public static function getGroups($search = '', $limit = -1, $offset = 0) {
		$groups = array();
		foreach (self::$_usedBackends as $backend) {
			$groups = array_merge($backend->getGroups($search, $limit, $offset), $groups);
		}
		asort($groups);
		return $groups;
	}

	/**
	 * check if a group exists
	 * @param string $gid
	 * @return bool
	 */
	public static function groupExists($gid) {
		foreach(self::$_usedBackends as $backend) {
			if ($backend->groupExists($gid)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * @brief get a list of all users in a group
	 * @returns array with user ids
	 */
	public static function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
		$users=array();
		foreach(self::$_usedBackends as $backend) {
			$users = array_merge($backend->usersInGroup($gid, $search, $limit, $offset), $users);
		}
		return $users;
	}

	/**
	 * @brief get a list of all users in several groups
	 * @param array $gids
	 * @param string $search
	 * @param int $limit
	 * @param int $offset
	 * @return array with user ids
	 */
	public static function usersInGroups($gids, $search = '', $limit = -1, $offset = 0) {
		$users = array();
		foreach ($gids as $gid) {
			// TODO Need to apply limits to groups as total
			$users = array_merge(array_diff(self::usersInGroup($gid, $search, $limit, $offset), $users), $users);
		}
		return $users;
	}
}
change password" msgstr "Imposibil de schimbat parola" #: js/admin.js:73 msgid "Sending..." msgstr "" #: js/apps.js:45 templates/help.php:4 msgid "User Documentation" msgstr "Documentație utilizator" #: js/apps.js:50 msgid "Admin Documentation" msgstr "" #: js/apps.js:67 msgid "Update to {appversion}" msgstr "Actualizat la {versiuneaaplicaţiei}" #: js/apps.js:73 js/apps.js:106 js/apps.js:134 msgid "Disable" msgstr "Dezactivați" #: js/apps.js:73 js/apps.js:114 js/apps.js:127 js/apps.js:143 msgid "Enable" msgstr "Activare" #: js/apps.js:95 msgid "Please wait...." msgstr "Aşteptaţi vă rog...." #: js/apps.js:103 js/apps.js:104 js/apps.js:125 msgid "Error while disabling app" msgstr "" #: js/apps.js:124 js/apps.js:138 js/apps.js:139 msgid "Error while enabling app" msgstr "" #: js/apps.js:149 msgid "Updating...." msgstr "Actualizare în curs...." #: js/apps.js:152 msgid "Error while updating app" msgstr "Eroare în timpul actualizării aplicaţiei" #: js/apps.js:152 msgid "Error" msgstr "Eroare" #: js/apps.js:153 templates/apps.php:55 msgid "Update" msgstr "Actualizare" #: js/apps.js:156 msgid "Updated" msgstr "Actualizat" #: js/personal.js:243 msgid "Select a profile picture" msgstr "" #: js/personal.js:274 msgid "Very weak password" msgstr "" #: js/personal.js:275 msgid "Weak password" msgstr "" #: js/personal.js:276 msgid "So-so password" msgstr "" #: js/personal.js:277 msgid "Good password" msgstr "" #: js/personal.js:278 msgid "Strong password" msgstr "" #: js/personal.js:313 msgid "Decrypting files... Please wait, this can take some time." msgstr "" #: js/users.js:47 msgid "deleted" msgstr "șters" #: js/users.js:47 msgid "undo" msgstr "Anulează ultima acțiune" #: js/users.js:79 msgid "Unable to remove user" msgstr "Imposibil de eliminat utilizatorul" #: js/users.js:101 templates/users.php:24 templates/users.php:88 #: templates/users.php:116 msgid "Groups" msgstr "Grupuri" #: js/users.js:105 templates/users.php:90 templates/users.php:128 msgid "Group Admin" msgstr "Grupul Admin " #: js/users.js:127 templates/users.php:168 msgid "Delete" msgstr "Șterge" #: js/users.js:310 msgid "add group" msgstr "adăugaţi grupul" #: js/users.js:486 msgid "A valid username must be provided" msgstr "Trebuie să furnizaţi un nume de utilizator valid" #: js/users.js:487 js/users.js:493 js/users.js:508 msgid "Error creating user" msgstr "Eroare la crearea utilizatorului" #: js/users.js:492 msgid "A valid password must be provided" msgstr "Trebuie să furnizaţi o parolă validă" #: js/users.js:516 msgid "Warning: Home directory for user \"{user}\" already exists" msgstr "" #: personal.php:48 personal.php:49 msgid "__language_name__" msgstr "_language_name_" #: templates/admin.php:8 msgid "Everything (fatal issues, errors, warnings, info, debug)" msgstr "" #: templates/admin.php:9 msgid "Info, warnings, errors and fatal issues" msgstr "" #: templates/admin.php:10 msgid "Warnings, errors and fatal issues" msgstr "" #: templates/admin.php:11 msgid "Errors and fatal issues" msgstr "" #: templates/admin.php:12 msgid "Fatal issues only" msgstr "" #: templates/admin.php:16 templates/admin.php:23 msgid "None" msgstr "Niciuna" #: templates/admin.php:17 msgid "Login" msgstr "Autentificare" #: templates/admin.php:18 msgid "Plain" msgstr "" #: templates/admin.php:19 msgid "NT LAN Manager" msgstr "" #: templates/admin.php:24 msgid "SSL" msgstr "" #: templates/admin.php:25 msgid "TLS" msgstr "" #: templates/admin.php:47 templates/admin.php:61 msgid "Security Warning" msgstr "Avertisment de securitate" #: templates/admin.php:50 #, php-format msgid "" "You are accessing %s via HTTP. We strongly suggest you configure your server" " to require using HTTPS instead." msgstr "" #: templates/admin.php:64 msgid "" "Your data directory and your files are probably accessible from the " "internet. The .htaccess file is not working. We strongly suggest that you " "configure your webserver in a way that the data directory is no longer " "accessible or you move the data directory outside the webserver document " "root." msgstr "" #: templates/admin.php:75 msgid "Setup Warning" msgstr "Atenţie la implementare" #: templates/admin.php:78 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." msgstr "Serverul de web nu este încă setat corespunzător pentru a permite sincronizarea fișierelor deoarece interfața WebDAV pare a fi întreruptă." #: templates/admin.php:79 #, php-format msgid "Please double check the <a href=\"%s\">installation guides</a>." msgstr "" #: templates/admin.php:90 msgid "Module 'fileinfo' missing" msgstr "Modulul \"Fileinfo\" lipsește" #: templates/admin.php:93 msgid "" "The PHP module 'fileinfo' is missing. We strongly recommend to enable this " "module to get best results with mime-type detection." msgstr "Modulul PHP \"Fileinfo\" lipsește. Va recomandam sa activaţi acest modul pentru a obține cele mai bune rezultate cu detectarea mime-type." #: templates/admin.php:104 msgid "Your PHP version is outdated" msgstr "" #: templates/admin.php:107 msgid "" "Your PHP version is outdated. We strongly recommend to update to 5.3.8 or " "newer because older versions are known to be broken. It is possible that " "this installation is not working correctly." msgstr "" #: templates/admin.php:118 msgid "Locale not working" msgstr "Localizarea nu funcționează" #: templates/admin.php:123 msgid "System locale can not be set to a one which supports UTF-8." msgstr "" #: templates/admin.php:127 msgid "" "This means that there might be problems with certain characters in file " "names." msgstr "" #: templates/admin.php:131 #, php-format msgid "" "We strongly suggest to install the required packages on your system to " "support one of the following locales: %s." msgstr "" #: templates/admin.php:143 msgid "Internet connection not working" msgstr "Conexiunea la internet nu funcționează" #: templates/admin.php:146 msgid "" "This server has no working internet connection. This means that some of the " "features like mounting of external storage, notifications about updates or " "installation of 3rd party apps don´t work. Accessing files from remote and " "sending of notification emails might also not work. We suggest to enable " "internet connection for this server if you want to have all features." msgstr "" #: templates/admin.php:160 msgid "Cron" msgstr "Cron" #: templates/admin.php:167 #, php-format msgid "Last cron was executed at %s." msgstr "" #: templates/admin.php:170 #, php-format msgid "" "Last cron was executed at %s. This is more than an hour ago, something seems" " wrong." msgstr "" #: templates/admin.php:174 msgid "Cron was not executed yet!" msgstr "" #: templates/admin.php:184 msgid "Execute one task with each page loaded" msgstr "Execută o sarcină la fiecare pagină încărcată" #: templates/admin.php:192 msgid "" "cron.php is registered at a webcron service to call cron.php every 15 " "minutes over http." msgstr "" #: templates/admin.php:200 msgid "Use systems cron service to call the cron.php file every 15 minutes." msgstr "" #: templates/admin.php:205 msgid "Sharing" msgstr "Partajare" #: templates/admin.php:211 msgid "Enable Share API" msgstr "Activare API partajare" #: templates/admin.php:212 msgid "Allow apps to use the Share API" msgstr "Permite aplicațiilor să folosească API-ul de partajare" #: templates/admin.php:219 msgid "Allow links" msgstr "Pemite legături" #: templates/admin.php:220 msgid "Allow users to share items to the public with links" msgstr "Permite utilizatorilor să partajeze fișiere în mod public prin legături" #: templates/admin.php:227 msgid "Allow public uploads" msgstr "Permite încărcări publice" #: templates/admin.php:228 msgid "" "Allow users to enable others to upload into their publicly shared folders" msgstr "" #: templates/admin.php:235 msgid "Allow resharing" msgstr "Permite repartajarea" #: templates/admin.php:236 msgid "Allow users to share items shared with them again" msgstr "Permite utilizatorilor să repartajeze fișiere partajate cu ei" #: templates/admin.php:243 msgid "Allow users to share with anyone" msgstr "Permite utilizatorilor să partajeze cu oricine" #: templates/admin.php:246 msgid "Allow users to only share with users in their groups" msgstr "Permite utilizatorilor să partajeze doar cu utilizatori din același grup" #: templates/admin.php:253 msgid "Allow mail notification" msgstr "" #: templates/admin.php:254 msgid "Allow user to send mail notification for shared files" msgstr "" #: templates/admin.php:261 msgid "Security" msgstr "Securitate" #: templates/admin.php:274 msgid "Enforce HTTPS" msgstr "" #: templates/admin.php:276 #, php-format msgid "Forces the clients to connect to %s via an encrypted connection." msgstr "" #: templates/admin.php:282 #, php-format msgid "" "Please connect to your %s via HTTPS to enable or disable the SSL " "enforcement." msgstr "" #: templates/admin.php:294 msgid "Email Server" msgstr "" #: templates/admin.php:296 msgid "This is used for sending out notifications." msgstr "" #: templates/admin.php:327 msgid "From address" msgstr "" #: templates/admin.php:349 msgid "Authentication required" msgstr "" #: templates/admin.php:353 msgid "Server address" msgstr "Adresa server-ului" #: templates/admin.php:357 msgid "Port" msgstr "Portul" #: templates/admin.php:362 msgid "Credentials" msgstr "" #: templates/admin.php:363 msgid "SMTP Username" msgstr "" #: templates/admin.php:366 msgid "SMTP Password" msgstr "" #: templates/admin.php:370 msgid "Test email settings" msgstr "" #: templates/admin.php:371 msgid "Send email" msgstr "" #: templates/admin.php:376 msgid "Log" msgstr "Jurnal de activitate" #: templates/admin.php:377 msgid "Log level" msgstr "Nivel jurnal" #: templates/admin.php:409 msgid "More" msgstr "Mai mult" #: templates/admin.php:410 msgid "Less" msgstr "Mai puțin" #: templates/admin.php:416 templates/personal.php:171 msgid "Version" msgstr "Versiunea" #: templates/admin.php:420 templates/personal.php:174 msgid "" "Developed by the <a href=\"http://ownCloud.org/contact\" " "target=\"_blank\">ownCloud community</a>, the <a " "href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is " "licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" " "target=\"_blank\"><abbr title=\"Affero General Public " "License\">AGPL</abbr></a>." msgstr "Dezvoltat de the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunitatea ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">codul sursă</a> este licențiat sub <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." #: templates/apps.php:14 msgid "Add your App" msgstr "Adaugă aplicația ta" #: templates/apps.php:31 msgid "More Apps" msgstr "Mai multe aplicații" #: templates/apps.php:38 msgid "Select an App" msgstr "Selectează o aplicație" #: templates/apps.php:43 msgid "Documentation:" msgstr "" #: templates/apps.php:49 msgid "See application page at apps.owncloud.com" msgstr "Vizualizează pagina applicației pe apps.owncloud.com" #: templates/apps.php:51 msgid "See application website" msgstr "" #: templates/apps.php:53 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgstr "<span class=\"licence\"></span>-licențiat <span class=\"author\"></span>" #: templates/help.php:6 msgid "Administrator Documentation" msgstr "Documentație administrator" #: templates/help.php:9 msgid "Online Documentation" msgstr "Documentație online" #: templates/help.php:11 msgid "Forum" msgstr "Forum" #: templates/help.php:14 msgid "Bugtracker" msgstr "Urmărire bug-uri" #: templates/help.php:17 msgid "Commercial Support" msgstr "Suport comercial" #: templates/personal.php:8 msgid "Get the apps to sync your files" msgstr "Ia acum aplicatia pentru sincronizarea fisierelor " #: templates/personal.php:19 msgid "Show First Run Wizard again" msgstr "" #: templates/personal.php:27 #, php-format msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" msgstr "Ați utilizat <strong>%s</strong> din <strong>%s</strong> disponibile" #: templates/personal.php:38 templates/users.php:21 templates/users.php:87 msgid "Password" msgstr "Parolă" #: templates/personal.php:39 msgid "Your password was changed" msgstr "Parola a fost modificată" #: templates/personal.php:40 msgid "Unable to change your password" msgstr "Imposibil de-ați schimbat parola" #: templates/personal.php:42 msgid "Current password" msgstr "Parola curentă" #: templates/personal.php:45 msgid "New password" msgstr "Noua parolă" #: templates/personal.php:49 msgid "Change password" msgstr "Schimbă parola" #: templates/personal.php:61 templates/users.php:86 msgid "Full Name" msgstr "" #: templates/personal.php:76 msgid "Email" msgstr "Email" #: templates/personal.php:78 msgid "Your email address" msgstr "Adresa ta de email" #: templates/personal.php:81 msgid "" "Fill in an email address to enable password recovery and receive " "notifications" msgstr "" #: templates/personal.php:89 msgid "Profile picture" msgstr "Imagine de profil" #: templates/personal.php:94 msgid "Upload new" msgstr "" #: templates/personal.php:96 msgid "Select new from Files" msgstr "" #: templates/personal.php:97 msgid "Remove image" msgstr "Înlătură imagine" #: templates/personal.php:98 msgid "Either png or jpg. Ideally square but you will be able to crop it." msgstr "" #: templates/personal.php:100 msgid "Your avatar is provided by your original account." msgstr "" #: templates/personal.php:104 msgid "Cancel" msgstr "Anulare" #: templates/personal.php:105 msgid "Choose as profile image" msgstr "Alege drept imagine de profil" #: templates/personal.php:111 templates/personal.php:112 msgid "Language" msgstr "Limba" #: templates/personal.php:131 msgid "Help translate" msgstr "Ajută la traducere" #: templates/personal.php:137 msgid "WebDAV" msgstr "WebDAV" #: templates/personal.php:139 #, php-format msgid "" "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via " "WebDAV</a>" msgstr "" #: templates/personal.php:151 msgid "The encryption app is no longer enabled, please decrypt all your files" msgstr "" #: templates/personal.php:157 msgid "Log-in password" msgstr "" #: templates/personal.php:162 msgid "Decrypt all Files" msgstr "" #: templates/users.php:19 msgid "Login Name" msgstr "Autentificare" #: templates/users.php:28 msgid "Create" msgstr "Crează" #: templates/users.php:34 msgid "Admin Recovery Password" msgstr "" #: templates/users.php:35 templates/users.php:36 msgid "" "Enter the recovery password in order to recover the users files during " "password change" msgstr "" #: templates/users.php:40 msgid "Default Storage" msgstr "Stocare implicită" #: templates/users.php:42 templates/users.php:137 msgid "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" msgstr "" #: templates/users.php:46 templates/users.php:146 msgid "Unlimited" msgstr "Nelimitată" #: templates/users.php:64 templates/users.php:161 msgid "Other" msgstr "Altele" #: templates/users.php:85 msgid "Username" msgstr "Nume utilizator" #: templates/users.php:92 msgid "Storage" msgstr "Stocare" #: templates/users.php:106 msgid "change full name" msgstr "" #: templates/users.php:110 msgid "set new password" msgstr "setează parolă nouă" #: templates/users.php:141 msgid "Default" msgstr "Implicită"