course_home.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. HOME PAGE FOR EACH COURSE
  5. *
  6. * This page, included in every course's index.php is the home
  7. * page. To make administration simple, the teacher edits his
  8. * course from the home page. Only the login detects that the
  9. * visitor is allowed to activate, deactivate home page links,
  10. * access to the teachers tools (statistics, edit forums...).
  11. *
  12. * Edit visibility of tools
  13. *
  14. * visibility = 1 - everybody
  15. * visibility = 0 - course admin (teacher) and platform admin
  16. *
  17. * Who can change visibility ?
  18. *
  19. * admin = 0 - course admin (teacher) and platform admin
  20. * admin = 1 - platform admin
  21. *
  22. * Show message to confirm that a tools must be hide from available tools
  23. *
  24. * visibility 0,1
  25. *
  26. *
  27. * @package chamilo.course_home
  28. */
  29. /* INIT SECTION */
  30. use \ChamiloSession as Session;
  31. // Name of the language file that needs to be included.
  32. $language_file = 'course_home';
  33. $use_anonymous = true;
  34. // Inlcuding the global initialization file.
  35. require dirname(__FILE__).'/../inc/global.inc.php';
  36. // Delete LP sessions - commented out after seeing that normal
  37. // users in their first learnpath step (1st SCO of a SCORM)
  38. // cannot have their data saved if they "Return to course homepage"
  39. // before any LMSFinish()
  40. //unset($_SESSION['oLP']);
  41. //unset($_SESSION['lpobject']);
  42. $htmlHeadXtra[] ='<script type="text/javascript">
  43. $(document).ready(function() {
  44. $(".make_visible_and_invisible").attr("href", "javascript:void(0);");
  45. $(".make_visible_and_invisible > img").click(function () {
  46. make_visible = "visible.gif";
  47. make_invisible = "invisible.gif";
  48. path_name = $(this).attr("src");
  49. list_path_name = path_name.split("/");
  50. image_link = list_path_name[list_path_name.length - 1];
  51. tool_id = $(this).attr("id");
  52. tool_info = tool_id.split("_");
  53. my_tool_id = tool_info[1];
  54. $.ajax({
  55. contentType: "application/x-www-form-urlencoded",
  56. beforeSend: function(objeto) {
  57. $(".normal-message").show();
  58. $("#id_confirmation_message").hide();
  59. },
  60. type: "GET",
  61. url: "'.api_get_path(WEB_AJAX_PATH).'course_home.ajax.php?'.api_get_cidreq().'&a=set_visibility",
  62. data: "id=" + my_tool_id + "&sent_http_request=1",
  63. success: function(data) {
  64. eval("var info=" + data);
  65. new_current_tool_image = info.image;
  66. new_current_view = "'.api_get_path(WEB_IMG_PATH).'" + info.view;
  67. //eyes
  68. $("#" + tool_id).attr("src", new_current_view);
  69. //tool
  70. $("#toolimage_" + my_tool_id).attr("src", new_current_tool_image);
  71. //clase
  72. $("#tooldesc_" + my_tool_id).attr("class", info.tclass);
  73. $("#istooldesc_" + my_tool_id).attr("class", info.tclass);
  74. if (image_link == "visible.gif") {
  75. $("#" + tool_id).attr("alt", "'.get_lang('Activate', '').'");
  76. $("#" + tool_id).attr("title", "'.get_lang('Activate', '').'");
  77. } else {
  78. $("#" + tool_id).attr("alt", "'.get_lang('Deactivate', '').'");
  79. $("#" + tool_id).attr("title", "'.get_lang('Deactivate', '').'");
  80. }
  81. if (info.message == "is_active") {
  82. message = "'.get_lang('ToolIsNowVisible', '').'";
  83. } else {
  84. message = "'.get_lang('ToolIsNowHidden', '').'";
  85. }
  86. $(".normal-message").hide();
  87. $("#id_confirmation_message").html(message);
  88. $("#id_confirmation_message").show();
  89. }
  90. });
  91. });
  92. });
  93. /* toogle for post-it in course home */
  94. $(function() {
  95. $(".thematic-postit-head").click(function() {
  96. $(".thematic-postit-center").slideToggle("fast");
  97. });
  98. });
  99. </script>';
  100. if (!isset($cidReq)) {
  101. $cidReq = api_get_course_id(); // To provide compatibility with previous systems.
  102. global $error_msg,$error_no;
  103. $classError = 'init';
  104. $error_no[$classError][] = '2';
  105. $error_level[$classError][] = 'info';
  106. $error_msg[$classError][] = "[".__FILE__."][".__LINE__."] cidReq was missing $cidReq take $dbname;";
  107. }
  108. if (isset($_SESSION['_gid'])) {
  109. unset($_SESSION['_gid']);
  110. }
  111. // The section for the tabs
  112. $this_section = SECTION_COURSES;
  113. /* Constants */
  114. define('TOOL_PUBLIC', 'Public');
  115. define('TOOL_PUBLIC_BUT_HIDDEN', 'PublicButHide');
  116. define('TOOL_COURSE_ADMIN', 'courseAdmin');
  117. define('TOOL_PLATFORM_ADMIN', 'platformAdmin');
  118. define('TOOL_AUTHORING', 'toolauthoring');
  119. define('TOOL_INTERACTION', 'toolinteraction');
  120. define('TOOL_COURSE_PLUGIN', 'toolcourseplugin'); //all plugins that can be enabled in courses
  121. define('TOOL_ADMIN', 'tooladmin');
  122. define('TOOL_ADMIN_PLATFORM', 'tooladminplatform');
  123. //define('TOOL_ADMIN_PLATFORM_VISIBLE', 'tooladminplatformvisible');
  124. //define('TOOL_ADMIN_PLATFORM_INVISIBLE', 'tooladminplatforminvisible');
  125. //define('TOOL_ADMIN_COURS_INVISIBLE', 'tooladmincoursinvisible');
  126. define('TOOL_STUDENT_VIEW', 'toolstudentview');
  127. define('TOOL_ADMIN_VISIBLE', 'tooladminvisible');
  128. /* Virtual course support code */
  129. $user_id = api_get_user_id();
  130. $course_code = $_course['sysCode'];
  131. $course_info = Database::get_course_info($course_code);
  132. $return_result = CourseManager::determine_course_title_from_course_info($_user['user_id'], $course_info);
  133. $course_title = $return_result['title'];
  134. $course_code = $return_result['code'];
  135. $_course['name'] = $course_title;
  136. $_course['official_code'] = $course_code;
  137. Session::erase('toolgroup');
  138. $is_speacialcourse = CourseManager::is_special_course($course_code);
  139. if ($is_speacialcourse) {
  140. $autoreg = Security::remove_XSS($_GET['autoreg']);
  141. if ($autoreg == 1) {
  142. CourseManager::subscribe_user($user_id, $course_code, $status = STUDENT);
  143. }
  144. }
  145. /* Is the user allowed here? */
  146. if (!$is_allowed_in_course) {
  147. api_not_allowed(true);
  148. }
  149. /* Header */
  150. /* STATISTICS */
  151. if (!isset($coursesAlreadyVisited[$_cid])) {
  152. event_access_course();
  153. $coursesAlreadyVisited[$_cid] = 1;
  154. Session::write('coursesAlreadyVisited', $coursesAlreadyVisited);
  155. }
  156. /*Auto lunch code */
  157. $show_autolunch_lp_warning = false;
  158. $auto_lunch = api_get_course_setting('enable_lp_auto_launch');
  159. if (!empty($auto_lunch)) {
  160. $session_id = api_get_session_id();
  161. if ($auto_lunch == 2) { //LP list
  162. if (api_is_platform_admin() || api_is_allowed_to_edit()) {
  163. $show_autolunch_lp_warning = true;
  164. } else {
  165. $session_key = 'lp_autolunch_'.$session_id.'_'.api_get_course_int_id().'_'.api_get_user_id();
  166. if (!isset($_SESSION[$session_key])) {
  167. //redirecting to the LP
  168. $url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&id_session='.$session_id;
  169. $_SESSION[$session_key] = true;
  170. header("Location: $url");
  171. exit;
  172. }
  173. }
  174. } else {
  175. $lp_table = Database::get_course_table(TABLE_LP_MAIN);
  176. $course_id = api_get_course_int_id();
  177. $condition = '';
  178. if (!empty($session_id)) {
  179. $condition = api_get_session_condition($session_id);
  180. $sql = "SELECT id FROM $lp_table WHERE c_id = $course_id AND autolunch = 1 $condition LIMIT 1";
  181. $result = Database::query($sql);
  182. //If we found nothing in the session we just called the session_id = 0 autolunch
  183. if (Database::num_rows($result) == 0) {
  184. $condition = '';
  185. } else {
  186. //great, there is an specific auto lunch for this session we leave the $condition
  187. }
  188. }
  189. $sql = "SELECT id FROM $lp_table WHERE c_id = $course_id AND autolunch = 1 $condition LIMIT 1";
  190. $result = Database::query($sql);
  191. if (Database::num_rows($result) > 0) {
  192. $lp_data = Database::fetch_array($result,'ASSOC');
  193. if (!empty($lp_data['id'])) {
  194. if (api_is_platform_admin() || api_is_allowed_to_edit()) {
  195. $show_autolunch_lp_warning = true;
  196. } else {
  197. $session_key = 'lp_autolunch_'.$session_id.'_'.api_get_course_int_id().'_'.api_get_user_id();
  198. if (!isset($_SESSION[$session_key])) {
  199. //redirecting to the LP
  200. $url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$lp_data['id'];
  201. $_SESSION[$session_key] = true;
  202. header("Location: $url");
  203. exit;
  204. }
  205. }
  206. }
  207. }
  208. }
  209. }
  210. $tool_table = Database::get_course_table(TABLE_TOOL_LIST);
  211. $temps = time();
  212. $reqdate = "&reqdate=$temps";
  213. /* MAIN CODE */
  214. //display course title for course home page (similar to toolname for tool pages)
  215. //echo '<h3>'.api_display_tool_title($nameTools) . '</h3>';
  216. /* Introduction section (editable by course admins) */
  217. $content = Display::return_introduction_section(TOOL_COURSE_HOMEPAGE, array(
  218. 'CreateDocumentWebDir' => api_get_path(WEB_COURSE_PATH).api_get_course_path().'/document/',
  219. 'CreateDocumentDir' => 'document/',
  220. 'BaseHref' => api_get_path(WEB_COURSE_PATH).api_get_course_path().'/'
  221. )
  222. );
  223. /* SWITCH TO A DIFFERENT HOMEPAGE VIEW
  224. the setting homepage_view is adjustable through
  225. the platform administration section */
  226. require_once api_get_path(LIBRARY_PATH).'course_home.lib.php';
  227. if ($show_autolunch_lp_warning) {
  228. $show_message = Display::return_message(get_lang('TheLPAutoLaunchSettingIsONStudentsWillBeRedirectToAnSpecificLP'),'warning');
  229. }
  230. if (api_get_setting('homepage_view') == 'activity' || api_get_setting('homepage_view') == 'activity_big') {
  231. require 'activity.php';
  232. } elseif (api_get_setting('homepage_view') == '2column') {
  233. require '2column.php';
  234. } elseif (api_get_setting('homepage_view') == '3column') {
  235. require '3column.php';
  236. } elseif (api_get_setting('homepage_view') == 'vertical_activity') {
  237. require 'vertical_activity.php';
  238. }
  239. $content = '<div id="course_tools">'.$content.'</div>';
  240. $tpl = new Template($tool_name);
  241. $tpl->assign('actions', $actions);
  242. $tpl->assign('message', $show_message);
  243. $tpl->assign('content', $content);
  244. $tpl->display_one_col_template();