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

Source for file course_edit.php

Documentation is available at course_edit.php

  1. <?php
  2.  
  3. // $Id: course_edit.php 15245 2008-05-08 16:53:52Z juliomontoya $
  4. /*
  5. ==============================================================================
  6.     Dokeos - elearning and course management software
  7.  
  8.     Copyright (c) 2004 Dokeos SPRL
  9.     Copyright (c) 2003 Ghent University (UGent)
  10.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  11.     Copyright (c) Olivier Brouckaert
  12.     Copyright (c) Bart Mollet, Hogeschool Gent
  13.  
  14.     For a full list of contributors, see "credits.txt".
  15.     The full license can be read in "license.txt".
  16.  
  17.     This program is free software; you can redistribute it and/or
  18.     modify it under the terms of the GNU General Public License
  19.     as published by the Free Software Foundation; either version 2
  20.     of the License, or (at your option) any later version.
  21.  
  22.     See the GNU General Public License for more details.
  23.  
  24.     Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  25.     Mail: info@dokeos.com
  26. ==============================================================================
  27. */
  28. /**
  29. ==============================================================================
  30. *    @package dokeos.admin
  31. ==============================================================================
  32. */
  33. /*
  34. ==============================================================================
  35.         INIT SECTION
  36. ==============================================================================
  37. */
  38.  
  39. // name of the language file that needs to be included 
  40. $language_file 'admin';
  41. $cidReset true;
  42. include ('../inc/global.inc.php');
  43. $this_section=SECTION_PLATFORM_ADMIN;
  44.  
  45. include (api_get_path(LIBRARY_PATH).'fileManage.lib.php');
  46. require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
  47. require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
  48. $course_code = isset($_GET['course_code']$_GET['course_code'$_POST['code'];
  49. $noPHP_SELF true;
  50. $tool_name get_lang('ModifyCourseInfo');
  51. $interbreadcrumb[array ("url" => 'index.php'"name" => get_lang('PlatformAdmin'));
  52. $interbreadcrumb[array ("url" => "course_list.php""name" => get_lang('AdminCourses'));
  53.  
  54. /*
  55. -----------------------------------------------------------
  56.     Libraries
  57. -----------------------------------------------------------
  58. */
  59. /*
  60. ==============================================================================
  61.         FUNCTIONS
  62. ==============================================================================
  63. */
  64.  
  65. /*
  66. ==============================================================================
  67.         MAIN CODE
  68. ==============================================================================
  69. */
  70. // Get all course categories
  71. $table_user Database :: get_main_table(TABLE_MAIN_USER);
  72.  
  73.  
  74. //Get the course infos
  75. $sql "SELECT * FROM $course_table WHERE code='".Database::escape_string($course_code)."'";
  76. $result api_sql_query($sql__FILE____LINE__);
  77. if (Database::num_rows($result!= 1)
  78. {
  79.     header('Location: course_list.php');
  80.     exit ();
  81. }
  82. $course Database::fetch_array($result,'ASSOC');
  83.  
  84. // Get course teachers
  85. $table_course_user Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  86. $sql "SELECT user.user_id,lastname,firstname FROM $table_user as user,$table_course_user as course_user WHERE course_user.status='1' AND course_user.user_id=user.user_id AND course_user.course_code='".$course_code."' ORDER BY lastname,firstname";
  87. $res api_sql_query($sql,__FILE__,__LINE__);
  88. $course_teachers array();
  89. while($obj Database::fetch_object($res))
  90. {
  91.         $course_teachers[$obj->user_id$obj->lastname.' '.$obj->firstname;
  92. }
  93.  
  94. // Get all possible teachers without the course teachers
  95. $sql "SELECT user_id,lastname,firstname FROM $table_user WHERE status='1' ORDER BY lastname,firstname";
  96. $res api_sql_query($sql,__FILE__,__LINE__);
  97. $teachers array();
  98.  
  99. $platform_teachers[0'-- '.get_lang('NoManager').' --';
  100. while($obj Database::fetch_object($res))
  101. {        
  102.     if(!array_key_exists($obj->user_id,$course_teachers)){
  103.         $teachers[$obj->user_id$obj->lastname.' '.$obj->firstname;
  104.     }
  105.     
  106.  
  107.     if($course['tutor_name']==$course_teachers[$obj->user_id]){
  108.         $course['tutor_name']=$obj->user_id;
  109.     }
  110.     //We add in the array platform teachers 
  111.     $platform_teachers[$obj->user_id$obj->lastname.' '.$obj->firstname;
  112. }
  113.  
  114. //Case where there is no teacher in the course
  115. if(count($course_teachers)==0){
  116.     $sql='SELECT tutor_name FROM '.$course_table.' WHERE code="'.$course_code.'"';
  117.     $res api_sql_query($sql,__FILE__,__LINE__);
  118.     $tutor_name=Database::result($res,0,0);
  119.     $course['tutor_name']=array_search($tutor_name,$platform_teachers);
  120. }
  121.  
  122. // Build the form
  123. $form new FormValidator('update_course');
  124. $form->addElement('hidden','code',$course_code);
  125. $form->add_textfield('visual_code'get_lang('CourseCode'));
  126. $form->applyFilter('visual_code','strtoupper');
  127. //$form->add_textfield('tutor_name', get_lang('CourseTitular'));
  128. $form->addElement('select''tutor_name'get_lang('CourseTitular')$platform_teachers);
  129. //$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size="4" style="width: 150px;"');
  130.  
  131. $group=array();
  132. $group[FormValidator::createElement('select''platform_teachers'''$teachers'id="platform_teachers" multiple=multiple size="4" style="width: 150px;"');
  133. $group[FormValidator::createElement('select''course_teachers'''$course_teachers'id="course_teachers" multiple=multiple size="4" style="width: 150px;"');
  134.  
  135. $element_template = <<<EOT
  136.     <div class="row">
  137.         <div class="label">
  138.             <!-- BEGIN required --><span class="form_required">*</span> <!-- END required -->{label}
  139.         </div>
  140.         <div class="formw" style="display:inline">
  141.             <table cellpadding="0" cellspacing="0">
  142.                 <tr>
  143.                     <!-- BEGIN error --><span class="form_error">{error}</span><br /><!-- END error -->    <td>{element}</td>
  144.                 </tr>
  145.             </table>
  146.         </div>
  147.     </div>
  148. EOT;
  149.     
  150. $renderer $form->defaultRenderer();
  151. $renderer -> setElementTemplate($element_template'group');
  152. $form -> addGroup($group,'group',get_lang('CourseTeachers'),'</td><td width="50" align="center"><input type="button" onclick="moveItem(document.getElementById(\'platform_teachers\'), document.getElementById(\'course_teachers\'))" value=">>"><br><br><input type="button" onclick="moveItem(document.getElementById(\'course_teachers\'), document.getElementById(\'platform_teachers\'))" value="<<"></td><td>');
  153.  
  154. $form->add_textfield'title'get_lang('Title'),truearray ('size' => '60'));
  155. $categories_select $form->addElement('select''category_code'get_lang('CourseFaculty')$categories);
  156. $form->add_textfield'department_name'get_lang('CourseDepartment')false,array ('size' => '60'));
  157. $form->add_textfield'department_url'get_lang('CourseDepartmentURL'),falsearray ('size' => '60'));
  158. $form->addElement('select_language''course_language'get_lang('CourseLanguage'));
  159. $form->addElement('radio''visibility'get_lang("CourseAccess")get_lang('OpenToTheWorld')COURSE_VISIBILITY_OPEN_WORLD);
  160. $form->addElement('radio''visibility'nullget_lang('OpenToThePlatform')COURSE_VISIBILITY_OPEN_PLATFORM);
  161. $form->addElement('radio''visibility'nullget_lang('Private')COURSE_VISIBILITY_REGISTERED);
  162. $form->addElement('radio''visibility'nullget_lang('CourseVisibilityClosed')COURSE_VISIBILITY_CLOSED);
  163. $form->addElement('radio''subscribe'get_lang('Subscription')get_lang('Allowed')1);
  164. $form->addElement('radio''subscribe'nullget_lang('Denied')0);
  165. $form->addElement('radio''unsubscribe'get_lang('Unsubscription')get_lang('AllowedToUnsubscribe')1);
  166. $form->addElement('radio''unsubscribe'nullget_lang('NotAllowedToUnsubscribe')0);
  167. $form->addElement('text','disk_quota',get_lang('CourseQuota'));
  168. $form->addRule('disk_quota'get_lang('ThisFieldIsRequired'),'required');
  169. $form->addRule('disk_quota',get_lang('ThisFieldShouldBeNumeric'),'numeric');
  170. $form->addElement('button'nullget_lang('Ok')'onclick="valide()"');
  171. // Set some default values
  172.  
  173. $course_db_name $course['db_name'];
  174. $course['title']=html_entity_decode($course['title'],ENT_QUOTES,$charset);
  175. $form->setDefaults($course);
  176. // Validate form
  177. if$form->validate())
  178. {
  179.     $course $form->getSubmitValues();
  180.     $dbName $_POST['dbName'];
  181.     $course_code $course['code'];
  182.     $visual_code $course['visual_code'];
  183.     
  184.     $tutor_id $course['tutor_name'];
  185.     $tutor_name=$platform_teachers[$tutor_id];
  186.     
  187.     $teachers $course['group']['course_teachers'];
  188.     
  189.     $title $course['title'];
  190.     $category_code $course['category_code'];
  191.     $department_name $course['department_name'];
  192.     $department_url $course['department_url'];
  193.     $course_language $course['course_language'];
  194.     $disk_quota $course['disk_quota'];
  195.     $visibility $course['visibility'];
  196.     $subscribe $course['subscribe'];
  197.     $unsubscribe $course['unsubscribe'];
  198.     if (!stristr($department_url'http://'))
  199.     {
  200.         $department_url 'http://'.$department_url;
  201.     }
  202.     $sql "UPDATE $course_table SET course_language='".Database::escape_string($course_language)."',
  203.                                 title='".Database::escape_string($title)."',
  204.                                 category_code='".Database::escape_string($category_code)."',
  205.                                 tutor_name='".Database::escape_string($tutor_name)."',
  206.                                 visual_code='".Database::escape_string($visual_code)."',
  207.                                 department_name='".Database::escape_string($department_name)."',
  208.                                 department_url='".Database::escape_string($department_url)."',
  209.                                 disk_quota='".Database::escape_string($disk_quota)."',
  210.                                 visibility = '".Database::escape_string($visibility)."', 
  211.                                 subscribe = '".Database::escape_string($subscribe)."',
  212.                                 unsubscribe='".Database::escape_string($unsubscribe)."'
  213.                             WHERE code='".Database::escape_string($course_code)."'";
  214.     api_sql_query($sql__FILE____LINE__);
  215.     
  216.     $sql='DELETE FROM '.$course_user_table.' WHERE course_code="'.Database::escape_string($course_code).'" AND status="1"';
  217.     api_sql_query($sql__FILE____LINE__);
  218.     
  219.     if(count($teachers)>0){
  220.         
  221.         foreach($teachers as $key){
  222.             
  223.             //We check if the teacher is already subscribed as student in this course 
  224.             $sql_select_teacher 'SELECT 1 FROM '.$course_user_table.' WHERE user_id = "'.$key.'" AND course_code = "'.$course_code.'" AND status<>"1"';
  225.             $result api_sql_query($sql_select_teacher__FILE____LINE__);
  226.             
  227.             if(Database::num_rows($result== 1){
  228.                 $sql 'UPDATE '.$course_user_table.' SET status = "1" WHERE course_code = "'.$course_code.'" AND user_id = "'.$key.'"';
  229.             }
  230.             else{
  231.                 $sql "INSERT INTO ".$course_user_table " SET
  232.                     course_code = '".Database::escape_string($course_code)"',
  233.                     user_id = '".$key "',
  234.                     status = '1',
  235.                     role = '',
  236.                     tutor_id='0',
  237.                     sort='0',
  238.                     user_course_cat='0'";
  239.             }
  240.             api_sql_query($sql__FILE____LINE__);
  241.         }
  242.         
  243.     }
  244.     
  245.     $sql "INSERT IGNORE INTO ".$course_user_table " SET
  246.                 course_code = '".Database::escape_string($course_code)"',
  247.                 user_id = '".$tutor_id "',
  248.                 status = '1',
  249.                 role = '',
  250.                 tutor_id='0',
  251.                 sort='0',
  252.                 user_course_cat='0'";
  253.     api_sql_query($sql__FILE____LINE__);
  254.     
  255.     $forum_config_table Database::get_course_table(TOOL_FORUM_CONFIG_TABLE,$course_db_name);
  256.     $sql "UPDATE ".$forum_config_table." SET default_lang='".Database::escape_string($course_language)."'";
  257.     header('Location: course_list.php');
  258.     exit ();
  259. }
  260. Display::display_header($tool_name);
  261.  
  262. echo "<script>
  263. function moveItem(origin , destination){
  264.     
  265.     for(var i = 0 ; i<origin.options.length ; i++) {
  266.         if(origin.options[i].selected) {    
  267.             destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
  268.             origin.options[i]=null;    
  269.             i = i-1;
  270.         }
  271.     }
  272.     destination.selectedIndex = -1;
  273.     sortOptions(destination.options);
  274.     
  275. }
  276.  
  277. function sortOptions(options) { 
  278.  
  279.     newOptions = new Array();
  280.     for (i = 0 ; i<options.length ; i++)
  281.         newOptions[i] = options[i];
  282.         
  283.     newOptions = newOptions.sort(mysort);    
  284.     options.length = 0;
  285.     for(i = 0 ; i < newOptions.length ; i++)
  286.         options[i] = newOptions[i];
  287.     
  288. }
  289.  
  290. function mysort(a, b){
  291.     if(a.text.toLowerCase() > b.text.toLowerCase()){
  292.         return 1;
  293.     }
  294.     if(a.text.toLowerCase() < b.text.toLowerCase()){
  295.         return -1;
  296.     }
  297.     return 0;
  298. }
  299.  
  300. function valide(){
  301.     var options = document.getElementById('course_teachers').options;
  302.     for (i = 0 ; i<options.length ; i++)
  303.         options[i].selected = true;
  304.     document.update_course.submit();
  305. }
  306. </script>";
  307. //api_display_tool_title($tool_name);
  308. // Display the form
  309. $form->display();
  310. /*
  311. ==============================================================================
  312.         FOOTER 
  313. ==============================================================================
  314. */
  315. ?>

Documentation generated on Thu, 12 Jun 2008 13:15:09 -0500 by phpDocumentor 1.4.1