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

Source for file add_courses_to_session.php

Documentation is available at add_courses_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_courses');
  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' => get_lang('SessionList'));
  52.  
  53. // Database Table Definitions
  54. $tbl_session_rel_course_rel_user    Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  55. $tbl_session                        Database::get_main_table(TABLE_MAIN_SESSION);
  56. $tbl_session_rel_user                Database::get_main_table(TABLE_MAIN_SESSION_USER);
  57. $tbl_session_rel_course                Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
  58. $tbl_course                            Database::get_main_table(TABLE_MAIN_COURSE);
  59.  
  60. // setting the name of the tool
  61. $tool_nameget_lang('SubscribeCoursesToSession');
  62.  
  63. $id_session=intval($_GET['id_session']);
  64.  
  65. {
  66.     $sql 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_session;
  67.     $rs api_sql_query($sql,__FILE__,__LINE__);
  68.     if(mysql_result($rs,0,0)!=$_user['user_id'])
  69.     {
  70.         api_not_allowed(true);
  71.     }
  72. }
  73.  
  74.  
  75.  
  76. function search_courses($needle)
  77. {
  78.     global $tbl_course$tbl_session_rel_course$id_session;
  79.     
  80.     $xajax_response new XajaxResponse();
  81.     $return '';
  82.     if(!empty($needle))
  83.     {
  84.         // search users where username or firstname or lastname begins likes $needle
  85.         $sql 'SELECT course.code, course.visual_code, course.title, session_rel_course.id_session
  86.                 FROM '.$tbl_course.' course
  87.                 LEFT JOIN '.$tbl_session_rel_course.' session_rel_course
  88.                     ON course.code = session_rel_course.course_code
  89.                     AND session_rel_course.id_session = '.intval($id_session).'
  90.                 WHERE course.visual_code LIKE "'.$needle.'%"
  91.                 OR course.title LIKE "'.$needle.'%"';
  92.                 
  93.         $rs api_sql_query($sql__FILE____LINE__);
  94.         
  95.         while($course Database :: fetch_array($rs))
  96.         {
  97.             $return .= '<a href="#" onclick="add_course_to_session(\''.$course['code'].'\',\''.$course['title'].' ('.$course['visual_code'].')'.'\')">'.$course['title'].' ('.$course['visual_code'].')</a><br />';
  98.         }
  99.     }
  100.     $xajax_response -> addAssign('ajax_list_courses','innerHTML',utf8_encode($return));
  101.     return $xajax_response;
  102. }
  103. $xajax -> processRequests();
  104.  
  105. $htmlHeadXtra[$xajax->getJavascript('../inc/lib/xajax/');
  106. $htmlHeadXtra['
  107. <script type="text/javascript">
  108. function add_course_to_session (code, content) {
  109.  
  110.     document.getElementById("course_to_add").value = "";
  111.     document.getElementById("ajax_list_courses").innerHTML = "";
  112.     
  113.     destination = document.getElementById("destination");
  114.     destination.options[destination.length] = new Option(content,code);
  115.     
  116.     destination.selectedIndex = -1;
  117.     sortOptions(destination.options);
  118.     
  119. }
  120. function remove_item(origin)
  121. {
  122.     for(var i = 0 ; i<origin.options.length ; i++) {
  123.         if(origin.options[i].selected) {
  124.             origin.options[i]=null;
  125.             i = i-1;
  126.         }
  127.     }
  128. }
  129. </script>';
  130.  
  131.  
  132. $formSent=0;
  133. $errorMsg=$firstLetterCourse=$firstLetterSession='';
  134. $CourseList=$SessionList=array();
  135. $courses=$sessions=array();
  136. $noPHP_SELF=true;
  137.  
  138.  
  139.  
  140.  
  141.  
  142. if($_POST['formSent'])
  143. {
  144.     $formSent=$_POST['formSent'];
  145.     $firstLetterCourse=$_POST['firstLetterCourse'];
  146.     $firstLetterSession=$_POST['firstLetterSession'];
  147.     $CourseList=$_POST['SessionCoursesList'];
  148.     if(!is_array($CourseList))
  149.     {
  150.         $CourseList=array();
  151.     }
  152.     $nbr_courses=0;
  153.  
  154.     $id_coach api_sql_query("SELECT id_coach FROM $tbl_session WHERE id=$id_session");
  155.     $id_coach mysql_fetch_array($id_coach);
  156.     $id_coach $id_coach[0];
  157.  
  158.     $rs api_sql_query("SELECT course_code FROM $tbl_session_rel_course WHERE id_session=$id_session");
  159.     $existingCourses api_store_result($rs);
  160.  
  161.     $sql="SELECT id_user
  162.         FROM $tbl_session_rel_user
  163.         WHERE id_session = $id_session";
  164.     $result=api_sql_query($sql,__FILE__,__LINE__);
  165.  
  166.     $UserList=api_store_result($result);
  167.  
  168.  
  169.     foreach($CourseList as $enreg_course)
  170.     {
  171.         $exists false;
  172.         foreach($existingCourses as $existingCourse)
  173.         {
  174.             if($enreg_course == $existingCourse['course_code'])
  175.             {
  176.                 $exists=true;
  177.             }
  178.         }
  179.         if(!$exists)
  180.         {
  181.             api_sql_query("INSERT INTO $tbl_session_rel_course(id_session,course_code, id_coach) VALUES('$id_session','$enreg_course','$id_coach')",__FILE__,__LINE__);
  182.  
  183.  
  184.             $nbr_users=0;
  185.             foreach($UserList as $enreg_user)
  186.             {
  187.                 $enreg_user $enreg_user['id_user'];
  188.                 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__);
  189.  
  190.                 if(mysql_affected_rows())
  191.                 {
  192.                     $nbr_users++;
  193.                 }
  194.             }
  195.             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__);
  196.         }
  197.  
  198.     }
  199.  
  200.     foreach($existingCourses as $existingCourse{
  201.         if(!in_array($existingCourse['course_code']$CourseList)){
  202.             api_sql_query("DELETE FROM $tbl_session_rel_course WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
  203.             api_sql_query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
  204.  
  205.         }
  206.     }
  207.     $nbr_courses=count($CourseList);
  208.     api_sql_query("UPDATE $tbl_session SET nbr_courses=$nbr_courses WHERE id='$id_session'",__FILE__,__LINE__);
  209.  
  210.     if(isset($_GET['add']))
  211.         header('Location: add_users_to_session.php?id_session='.$id_session.'&add=true');
  212.     else
  213.         header('Location: resume_session.php?id_session='.$id_session);
  214.         //header('Location: '.$_GET['page'].'?id_session='.$id_session);
  215.  
  216.  
  217.  
  218.  
  219. }
  220.  
  221. Display::display_header($tool_name);
  222.  
  223.  
  224. $sql 'SELECT COUNT(1) FROM '.$tbl_course;
  225. $rs api_sql_query($sql__FILE____LINE__);
  226. $count_courses mysql_result($rs00);
  227. $ajax_search $count_courses 50 true false;
  228.  
  229. $nosessionCourses $sessionCourses array();
  230.  
  231. if($ajax_search)
  232. {
  233.  
  234.     $sql="SELECT code, title, visual_code, id_session
  235.             FROM $tbl_course course
  236.             INNER JOIN $tbl_session_rel_course session_rel_course
  237.                 ON course.code = session_rel_course.course_code
  238.                 AND session_rel_course.id_session = ".intval($id_session)."
  239.             ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";            
  240.  
  241.     $result=api_sql_query($sql,__FILE__,__LINE__);    
  242.     $Courses=api_store_result($result);
  243.     
  244.     
  245.     foreach($Courses as $course)
  246.     {
  247.         $sessionCourses[$course['code']] $course ;
  248.     }
  249. }
  250. else
  251. {
  252.     $sql="SELECT code, title, visual_code, id_session
  253.             FROM $tbl_course course
  254.             LEFT JOIN $tbl_session_rel_course session_rel_course
  255.                 ON course.code = session_rel_course.course_code
  256.                 AND session_rel_course.id_session = ".intval($id_session)."
  257.             ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";            
  258.  
  259.     $result=api_sql_query($sql,__FILE__,__LINE__);    
  260.     $Courses=api_store_result($result);
  261.     
  262.     foreach($Courses as $course)
  263.     {
  264.         if($course['id_session'== $id_session)
  265.         {
  266.             $sessionCourses[$course['code']] $course ;
  267.         }
  268.         else
  269.         {
  270.             $nosessionCourses[$course['code']] $course ;
  271.         }
  272.     }    
  273. }            
  274. unset($Courses);
  275. ?>
  276.  
  277. <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;">
  278. <input type="hidden" name="formSent" value="1" />
  279.  
  280. <?php
  281. if(!empty($errorMsg))
  282. {
  283.     Display::display_normal_message($errorMsg)//main API
  284. }
  285. ?>
  286.  
  287. <table border="0" cellpadding="5" cellspacing="0" width="100%" align="center">
  288. <tr>
  289.   <td width="45%" align="center"><b><?php echo get_lang('CourseListInPlatform'?> :</b></td>
  290.  
  291.   <td width="10%">&nbsp;</td>
  292.   <td align="center" width="45%"><b><?php echo get_lang('CourseListInSession'?> :</b></td>
  293. </tr>
  294. <tr>
  295.   <td width="45%" align="center">
  296.  
  297. <?php
  298. if($ajax_search){
  299.     ?>
  300.     <input type="text" id="course_to_add" onkeyup="xajax_search_courses(this.value)" />
  301.     <div id="ajax_list_courses"></div>
  302.     <?php
  303. }
  304. else
  305. {
  306.     ?> <select id="origin" name="NoSessionCoursesList[]" multiple="multiple" size="20" style="width:300px;"> <?php
  307.     foreach($nosessionCourses as $enreg)
  308.     {
  309.         ?>
  310.         <option value="<?php echo $enreg['code']?><?php if(in_array($enreg['code'],$CourseList)) echo 'selected="selected"'?>><?php echo $enreg['title'].' ('.$enreg['visual_code'].')'?></option>
  311.         <?php
  312.     }
  313.     ?>  </select> <?php
  314. }    
  315. unset($nosessionCourses);
  316. ?>
  317.  
  318.   </select></td>
  319.   <td width="10%" valign="middle" align="center">
  320.   <?php
  321.   if($ajax_search)
  322.   {
  323.   ?>
  324.       <input type="button" onclick="remove_item(document.getElementById('destination'))" value="<<" />
  325.   <?php
  326.   }
  327.   else
  328.   {
  329.   ?>
  330.     <input type="button" onclick="moveItem(document.getElementById('origin'), document.getElementById('destination'))" value=">>" />
  331.     <br /><br />
  332.     <input type="button" onclick="moveItem(document.getElementById('destination'), document.getElementById('origin'))" value="<<" />
  333.   <?php 
  334.   
  335.   ?>
  336.     <br /><br /><br /><br /><br /><br />
  337.     <?php
  338.     if(isset($_GET['add']))
  339.     {
  340.         echo '<input type="button" value="'.get_lang('NextStep').'" onclick="valide()" />';
  341.     }
  342.     else
  343.     {
  344.         echo '<input type="button" value="'.get_lang('Ok').'" onclick="valide()" />';
  345.     }
  346.     ?>
  347.   </td>
  348.   <td width="45%" align="center"><select id='destination' name="SessionCoursesList[]" multiple="multiple" size="20" style="width:300px;">
  349.  
  350. <?php
  351. foreach($sessionCourses as $enreg)
  352. {
  353. ?>
  354.  
  355.     <option value="<?php echo $enreg['code']?>"><?php echo $enreg['title'].' ('.$enreg['visual_code'].')'?></option>
  356.  
  357. <?php
  358. }
  359.  
  360. unset($sessionCourses);
  361. ?>
  362.  
  363.   </select></td>
  364. </tr>
  365. </table>
  366.  
  367. </form>
  368. <script type="text/javascript">
  369. <!--
  370. function moveItem(origin , destination){
  371.  
  372.     for(var i = 0 ; i<origin.options.length ; i++) {
  373.         if(origin.options[i].selected) {
  374.             destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
  375.             origin.options[i]=null;
  376.             i = i-1;
  377.         }
  378.     }
  379.     destination.selectedIndex = -1;
  380.     sortOptions(destination.options);
  381.  
  382. }
  383.  
  384. function sortOptions(options) {
  385.  
  386.     newOptions = new Array();
  387.     for (i = 0 ; i<options.length ; i++)
  388.         newOptions[i] = options[i];
  389.  
  390.     newOptions = newOptions.sort(mysort);
  391.     options.length = 0;
  392.     for(i = 0 ; i < newOptions.length ; i++)
  393.         options[i] = newOptions[i];
  394.  
  395. }
  396.  
  397. function mysort(a, b){
  398.     if(a.text.toLowerCase() > b.text.toLowerCase()){
  399.         return 1;
  400.     }
  401.     if(a.text.toLowerCase() < b.text.toLowerCase()){
  402.         return -1;
  403.     }
  404.     return 0;
  405. }
  406.  
  407. function valide(){
  408.     var options = document.getElementById('destination').options;
  409.     for (i = 0 ; i<options.length ; i++)
  410.         options[i].selected = true;
  411.  
  412.     document.forms.formulaire.submit();
  413. }
  414. -->
  415.  
  416. </script>
  417. <?php
  418. /*
  419. ==============================================================================
  420.         FOOTER
  421. ==============================================================================
  422. */
  423. ?>

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