Completed
Push — development ( 2c05ec...a5a40b )
by Nils
07:16
created

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 *
4
 * @file          users.php
5
 * @author        Nils Laumaillé
6
 * @version       2.1.27
7
 * @copyright     (c) 2009-2017 Nils Laumaillé
8
 * @licensing     GNU AFFERO GPL 3.0
9
 * @link          http://www.teampass.net
10
 *
11
 * This library is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
 */
15
16 View Code Duplication
if (
17
    !isset($_SESSION['CPM']) || $_SESSION['CPM'] != 1 ||
18
    !isset($_SESSION['user_id']) || empty($_SESSION['user_id']) ||
19
    !isset($_SESSION['key']) || empty($_SESSION['key']))
20
{
21
    die('Hacking attempt...');
22
}
23
24
/* do checks */
25
require_once $_SESSION['settings']['cpassman_dir'].'/sources/checks.php';
26
if (!checkUser($_SESSION['user_id'], $_SESSION['key'], curPage())) {
27
    $_SESSION['error']['code'] = ERR_NOT_ALLOWED; //not allowed page
28
    include $_SESSION['settings']['cpassman_dir'].'/error.php';
29
    exit();
30
}
31
32
require_once $_SESSION['settings']['cpassman_dir'].'/sources/SplClassLoader.php';
33
require_once $_SESSION['settings']['cpassman_dir'].'/sources/main.functions.php';
34
35
// Load file
36
require_once 'users.load.php';
37
// load help
38
require_once $_SESSION['settings']['cpassman_dir'].'/includes/language/'.$_SESSION['user_language'].'_admin_help.php';
39
40
//Build tree
41
$tree = new SplClassLoader('Tree\NestedTree', $_SESSION['settings']['cpassman_dir'].'/includes/libraries');
42
$tree->register();
43
$tree = new Tree\NestedTree\NestedTree(prefix_table("nested_tree"), 'id', 'parent_id', 'title');
0 ignored issues
show
It seems like prefix_table('nested_tree') targeting prefix_table() can also be of type false; however, Tree\NestedTree\NestedTree::__construct() does only seem to accept string, did you maybe forget to handle an error condition?
Loading history...
44
45
$treeDesc = $tree->getDescendants();
46
$foldersList = "";
47
foreach ($treeDesc as $t) {
48
    if (in_array($t->id, $_SESSION['groupes_visibles']) && !in_array($t->id, $_SESSION['personal_visible_groups'])) {
49
        $ident = "";
50
        for ($y = 1; $y < $t->nlevel; $y++) {
51
            $ident .= "&nbsp;&nbsp;";
52
        }
53
        $foldersList .= '<option value="'.$t->id.'">'.$ident.@htmlspecialchars($t->title, ENT_COMPAT, "UTF-8").'</option>';
54
        $prev_level = $t->nlevel;
55
    }
56
}
57
58
// Build ROLESTITLES list
59
$rolesList = array();
60
$rows = DB::query("SELECT id, title FROM ".prefix_table("roles_title")." ORDER BY title ASC");
61 View Code Duplication
foreach ($rows as $reccord) {
62
    $rolesList[$reccord['id']] = array('id' => $reccord['id'], 'title' => $reccord['title']);
63
}
64
65
66
// Display list of USERS
67
echo '
68
<div class="title ui-widget-content ui-corner-all">
69
    '.$LANG['admin_users'].'&nbsp;&nbsp;&nbsp;
70
    <button title="'.htmlentities(strip_tags($LANG['new_user_title']), ENT_QUOTES).'" onclick="OpenDialog(\'add_new_user\')" class="button" style="font-size:16px;">
71
        <i class="fa fa-plus"></i>
72
    </button>
73
    <button title="'.htmlentities(strip_tags($LANG['share_user_rights']), ENT_QUOTES).'" onclick="OpenDialog(\'share_rights_dialog\')" class="button" style="font-size:16px;">
74
        <i class="fa fa-share-alt"></i>
75
    </button>
76
</div>';
77
78
79
//Show the KB in a table view
80
echo '
81
<div style="margin:10px auto 25px auto;min-height:250px;" id="users_page">
82
<div id="t_users_alphabet" style="margin-top:25px;"></div>
83
<table id="t_users" class="hover" width="100%">
84
    <thead><tr>
85
        <th>'.$LANG['action'].'</th>
86
        <th>'.$LANG['user_login'].'</th>
87
        <th>'.$LANG['name'].'</th>
88
        <th>'.$LANG['lastname'].'</th>
89
        <th>'.$LANG['managed_by'].'</th>
90
        <th>'.$LANG['functions'].'</th>
91
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['god']), ENT_QUOTES).'"><i class="fa fa-user-secret" style="font-size:14px;"></i></th>
92
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['gestionnaire']), ENT_QUOTES).'"><i class="fa fa-child" style="font-size:14px;"></i></th>
93
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['read_only_account']), ENT_QUOTES).'"><i class="fa fa-eye" style="font-size:14px;"></i></th>
94
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['can_manage_all_users']), ENT_QUOTES).'"><i class="fa fa-group" style="font-size:14px;"></i></th>
95
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['can_create_root_folder']), ENT_QUOTES).'"><i class="fa fa-code-fork" style="font-size:14px;"></i></th>
96
        <th style="width:20px;" title="'.htmlentities(strip_tags($LANG['enable_personal_folder']), ENT_QUOTES).'"><i class="fa fa-book" style="font-size:14px;"></i></th>
97
    </tr></thead>
98
    <tbody>
99
        <tr><td></td></tr>
100
    </tbody>
101
</table>
102
</div>';
103
104
105
echo '
106
<input type="hidden" id="selected_user" />
107
<input type="hidden" id="log_page" value="1" />';
108
// DIV FOR CHANGING FUNCTIONS
109
echo '
110
<div id="change_user_functions" style="display:none;">' .
111
$LANG['change_user_functions_info'].'
112
<form name="tmp_functions" action="">
113
<div id="change_user_functions_list" style="margin-left:15px;"></div>
114
</form>
115
</div>';
116
// DIV FOR CHANGING AUTHORIZED GROUPS
117
echo '
118
<div id="change_user_autgroups" style="display:none;">' .
119
$LANG['change_user_autgroups_info'].'
120
<form name="tmp_autgroups" action="">
121
<div id="change_user_autgroups_list" style="margin-left:15px;"></div>
122
</form>
123
</div>';
124
// DIV FOR CHANGING FUNCTIONS
125
echo '
126
<div id="change_user_forgroups" style="display:none;">' .
127
$LANG['change_user_forgroups_info'].'
128
<form name="tmp_forgroups" action="">
129
<div id="change_user_forgroups_list" style="margin-left:15px;"></div>
130
</form>
131
</div>';
132
// DIV FOR CHANGING ADMINISTRATED BY
133
echo '
134
<div id="change_user_adminby" style="display:none;">
135
    <div id="change_user_adminby_list" style="margin:20px 0 0 15px;">
136
        <select id="user_admin_by" class="input_text text ui-widget-content ui-corner-all">
137
            <option value="0">'.$LANG['administrators_only'].'</option>';
138 View Code Duplication
    foreach ($rolesList as $fonction) {
139
        if ($_SESSION['is_admin'] || in_array($fonction['id'], $_SESSION['user_roles'])) {
140
            echo '
141
            <option value="'.$fonction['id'].'">'.$LANG['managers_of'].' "'.htmlentities($fonction['title'], ENT_QUOTES, "UTF-8").'"</option>';
142
        }
143
    }
144
    echo '
145
        </select>
146
    </div>
147
</div>';
148
149
/* DIV FOR ADDING A USER */
150
echo '
151
<div id="add_new_user" style="display:none;">
152
    <div id="add_new_user_error" style="text-align:center;margin:2px;display:none; position:absolute; padding:3px; width:94%;" class="ui-state-error ui-corner-all"></div>
153
    <label for="new_name" class="label_cpm">'.$LANG['name'].'</label>
154
    <input type="text" id="new_name" class="input_text text ui-widget-content ui-corner-all" onchange="loginCreation()" style="margin-bottom:3px;" />
155
156
    <label for="new_lastname" class="label_cpm">'.$LANG['lastname'].'</label>
157
    <input type="text" id="new_lastname" class="input_text text ui-widget-content ui-corner-all" onchange="loginCreation()" style="margin-bottom:3px;" />
158
159
    <label for="new_login" class="label_cpm">'.$LANG['login'].'&nbsp;<span id="new_login_status"></span></label>
160
    <input type="text" id="new_login" class="input_text text ui-widget-content ui-corner-all" style="margin-bottom:3px;" />
161
162
    ', isset($_SESSION['settings']['ldap_mode']) && $_SESSION['settings']['ldap_mode'] == 1 ? '' : '<label for="new_pwd" class="label_cpm">'.$LANG['pw'].'&nbsp;<span class="fa fa-refresh"  onclick="pwGenerate(\'new_pwd\')" style="cursor:pointer;"></span></label>
163
    <input type="text" id="new_pwd" class="input_text text ui-widget-content ui-corner-all" style="margin-bottom:3px;" />', '
164
165
    <label for="new_email" class="label_cpm">'.$LANG['email'].'</label>
166
    <input type="text" id="new_email" class="input_text text ui-widget-content ui-corner-all" onchange="check_domain(this.value)" style="margin-bottom:3px;" />
167
168
    <label for="new_is_admin_by" class="label_cpm">'.$LANG['is_administrated_by_role'].'</label>
169
    <select id="new_is_admin_by" class="input_text text ui-widget-content ui-corner-all" style="margin-bottom:3px;">';
170
        // If administrator then all roles are shown
171
        // else only the Roles the users is associated to.
172
if ($_SESSION['is_admin']) {
173
    echo '
174
        <option value="0">'.$LANG['administrators_only'].'</option>';
175
}
176 View Code Duplication
foreach ($rolesList as $fonction) {
177
    if ($_SESSION['is_admin'] || in_array($fonction['id'], $_SESSION['user_roles'])) {
178
        echo '
179
        <option value="'.$fonction['id'].'">'.$LANG['managers_of'].' '.htmlentities($fonction['title'], ENT_QUOTES, "UTF-8").'</option>';
180
    }
181
}
182
echo '
183
    </select>
184
    <br />
185
186
    <label for="new_user_groups" class="form_label">'.$LANG['functions'].'</label>
187
    <select name="new_user_groups" id="new_user_groups" multiple="multiple">';
188
189
$functionsList = "";
190
// array of roles for actual user
191
$my_functions = explode(';', $_SESSION['fonction_id']);
192
193
$rows = DB::query("SELECT id,title,creator_id FROM ".prefix_table("roles_title"));
194
foreach ($rows as $record) {
195
    if ($_SESSION['is_admin'] == 1 || ($_SESSION['user_manager'] == 1 && (in_array($record['id'], $my_functions) || $record['creator_id'] == $_SESSION['user_id']))) {
196
        $functionsList .= '<option value="'.$record['id'].'" class="folder_rights_role">'.$record['title'].'</option>';
197
    }
198
}
199
200
    echo $functionsList.'
201
    </select>
202
203
    <label for="new_user_auth_folders" class="form_label" style="margin-top:3px;">'.$LANG['authorized_groups'].'</label>
204
    <select name="new_user_auth_folders" id="new_user_auth_folders" multiple="multiple">
205
        '.$foldersList.'
206
    </select>
207
208
    <label for="new_user_forbid_folders" class="form_label" style="margin-top:3px;">'.$LANG['forbidden_groups'].'</label>
209
    <select name="new_user_forbid_folders" id="new_user_forbid_folders" multiple="multiple">
210
        '.$foldersList.'
211
    </select>
212
213
    <div style="text-align:left;margin-top:5px;">
214
        <label style="">'.$LANG['admin_misc_title'].'</label>
215
        <div style="margin-top:5px;">
216
            <table border="0">
217
            <tr>
218
                <td>', $_SESSION['user_admin'] === "1" ? '
219
                    <input type="checkbox" id="new_admin" style="margin-bottom:3px;" />
220
                    <label for="new_admin">'.$LANG['is_admin'].'</label>
221
222
                    <input type="checkbox" id="new_super_manager" style="margin-bottom:3px;" />
223
                    <label for="new_super_manager">'.$LANG['is_super_manager'].'</label>
224
225
                    <input type="checkbox" id="new_manager" style="margin-bottom:3px;" />
226
                    <label for="new_manager">'.$LANG['is_manager'].'</label>
227
                    ' : '', '
228
229
                    <input type="checkbox" id="new_read_only" style="margin-bottom:3px;" />
230
                    <label for="new_read_only">'.$LANG['is_read_only'].'</label>
231
                </td>
232
            </tr>
233
            <tr>
234
                <td>
235
                    <input type="checkbox" id="new_personal_folder"', isset($_SESSION['settings']['enable_pf_feature']) && $_SESSION['settings']['enable_pf_feature'] == 1 ? ' checked="checked"' : '', ' />
236
                    <label for="new_personal_folder">'.$LANG['personal_folder'].'</label>
237
                </td>
238
            </tr>
239
            <tr>
240
                <td>
241
                    <div id="auto_create_folder_role"  style="visibility:hidden;">
242
                        <input type="checkbox" id="new_folder_role_domain" disabled="disabled" />
243
                        <label for="new_folder_role_domain">'.$LANG['auto_create_folder_role'].'&nbsp;&quot;<span id="auto_create_folder_role_span"></span>&quot;</label>
244
                        <span id="ajax_loader_new_mail" style="display:none;margin-left:10px;"><span class="fa fa-cog fa-spin fa-1x"></span></span>
245
                        <input type="hidden" id="new_domain" />
246
                    </div>
247
                </td>
248
            </tr>
249
            </table>
250
        </div>
251
    </div>
252
253
    <div style="display:none; padding:4px; margin-top:5px;" id="add_new_user_info" class="ui-state-default ui-corner-all"></div>
254
</div>';
255
// DIV FOR DELETING A USER
256
echo '
257
<div id="delete_user" style="display:none;">
258
    <div id="user_action_html"></div>
259
    <div style="font-weight:bold;text-align:center;color:#FF8000;text-align:center;font-size:13pt;" id="delete_user_show_login"></div>
260
    <input type="hidden" id="delete_user_login" />
261
    <input type="hidden" id="delete_user_id" />
262
    <input type="hidden" id="delete_user_action" />
263
</div>';
264
// DIV FOR CHANGING PASWWORD
265
echo '
266
<div id="change_user_pw" style="display:none;">
267
    <div style="text-align:center; padding:2px; display:none; position:absolute; width:340px;" class="ui-state-error ui-corner-all" id="change_user_pw_error"></div>' .
268
$LANG['give_new_pw'].'
269
    <div style="font-weight:bold;text-align:center;color:#FF8000;display:inline;" id="change_user_pw_show_login"></div>
270
    <div style="margin-top:20px;">
271
        <table>
272
            <tr>
273
                <td style="width:120px;"><label for="change_user_pw_newpw">'.$LANG['index_new_pw'].'</label>&nbsp;</td>
274
                <td><input type="password" size="30" id="change_user_pw_newpw" /></td>
275
            </tr>
276
            <tr>
277
                <td><label for="change_user_pw_newpw_confirm">'.$LANG['index_change_pw_confirmation'].'</label>&nbsp;</td>
278
                <td><input type="password" size="30" id="change_user_pw_newpw_confirm" /></td>
279
            </tr>
280
            <tr>
281
                <td>&nbsp;</td>
282
                <td>
283
                    <div id="pw_strength" style="margin-top:5px;"></div>
284
                </td>
285
            </tr>
286
            <tr>
287
                <td><label for="generated_user_pw" id="generated_user_pw_title" style="display:none;">'.$LANG['generated_pw'].'</label>
288
                </td>
289
                <td>
290
                    <span style="text-align:center;margin-top:8px; display:none;" id="change_user_pw_wait"><span class="fa fa-cog fa-spin fa-1x"></span></span>
291
                    <span id="generated_user_pw" style="display:none;"></span>
292
                </td>
293
            </tr>
294
        </table>
295
    </div>
296
297
    <input type="hidden" id="change_user_pw_id" />
298
</div>';
299
// DIV FOR CHANGING EMAIL
300
echo '
301
<div id="change_user_email" style="display:none;">
302
    <div style="text-align:center;padding:2px;display:none;" class="ui-state-error ui-corner-all" id="change_user_email_error"></div>' .
303
$LANG['give_new_email'].'
304
    <div style="font-weight:bold;text-align:center;color:#FF8000;display:inline;" id="change_user_email_show_login"></div>
305
    <div style="margin-top:10px;text-align:center;">
306
        <input type="text" size="50" id="change_user_email_newemail" />
307
    </div>
308
    <input type="hidden" id="change_user_email_id" />
309
</div>';
310
// USER MANAGER
311
echo '
312
<div id="manager_dialog" style="display:none;">
313
    <div style="text-align:center;padding:2px;" class="ui-state-error ui-corner-all" id="manager_dialog_error"></div>
314
</div>';
315
316
/*// MIGRATE PERSONAL ITEMS FROM ADMIN TO A USER
317
echo '
318
<div id="migrate_pf_dialog" style="display:none;">
319
    <div style="text-align:center;padding:2px;display:none;margin-bottom:10px;" class="ui-state-error ui-corner-all" id="migrate_pf_dialog_error"></div>
320
    <div>
321
        <label>'.$LANG['migrate_pf_select_to'].'</label>:
322
        <select id="migrate_pf_to_user">
323
            <option value="">-- '.$LANG['select'].' --</option>'.$listAvailableUsers.'
324
        </select>
325
        <br /><br />
326
        <label>'.$LANG['migrate_pf_user_salt'].'</label>: <input type="text" id="migrate_pf_user_salt" size="30" /><br />
327
    </div>
328
</div>';*/
329
// USER LOGS
330
echo '
331
<div id="user_logs_dialog" style="display:none;">
332
    <div style="text-align:center;padding:2px;display:none;" class="ui-state-error ui-corner-all" id="user_logs"></div>
333
     <div>' .
334
$LANG['nb_items_by_page'].':
335
        <select id="nb_items_by_page" onchange="displayLogs(1,$(\'#activity\').val())">
336
            <option value="10">10</option>
337
            <option value="25">25</option>
338
            <option value="50">50</option>
339
            <option value="100">100</option>
340
        </select>
341
        &nbsp;&nbsp;' .
342
$LANG['select'].':
343
        <select id="activity" onchange="show_user_log($(\'#activity\').val())">
344
            <option value="user_mngt">'.$LANG['user_mngt'].'</option>
345
            <option value="user_activity">'.$LANG['user_activity'].'</option>
346
        </select>
347
        <span id="span_user_activity_option" style="display:none;">&nbsp;&nbsp;' .
348
$LANG['activity'].':
349
            <select id="activity_filter" onchange="displayLogs(1,\'user_activity\')">
350
                <option value="all">'.$LANG['all'].'</option>
351
                <option value="at_modification">'.$LANG['at_modification'].'</option>
352
                <option value="at_creation">'.$LANG['at_creation'].'</option>
353
                <option value="at_delete">'.$LANG['at_delete'].'</option>
354
                <option value="at_import">'.$LANG['at_import'].'</option>
355
                <option value="at_restored">'.$LANG['at_restored'].'</option>
356
                <option value="at_pw">'.$LANG['at_pw'].'</option>
357
                <option value="at_password_shown">'.$LANG['at_password_shown'].'</option>
358
                <option value="at_shown">'.$LANG['at_shown'].'</option>
359
            </select>
360
        </span>
361
    </div>
362
    <table width="100%">
363
        <thead>
364
            <tr>
365
                <th width="20%">'.$LANG['date'].'</th>
366
                <th id="th_url" width="40%">'.$LANG['label'].'</th>
367
                <th width="20%">'.$LANG['user'].'</th>
368
                <th width="20%">'.$LANG['activity'].'</th>
369
            </tr>
370
        </thead>
371
        <tbody id="tbody_logs"><tr id="placeholder_tr" style="display: none;"><td></td></tr>
372
        </tbody>
373
    </table>
374
    <div id="log_pages" style="margin-top:10px;"></div>
375
</div>';
376
377
378
// USER EDIT DIALOG
379
echo '
380
<div id="user_management_dialog" style="display:none;">
381
    <div style="padding:5px; z-index:9999999;" class="ui-widget-content ui-state-focus ui-corner-all" id="user_edit_wait">
382
        <i class="fa fa-cog fa-spin fa-2x"></i>&nbsp;'.$LANG['please_wait'].'
383
    </div>
384
    <div id="user_edit_div" style="display:none;">
385
    <div style="text-align:center;padding:2px;display:none; margin:0 0 15px 0;" class="ui-state-error ui-corner-all" id="user_edit_error"></div>
386
387
    <div style="width:100%;">
388
        <div style="width:70%; float:left;">
389
            <label class="form_label_100" for="user_edit_login">'.$LANG['user_login'].'</label>&nbsp;<input type="text" size="45" id="user_edit_login" class="ui-widget-content ui-corner-all form_text" /><br />
390
            <label class="form_label_100" for="user_edit_name">'.$LANG['name'].'</label>&nbsp;<input type="text" size="45" id="user_edit_name" class="ui-widget-content ui-corner-all form_text" /><br />
391
            <label class="form_label_100" for="user_edit_lastname">'.$LANG['lastname'].'</label>&nbsp;<input type="text" size="45" id="user_edit_lastname" class="ui-widget-content ui-corner-all form_text" />
392
            <br />
393
            <label class="form_label_100" for="user_edit_email">'.$LANG['email'].'</label>&nbsp;<input type="text" size="45" id="user_edit_email" class="ui-widget-content ui-corner-all form_text" />
394
        </div>
395
        <div style="width:30%; float:right;">
396
            <input type="hidden" id="confirm_deletion" value="" />
397
            <span id="user_edit_info" style="margin:20px 10px 0 0; text-align:center;"></span>
398
            <span id="user_edit_delete" style="margin:20px 10px 0 0; text-align:center; display:none;" class="ui-widget ui-corner-all">'.$LANG['user_info_delete'].'</span>
399
        </div>
400
    </div>
401
    <div style="width:100%; margin-top:10px;">
402
        <label for="user_edit_functions_list" class="form_label">'.$LANG['functions'].'</label>
403
        <select name="user_edit_functions_list" id="user_edit_functions_list" multiple="multiple"><option label="" style="display: none;"></option></select>
404
        <br />
405
        <label for="user_edit_managedby" class="form_label" style="margin-top:10px;">'.$LANG['managed_by'].'</label>
406
        <select name="user_edit_managedby" id="user_edit_managedby"><option label="" style="display: none;"></option></select>
407
        <br />
408
        <label for="user_edit_auth" class="form_label" style="margin-top:10px;">'.$LANG['authorized_groups'].'</label>
409
        <select name="user_edit_auth" id="user_edit_auth" multiple="multiple"><option label="" style="display: none;"></option></select>
410
        <br />
411
        <label for="user_edit_forbid" class="form_label" style="margin-top:10px;">'.$LANG['forbidden_groups'].'</label>
412
        <select name="user_edit_forbid" id="user_edit_forbid" multiple="multiple"><option label="" style="display: none;"></option></select>
413
        <br />
414
    </div>
415
416
    <div style="text-align:center;padding:2px;display:none; margin:0 0 15px 0;position: absolute; bottom: 0;" class="ui-state-error ui-corner-all" id="user_edit_warning_bottom"></div>
417
    <input type="hidden" id="user_edit_id" />
418
    </div>
419
</div>';
420
421
// USER FOLDERS RIGHTS DIALOG
422
echo '
423
<div id="user_folders_rights_dialog" style="display:none;">
424
    <div style="padding:5px; z-index:9999999;" class="ui-widget-content ui-state-focus ui-corner-all" id="user_folders_rights_dialog_wait">
425
        <i class="fa fa-cog fa-spin fa-2x"></i>&nbsp;'.$LANG['please_wait'].'
426
    </div>
427
428
    <div id="user_folders_rights_dialog_txt"></div>
429
430
    <input type="hidden" id="user_folders_rights_dialog_id" />
431
</div>';
432
433
// PROPAGATE SETTINGS TO MULTIPLE USERS
434
echo '
435
<div id="share_rights_dialog" style="display:none;">
436
437
    <div id="share_rights_info" class="ui-widget-content ui-state-highlight ui-corner-all" style="padding:5px;"><span class="fa fa-info-circle fa-2x"></span>&nbsp;'.$LANG['share_rights_info'].'</div>
438
439
    <div id="" style="margin-top:10px;" class="">
440
        <label for="share_rights_from" class="form_label" style="font-size:14px; font-weight:bold;"><span class="fa fa-user"></span>&nbsp;'.$LANG['share_rights_source'].'</label>
441
        <select id="share_rights_from" onchange="get_user_rights()"></select>
442
    </div>
443
444
    <div id="share_rights_details" style="margin-top:5px; margin-left:20px;display:none; padding:3px;">
445
        <label for="share_rights_details_1" class="form_label"><span class="fa fa-hand-o-right"></span>&nbsp;'.$LANG['functions'].'</label>
446
        <span id="share_rights_details_1"></span>
447
        <input type="hidden" id="share_rights_details_ids_1" />
448
        <br>
449
        <label for="share_rights_details_2" class="form_label"><span class="fa fa-hand-o-right"></span>&nbsp;'.$LANG['managed_by'].'</label>
450
        <span id="share_rights_details_2"></span>
451
        <input type="hidden" id="share_rights_details_ids_2" />
452
        <br>
453
        <label for="share_rights_details_3" class="form_label"><span class="fa fa-hand-o-right"></span>&nbsp;'.$LANG['authorized_groups'].'</label>
454
        <span id="share_rights_details_3"></span>
455
        <input type="hidden" id="share_rights_details_ids_3" />
456
        <br>
457
        <label for="share_rights_details_4" class="form_label"><span class="fa fa-hand-o-right"></span>&nbsp;'.$LANG['forbidden_groups'].'</label>
458
        <span id="share_rights_details_4"></span>
459
        <input type="hidden" id="share_rights_details_ids_4" />        
460
        <input type="hidden" id="share_rights_details_other" />
461
    </div>
462
463
    <div id="" style="margin-top:5px;" class="">
464
        <label for="share_pres" class="form_label">&nbsp;</label>
465
        <span id="share_pres" style="text-align:center; margin-left:170px;"><span class="fa fa-long-arrow-down fa-2x"></span></span>
466
    </div>
467
468
    <div id="" style="margin-top:5px;" class="">
469
        <label for="share_rights_to" class="form_label" style="font-size:14px; font-weight:bold;"><span class="fa fa-users"></span>&nbsp;'.$LANG['share_rights_destination'].'</label>
470
        <select id="share_rights_to" multiple="multiple"></select>
471
    </div>
472
473
    <div style="text-align:center;padding:2px;display:none; margin:20px 0 0 0;" class="ui-corner-all" id="share_rights_dialog_msg"></div>
474
475
    <input type="hidden" id="share_rights_dialog_id" />
476
</div>';