|
1
|
|
|
<?php |
|
2
|
|
|
/* For licensing terms, see /license.txt */ |
|
3
|
|
|
|
|
4
|
|
|
// resetting the course id |
|
5
|
|
|
use Chamilo\CoreBundle\Entity\Session; |
|
6
|
|
|
use Chamilo\CoreBundle\Enums\ObjectIcon; |
|
7
|
|
|
|
|
8
|
|
|
$cidReset = true; |
|
9
|
|
|
|
|
10
|
|
|
// including some necessary files |
|
11
|
|
|
require_once __DIR__.'/../inc/global.inc.php'; |
|
12
|
|
|
$xajax = new xajax(); |
|
13
|
|
|
$xajax->registerFunction('search_users'); |
|
14
|
|
|
|
|
15
|
|
|
// setting the section (for the tabs) |
|
16
|
|
|
$this_section = SECTION_PLATFORM_ADMIN; |
|
17
|
|
|
|
|
18
|
|
|
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; |
|
19
|
|
|
$courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0; |
|
20
|
|
|
|
|
21
|
|
|
if (empty($id_session) || empty($courseId)) { |
|
22
|
|
|
api_not_allowed(true); |
|
23
|
|
|
} |
|
24
|
|
|
|
|
25
|
|
|
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; |
|
26
|
|
|
|
|
27
|
|
|
$session = api_get_session_entity($id_session); |
|
28
|
|
|
SessionManager::protectSession($session); |
|
29
|
|
|
$courseInfo = api_get_course_info_by_id($courseId); |
|
30
|
|
|
|
|
31
|
|
|
// setting breadcrumbs |
|
32
|
|
|
$interbreadcrumb[] = ['url' => 'session_list.php', 'name' => get_lang('Session list')]; |
|
33
|
|
|
$interbreadcrumb[] = [ |
|
34
|
|
|
'url' => "resume_session.php?id_session=".$id_session, |
|
35
|
|
|
'name' => get_lang('Session overview'), |
|
36
|
|
|
]; |
|
37
|
|
|
|
|
38
|
|
|
// Database Table Definitions |
|
39
|
|
|
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); |
|
40
|
|
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
41
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
42
|
|
|
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
|
43
|
|
|
$tableRelSessionCourseUser = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
44
|
|
|
|
|
45
|
|
|
// setting the name of the tool |
|
46
|
|
|
$tool_name = get_lang('Subscribe users to this session'); |
|
47
|
|
|
$add_type = 'unique'; |
|
48
|
|
|
if (isset($_REQUEST['add_type']) && '' != $_REQUEST['add_type']) { |
|
49
|
|
|
$add_type = Security::remove_XSS($_REQUEST['add_type']); |
|
50
|
|
|
} |
|
51
|
|
|
|
|
52
|
|
|
$page = isset($_GET['page']) ? Security::remove_XSS($_GET['page']) : null; |
|
53
|
|
|
|
|
54
|
|
|
// Checking for extra field with filter on |
|
55
|
|
|
|
|
56
|
|
|
$extra_field_list = UserManager::get_extra_fields(); |
|
57
|
|
|
|
|
58
|
|
|
$new_field_list = []; |
|
59
|
|
|
if (is_array($extra_field_list)) { |
|
60
|
|
|
foreach ($extra_field_list as $extra_field) { |
|
61
|
|
|
//if is enabled to filter and is a "<select>" field type |
|
62
|
|
|
if (1 == $extra_field[8] && ExtraField::FIELD_TYPE_SELECT == $extra_field[2]) { |
|
63
|
|
|
$new_field_list[] = [ |
|
64
|
|
|
'name' => $extra_field[3], |
|
65
|
|
|
'type' => $extra_field[2], |
|
66
|
|
|
'variable' => $extra_field[1], |
|
67
|
|
|
'data' => $extra_field[9], |
|
68
|
|
|
]; |
|
69
|
|
|
} |
|
70
|
|
|
if (1 == $extra_field[8] && ExtraField::FIELD_TYPE_TAG == $extra_field[2]) { |
|
71
|
|
|
$options = UserManager::get_extra_user_data_for_tags($extra_field[1]); |
|
72
|
|
|
$new_field_list[] = [ |
|
73
|
|
|
'name' => $extra_field[3], |
|
74
|
|
|
'type' => $extra_field[2], |
|
75
|
|
|
'variable' => $extra_field[1], |
|
76
|
|
|
'data' => $options['options'], |
|
77
|
|
|
]; |
|
78
|
|
|
} |
|
79
|
|
|
} |
|
80
|
|
|
} |
|
81
|
|
|
|
|
82
|
|
|
function search_users($needle, $type) |
|
83
|
|
|
{ |
|
84
|
|
|
$courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0; |
|
85
|
|
|
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0; |
|
86
|
|
|
|
|
87
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
88
|
|
|
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); |
|
89
|
|
|
$tableRelSessionCourseUser = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
90
|
|
|
|
|
91
|
|
|
$xajax_response = new xajaxResponse(); |
|
92
|
|
|
$return = ''; |
|
93
|
|
|
|
|
94
|
|
|
if (!empty($needle) && !empty($type)) { |
|
95
|
|
|
// Normal behaviour |
|
96
|
|
|
if ('any_session' == $type && 'false' == $needle) { |
|
97
|
|
|
$type = 'multiple'; |
|
98
|
|
|
$needle = ''; |
|
99
|
|
|
} |
|
100
|
|
|
|
|
101
|
|
|
$needle = Database::escape_string($needle); |
|
102
|
|
|
$order_clause = ' ORDER BY lastname, firstname, username'; |
|
103
|
|
|
$showOfficialCode = false; |
|
104
|
|
|
|
|
105
|
|
|
$orderListByOfficialCode = api_get_setting('display.order_user_list_by_official_code'); |
|
106
|
|
|
if ('true' === $orderListByOfficialCode) { |
|
107
|
|
|
$showOfficialCode = true; |
|
108
|
|
|
$order_clause = ' ORDER BY official_code, lastname, firstname, username'; |
|
109
|
|
|
} |
|
110
|
|
|
|
|
111
|
|
|
if (api_is_session_admin() |
|
112
|
|
|
&& 'true' === api_get_setting('prevent_session_admins_to_manage_all_users') |
|
113
|
|
|
) { |
|
114
|
|
|
$order_clause = ' AND user.creator_id = '.api_get_user_id().$order_clause; |
|
115
|
|
|
} |
|
116
|
|
|
|
|
117
|
|
|
$cond_user_id = ''; |
|
118
|
|
|
|
|
119
|
|
|
// Only for single & multiple |
|
120
|
|
|
if (in_array($type, ['single', 'multiple'])) { |
|
121
|
|
|
if (!empty($id_session)) { |
|
122
|
|
|
// check id_user from session_rel_user table |
|
123
|
|
|
$sql = " |
|
124
|
|
|
SELECT su.user_id |
|
125
|
|
|
FROM $tbl_session_rel_user su |
|
126
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
127
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
128
|
|
|
WHERE |
|
129
|
|
|
sc.c_id = $courseId AND |
|
130
|
|
|
su.session_id = $id_session AND |
|
131
|
|
|
su.relation_type = ".Session::STUDENT; |
|
132
|
|
|
$res = Database::query($sql); |
|
133
|
|
|
$user_ids = []; |
|
134
|
|
|
if (Database::num_rows($res) > 0) { |
|
135
|
|
|
while ($row = Database::fetch_row($res)) { |
|
136
|
|
|
$user_ids[] = (int) $row[0]; |
|
137
|
|
|
} |
|
138
|
|
|
} |
|
139
|
|
|
if (count($user_ids) > 0) { |
|
140
|
|
|
$cond_user_id = ' AND user.id NOT IN('.implode(",", $user_ids).')'; |
|
141
|
|
|
} |
|
142
|
|
|
} |
|
143
|
|
|
} |
|
144
|
|
|
|
|
145
|
|
|
switch ($type) { |
|
146
|
|
|
case 'single': |
|
147
|
|
|
// search users where username or firstname or lastname begins likes $needle |
|
148
|
|
|
$sql = " |
|
149
|
|
|
SELECT user.id, username, lastname, firstname, official_code |
|
150
|
|
|
FROM $tbl_user user |
|
151
|
|
|
WHERE |
|
152
|
|
|
( |
|
153
|
|
|
username LIKE '$needle%' |
|
154
|
|
|
OR lastname LIKE '$needle%' |
|
155
|
|
|
OR firstname LIKE '$needle%' |
|
156
|
|
|
) AND |
|
157
|
|
|
user.status <> 6 AND |
|
158
|
|
|
user.status <> ".DRH." |
|
159
|
|
|
$order_clause |
|
160
|
|
|
LIMIT 11 |
|
161
|
|
|
"; |
|
162
|
|
|
break; |
|
163
|
|
|
case 'multiple': |
|
164
|
|
|
$sql = " |
|
165
|
|
|
SELECT user.id, username, lastname, firstname, official_code |
|
166
|
|
|
FROM $tbl_user user |
|
167
|
|
|
WHERE |
|
168
|
|
|
lastname LIKE '$needle%' AND |
|
169
|
|
|
user.status <> ".DRH." AND |
|
170
|
|
|
user.status <> 6 $cond_user_id |
|
171
|
|
|
$order_clause |
|
172
|
|
|
"; |
|
173
|
|
|
break; |
|
174
|
|
|
case 'any_session': |
|
175
|
|
|
$sql = " |
|
176
|
|
|
SELECT DISTINCT user.id, username, lastname, firstname, official_code |
|
177
|
|
|
FROM $tbl_user user |
|
178
|
|
|
LEFT OUTER JOIN $tbl_session_rel_user s |
|
179
|
|
|
ON (s.user_id = user.id) |
|
180
|
|
|
WHERE |
|
181
|
|
|
s.user_id IS NULL AND |
|
182
|
|
|
user.status <> ".DRH." AND |
|
183
|
|
|
user.status <> 6 $cond_user_id |
|
184
|
|
|
$order_clause |
|
185
|
|
|
"; |
|
186
|
|
|
break; |
|
187
|
|
|
} |
|
188
|
|
|
|
|
189
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
|
|
190
|
|
|
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); |
|
191
|
|
|
$access_url_id = api_get_current_access_url_id(); |
|
192
|
|
|
if (-1 != $access_url_id) { |
|
193
|
|
|
switch ($type) { |
|
194
|
|
|
case 'single': |
|
195
|
|
|
$sql = " |
|
196
|
|
|
SELECT user.id, username, lastname, firstname, official_code |
|
197
|
|
|
FROM $tbl_user user |
|
198
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user |
|
199
|
|
|
ON (url_user.user_id = user.id) |
|
200
|
|
|
WHERE |
|
201
|
|
|
access_url_id = '$access_url_id' |
|
202
|
|
|
AND ( |
|
203
|
|
|
username LIKE '$needle%' |
|
204
|
|
|
OR lastname LIKE '$needle%' |
|
205
|
|
|
OR firstname LIKE '$needle%' |
|
206
|
|
|
) |
|
207
|
|
|
AND user.status <> 6 |
|
208
|
|
|
AND user.status <> ".DRH." |
|
209
|
|
|
$order_clause LIMIT 11 |
|
210
|
|
|
"; |
|
211
|
|
|
break; |
|
212
|
|
|
case 'multiple': |
|
213
|
|
|
$sql = " |
|
214
|
|
|
SELECT user.id, username, lastname, firstname, official_code |
|
215
|
|
|
FROM $tbl_user user |
|
216
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.id) |
|
217
|
|
|
WHERE |
|
218
|
|
|
access_url_id = $access_url_id |
|
219
|
|
|
AND lastname LIKE '$needle%' |
|
220
|
|
|
AND user.status <> ".DRH." |
|
221
|
|
|
AND user.status <> 6 $cond_user_id |
|
222
|
|
|
$order_clause |
|
223
|
|
|
"; |
|
224
|
|
|
break; |
|
225
|
|
|
case 'any_session': |
|
226
|
|
|
$sql = " |
|
227
|
|
|
SELECT DISTINCT user.id, username, lastname, firstname, official_code |
|
228
|
|
|
FROM $tbl_user user |
|
229
|
|
|
LEFT OUTER JOIN $tbl_session_rel_user s |
|
230
|
|
|
ON (s.user_id = user.id) |
|
231
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user |
|
232
|
|
|
ON (url_user.user_id = user.id) |
|
233
|
|
|
WHERE |
|
234
|
|
|
access_url_id = $access_url_id |
|
235
|
|
|
AND s.user_id IS null |
|
236
|
|
|
AND user.status <> ".DRH." |
|
237
|
|
|
AND user.status <> 6 $cond_user_id |
|
238
|
|
|
$order_clause |
|
239
|
|
|
"; |
|
240
|
|
|
break; |
|
241
|
|
|
} |
|
242
|
|
|
} |
|
243
|
|
|
} |
|
244
|
|
|
|
|
245
|
|
|
$rs = Database::query($sql); |
|
|
|
|
|
|
246
|
|
|
$i = 0; |
|
247
|
|
|
if ('single' == $type) { |
|
248
|
|
|
while ($user = Database:: fetch_array($rs)) { |
|
249
|
|
|
$i++; |
|
250
|
|
|
if ($i <= 10) { |
|
251
|
|
|
$person_name = |
|
252
|
|
|
$user['lastname'].' '.$user['firstname'].' ('.$user['username'].') '.$user['official_code']; |
|
253
|
|
|
if ($showOfficialCode) { |
|
254
|
|
|
$officialCode = !empty($user['official_code']) ? $user['official_code'].' - ' : '? - '; |
|
255
|
|
|
$person_name = |
|
256
|
|
|
$officialCode.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].')'; |
|
257
|
|
|
} |
|
258
|
|
|
|
|
259
|
|
|
$return .= '<a href="javascript: void(0);" onclick="javascript: add_user_to_session(\''.$user['id'] |
|
260
|
|
|
.'\',\''.$person_name.' '.'\')">'.$person_name.' </a><br />'; |
|
261
|
|
|
} else { |
|
262
|
|
|
$return .= '...<br />'; |
|
263
|
|
|
} |
|
264
|
|
|
} |
|
265
|
|
|
|
|
266
|
|
|
$xajax_response->addAssign('ajax_list_users_single', 'innerHTML', api_utf8_encode($return)); |
|
267
|
|
|
} else { |
|
268
|
|
|
$return .= '<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;">'; |
|
269
|
|
|
while ($user = Database:: fetch_array($rs)) { |
|
270
|
|
|
$person_name = |
|
271
|
|
|
$user['lastname'].' '.$user['firstname'].' ('.$user['username'].') '.$user['official_code']; |
|
272
|
|
|
if ($showOfficialCode) { |
|
273
|
|
|
$officialCode = !empty($user['official_code']) ? $user['official_code'].' - ' : '? - '; |
|
274
|
|
|
$person_name = $officialCode.$user['lastname'].' '.$user['firstname'].' ('.$user['username'].')'; |
|
275
|
|
|
} |
|
276
|
|
|
$return .= '<option value="'.$user['id'].'">'.$person_name.' </option>'; |
|
277
|
|
|
} |
|
278
|
|
|
$return .= '</select>'; |
|
279
|
|
|
$xajax_response->addAssign('ajax_list_users_multiple', 'innerHTML', api_utf8_encode($return)); |
|
280
|
|
|
} |
|
281
|
|
|
} |
|
282
|
|
|
|
|
283
|
|
|
return $xajax_response; |
|
284
|
|
|
} |
|
285
|
|
|
|
|
286
|
|
|
$xajax->processRequests(); |
|
287
|
|
|
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/'); |
|
288
|
|
|
$htmlHeadXtra[] = ' |
|
289
|
|
|
<script> |
|
290
|
|
|
function add_user_to_session (code, content) { |
|
291
|
|
|
document.getElementById("user_to_add").value = ""; |
|
292
|
|
|
document.getElementById("ajax_list_users_single").innerHTML = ""; |
|
293
|
|
|
destination = document.getElementById("destination_users"); |
|
294
|
|
|
for (i=0;i<destination.length;i++) { |
|
295
|
|
|
if(destination.options[i].text == content) { |
|
296
|
|
|
return false; |
|
297
|
|
|
} |
|
298
|
|
|
} |
|
299
|
|
|
destination.options[destination.length] = new Option(content,code); |
|
300
|
|
|
destination.selectedIndex = -1; |
|
301
|
|
|
sortOptions(destination.options); |
|
302
|
|
|
} |
|
303
|
|
|
|
|
304
|
|
|
function remove_item(origin) { |
|
305
|
|
|
for(var i = 0 ; i<origin.options.length ; i++) { |
|
306
|
|
|
if(origin.options[i].selected) { |
|
307
|
|
|
origin.options[i]=null; |
|
308
|
|
|
i = i-1; |
|
309
|
|
|
} |
|
310
|
|
|
} |
|
311
|
|
|
} |
|
312
|
|
|
|
|
313
|
|
|
function validate_filter() { |
|
314
|
|
|
document.formulaire.add_type.value = \''.$add_type.'\'; |
|
315
|
|
|
document.formulaire.form_sent.value=0; |
|
316
|
|
|
document.formulaire.submit(); |
|
317
|
|
|
} |
|
318
|
|
|
|
|
319
|
|
|
function checked_in_no_session(checked) { |
|
320
|
|
|
$("#first_letter_user") |
|
321
|
|
|
.find("option") |
|
322
|
|
|
.attr("selected", false); |
|
323
|
|
|
xajax_search_users(checked, "any_session"); |
|
324
|
|
|
} |
|
325
|
|
|
|
|
326
|
|
|
function change_select(val) { |
|
327
|
|
|
$("#user_with_any_session_id").attr("checked", false); |
|
328
|
|
|
xajax_search_users(val,"multiple"); |
|
329
|
|
|
} |
|
330
|
|
|
</script>'; |
|
331
|
|
|
|
|
332
|
|
|
$form_sent = 0; |
|
333
|
|
|
$firstLetterUser = $firstLetterSession = ''; |
|
334
|
|
|
$UserList = $SessionList = []; |
|
335
|
|
|
$sessions = []; |
|
336
|
|
|
if (isset($_POST['form_sent']) && $_POST['form_sent']) { |
|
337
|
|
|
$form_sent = $_POST['form_sent']; |
|
338
|
|
|
$firstLetterUser = isset($_POST['firstLetterUser']) ? $_POST['firstLetterUser'] : ''; |
|
339
|
|
|
$firstLetterSession = isset($_POST['firstLetterSession']) ? $_POST['firstLetterSession'] : ''; |
|
340
|
|
|
$UserList = isset($_POST['sessionUsersList']) ? $_POST['sessionUsersList'] : []; |
|
341
|
|
|
|
|
342
|
|
|
if (!is_array($UserList)) { |
|
343
|
|
|
$UserList = []; |
|
344
|
|
|
} |
|
345
|
|
|
|
|
346
|
|
|
if (1 == $form_sent) { |
|
347
|
|
|
// Added a parameter to send emails when registering a user |
|
348
|
|
|
SessionManager::subscribeUsersToSession( |
|
349
|
|
|
$id_session, |
|
350
|
|
|
$UserList, |
|
351
|
|
|
null, |
|
352
|
|
|
false, |
|
353
|
|
|
false |
|
354
|
|
|
); |
|
355
|
|
|
|
|
356
|
|
|
SessionManager::subscribe_users_to_session_course( |
|
357
|
|
|
$UserList, |
|
358
|
|
|
$id_session, |
|
359
|
|
|
$courseInfo['code'], |
|
360
|
|
|
SESSION_VISIBLE_READ_ONLY, |
|
361
|
|
|
true |
|
362
|
|
|
); |
|
363
|
|
|
|
|
364
|
|
|
Display::addFlash(Display::return_message(get_lang('Update successful'))); |
|
365
|
|
|
header('Location: resume_session.php?id_session='.$id_session); |
|
366
|
|
|
exit; |
|
367
|
|
|
} |
|
368
|
|
|
} |
|
369
|
|
|
|
|
370
|
|
|
$session_info = SessionManager::fetch($id_session); |
|
371
|
|
|
Display::display_header($tool_name); |
|
372
|
|
|
|
|
373
|
|
|
$nosessionUsersList = $sessionUsersList = []; |
|
374
|
|
|
$where_filter = null; |
|
375
|
|
|
$ajax_search = 'unique' == $add_type ? true : false; |
|
376
|
|
|
|
|
377
|
|
|
//$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; |
|
378
|
|
|
// On this screen, it doesn't make sense to order users by firstname. Always use lastname first |
|
379
|
|
|
// api_get_person_name() calls have been removed because ordering users in a simple list must always |
|
380
|
|
|
// be done by lastname, even if we like to show user names with the firstname first. |
|
381
|
|
|
// By simple logic, lastnames are the smallest common denominator |
|
382
|
|
|
$order_clause = ' ORDER BY lastname, firstname, username'; |
|
383
|
|
|
|
|
384
|
|
|
$showOfficialCode = false; |
|
385
|
|
|
$orderListByOfficialCode = api_get_setting('display.order_user_list_by_official_code'); |
|
386
|
|
|
if ('true' === $orderListByOfficialCode) { |
|
387
|
|
|
$showOfficialCode = true; |
|
388
|
|
|
$order_clause = ' ORDER BY official_code, lastname, firstname, username'; |
|
389
|
|
|
} |
|
390
|
|
|
|
|
391
|
|
|
if ($ajax_search) { |
|
392
|
|
|
$sql = " |
|
393
|
|
|
SELECT u.id, u.lastname, u.firstname, u.username, su.session_id, u.official_code |
|
394
|
|
|
FROM $tbl_session_rel_user su |
|
395
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
396
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
397
|
|
|
INNER JOIN $tbl_user u |
|
398
|
|
|
ON su.user_id = u.id |
|
399
|
|
|
WHERE |
|
400
|
|
|
su.session_id = ".intval($id_session)." AND |
|
401
|
|
|
su.relation_type = ".Session::STUDENT." AND |
|
402
|
|
|
sc.c_id = $courseId AND |
|
403
|
|
|
u.status<>".DRH." AND |
|
404
|
|
|
u.status <> 6 |
|
405
|
|
|
$order_clause |
|
406
|
|
|
"; |
|
407
|
|
|
|
|
408
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
|
|
409
|
|
|
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); |
|
410
|
|
|
$access_url_id = api_get_current_access_url_id(); |
|
411
|
|
|
if (-1 != $access_url_id) { |
|
412
|
|
|
$sql = " |
|
413
|
|
|
SELECT u.id, u.lastname, u.firstname, u.username, su.session_id, u.official_code |
|
414
|
|
|
FROM $tbl_user u |
|
415
|
|
|
INNER JOIN $tbl_session_rel_user su |
|
416
|
|
|
ON |
|
417
|
|
|
su.user_id = u.id AND |
|
418
|
|
|
su.relation_type = ".Session::STUDENT." AND |
|
419
|
|
|
su.session_id = ".intval($id_session)." |
|
420
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user |
|
421
|
|
|
ON (url_user.user_id = u.id) |
|
422
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
423
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
424
|
|
|
WHERE |
|
425
|
|
|
access_url_id = $access_url_id AND |
|
426
|
|
|
sc.c_id = $courseId AND |
|
427
|
|
|
u.status <> ".DRH." AND |
|
428
|
|
|
u.status <> 6 |
|
429
|
|
|
$order_clause |
|
430
|
|
|
"; |
|
431
|
|
|
} |
|
432
|
|
|
} |
|
433
|
|
|
$result = Database::query($sql); |
|
434
|
|
|
$users = Database::store_result($result); |
|
435
|
|
|
foreach ($users as $user) { |
|
436
|
|
|
$sessionUsersList[$user['id']] = $user; |
|
437
|
|
|
} |
|
438
|
|
|
|
|
439
|
|
|
$sessionUserInfo = SessionManager::getTotalUserCoursesInSession($id_session, $courseId); |
|
440
|
|
|
// Filter the user list in all courses in the session |
|
441
|
|
|
foreach ($sessionUserInfo as $sessionUser) { |
|
442
|
|
|
// filter students in session |
|
443
|
|
|
if (Session::STUDENT != $sessionUser['status_in_session']) { |
|
444
|
|
|
continue; |
|
445
|
|
|
} |
|
446
|
|
|
|
|
447
|
|
|
if (!array_key_exists($sessionUser['id'], $sessionUsersList)) { |
|
448
|
|
|
continue; |
|
449
|
|
|
} |
|
450
|
|
|
} |
|
451
|
|
|
|
|
452
|
|
|
unset($users); //clean to free memory |
|
453
|
|
|
} else { |
|
454
|
|
|
// Filter by Extra Fields |
|
455
|
|
|
$extra_field_result = []; |
|
456
|
|
|
$use_extra_fields = false; |
|
457
|
|
|
if (is_array($extra_field_list)) { |
|
458
|
|
|
if (is_array($new_field_list) && count($new_field_list) > 0) { |
|
459
|
|
|
$result_list = []; |
|
460
|
|
|
foreach ($new_field_list as $new_field) { |
|
461
|
|
|
$varname = 'field_'.$new_field['variable']; |
|
462
|
|
|
$fieldtype = $new_field['type']; |
|
463
|
|
|
if (UserManager::is_extra_field_available($new_field['variable'])) { |
|
464
|
|
|
if (isset($_POST[$varname]) && '0' != $_POST[$varname]) { |
|
465
|
|
|
$use_extra_fields = true; |
|
466
|
|
|
if (ExtraField::FIELD_TYPE_TAG == $fieldtype) { |
|
467
|
|
|
$extra_field_result[] = UserManager::get_extra_user_data_by_tags( |
|
468
|
|
|
$_POST['field_id'], |
|
469
|
|
|
$_POST[$varname] |
|
470
|
|
|
); |
|
471
|
|
|
} else { |
|
472
|
|
|
$extra_field_result[] = UserManager::get_extra_user_data_by_value( |
|
473
|
|
|
$new_field['variable'], |
|
474
|
|
|
$_POST[$varname] |
|
475
|
|
|
); |
|
476
|
|
|
} |
|
477
|
|
|
} |
|
478
|
|
|
} |
|
479
|
|
|
} |
|
480
|
|
|
} |
|
481
|
|
|
} |
|
482
|
|
|
|
|
483
|
|
|
if ($use_extra_fields) { |
|
484
|
|
|
$final_result = []; |
|
485
|
|
|
if (count($extra_field_result) > 1) { |
|
486
|
|
|
for ($i = 0; $i < count($extra_field_result) - 1; $i++) { |
|
487
|
|
|
if (is_array($extra_field_result[$i + 1])) { |
|
488
|
|
|
$final_result = array_intersect( |
|
489
|
|
|
$extra_field_result[$i], |
|
490
|
|
|
$extra_field_result[$i + 1] |
|
491
|
|
|
); |
|
492
|
|
|
} |
|
493
|
|
|
} |
|
494
|
|
|
} else { |
|
495
|
|
|
$final_result = $extra_field_result[0]; |
|
496
|
|
|
} |
|
497
|
|
|
|
|
498
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
|
|
499
|
|
|
if (is_array($final_result) && count($final_result) > 0) { |
|
500
|
|
|
$where_filter = " AND u.id IN ('".implode("','", $final_result)."') "; |
|
501
|
|
|
} else { |
|
502
|
|
|
//no results |
|
503
|
|
|
$where_filter = " AND u.id = -1"; |
|
504
|
|
|
} |
|
505
|
|
|
} else { |
|
506
|
|
|
if (is_array($final_result) && count($final_result) > 0) { |
|
507
|
|
|
$where_filter = " WHERE u.id IN ('".implode("','", $final_result)."') "; |
|
508
|
|
|
} else { |
|
509
|
|
|
//no results |
|
510
|
|
|
$where_filter = " WHERE u.id = -1"; |
|
511
|
|
|
} |
|
512
|
|
|
} |
|
513
|
|
|
} |
|
514
|
|
|
if (api_is_session_admin() && 'true' === api_get_setting('prevent_session_admins_to_manage_all_users')) { |
|
515
|
|
|
$order_clause = " AND u.creator_id = ".api_get_user_id().$order_clause; |
|
516
|
|
|
} |
|
517
|
|
|
if ($use_extra_fields) { |
|
518
|
|
|
$sql = " |
|
519
|
|
|
SELECT u.id, lastname, firstname, username, su.session_id, official_code |
|
520
|
|
|
FROM $tbl_user u |
|
521
|
|
|
LEFT JOIN $tbl_session_rel_user su |
|
522
|
|
|
ON su.user_id = u.id |
|
523
|
|
|
AND su.session_id = $id_session |
|
524
|
|
|
AND su.relation_type = ".Session::STUDENT." |
|
525
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
526
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
527
|
|
|
$where_filter |
|
528
|
|
|
AND u.status <> ".DRH." |
|
529
|
|
|
AND u.status <> 6 |
|
530
|
|
|
AND sc.c_id = $courseId |
|
531
|
|
|
$order_clause |
|
532
|
|
|
"; |
|
533
|
|
|
} else { |
|
534
|
|
|
$sql = " |
|
535
|
|
|
SELECT u.id, lastname, firstname, username, su.session_id, official_code |
|
536
|
|
|
FROM $tbl_user u |
|
537
|
|
|
LEFT JOIN $tbl_session_rel_user su |
|
538
|
|
|
ON su.user_id = u.id |
|
539
|
|
|
AND su.session_id = $id_session |
|
540
|
|
|
AND su.relation_type = ".Session::STUDENT." |
|
541
|
|
|
WHERE |
|
542
|
|
|
u.status <> ".DRH." AND |
|
543
|
|
|
u.status <> 6 |
|
544
|
|
|
$order_clause |
|
545
|
|
|
"; |
|
546
|
|
|
} |
|
547
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
|
|
548
|
|
|
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); |
|
549
|
|
|
$access_url_id = api_get_current_access_url_id(); |
|
550
|
|
|
if (-1 != $access_url_id) { |
|
551
|
|
|
$sql = " |
|
552
|
|
|
SELECT u.id, lastname, firstname, username, su.session_id, official_code |
|
553
|
|
|
FROM $tbl_user u |
|
554
|
|
|
LEFT JOIN $tbl_session_rel_user su |
|
555
|
|
|
ON su.user_id = u.id |
|
556
|
|
|
AND su.session_id = $id_session |
|
557
|
|
|
AND su.relation_type = ".Session::STUDENT." |
|
558
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user |
|
559
|
|
|
ON (url_user.user_id = u.id) |
|
560
|
|
|
|
|
561
|
|
|
WHERE |
|
562
|
|
|
access_url_id = $access_url_id |
|
563
|
|
|
$where_filter |
|
564
|
|
|
AND u.status <> ".DRH." |
|
565
|
|
|
AND u.status<>6 |
|
566
|
|
|
$order_clause |
|
567
|
|
|
"; |
|
568
|
|
|
} |
|
569
|
|
|
} |
|
570
|
|
|
|
|
571
|
|
|
$result = Database::query($sql); |
|
572
|
|
|
$users = Database::store_result($result, 'ASSOC'); |
|
573
|
|
|
foreach ($users as $uid => $user) { |
|
574
|
|
|
if ($user['session_id'] != $id_session) { |
|
575
|
|
|
$nosessionUsersList[$user['id']] = [ |
|
576
|
|
|
'fn' => $user['firstname'], |
|
577
|
|
|
'ln' => $user['lastname'], |
|
578
|
|
|
'un' => $user['username'], |
|
579
|
|
|
'official_code' => $user['official_code'], |
|
580
|
|
|
]; |
|
581
|
|
|
unset($users[$uid]); |
|
582
|
|
|
} |
|
583
|
|
|
} |
|
584
|
|
|
unset($users); //clean to free memory |
|
585
|
|
|
|
|
586
|
|
|
// filling the correct users in list |
|
587
|
|
|
$sql = " |
|
588
|
|
|
SELECT u.id, lastname, firstname, username, su.session_id, official_code |
|
589
|
|
|
FROM $tbl_user u |
|
590
|
|
|
LEFT JOIN $tbl_session_rel_user su |
|
591
|
|
|
ON su.user_id = u.id |
|
592
|
|
|
AND su.session_id = $id_session |
|
593
|
|
|
AND su.relation_type = ".Session::STUDENT." |
|
594
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
595
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
596
|
|
|
WHERE |
|
597
|
|
|
sc.c_id = $courseId AND |
|
598
|
|
|
u.status <> ".DRH." AND u.status <> 6 |
|
599
|
|
|
$order_clause |
|
600
|
|
|
"; |
|
601
|
|
|
|
|
602
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
|
|
603
|
|
|
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); |
|
604
|
|
|
$access_url_id = api_get_current_access_url_id(); |
|
605
|
|
|
if (-1 != $access_url_id) { |
|
606
|
|
|
$sql = " |
|
607
|
|
|
SELECT u.id, lastname, firstname, username, su.session_id, official_code |
|
608
|
|
|
FROM $tbl_user u |
|
609
|
|
|
LEFT JOIN $tbl_session_rel_user su |
|
610
|
|
|
ON su.user_id = u.id |
|
611
|
|
|
AND su.session_id = $id_session |
|
612
|
|
|
AND su.relation_type = ".Session::STUDENT." |
|
613
|
|
|
INNER JOIN $tbl_user_rel_access_url url_user |
|
614
|
|
|
ON (url_user.user_id = u.id) |
|
615
|
|
|
INNER JOIN $tableRelSessionCourseUser sc |
|
616
|
|
|
ON (sc.session_id = su.session_id AND su.user_id = sc.user_id) |
|
617
|
|
|
WHERE |
|
618
|
|
|
sc.c_id = $courseId AND |
|
619
|
|
|
access_url_id = $access_url_id AND |
|
620
|
|
|
u.status <> ".DRH." AND |
|
621
|
|
|
u.status <> 6 |
|
622
|
|
|
$order_clause |
|
623
|
|
|
"; |
|
624
|
|
|
} |
|
625
|
|
|
} |
|
626
|
|
|
|
|
627
|
|
|
$result = Database::query($sql); |
|
628
|
|
|
$users = Database::store_result($result, 'ASSOC'); |
|
629
|
|
|
foreach ($users as $uid => $user) { |
|
630
|
|
|
if ($user['session_id'] == $id_session) { |
|
631
|
|
|
$sessionUsersList[$user['id']] = $user; |
|
632
|
|
|
if (array_key_exists($user['id'], $nosessionUsersList)) { |
|
633
|
|
|
unset($nosessionUsersList[$user['id']]); |
|
634
|
|
|
} |
|
635
|
|
|
} |
|
636
|
|
|
unset($users[$uid]); |
|
637
|
|
|
} |
|
638
|
|
|
unset($users); //clean to free memory |
|
639
|
|
|
} |
|
640
|
|
|
|
|
641
|
|
|
if ('multiple' == $add_type) { |
|
642
|
|
|
$link_add_type_unique = |
|
643
|
|
|
'<a href="'.api_get_self().'?course_id='.$courseId.'&id_session='.$id_session.'&add='.$addProcess.'&add_type=unique">'. |
|
644
|
|
|
Display::getMdiIcon(ObjectIcon::SINGLE_ELEMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Single registration')).get_lang('Single registration').'</a>'; |
|
645
|
|
|
$link_add_type_multiple = Display::url(Display::getMdiIcon(ObjectIcon::MULTI_ELEMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Multiple registration')).get_lang('Multiple registration'), ''); |
|
646
|
|
|
} else { |
|
647
|
|
|
$link_add_type_unique = Display::url(Display::getMdiIcon(ObjectIcon::SINGLE_ELEMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Single registration')).get_lang('Single registration'), ''); |
|
648
|
|
|
$link_add_type_multiple = |
|
649
|
|
|
'<a href="'.api_get_self().'?course_id='.$courseId.'&id_session='.$id_session.'&add='.$addProcess.'&add_type=multiple">' |
|
650
|
|
|
.Display::getMdiIcon(ObjectIcon::MULTI_ELEMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Multiple registration')).get_lang('Multiple registration').'</a>'; |
|
651
|
|
|
} |
|
652
|
|
|
|
|
653
|
|
|
echo Display::toolbarAction('users_to_session', [$link_add_type_unique.$link_add_type_multiple]); |
|
654
|
|
|
echo Display::page_header($tool_name.' ('.$session_info['name'].') - '.$courseInfo['title']); |
|
655
|
|
|
?> |
|
656
|
|
|
<form name="formulaire" method="post" |
|
657
|
|
|
action="<?php echo api_get_self(); ?>?page=<?php echo $page; ?>&course_id=<?php echo $courseId; ?>&id_session=<?php echo $id_session; ?><?php if (!empty($addProcess)) { |
|
658
|
|
|
echo '&add=true'; |
|
659
|
|
|
} ?>" <?php if ($ajax_search) { |
|
660
|
|
|
echo ' onsubmit="valide();"'; |
|
661
|
|
|
} ?>> |
|
662
|
|
|
<?php |
|
663
|
|
|
if ('multiple' === $add_type) { |
|
664
|
|
|
if (is_array($extra_field_list)) { |
|
665
|
|
|
if (is_array($new_field_list) && count($new_field_list) > 0) { |
|
666
|
|
|
echo '<h3 class="text-xl font-bold mb-4">'.get_lang('Filter users').'</h3>'; |
|
667
|
|
|
foreach ($new_field_list as $new_field) { |
|
668
|
|
|
echo '<label class="block text-gray-700 font-semibold mb-2">'.$new_field['name'].'</label>'; |
|
669
|
|
|
$varname = 'field_'.$new_field['variable']; |
|
670
|
|
|
$fieldtype = $new_field['type']; |
|
671
|
|
|
echo '<select name="'.$varname.'" class="w-full border border-gray-300 p-2 rounded mb-4">'; |
|
672
|
|
|
echo '<option value="0">--'.get_lang('Select').'--</option>'; |
|
673
|
|
|
foreach ($new_field['data'] as $option) { |
|
674
|
|
|
$checked = ''; |
|
675
|
|
|
if (ExtraField::FIELD_TYPE_TAG == $fieldtype) { |
|
676
|
|
|
if (isset($_POST[$varname])) { |
|
677
|
|
|
if ($_POST[$varname] == $option['tag']) { |
|
678
|
|
|
$checked = 'selected="true"'; |
|
679
|
|
|
} |
|
680
|
|
|
} |
|
681
|
|
|
echo '<option value="'.$option['tag'].'" '.$checked.'>'.$option['tag'].'</option>'; |
|
682
|
|
|
} else { |
|
683
|
|
|
if (isset($_POST[$varname])) { |
|
684
|
|
|
if ($_POST[$varname] == $option[1]) { |
|
685
|
|
|
$checked = 'selected="true"'; |
|
686
|
|
|
} |
|
687
|
|
|
} |
|
688
|
|
|
echo '<option value="'.$option[1].'" '.$checked.'>'.$option[2].'</option>'; |
|
689
|
|
|
} |
|
690
|
|
|
} |
|
691
|
|
|
echo '</select>'; |
|
692
|
|
|
$extraHidden = |
|
693
|
|
|
ExtraField::FIELD_TYPE_TAG == $fieldtype ? '<input type="hidden" name="field_id" value="' |
|
694
|
|
|
.$option['field_id'].'" />' : ''; |
|
695
|
|
|
echo $extraHidden; |
|
696
|
|
|
echo ' '; |
|
697
|
|
|
} |
|
698
|
|
|
echo '<input type="button" value="'.get_lang('Filter').'" class="btn btn-primary" onclick="validate_filter()" />'; |
|
699
|
|
|
echo '<br /><br />'; |
|
700
|
|
|
} |
|
701
|
|
|
} |
|
702
|
|
|
} |
|
703
|
|
|
?> |
|
704
|
|
|
<input type="hidden" name="form_sent" value="1"/> |
|
705
|
|
|
<input type="hidden" name="add_type"/> |
|
706
|
|
|
|
|
707
|
|
|
<div id="multiple-add-session" class="flex justify-between items-start my-5"> |
|
708
|
|
|
<div class="w-1/3 p-2"> |
|
709
|
|
|
<label class="block text-gray-700 font-semibold mb-2"><?php echo get_lang('Portal users list'); ?> </label> |
|
710
|
|
|
<?php |
|
711
|
|
|
if (!('multiple' == $add_type)) { |
|
712
|
|
|
?> |
|
713
|
|
|
<input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,'single')" |
|
714
|
|
|
class="w-full border border-gray-300 p-2 rounded"/> |
|
715
|
|
|
<div id="ajax_list_users_single" class="mt-2"></div> |
|
716
|
|
|
<?php |
|
717
|
|
|
} else { |
|
718
|
|
|
?> |
|
719
|
|
|
<div id="ajax_list_users_multiple"> |
|
720
|
|
|
<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" |
|
721
|
|
|
class="w-full border border-gray-300 p-2 rounded"> |
|
722
|
|
|
<?php |
|
723
|
|
|
foreach ($nosessionUsersList as $uid => $enreg) { |
|
724
|
|
|
?> |
|
725
|
|
|
<option value="<?php echo $uid; ?>" <?php if (in_array($uid, $UserList)) { |
|
726
|
|
|
echo 'selected="selected"'; |
|
727
|
|
|
} ?>> |
|
728
|
|
|
<?php |
|
729
|
|
|
$personName = $enreg['ln'].' '.$enreg['fn'].' ('.$enreg['un'].') ' |
|
730
|
|
|
.$enreg['official_code']; |
|
731
|
|
|
if ($showOfficialCode) { |
|
732
|
|
|
$officialCode = !empty($enreg['official_code']) ? $enreg['official_code'].' - ' |
|
733
|
|
|
: '? - '; |
|
734
|
|
|
$personName = $officialCode.$enreg['ln'].' '.$enreg['fn'].' ('.$enreg['un'].')'; |
|
735
|
|
|
} |
|
736
|
|
|
echo $personName; ?> |
|
737
|
|
|
</option> |
|
738
|
|
|
<?php |
|
739
|
|
|
} ?> |
|
740
|
|
|
</select> |
|
741
|
|
|
</div> |
|
742
|
|
|
<?php |
|
743
|
|
|
} |
|
744
|
|
|
unset($nosessionUsersList); |
|
745
|
|
|
?> |
|
746
|
|
|
</div> |
|
747
|
|
|
<div class="flex flex-col items-center justify-center space-y-3 mt-4"> |
|
748
|
|
|
<?php if ('multiple' == $add_type) { |
|
749
|
|
|
?> |
|
750
|
|
|
<?php echo get_lang('First letter (last name)'); ?> : |
|
751
|
|
|
<select class="mb-4" id="first_letter_user" name="firstLetterUser" onchange="change_select(this.value);"> |
|
752
|
|
|
<option value="%">--</option> |
|
753
|
|
|
<?php |
|
754
|
|
|
echo Display:: get_alphabet_options(); ?> |
|
755
|
|
|
</select> |
|
756
|
|
|
<?php |
|
757
|
|
|
} ?> |
|
758
|
|
|
<?php if ($ajax_search) { ?> |
|
759
|
|
|
<button name="remove_user" class="btn btn--primary mb-4" |
|
760
|
|
|
type="button" onclick="remove_item(document.getElementById('destination_users'))"> |
|
761
|
|
|
<em class="pi pi-chevron-left"></em> |
|
762
|
|
|
</button> |
|
763
|
|
|
<?php } else { ?> |
|
764
|
|
|
<button name="add_user" class="btn btn--primary mb-4" |
|
765
|
|
|
type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))"> |
|
766
|
|
|
<em class="pi pi-chevron-right"></em> |
|
767
|
|
|
</button> |
|
768
|
|
|
<button name="remove_user" class="btn btn--primary mb-4" |
|
769
|
|
|
type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))"> |
|
770
|
|
|
<em class="pi pi-chevron-left"></em> |
|
771
|
|
|
</button> |
|
772
|
|
|
<?php } ?> |
|
773
|
|
|
<button name="next" class="btn btn--success mb-4" type="button" |
|
774
|
|
|
onclick="valide()"> |
|
775
|
|
|
<?php echo (!empty($addProcess)) ? get_lang('Finish session creation') : get_lang('Subscribe users to this session'); ?> |
|
776
|
|
|
</button> |
|
777
|
|
|
</div> |
|
778
|
|
|
<div class="w-1/3 p-2"> |
|
779
|
|
|
<label class="block text-gray-700 font-semibold mb-2"><?php echo get_lang('List of users registered in this session'); ?>:</label> |
|
780
|
|
|
<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" |
|
781
|
|
|
class="w-full border border-gray-300 p-2 rounded"> |
|
782
|
|
|
<?php |
|
783
|
|
|
foreach ($sessionUsersList as $enreg) { |
|
784
|
|
|
?> |
|
785
|
|
|
<option value="<?php echo $enreg['id']; ?>"> |
|
786
|
|
|
<?php |
|
787
|
|
|
$personName = $enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username'].') ' |
|
788
|
|
|
.$enreg['official_code']; |
|
789
|
|
|
if ($showOfficialCode) { |
|
790
|
|
|
$officialCode = |
|
791
|
|
|
!empty($enreg['official_code']) ? $enreg['official_code'].' - ' : '? - '; |
|
792
|
|
|
$personName = |
|
793
|
|
|
$officialCode.$enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username'].')'; |
|
794
|
|
|
} |
|
795
|
|
|
echo $personName; ?> |
|
796
|
|
|
</option> |
|
797
|
|
|
<?php |
|
798
|
|
|
} |
|
799
|
|
|
unset($sessionUsersList); |
|
800
|
|
|
?> |
|
801
|
|
|
</select> |
|
802
|
|
|
</div> |
|
803
|
|
|
</div> |
|
804
|
|
|
</form> |
|
805
|
|
|
<script> |
|
806
|
|
|
function moveItem(origin, destination) { |
|
807
|
|
|
for (var i = 0; i < origin.options.length; i++) { |
|
808
|
|
|
if (origin.options[i].selected) { |
|
809
|
|
|
destination.options[destination.length] = new Option(origin.options[i].text, origin.options[i].value); |
|
810
|
|
|
origin.options[i] = null; |
|
811
|
|
|
i = i - 1; |
|
812
|
|
|
} |
|
813
|
|
|
} |
|
814
|
|
|
destination.selectedIndex = -1; |
|
815
|
|
|
sortOptions(destination.options); |
|
816
|
|
|
} |
|
817
|
|
|
|
|
818
|
|
|
function sortOptions(options) { |
|
819
|
|
|
newOptions = new Array(); |
|
820
|
|
|
for (i = 0; i < options.length; i++) |
|
821
|
|
|
newOptions[i] = options[i]; |
|
822
|
|
|
|
|
823
|
|
|
newOptions = newOptions.sort(mysort); |
|
824
|
|
|
options.length = 0; |
|
825
|
|
|
for (i = 0; i < newOptions.length; i++) |
|
826
|
|
|
options[i] = newOptions[i]; |
|
827
|
|
|
} |
|
828
|
|
|
|
|
829
|
|
|
function mysort(a, b) { |
|
830
|
|
|
if (a.text.toLowerCase() > b.text.toLowerCase()) { |
|
831
|
|
|
return 1; |
|
832
|
|
|
} |
|
833
|
|
|
if (a.text.toLowerCase() < b.text.toLowerCase()) { |
|
834
|
|
|
return -1; |
|
835
|
|
|
} |
|
836
|
|
|
return 0; |
|
837
|
|
|
} |
|
838
|
|
|
|
|
839
|
|
|
function valide() { |
|
840
|
|
|
var options = document.getElementById('destination_users').options; |
|
841
|
|
|
for (i = 0; i < options.length; i++) { |
|
842
|
|
|
options[i].selected = true; |
|
843
|
|
|
} |
|
844
|
|
|
document.forms.formulaire.submit(); |
|
845
|
|
|
} |
|
846
|
|
|
|
|
847
|
|
|
function loadUsersInSelect(select) { |
|
848
|
|
|
var xhr_object = null; |
|
849
|
|
|
if (window.XMLHttpRequest) // Firefox |
|
850
|
|
|
xhr_object = new XMLHttpRequest(); |
|
851
|
|
|
else if (window.ActiveXObject) // Internet Explorer |
|
852
|
|
|
xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); |
|
853
|
|
|
else // XMLHttpRequest non supporté par le navigateur |
|
854
|
|
|
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); |
|
855
|
|
|
|
|
856
|
|
|
xhr_object.open("POST", "loadUsersInSelect.ajax.php"); |
|
857
|
|
|
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); |
|
858
|
|
|
nosessionUsers = makepost(document.getElementById('origin_users')); |
|
859
|
|
|
sessionUsers = makepost(document.getElementById('destination_users')); |
|
860
|
|
|
nosessionClasses = makepost(document.getElementById('origin_classes')); |
|
861
|
|
|
sessionClasses = makepost(document.getElementById('destination_classes')); |
|
862
|
|
|
xhr_object.send("nosessionusers=" + nosessionUsers + "&sessionusers=" + sessionUsers + "&nosessionclasses=" + nosessionClasses + "&sessionclasses=" + sessionClasses); |
|
863
|
|
|
|
|
864
|
|
|
xhr_object.onreadystatechange = function () { |
|
865
|
|
|
if (xhr_object.readyState == 4) { |
|
866
|
|
|
document.getElementById('content_source').innerHTML = result = xhr_object.responseText; |
|
867
|
|
|
} |
|
868
|
|
|
} |
|
869
|
|
|
} |
|
870
|
|
|
|
|
871
|
|
|
function makepost(select) { |
|
872
|
|
|
var options = select.options; |
|
873
|
|
|
var ret = ""; |
|
874
|
|
|
for (i = 0; i < options.length; i++) |
|
875
|
|
|
ret = ret + options[i].value + '::' + options[i].text + ";;"; |
|
876
|
|
|
return ret; |
|
877
|
|
|
} |
|
878
|
|
|
</script> |
|
879
|
|
|
<?php |
|
880
|
|
|
|
|
881
|
|
|
Display::display_footer(); |
|
882
|
|
|
|
This function has been deprecated. The supplier of the function has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.