announcement.ajax.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Responses to AJAX calls.
  5. */
  6. require_once __DIR__.'/../global.inc.php';
  7. $action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
  8. $isAllowedToEdit = api_is_allowed_to_edit();
  9. $courseInfo = api_get_course_info();
  10. $groupId = api_get_group_id();
  11. $sessionId = api_get_session_id();
  12. $isTutor = false;
  13. if (!empty($groupId)) {
  14. $groupInfo = GroupManager::get_group_properties($groupId);
  15. $isTutor = GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo);
  16. if ($isTutor) {
  17. $isAllowedToEdit = true;
  18. }
  19. }
  20. switch ($action) {
  21. case 'preview':
  22. $allowToEdit = (
  23. api_is_allowed_to_edit(false, true) ||
  24. (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())
  25. );
  26. $drhHasAccessToSessionContent = api_drh_can_access_all_session_content();
  27. if (!empty($sessionId) && $drhHasAccessToSessionContent) {
  28. $allowToEdit = $allowToEdit || api_is_drh();
  29. }
  30. if ($allowToEdit === false && !empty($groupId)) {
  31. $groupProperties = GroupManager:: get_group_properties($groupId);
  32. // Check if user is tutor group
  33. $isTutor = GroupManager::is_tutor_of_group(api_get_user_id(), $groupProperties, $courseId);
  34. if ($isTutor) {
  35. $allowToEdit = true;
  36. }
  37. }
  38. if ($allowToEdit === false) {
  39. exit;
  40. }
  41. $users = isset($_REQUEST['users']) ? json_decode($_REQUEST['users']) : '';
  42. $formParams = [];
  43. if (isset($_REQUEST['form'])) {
  44. parse_str($_REQUEST['form'], $formParams);
  45. }
  46. $previewGroups = [];
  47. $previewUsers = [];
  48. $previewTotal = [];
  49. if (empty($groupId)) {
  50. if (empty($users) ||
  51. (!empty($users) && isset($users[0]) && $users[0] == 'everyone')
  52. ) {
  53. // All users in course session
  54. if (empty($sessionId)) {
  55. $students = CourseManager::get_user_list_from_course_code($courseInfo['code']);
  56. } else {
  57. $students = CourseManager::get_user_list_from_course_code($courseInfo['code'], $sessionId);
  58. }
  59. foreach ($students as $student) {
  60. $previewUsers[] = $student['user_id'];
  61. }
  62. $groupList = GroupManager::get_group_list(null, $courseInfo, null, $sessionId);
  63. foreach ($groupList as $group) {
  64. $previewGroups[] = $group['iid'];
  65. }
  66. } else {
  67. $send_to = CourseManager::separateUsersGroups($users);
  68. // Storing the selected groups
  69. if (is_array($send_to['groups']) &&
  70. !empty($send_to['groups'])
  71. ) {
  72. $counter = 1;
  73. foreach ($send_to['groups'] as $group) {
  74. $previewGroups[] = $group;
  75. }
  76. }
  77. // Storing the selected users
  78. if (is_array($send_to['users'])) {
  79. $counter = 1;
  80. foreach ($send_to['users'] as $user) {
  81. $previewUsers[] = $user;
  82. }
  83. }
  84. }
  85. } else {
  86. $send_to_users = CourseManager::separateUsersGroups($users);
  87. $sentToAllGroup = false;
  88. if (empty($send_to_users['groups']) && empty($send_to_users['users'])) {
  89. $previewGroups[] = $groupId;
  90. $sentToAllGroup = true;
  91. }
  92. if ($sentToAllGroup === false) {
  93. if (!empty($send_to_users['groups'])) {
  94. foreach ($send_to_users['groups'] as $group) {
  95. $previewGroups[] = $group;
  96. }
  97. }
  98. if (!empty($send_to_users['users'])) {
  99. foreach ($send_to_users['users'] as $user) {
  100. $previewUsers[] = $user;
  101. }
  102. }
  103. }
  104. }
  105. if (isset($formParams['send_to_users_in_session']) && $formParams['send_to_users_in_session'] == 1) {
  106. $sessionList = SessionManager::get_session_by_course(api_get_course_int_id());
  107. if (!empty($sessionList)) {
  108. foreach ($sessionList as $sessionInfo) {
  109. $sessionId = $sessionInfo['id'];
  110. $userList = CourseManager::get_user_list_from_course_code(
  111. $courseCode,
  112. $sessionId
  113. );
  114. if (!empty($userList)) {
  115. foreach ($userList as $user) {
  116. $previewUsers[] = $user;
  117. }
  118. }
  119. }
  120. }
  121. }
  122. if (isset($formParams['send_to_hrm_users']) && $formParams['send_to_hrm_users'] == 1) {
  123. foreach ($previewUsers as $userId) {
  124. $userInfo = api_get_user_info($userId);
  125. $drhList = UserManager::getDrhListFromUser($userId);
  126. if (!empty($drhList)) {
  127. foreach ($drhList as $drhInfo) {
  128. $previewUsers[] = $drhInfo['id'];
  129. }
  130. }
  131. }
  132. }
  133. if (isset($formParams['send_me_a_copy_by_email']) && $formParams['send_me_a_copy_by_email'] == 1) {
  134. $previewUsers[] = api_get_user_id();
  135. }
  136. $previewUserNames = [];
  137. $previewGroupNames = [];
  138. if (!empty($previewGroups)) {
  139. $previewGroups = array_unique($previewGroups);
  140. foreach ($previewGroups as $groupId) {
  141. $groupInfo = GroupManager::get_group_properties($groupId);
  142. $previewGroupNames[] = Display::label($groupInfo['name'], 'info');
  143. }
  144. $previewTotal = $previewGroupNames;
  145. }
  146. if (!empty($previewUsers)) {
  147. $previewUsers = array_unique($previewUsers);
  148. foreach ($previewUsers as $userId) {
  149. $userInfo = api_get_user_info($userId);
  150. $previewUserNames[] = Display::label($userInfo['complete_name']);
  151. }
  152. $previewTotal = array_merge($previewTotal, $previewUserNames);
  153. }
  154. $previewTotal = array_map(function ($value) { return ''.$value; }, $previewTotal);
  155. echo json_encode($previewTotal);
  156. break;
  157. case 'delete_item':
  158. if ($isAllowedToEdit) {
  159. if (empty($_REQUEST['id'])) {
  160. return false;
  161. }
  162. if (!empty($sessionId) && api_is_allowed_to_session_edit(false, true) == false && empty($groupId)) {
  163. return false;
  164. }
  165. $list = explode(',', $_REQUEST['id']);
  166. foreach ($list as $itemId) {
  167. if (!api_is_session_general_coach() || api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $itemId)) {
  168. $result = AnnouncementManager::get_by_id(
  169. api_get_course_int_id(),
  170. $itemId
  171. );
  172. if (!empty($result)) {
  173. $delete = true;
  174. if (!empty($groupId) && $isTutor) {
  175. if ($groupId != $result['to_group_id']) {
  176. $delete = false;
  177. }
  178. }
  179. if ($delete) {
  180. AnnouncementManager::delete_announcement($courseInfo, $itemId);
  181. }
  182. }
  183. }
  184. }
  185. }
  186. break;
  187. default:
  188. echo '';
  189. break;
  190. }
  191. exit;