legal.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. use \ChamiloSession as Session;
  4. // Language files that need to be included
  5. $language_file = array('create_course', 'course_info', 'admin');
  6. $cidReset = true;
  7. require_once '../inc/global.inc.php';
  8. $this_section = SECTION_COURSES;
  9. $course_code = isset($_REQUEST['course_code']) ? $_REQUEST['course_code'] : null;
  10. $session_id = isset($_REQUEST['session_id']) ? intval($_REQUEST['session_id']) : null;
  11. $user_id = api_get_user_id();
  12. if (empty($course_code)) {
  13. api_not_allowed();
  14. }
  15. $course_info = CourseManager::get_course_information($course_code);
  16. $course_legal = $course_info['legal'];
  17. $enabled = api_get_plugin_setting('courselegal', 'tool_enable');
  18. $pluginExtra = null;
  19. $pluginLegal = false;
  20. if ($enabled == 'true') {
  21. $pluginLegal = true;
  22. require_once api_get_path(SYS_PLUGIN_PATH).'courselegal/config.php';
  23. $plugin = CourseLegalPlugin::create();
  24. $data = $plugin->getData($course_info['real_id'], $session_id);
  25. if (!empty($data)) {
  26. $course_legal = $data['content'];
  27. }
  28. $userData = $plugin->getUserAcceptedLegal(
  29. $user_id,
  30. $course_info['real_id'],
  31. $session_id
  32. );
  33. if (isset($_GET['web_agreement_link'])) {
  34. $plugin->saveUserMailLegal(
  35. $_GET['web_agreement_link'],
  36. $user_id,
  37. $course_info['real_id'],
  38. $session_id
  39. );
  40. }
  41. }
  42. // Build the form
  43. $form = new FormValidator('legal', 'GET', api_get_self().'?course_code='.$course_code.'&session_id='.$session_id);
  44. $pluginMessage = null;
  45. $hideForm = false;
  46. if ($pluginLegal && isset($userData) && !empty($userData)) {
  47. if ($userData['web_agreement'] == 1) {
  48. if (empty($userData['mail_agreement'])) {
  49. $pluginMessage = Display::return_message(
  50. $plugin->get_lang('YouNeedToConfirmYourAgreementCheckYourEmail')
  51. );
  52. $hideForm = true;
  53. }
  54. }
  55. }
  56. $form->addElement('header', get_lang('CourseLegalAgreement'));
  57. $form->addElement('label', null, $course_legal);
  58. if ($pluginLegal && !empty($plugin)) {
  59. $form->addElement('label', null, $plugin->getCurrentFile($course_info['real_id'], $session_id));
  60. }
  61. $form->addElement('hidden', 'course_code', $course_code);
  62. $form->addElement('hidden', 'session_id', $session_id);
  63. $form->addElement('checkbox', 'accept_legal', null, get_lang('AcceptLegal'));
  64. $form->addElement('style_submit_button', null, get_lang('Accept'), 'class="save"');
  65. $variable = 'accept_legal_'.$user_id.'_'.$course_info['real_id'].'_'.$session_id;
  66. $url = api_get_course_url($course_code, $session_id);
  67. if ($form->validate()) {
  68. $accept_legal = $form->exportValue('accept_legal');
  69. if ($accept_legal == 1) {
  70. CourseManager::save_user_legal($user_id, $course_code, $session_id);
  71. if (api_check_user_access_to_legal($course_info['visibility'])) {
  72. Session::write($variable, true);
  73. }
  74. if ($pluginLegal) {
  75. header('Location:' .$url);
  76. exit;
  77. }
  78. }
  79. }
  80. $user_pass_open_course = false;
  81. if (api_check_user_access_to_legal($course_info['visibility']) && Session::read($variable)) {
  82. $user_pass_open_course = true;
  83. }
  84. if (empty($session_id)) {
  85. if (CourseManager::is_user_subscribed_in_course($user_id, $course_code) ||
  86. api_check_user_access_to_legal($course_info['visibility'])
  87. ) {
  88. $user_accepted_legal = CourseManager::is_user_accepted_legal(
  89. $user_id,
  90. $course_code
  91. );
  92. if ($user_accepted_legal || $user_pass_open_course) {
  93. //Redirect to course home
  94. header('Location: '.$url);
  95. exit;
  96. }
  97. } else {
  98. api_not_allowed();
  99. }
  100. } else {
  101. if (api_is_platform_admin()) {
  102. header('Location: '.$url);
  103. }
  104. $userStatus = SessionManager::get_user_status_in_session($user_id, $course_code, $session_id);
  105. if (isset($userStatus) || api_check_user_access_to_legal($course_info['visibility'])) {
  106. $user_accepted_legal = CourseManager::is_user_accepted_legal(
  107. $user_id,
  108. $course_code,
  109. $session_id
  110. );
  111. if ($user_accepted_legal || $user_pass_open_course) {
  112. // Redirect to course session home.
  113. header('Location: '.$url);
  114. exit;
  115. }
  116. } else {
  117. api_not_allowed();
  118. }
  119. }
  120. Display :: display_header();
  121. echo $pluginMessage;
  122. if ($hideForm == false) {
  123. $form->display();
  124. }
  125. Display :: display_footer();