add_users_to_session.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * @package chamilo.admin
  5. */
  6. // name of the language file that needs to be included
  7. $language_file=array('admin','registration');
  8. // resetting the course id
  9. $cidReset = true;
  10. // including some necessary files
  11. require_once '../inc/global.inc.php';
  12. require_once '../inc/lib/xajax/xajax.inc.php';
  13. $xajax = new xajax();
  14. //$xajax->debugOn();
  15. $xajax -> registerFunction ('search_users');
  16. // setting the section (for the tabs)
  17. $this_section = SECTION_PLATFORM_ADMIN;
  18. // Access restrictions
  19. api_protect_admin_script(true);
  20. $id_session = intval($_GET['id_session']);
  21. // setting breadcrumbs
  22. $interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
  23. $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('SessionList'));
  24. $interbreadcrumb[] = array('url' => "resume_session.php?id_session=".$id_session,"name" => get_lang('SessionOverview'));
  25. // Database Table Definitions
  26. $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
  27. $tbl_session_rel_class = Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
  28. $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
  29. $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  30. $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
  31. $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
  32. $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
  33. $tbl_class = Database::get_main_table(TABLE_MAIN_CLASS);
  34. $tbl_class_user = Database::get_main_table(TABLE_MAIN_CLASS_USER);
  35. // setting the name of the tool
  36. $tool_name=get_lang('SubscribeUsersToSession');
  37. $add_type = 'multiple';
  38. if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
  39. $add_type = Security::remove_XSS($_REQUEST['add_type']);
  40. }
  41. if (!api_is_platform_admin()) {
  42. $sql = 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_session;
  43. $rs = Database::query($sql);
  44. if(Database::result($rs,0,0)!=$_user['user_id']) {
  45. api_not_allowed(true);
  46. }
  47. }
  48. //checking for extra field with filter on
  49. require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
  50. require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php';
  51. $extra_field_list= UserManager::get_extra_fields();
  52. $new_field_list = array();
  53. if (is_array($extra_field_list)) {
  54. foreach ($extra_field_list as $extra_field) {
  55. //if is enabled to filter and is a "<select>" field type
  56. if ($extra_field[8]==1 && $extra_field[2]==4 ) {
  57. $new_field_list[] = array('name'=> $extra_field[3], 'variable'=>$extra_field[1], 'data'=> $extra_field[9]);
  58. }
  59. }
  60. }
  61. function search_users($needle, $type) {
  62. global $tbl_user,$tbl_session_rel_user,$id_session;
  63. $xajax_response = new XajaxResponse();
  64. $return = '';
  65. if (!empty($needle) && !empty($type)) {
  66. // xajax send utf8 datas... datas in db can be non-utf8 datas
  67. $charset = api_get_system_encoding();
  68. $needle = Database::escape_string($needle);
  69. $needle = api_convert_encoding($needle, $charset, 'utf-8');
  70. $user_anonymous=api_get_anonymous_id();
  71. $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
  72. $cond_user_id = '';
  73. if (!empty($id_session)) {
  74. $id_session = intval($id_session);
  75. // check id_user from session_rel_user table
  76. $sql = 'SELECT id_user FROM '.$tbl_session_rel_user.' WHERE id_session ="'.$id_session.'" AND relation_type<>'.SESSION_RELATION_TYPE_RRHH.' ';
  77. $res = Database::query($sql);
  78. $user_ids = array();
  79. if (Database::num_rows($res) > 0) {
  80. while ($row = Database::fetch_row($res)) {
  81. $user_ids[] = (int)$row[0];
  82. }
  83. }
  84. if (count($user_ids) > 0){
  85. $cond_user_id = ' AND user.user_id NOT IN('.implode(",",$user_ids).')';
  86. }
  87. }
  88. if ($type == 'single') {
  89. // search users where username or firstname or lastname begins likes $needle
  90. $sql = 'SELECT user.user_id, username, lastname, firstname FROM '.$tbl_user.' user
  91. WHERE (username LIKE "'.$needle.'%"
  92. OR firstname LIKE "'.$needle.'%"
  93. OR lastname LIKE "'.$needle.'%") AND user.user_id<>"'.$user_anonymous.'" AND user.status<>'.DRH.''.
  94. $order_clause.
  95. ' LIMIT 11';
  96. } else {
  97. $sql = 'SELECT user.user_id, username, lastname, firstname FROM '.$tbl_user.' user
  98. WHERE '.(api_sort_by_first_name() ? 'firstname' : 'lastname').' LIKE "'.$needle.'%" AND user.status<>'.DRH.' AND user.user_id<>"'.$user_anonymous.'"'.$cond_user_id.
  99. $order_clause;
  100. }
  101. global $_configuration;
  102. if ($_configuration['multiple_access_urls']) {
  103. $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
  104. $access_url_id = api_get_current_access_url_id();
  105. if ($access_url_id != -1){
  106. if ($type == 'single') {
  107. $sql = 'SELECT user.user_id, username, lastname, firstname FROM '.$tbl_user.' user
  108. INNER JOIN '.$tbl_user_rel_access_url.' url_user ON (url_user.user_id=user.user_id)
  109. WHERE access_url_id = '.$access_url_id.' AND (username LIKE "'.$needle.'%"
  110. OR firstname LIKE "'.$needle.'%"
  111. OR lastname LIKE "'.$needle.'%") AND user.user_id<>"'.$user_anonymous.'" AND user.status<>'.DRH.' '.
  112. $order_clause.
  113. ' LIMIT 11';
  114. } else {
  115. $sql = 'SELECT user.user_id, username, lastname, firstname FROM '.$tbl_user.' user
  116. INNER JOIN '.$tbl_user_rel_access_url.' url_user ON (url_user.user_id=user.user_id)
  117. WHERE access_url_id = '.$access_url_id.'
  118. AND '.(api_sort_by_first_name() ? 'firstname' : 'lastname').' LIKE "'.$needle.'%" AND user.status<>'.DRH.' AND user.user_id<>"'.$user_anonymous.'"'.$cond_user_id.
  119. $order_clause;
  120. }
  121. }
  122. }
  123. $rs = Database::query($sql);
  124. $i=0;
  125. if ($type=='single') {
  126. while ($user = Database :: fetch_array($rs)) {
  127. $i++;
  128. if ($i<=10) {
  129. $person_name = api_get_person_name($user['firstname'], $user['lastname']);
  130. $return .= '<a href="javascript: void(0);" onclick="javascript: add_user_to_session(\''.$user['user_id'].'\',\''.$person_name.' ('.$user['username'].')'.'\')">'.$person_name.' ('.$user['username'].')</a><br />';
  131. } else {
  132. $return .= '...<br />';
  133. }
  134. }
  135. $xajax_response -> addAssign('ajax_list_users_single','innerHTML',api_utf8_encode($return));
  136. } else {
  137. global $nosessionUsersList;
  138. $return .= '<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;">';
  139. while ($user = Database :: fetch_array($rs)) {
  140. $person_name = api_get_person_name($user['firstname'], $user['lastname']);
  141. $return .= '<option value="'.$user['user_id'].'">'.$person_name.' ('.$user['username'].')</option>';
  142. }
  143. $return .= '</select>';
  144. $xajax_response -> addAssign('ajax_list_users_multiple','innerHTML',api_utf8_encode($return));
  145. }
  146. }
  147. return $xajax_response;
  148. }
  149. $xajax -> processRequests();
  150. $htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
  151. $htmlHeadXtra[] = '
  152. <script type="text/javascript">
  153. function add_user_to_session (code, content) {
  154. document.getElementById("user_to_add").value = "";
  155. document.getElementById("ajax_list_users_single").innerHTML = "";
  156. destination = document.getElementById("destination_users");
  157. for (i=0;i<destination.length;i++) {
  158. if(destination.options[i].text == content) {
  159. return false;
  160. }
  161. }
  162. destination.options[destination.length] = new Option(content,code);
  163. destination.selectedIndex = -1;
  164. sortOptions(destination.options);
  165. }
  166. function remove_item(origin) {
  167. for(var i = 0 ; i<origin.options.length ; i++) {
  168. if(origin.options[i].selected) {
  169. origin.options[i]=null;
  170. i = i-1;
  171. }
  172. }
  173. }
  174. function validate_filter() {
  175. document.formulaire.add_type.value = \''.$add_type.'\';
  176. document.formulaire.form_sent.value=0;
  177. document.formulaire.submit();
  178. }
  179. </script>';
  180. $form_sent=0;
  181. $errorMsg=$firstLetterUser=$firstLetterSession='';
  182. $UserList=$SessionList=array();
  183. $users=$sessions=array();
  184. $noPHP_SELF=true;
  185. if($_POST['form_sent']) {
  186. $form_sent=$_POST['form_sent'];
  187. $firstLetterUser=$_POST['firstLetterUser'];
  188. $firstLetterSession=$_POST['firstLetterSession'];
  189. $UserList=$_POST['sessionUsersList'];
  190. $ClassList=$_POST['sessionClassesList'];
  191. if(!is_array($UserList)) {
  192. $UserList=array();
  193. }
  194. if ($form_sent == 1) {
  195. //added a parameter to send emails when registering a user
  196. SessionManager::suscribe_users_to_session($id_session, $UserList, null, true);
  197. //adding the session to the access_url_rel_session table
  198. //if(empty($_GET['add']))
  199. //header('Location: '.Security::remove_XSS($_GET['page']).'?id_session='.$id_session);
  200. //else
  201. header('Location: resume_session.php?id_session='.$id_session);
  202. exit;
  203. }
  204. }
  205. $session_info = SessionManager::fetch($id_session);
  206. Display::display_header($tool_name);
  207. //api_display_tool_title($tool_name.' ('.$session_info['name'].')');
  208. $nosessionUsersList = $sessionUsersList = array();
  209. /*$sql = 'SELECT COUNT(1) FROM '.$tbl_user;
  210. $rs = Database::query($sql);
  211. $count_courses = Database::result($rs, 0, 0);*/
  212. $ajax_search = $add_type == 'unique' ? true : false;
  213. global $_configuration;
  214. $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
  215. if ($ajax_search) {
  216. $sql="SELECT user_id, lastname, firstname, username, id_session
  217. FROM $tbl_user
  218. INNER JOIN $tbl_session_rel_user
  219. ON $tbl_session_rel_user.id_user = $tbl_user.user_id AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  220. AND $tbl_session_rel_user.id_session = ".intval($id_session)."
  221. WHERE status<>".DRH." $order_clause";
  222. if ($_configuration['multiple_access_urls']) {
  223. $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
  224. $access_url_id = api_get_current_access_url_id();
  225. if ($access_url_id != -1){
  226. $sql="SELECT u.user_id, lastname, firstname, username, id_session
  227. FROM $tbl_user u
  228. INNER JOIN $tbl_session_rel_user
  229. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  230. AND $tbl_session_rel_user.id_session = ".intval($id_session)."
  231. INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
  232. WHERE access_url_id = $access_url_id AND u.status<>".DRH."
  233. $order_clause";
  234. }
  235. }
  236. $result=Database::query($sql);
  237. $Users=Database::store_result($result);
  238. foreach ($Users as $user) {
  239. $sessionUsersList[$user['user_id']] = $user ;
  240. }
  241. } else {
  242. //Filter by Extra Fields
  243. $use_extra_fields = false;
  244. if (is_array($extra_field_list)) {
  245. if (is_array($new_field_list) && count($new_field_list)>0 ) {
  246. $result_list=array();
  247. foreach ($new_field_list as $new_field) {
  248. $varname = 'field_'.$new_field['variable'];
  249. if (Usermanager::is_extra_field_available($new_field['variable'])) {
  250. if (isset($_POST[$varname]) && $_POST[$varname]!='0') {
  251. $use_extra_fields = true;
  252. $extra_field_result[]= Usermanager::get_extra_user_data_by_value($new_field['variable'], $_POST[$varname]);
  253. }
  254. }
  255. }
  256. }
  257. }
  258. if ($use_extra_fields) {
  259. $final_result = array();
  260. if (count($extra_field_result)>1) {
  261. for($i=0;$i<count($extra_field_result)-1;$i++) {
  262. if (is_array($extra_field_result[$i+1])) {
  263. $final_result = array_intersect($extra_field_result[$i],$extra_field_result[$i+1]);
  264. }
  265. }
  266. } else {
  267. $final_result = $extra_field_result[0];
  268. }
  269. $where_filter ='';
  270. if ($_configuration['multiple_access_urls']) {
  271. if (is_array($final_result) && count($final_result)>0) {
  272. $where_filter = " AND u.user_id IN ('".implode("','",$final_result)."') ";
  273. } else {
  274. //no results
  275. $where_filter = " AND u.user_id = -1";
  276. }
  277. } else {
  278. if (is_array($final_result) && count($final_result)>0) {
  279. $where_filter = " WHERE u.user_id IN ('".implode("','",$final_result)."') ";
  280. } else {
  281. //no results
  282. $where_filter = " WHERE u.user_id = -1";
  283. }
  284. }
  285. }
  286. if ($use_extra_fields) {
  287. $sql="SELECT user_id, lastname, firstname, username, id_session
  288. FROM $tbl_user u
  289. LEFT JOIN $tbl_session_rel_user
  290. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  291. $where_filter AND u.status<>".DRH."
  292. $order_clause";
  293. } else {
  294. $sql="SELECT user_id, lastname, firstname, username, id_session
  295. FROM $tbl_user u
  296. LEFT JOIN $tbl_session_rel_user
  297. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  298. WHERE u.status<>".DRH."
  299. $order_clause";
  300. }
  301. if ($_configuration['multiple_access_urls']) {
  302. $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
  303. $access_url_id = api_get_current_access_url_id();
  304. if ($access_url_id != -1){
  305. $sql="SELECT u.user_id, lastname, firstname, username, id_session
  306. FROM $tbl_user u
  307. LEFT JOIN $tbl_session_rel_user
  308. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  309. INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
  310. WHERE access_url_id = $access_url_id $where_filter AND u.status<>".DRH."
  311. $order_clause";
  312. }
  313. }
  314. $result=Database::query($sql);
  315. $Users=Database::store_result($result);
  316. //var_dump($_REQUEST['id_session']);
  317. foreach ($Users as $user) {
  318. if($user['id_session'] != $id_session)
  319. $nosessionUsersList[$user['user_id']] = $user ;
  320. }
  321. $user_anonymous=api_get_anonymous_id();
  322. foreach($nosessionUsersList as $key_user_list =>$value_user_list) {
  323. if ($nosessionUsersList[$key_user_list]['user_id']==$user_anonymous) {
  324. unset($nosessionUsersList[$key_user_list]);
  325. }
  326. }
  327. //filling the correct users in list
  328. $sql="SELECT user_id, lastname, firstname, username, id_session
  329. FROM $tbl_user u
  330. LEFT JOIN $tbl_session_rel_user
  331. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  332. WHERE u.status<>".DRH." $order_clause";
  333. if ($_configuration['multiple_access_urls']) {
  334. $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
  335. $access_url_id = api_get_current_access_url_id();
  336. if ($access_url_id != -1){
  337. $sql="SELECT u.user_id, lastname, firstname, username, id_session
  338. FROM $tbl_user u
  339. LEFT JOIN $tbl_session_rel_user
  340. ON $tbl_session_rel_user.id_user = u.user_id AND $tbl_session_rel_user.id_session = '$id_session' AND $tbl_session_rel_user.relation_type<>".SESSION_RELATION_TYPE_RRHH."
  341. INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id)
  342. WHERE access_url_id = $access_url_id AND u.status<>".DRH."
  343. $order_clause";
  344. }
  345. }
  346. $result=Database::query($sql);
  347. $Users=Database::store_result($result);
  348. foreach($Users as $key_user_list =>$value_user_list) {
  349. if ($Users[$key_user_list]['user_id']==$user_anonymous) {
  350. unset($Users[$key_user_list]);
  351. }
  352. }
  353. foreach ($Users as $user) {
  354. if($user['id_session'] == $id_session){
  355. $sessionUsersList[$user['user_id']] = $user;
  356. if (array_key_exists($user['user_id'],$nosessionUsersList))
  357. unset($nosessionUsersList[$user['user_id']]);
  358. }
  359. }
  360. }
  361. if ($add_type == 'multiple') {
  362. $link_add_type_unique = '<a href="'.api_get_self().'?id_session='.$id_session.'&add='.Security::remove_XSS($_GET['add']).'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
  363. $link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
  364. } else {
  365. $link_add_type_unique = Display::return_icon('single.gif').get_lang('SessionAddTypeUnique');
  366. $link_add_type_multiple = '<a href="'.api_get_self().'?id_session='.$id_session.'&amp;add='.Security::remove_XSS($_GET['add']).'&amp;add_type=multiple">'.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').'</a>';
  367. }
  368. $link_add_group = '<a href="usergroups.php">'.Display::return_icon('multiple.gif',get_lang('RegistrationByUsersGroups')).get_lang('RegistrationByUsersGroups').'</a>';
  369. ?>
  370. <div class="actions">
  371. <?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>&nbsp;|&nbsp;<?php echo $link_add_group; ?>
  372. </div>
  373. <?php echo '<div class="row"><div class="form_header">'.$tool_name.' ('.$session_info['name'].')</div></div><br/>'; ?>
  374. <form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?page=<?php echo Security::remove_XSS($_GET['page']); ?>&id_session=<?php echo $id_session; ?><?php if(!empty($_GET['add'])) echo '&add=true' ; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
  375. <?php
  376. if ($add_type=='multiple') {
  377. if (is_array($extra_field_list)) {
  378. if (is_array($new_field_list) && count($new_field_list)>0 ) {
  379. echo '<h3>'.get_lang('FilterUsers').'</h3>';
  380. foreach ($new_field_list as $new_field) {
  381. echo $new_field['name'];
  382. $varname = 'field_'.$new_field['variable'];
  383. echo '&nbsp;<select name="'.$varname.'">';
  384. echo '<option value="0">--'.get_lang('Select').'--</option>';
  385. foreach ($new_field['data'] as $option) {
  386. $checked='';
  387. if (isset($_POST[$varname])) {
  388. if ($_POST[$varname]==$option[1]) {
  389. $checked = 'selected="true"';
  390. }
  391. }
  392. echo '<option value="'.$option[1].'" '.$checked.'>'.$option[1].'</option>';
  393. }
  394. echo '</select>';
  395. echo '&nbsp;&nbsp;';
  396. }
  397. echo '<input type="button" value="'.get_lang('Filter').'" onclick="validate_filter()" />';
  398. echo '<br /><br />';
  399. }
  400. }
  401. }
  402. ?>
  403. <input type="hidden" name="form_sent" value="1" />
  404. <input type="hidden" name="add_type" />
  405. <?php
  406. if(!empty($errorMsg)) {
  407. Display::display_normal_message($errorMsg); //main API
  408. }
  409. ?>
  410. <table border="0" cellpadding="5" cellspacing="0" width="100%">
  411. <!-- Users -->
  412. <tr>
  413. <td align="center"><b><?php echo get_lang('UserListInPlatform') ?> :</b>
  414. </td>
  415. <td></td>
  416. <td align="center"><b><?php echo get_lang('UserListInSession') ?> :</b></td>
  417. </tr>
  418. <?php if ($add_type=='multiple') { ?>
  419. <tr>
  420. <td align="center">
  421. <?php echo get_lang('FirstLetterUser'); ?> :
  422. <select name="firstLetterUser" onchange = "xajax_search_users(this.value,'multiple')" >
  423. <option value = "%">--</option>
  424. <?php
  425. echo Display :: get_alphabet_options();
  426. ?>
  427. </select>
  428. </td>
  429. <td align="center">&nbsp;</td>
  430. </tr>
  431. <?php } ?>
  432. <tr>
  433. <td align="center">
  434. <div id="content_source">
  435. <?php
  436. if (!($add_type=='multiple')) {
  437. ?>
  438. <input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,'single')" />
  439. <div id="ajax_list_users_single"></div>
  440. <?php
  441. } else {
  442. ?>
  443. <div id="ajax_list_users_multiple">
  444. <select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:380px;">
  445. <?php
  446. foreach($nosessionUsersList as $enreg) {
  447. ?>
  448. <option value="<?php echo $enreg['user_id']; ?>" <?php if(in_array($enreg['user_id'],$UserList)) echo 'selected="selected"'; ?>><?php echo api_get_person_name($enreg['firstname'], $enreg['lastname']).' ('.$enreg['username'].')'; ?></option>
  449. <?php
  450. }
  451. ?>
  452. </select>
  453. </div>
  454. <?php
  455. }
  456. unset($nosessionUsersList);
  457. ?>
  458. </div>
  459. </td>
  460. <td width="10%" valign="middle" align="center">
  461. <?php
  462. if ($ajax_search) {
  463. ?>
  464. <button class="arrowl" type="button" onclick="remove_item(document.getElementById('destination_users'))" ></button>
  465. <?php
  466. } else {
  467. ?>
  468. <button class="arrowr" type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))"></button>
  469. <br /><br />
  470. <button class="arrowl" type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))"></button>
  471. <?php
  472. }
  473. ?>
  474. <br /><br /><br /><br /><br /><br />
  475. </td>
  476. <td align="center">
  477. <select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:380px;">
  478. <?php
  479. foreach($sessionUsersList as $enreg) {
  480. ?>
  481. <option value="<?php echo $enreg['user_id']; ?>"><?php echo api_get_person_name($enreg['firstname'], $enreg['lastname']).' ('.$enreg['username'].')'; ?></option>
  482. <?php
  483. }
  484. unset($sessionUsersList);
  485. ?>
  486. </select></td>
  487. </tr>
  488. <tr>
  489. <td colspan="3" align="center">
  490. <br />
  491. <?php
  492. if(isset($_GET['add'])) {
  493. echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('FinishSessionCreation').'</button>';
  494. } else {
  495. //@todo see that the call to "valide()" doesn't duplicate the onsubmit of the form (necessary to avoid delete on "enter" key pressed)
  496. echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('SubscribeUsersToSession').'</button>';
  497. }
  498. ?>
  499. </td>
  500. </tr>
  501. </table>
  502. </form>
  503. <script type="text/javascript">
  504. <!--
  505. function moveItem(origin , destination){
  506. for(var i = 0 ; i<origin.options.length ; i++) {
  507. if(origin.options[i].selected) {
  508. destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
  509. origin.options[i]=null;
  510. i = i-1;
  511. }
  512. }
  513. destination.selectedIndex = -1;
  514. sortOptions(destination.options);
  515. }
  516. function sortOptions(options) {
  517. newOptions = new Array();
  518. for (i = 0 ; i<options.length ; i++)
  519. newOptions[i] = options[i];
  520. newOptions = newOptions.sort(mysort);
  521. options.length = 0;
  522. for(i = 0 ; i < newOptions.length ; i++)
  523. options[i] = newOptions[i];
  524. }
  525. function mysort(a, b){
  526. if(a.text.toLowerCase() > b.text.toLowerCase()){
  527. return 1;
  528. }
  529. if(a.text.toLowerCase() < b.text.toLowerCase()){
  530. return -1;
  531. }
  532. return 0;
  533. }
  534. function valide(){
  535. var options = document.getElementById('destination_users').options;
  536. for (i = 0 ; i<options.length ; i++)
  537. options[i].selected = true;
  538. document.forms.formulaire.submit();
  539. }
  540. function loadUsersInSelect(select){
  541. var xhr_object = null;
  542. if(window.XMLHttpRequest) // Firefox
  543. xhr_object = new XMLHttpRequest();
  544. else if(window.ActiveXObject) // Internet Explorer
  545. xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  546. else // XMLHttpRequest non supporté par le navigateur
  547. alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  548. //xhr_object.open("GET", "loadUsersInSelect.ajax.php?id_session=<?php echo $id_session ?>&letter="+select.options[select.selectedIndex].text, false);
  549. xhr_object.open("POST", "loadUsersInSelect.ajax.php");
  550. xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  551. nosessionUsers = makepost(document.getElementById('origin_users'));
  552. sessionUsers = makepost(document.getElementById('destination_users'));
  553. nosessionClasses = makepost(document.getElementById('origin_classes'));
  554. sessionClasses = makepost(document.getElementById('destination_classes'));
  555. xhr_object.send("nosessionusers="+nosessionUsers+"&sessionusers="+sessionUsers+"&nosessionclasses="+nosessionClasses+"&sessionclasses="+sessionClasses);
  556. xhr_object.onreadystatechange = function() {
  557. if(xhr_object.readyState == 4) {
  558. document.getElementById('content_source').innerHTML = result = xhr_object.responseText;
  559. //alert(xhr_object.responseText);
  560. }
  561. }
  562. }
  563. function makepost(select){
  564. var options = select.options;
  565. var ret = "";
  566. for (i = 0 ; i<options.length ; i++)
  567. ret = ret + options[i].value +'::'+options[i].text+";;";
  568. return ret;
  569. }
  570. -->
  571. </script>
  572. <?php
  573. /* FOOTER */
  574. Display::display_footer();