dokeos-admin
[ class tree: dokeos-admin ] [ index: dokeos-admin ] [ all elements ]

Source for file add_users_to_session.php

Documentation is available at add_users_to_session.php

  1. <?php
  2. /*
  3. ==============================================================================
  4.     Dokeos - elearning and course management software
  5.  
  6.     Copyright (c) 2004 Dokeos S.A.
  7.     Copyright (c) 2003 Ghent University (UGent)
  8.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  9.     Copyright (c) Olivier Brouckaert
  10.  
  11.     For a full list of contributors, see "credits.txt".
  12.     The full license can be read in "license.txt".
  13.  
  14.     This program is free software; you can redistribute it and/or
  15.     modify it under the terms of the GNU General Public License
  16.     as published by the Free Software Foundation; either version 2
  17.     of the License, or (at your option) any later version.
  18.  
  19.     See the GNU General Public License for more details.
  20.  
  21.     Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
  22. ==============================================================================
  23. */
  24. /**
  25. ==============================================================================
  26. *    @package dokeos.admin
  27. ==============================================================================
  28. */
  29.  
  30. // name of the language file that needs to be included
  31. $language_file='admin';
  32.  
  33. // resetting the course id
  34. $cidReset=true;
  35.  
  36. // including some necessary dokeos files
  37. require('../inc/global.inc.php');
  38.  
  39. require_once ('../inc/lib/xajax/xajax.inc.php');
  40. $xajax new xajax();
  41. //$xajax->debugOn();
  42. $xajax -> registerFunction ('search_users');
  43.  
  44. // setting the section (for the tabs)
  45. $this_section SECTION_PLATFORM_ADMIN;
  46.  
  47. // Access restrictions
  48.  
  49. // setting breadcrumbs
  50. $interbreadcrumb[]=array('url' => 'index.php',"name" => get_lang('PlatformAdmin'));
  51. $interbreadcrumb[]=array('url' => "session_list.php","name" => "Liste des sessions");
  52.  
  53. // Database Table Definitions
  54. $tbl_session                        Database::get_main_table(TABLE_MAIN_SESSION);
  55. $tbl_session_rel_class                Database::get_main_table(TABLE_MAIN_SESSION_CLASS);
  56. $tbl_session_rel_course                Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
  57. $tbl_session_rel_course_rel_user    Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  58. $tbl_course                            Database::get_main_table(TABLE_MAIN_COURSE);
  59. $tbl_user                            Database::get_main_table(TABLE_MAIN_USER);
  60. $tbl_session_rel_user                Database::get_main_table(TABLE_MAIN_SESSION_USER);
  61. $tbl_class                            Database::get_main_table(TABLE_MAIN_CLASS);
  62. $tbl_class_user                        Database::get_main_table(TABLE_MAIN_CLASS_USER);
  63.  
  64. // setting the name of the tool
  65. $tool_name=get_lang('SubscribeUsersToSession');
  66.  
  67. $id_session=intval($_GET['id_session']);
  68.  
  69. {
  70.     $sql 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_session;
  71.     $rs api_sql_query($sql,__FILE__,__LINE__);
  72.     if(mysql_result($rs,0,0)!=$_user['user_id'])
  73.     {
  74.         api_not_allowed(true);
  75.     }
  76. }
  77.  
  78.  
  79. function search_users($needle)
  80. {
  81.     global $tbl_user;
  82.     
  83.     $xajax_response new XajaxResponse();
  84.     $return '';
  85.     if(!empty($needle))
  86.     {
  87.         // search users where username or firstname or lastname begins likes $needle
  88.         $sql 'SELECT user_id, username, lastname, firstname FROM '.$tbl_user.' user
  89.                 WHERE (username LIKE "'.$needle.'%"
  90.                 OR firstname LIKE "'.$needle.'%"
  91.                 OR lastname LIKE "'.$needle.'%")
  92.                 ORDER BY lastname, firstname, username
  93.                 LIMIT 10';
  94.                 
  95.         $rs api_sql_query($sql__FILE____LINE__);
  96.         
  97.         while($user Database :: fetch_array($rs))
  98.         {
  99.             $return .= '<a href="#" onclick="add_user_to_session(\''.$user['user_id'].'\',\''.$user['firstname'].' '.$user['lastname'].' ('.$user['username'].')'.'\')">'.$user['firstname'].' '.$user['lastname'].' ('.$user['username'].')</a><br />';
  100.         }
  101.     }
  102.     $xajax_response -> addAssign('ajax_list_users','innerHTML',utf8_encode($return));
  103.     return $xajax_response;
  104. }
  105. $xajax -> processRequests();
  106.  
  107. $htmlHeadXtra[$xajax->getJavascript('../inc/lib/xajax/');
  108. $htmlHeadXtra['
  109. <script type="text/javascript">
  110. function add_user_to_session (code, content) {
  111.  
  112.     document.getElementById("user_to_add").value = "";
  113.     document.getElementById("ajax_list_users").innerHTML = "";
  114.     
  115.     destination = document.getElementById("destination_users");
  116.     destination.options[destination.length] = new Option(content,code);
  117.     
  118.     destination.selectedIndex = -1;
  119.     sortOptions(destination.options);
  120.     
  121. }
  122. function remove_item(origin)
  123. {
  124.     for(var i = 0 ; i<origin.options.length ; i++) {
  125.         if(origin.options[i].selected) {
  126.             origin.options[i]=null;
  127.             i = i-1;
  128.         }
  129.     }
  130. }
  131. </script>';
  132.  
  133.  
  134. $formSent=0;
  135. $errorMsg=$firstLetterUser=$firstLetterSession='';
  136. $UserList=$SessionList=array();
  137. $users=$sessions=array();
  138. $noPHP_SELF=true;
  139.  
  140.  
  141.  
  142.  
  143. if($_POST['formSent'])
  144. {
  145.     $formSent=$_POST['formSent'];
  146.     $firstLetterUser=$_POST['firstLetterUser'];
  147.     $firstLetterSession=$_POST['firstLetterSession'];
  148.     $UserList=$_POST['sessionUsersList'];
  149.     $ClassList=$_POST['sessionClassesList'];
  150.     if(!is_array($UserList))
  151.     {
  152.         $UserList=array();
  153.     }
  154.  
  155.     if($formSent == 1)
  156.     {
  157.         $result api_sql_query("SELECT id_user FROM $tbl_session_rel_user WHERE id_session='$id_session'");
  158.         $existingUsers array();
  159.         while($row mysql_fetch_array($result)){
  160.             $existingUsers[$row['id_user'];
  161.         }
  162.  
  163.         $result=api_sql_query("SELECT course_code FROM $tbl_session_rel_course WHERE id_session='$id_session'",__FILE__,__LINE__);
  164.  
  165.         $CourseList=array();
  166.  
  167.         while($row=mysql_fetch_array($result))
  168.         {
  169.             $CourseList[]=$row['course_code'];
  170.         }
  171.  
  172.         foreach($CourseList as $enreg_course)
  173.         {
  174.             $nbr_users=0;
  175.             foreach($UserList as $enreg_user)
  176.             {
  177.                 if(!in_array($enreg_user$existingUsers)){
  178.                     api_sql_query("INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')",__FILE__,__LINE__);
  179.  
  180.                     if(mysql_affected_rows())
  181.                     {
  182.                         $nbr_users++;
  183.                     }
  184.                 }
  185.             }
  186.             foreach($existingUsers as $existing_user){
  187.                 if(!in_array($existing_user$UserList)){
  188.                     $sql "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user'";
  189.                     api_sql_query($sql);
  190.  
  191.                     if(mysql_affected_rows())
  192.                     {
  193.                         $nbr_users--;
  194.                     }
  195.                 }
  196.             }
  197.             $sql "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course'";
  198.             $rs api_sql_query($sql__FILE____LINE__);
  199.             list($nbr_usersmysql_fetch_array($rs);
  200.             api_sql_query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'",__FILE__,__LINE__);
  201.  
  202.         }
  203.  
  204.         api_sql_query("DELETE FROM $tbl_session_rel_user WHERE id_session = $id_session");
  205.         $nbr_users 0;
  206.         foreach($UserList as $enreg_user){
  207.             $nbr_users++;
  208.             api_sql_query("INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) VALUES('$id_session','$enreg_user')",__FILE__,__LINE__);
  209.  
  210.         }
  211.         $nbr_users count($UserList);
  212.         api_sql_query("UPDATE $tbl_session SET nbr_users= $nbr_users WHERE id='$id_session",__FILE__,__LINE__);
  213.  
  214.         //if(empty($_GET['add']))
  215.             //header('Location: '.$_GET['page'].'?id_session='.$id_session);
  216.         //else
  217.         header('Location: resume_session.php?id_session='.$id_session);
  218.  
  219.     }
  220. }
  221.  
  222. Display::display_header($tool_name);
  223.  
  224.  
  225. $nosessionUsersList $sessionUsersList array();
  226. $sql 'SELECT COUNT(1) FROM '.$tbl_user;
  227. $rs api_sql_query($sql__FILE____LINE__);
  228. $count_courses mysql_result($rs00);
  229. $ajax_search $count_courses 100 true false;
  230.  
  231. if($ajax_search)
  232. {
  233.     $sql="SELECT user_id, lastname, firstname, username, id_session
  234.             FROM $tbl_user
  235.             INNER JOIN $tbl_session_rel_user
  236.                 ON $tbl_session_rel_user.id_user = $tbl_user.user_id
  237.                 AND $tbl_session_rel_user.id_session = ".intval($id_session)."
  238.             ORDER BY lastname,firstname,username";
  239.     
  240.     $result=api_sql_query($sql,__FILE__,__LINE__);    
  241.     $Users=api_store_result($result);
  242.     
  243.     foreach($Users as $user)
  244.     {
  245.         $sessionUsersList[$user['user_id']] $user ;
  246.     }
  247. }
  248. else
  249. {
  250.     $sql="SELECT user_id, lastname, firstname, username, id_session
  251.             FROM $tbl_user
  252.             LEFT JOIN $tbl_session_rel_user
  253.                 ON $tbl_session_rel_user.id_user = $tbl_user.user_id
  254.             ORDER BY lastname,firstname,username";
  255.     
  256.     $result=api_sql_query($sql,__FILE__,__LINE__);    
  257.     $Users=api_store_result($result);
  258.     
  259.     foreach($Users as $user)
  260.     {
  261.         if($user['id_session'== $id_session)
  262.             $sessionUsersList[$user['user_id']] $user ;
  263.         else
  264.             $nosessionUsersList[$user['user_id']] $user ;
  265.     }
  266. }
  267.  
  268.  
  269.  
  270.  
  271.  
  272. ?>
  273.  
  274. <form name="formulaire" method="post" action="<?php echo api_get_self()?>?page=<?php echo $_GET['page'?>&id_session=<?php echo $id_session?><?php if(!empty($_GET['add'])) echo '&add=true' ?>" style="margin:0px;">
  275. <input type="hidden" name="formSent" value="1" />
  276.  
  277. <?php
  278. if(!empty($errorMsg))
  279. {
  280.     Display::display_normal_message($errorMsg)//main API
  281. }
  282. ?>
  283.  
  284. <table border="0" cellpadding="5" cellspacing="0" width="100%">
  285.  
  286.  
  287. <!-- Users -->
  288. <tr>
  289.   <td align="center"><b><?php echo get_lang('UserListInPlatform'?> :</b>
  290.   </td>
  291.   <td></td>
  292.   <td align="center"><b><?php echo get_lang('UserListInSession'?> :</b></td>
  293. </tr>
  294.  
  295. <tr>
  296.   <td align="center">
  297.   <div id="content_source">
  298.         <?php
  299.         if($ajax_search)
  300.         {
  301.             ?>
  302.         <input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value)" />
  303.         <div id="ajax_list_users"></div>
  304.         <?php
  305.         }
  306.         else
  307.         {
  308.         ?>
  309.         
  310.       <select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:300px;">
  311.  
  312.         <?php
  313.         foreach($nosessionUsersList as $enreg)
  314.         {
  315.         ?>
  316.  
  317.             <option value="<?php echo $enreg['user_id']?>"><?php echo $enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username'].')'?></option>
  318.  
  319.         <?php
  320.         }
  321.  
  322.         unset($nosessionUsersList);
  323.         ?>
  324.  
  325.       </select>
  326.     <?php
  327.         }
  328.        ?>
  329.   </div>
  330.   </td>
  331.   <td width="10%" valign="middle" align="center">
  332.   <?php
  333.   if($ajax_search)
  334.   {
  335.   ?>
  336.       <input type="button" onclick="remove_item(document.getElementById('destination_users'))" value="<<" />
  337.   <?php
  338.   }
  339.   else
  340.   {
  341.   ?>
  342.     <input type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))" value=">>" />
  343.     <br /><br />
  344.     <input type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))" value="<<" />
  345.     <?php 
  346.   
  347.   ?>
  348.     <br /><br /><br /><br /><br /><br />
  349.   </td>
  350.   <td align="center">
  351.   <select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:300px;">
  352.  
  353. <?php
  354. foreach($sessionUsersList as $enreg)
  355. {
  356. ?>
  357.  
  358.     <option value="<?php echo $enreg['user_id']?>"><?php echo $enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username'].')'?></option>
  359.  
  360. <?php
  361. }
  362.  
  363. unset($sessionUsersList);
  364. ?>
  365.  
  366.   </select></td>
  367. </tr>
  368.  
  369. <tr>
  370.     <td colspan="3" align="center">
  371.         <br />
  372.         <?php
  373.         if(isset($_GET['add']))
  374.             echo '<input type="button" value="'.get_lang("FinishSessionCreation").'" onclick="valide()" />';
  375.         else
  376.             echo '<input type="button" value="'.get_lang('Ok').'" onclick="valide()" />';
  377.         ?>
  378.     </td>
  379. </tr>
  380.  
  381.  
  382.  
  383.  
  384. </table>
  385.  
  386. </form>
  387. <script type="text/javascript">
  388. <!--
  389. function moveItem(origin , destination){
  390.  
  391.     for(var i = 0 ; i<origin.options.length ; i++) {
  392.         if(origin.options[i].selected) {
  393.             destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
  394.             origin.options[i]=null;
  395.             i = i-1;
  396.         }
  397.     }
  398.     destination.selectedIndex = -1;
  399.     sortOptions(destination.options);
  400.  
  401. }
  402.  
  403. function sortOptions(options) {
  404.  
  405.     newOptions = new Array();
  406.     for (i = 0 ; i<options.length ; i++)
  407.         newOptions[i] = options[i];
  408.  
  409.     newOptions = newOptions.sort(mysort);
  410.     options.length = 0;
  411.     for(i = 0 ; i < newOptions.length ; i++)
  412.         options[i] = newOptions[i];
  413.  
  414. }
  415.  
  416. function mysort(a, b){
  417.     if(a.text.toLowerCase() > b.text.toLowerCase()){
  418.         return 1;
  419.     }
  420.     if(a.text.toLowerCase() < b.text.toLowerCase()){
  421.         return -1;
  422.     }
  423.     return 0;
  424. }
  425.  
  426. function valide(){
  427.     var options = document.getElementById('destination_users').options;
  428.     for (i = 0 ; i<options.length ; i++)
  429.         options[i].selected = true;
  430.     /*
  431.     var options = document.getElementById('destination_classes').options;
  432.     for (i = 0 ; i<options.length ; i++)
  433.         options[i].selected = true;
  434.         */
  435.     document.forms.formulaire.submit();
  436. }
  437.  
  438.  
  439. function loadUsersInSelect(select){
  440.  
  441.     var xhr_object = null;
  442.  
  443.     if(window.XMLHttpRequest) // Firefox
  444.         xhr_object = new XMLHttpRequest();
  445.     else if(window.ActiveXObject) // Internet Explorer
  446.         xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  447.     else  // XMLHttpRequest non supporté par le navigateur
  448.     alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  449.  
  450.     //xhr_object.open("GET", "loadUsersInSelect.ajax.php?id_session=<?php echo $id_session ?>&letter="+select.options[select.selectedIndex].text, false);
  451.     xhr_object.open("POST", "loadUsersInSelect.ajax.php");
  452.  
  453.     xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  454.  
  455.  
  456.     nosessionUsers = makepost(document.getElementById('origin_users'));
  457.     sessionUsers = makepost(document.getElementById('destination_users'));
  458.     nosessionClasses = makepost(document.getElementById('origin_classes'));
  459.     sessionClasses = makepost(document.getElementById('destination_classes'));
  460.     xhr_object.send("nosessionusers="+nosessionUsers+"&sessionusers="+sessionUsers+"&nosessionclasses="+nosessionClasses+"&sessionclasses="+sessionClasses);
  461.  
  462.     xhr_object.onreadystatechange = function() {
  463.         if(xhr_object.readyState == 4) {
  464.             document.getElementById('content_source').innerHTML = result = xhr_object.responseText;
  465.             //alert(xhr_object.responseText);
  466.         }
  467.     }
  468. }
  469.  
  470. function makepost(select){
  471.  
  472.     var options = select.options;
  473.     var ret = "";
  474.     for (i = 0 ; i<options.length ; i++)
  475.         ret = ret + options[i].value +'::'+options[i].text+";;";
  476.  
  477.     return ret;
  478.  
  479. }
  480. -->
  481.  
  482. </script>
  483. <?php
  484. /*
  485. ==============================================================================
  486.         FOOTER
  487. ==============================================================================
  488. */
  489. ?>

Documentation generated on Thu, 12 Jun 2008 12:54:30 -0500 by phpDocumentor 1.4.1