course.ajax.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Responses to AJAX calls
  5. */
  6. $language_file[] = 'admin';
  7. require_once '../global.inc.php';
  8. $action = $_REQUEST['a'];
  9. $user_id = api_get_user_id();
  10. switch ($action) {
  11. case 'add_course_vote':
  12. $course_id = intval($_REQUEST['course_id']);
  13. $star = intval($_REQUEST['star']);
  14. if (!api_is_anonymous()) {
  15. CourseManager::add_course_vote($user_id, $star, $course_id, 0);
  16. }
  17. $point_info = CourseManager::get_course_ranking($course_id, 0);
  18. $ajax_url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=add_course_vote';
  19. $rating = Display::return_rating_system('star_'.$course_id, $ajax_url.'&amp;course_id='.$course_id, $point_info, false);
  20. echo $rating;
  21. break;
  22. case 'get_user_courses':
  23. if (api_is_platform_admin()) {
  24. $user_id = intval($_POST['user_id']);
  25. $list_course_all_info = CourseManager::get_courses_list_by_user_id($user_id, false);
  26. if (!empty($list_course_all_info)) {
  27. foreach ($list_course_all_info as $course_item) {
  28. $course_info = api_get_course_info($course_item['code']);
  29. echo $course_info['title'].'<br />';
  30. }
  31. } else {
  32. echo get_lang('UserHasNoCourse');
  33. }
  34. }
  35. break;
  36. case 'search_category':
  37. require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
  38. if (api_is_platform_admin() || api_is_allowed_to_create_course()) {
  39. $results = searchCategoryByKeyword($_REQUEST['q']);
  40. if (!empty($results)) {
  41. foreach ($results as &$item) {
  42. $item['id'] = $item['code'];
  43. $item['text'] = '('.$item['code'].') '.$item['name'];
  44. }
  45. echo json_encode($results);
  46. } else {
  47. echo json_encode(array());
  48. }
  49. }
  50. break;
  51. case 'search_course':
  52. if (api_is_platform_admin()) {
  53. if (!empty($_GET['session_id']) && intval($_GET['session_id'])) {
  54. //if session is defined, lets find only courses of this session
  55. $courseList = SessionManager::get_course_list_by_session_id(
  56. $_GET['session_id'],
  57. $_GET['q']
  58. );
  59. } else {
  60. //if session is not defined lets search all courses STARTING with $_GET['q']
  61. //TODO change this function to search not only courses STARTING with $_GET['q']
  62. $courseList = CourseManager::get_courses_list(
  63. 0, //offset
  64. 0, //howMany
  65. 1, //$orderby = 1
  66. 'ASC',
  67. -1, //visibility
  68. $_GET['q'],
  69. null, //$urlId
  70. true //AlsoSearchCode
  71. );
  72. }
  73. $results = array();
  74. require_once api_get_path(LIBRARY_PATH).'course_category.lib.php';
  75. if (!empty($courseList)) {
  76. foreach ($courseList as $courseInfo) {
  77. $title = $courseInfo['title'];
  78. if (!empty($courseInfo['category_code'])) {
  79. $parents = getParentsToString($courseInfo['category_code']);
  80. $title = $parents.$courseInfo['title'];
  81. }
  82. $results[] = array(
  83. 'id' => $courseInfo['id'],
  84. 'text' => $title
  85. );
  86. }
  87. echo json_encode($results);
  88. } else {
  89. echo json_encode(array());
  90. }
  91. }
  92. break;
  93. case 'search_course_by_session':
  94. if (api_is_platform_admin()) {
  95. $results = SessionManager::get_course_list_by_session_id($_GET['session_id'], $_GET['q']);
  96. //$results = SessionManager::get_sessions_list(array('s.name LIKE' => "%".$_REQUEST['q']."%"));
  97. $results2 = array();
  98. if (!empty($results)) {
  99. foreach ($results as $item) {
  100. $item2 = array();
  101. foreach ($item as $id => $internal) {
  102. if ($id == 'id') {
  103. $item2[$id] = $internal;
  104. }
  105. if ($id == 'title') {
  106. $item2['text'] = $internal;
  107. }
  108. }
  109. $results2[] = $item2;
  110. }
  111. echo json_encode($results2);
  112. } else {
  113. echo json_encode(array());
  114. }
  115. }
  116. break;
  117. case 'search_course_by_session_all':
  118. if (api_is_platform_admin()) {
  119. if ($_GET['session_id'] == 'TODOS' || $_GET['session_id'] == 'T') {
  120. $_GET['session_id'] = '%';
  121. }
  122. $results = SessionManager::get_course_list_by_session_id_like(
  123. $_GET['session_id'],
  124. $_GET['q']
  125. );
  126. $results2 = array();
  127. if (!empty($results)) {
  128. foreach ($results as $item) {
  129. $item2 = array();
  130. foreach ($item as $id => $internal) {
  131. if ($id == 'id') {
  132. $item2[$id] = $internal;
  133. }
  134. if ($id == 'title') {
  135. $item2['text'] = $internal;
  136. }
  137. }
  138. $results2[] = $item2;
  139. }
  140. echo json_encode($results2);
  141. } else {
  142. echo json_encode(array());
  143. }
  144. }
  145. break;
  146. case 'search_user_by_course':
  147. if (api_is_platform_admin()) {
  148. $user = Database :: get_main_table(TABLE_MAIN_USER);
  149. $session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  150. $course = api_get_course_info_by_id($_GET['course_id']);
  151. $sql = "SELECT u.user_id as id, u.username, u.lastname, u.firstname
  152. FROM $user u
  153. INNER JOIN $session_course_user r ON u.user_id = r.id_user
  154. WHERE id_session = %d AND course_code = '%s'
  155. AND (u.firstname LIKE '%s' OR u.username LIKE '%s' OR u.lastname LIKE '%s')";
  156. $needle = '%' . $_GET['q'] . '%';
  157. $sql_query = sprintf($sql, $_GET['session_id'], $course['code'], $needle, $needle, $needle);
  158. $result = Database::query($sql_query);
  159. while ($user = Database::fetch_assoc($result)) {
  160. $data[] = array('id' => $user['id'], 'text' => $user['username'] . ' (' . $user['firstname'] . ' ' . $user['lastname'] . ')');
  161. }
  162. if (!empty($data)) {
  163. echo json_encode($data);
  164. } else {
  165. echo json_encode(array());
  166. }
  167. }
  168. break;
  169. case 'search_exercise_by_course':
  170. if (api_is_platform_admin()) {
  171. $course = api_get_course_info_by_id($_GET['course_id']);
  172. require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
  173. $session_id = (!empty($_GET['session_id'])) ? intval($_GET['session_id']) : 0 ;
  174. $exercises = get_all_exercises($course, $session_id, false, $_GET['q'], true, 3);
  175. foreach ($exercises as $exercise) {
  176. $data[] = array('id' => $exercise['id'], 'text' => html_entity_decode($exercise['title']) );
  177. }
  178. if (!empty($data)) {
  179. $data[] = array('id' => 'T', 'text' => 'TODOS');
  180. echo json_encode($data);
  181. } else {
  182. echo json_encode(array(array('id' => 'T', 'text' => 'TODOS')));
  183. }
  184. }
  185. break;
  186. case 'search_survey_by_course':
  187. if (api_is_platform_admin()) {
  188. $survey = Database :: get_course_table(TABLE_SURVEY);
  189. $sql = "SELECT survey_id as id, title, anonymous
  190. FROM $survey
  191. WHERE
  192. c_id = %d AND
  193. session_id = %d AND
  194. title LIKE '%s'";
  195. $sql_query = sprintf(
  196. $sql,
  197. intval($_GET['course_id']),
  198. intval($_GET['session_id']),
  199. '%' . Database::escape_string($_GET['q']).'%'
  200. );
  201. $result = Database::query($sql_query);
  202. while ($survey = Database::fetch_assoc($result)) {
  203. $survey['title'] .= ($survey['anonymous'] == 1) ? ' (' . get_lang('Anonymous') . ')' : '';
  204. $data[] = array(
  205. 'id' => $survey['id'],
  206. 'text' => strip_tags(html_entity_decode($survey['title']))
  207. );
  208. }
  209. if (!empty($data)) {
  210. echo json_encode($data);
  211. } else {
  212. echo json_encode(array());
  213. }
  214. }
  215. break;
  216. case 'display_sessions_courses':
  217. $sessionId = intval($_GET['session']);
  218. $userTable = Database::get_main_table(TABLE_MAIN_USER);
  219. $coursesData = SessionManager::get_course_list_by_session_id($sessionId);
  220. $courses = array();
  221. foreach ($coursesData as $courseId => $course) {
  222. $coachData = SessionManager::getCoachesByCourseSession($sessionId, $course['code']);
  223. $coachName = '';
  224. if (!empty($coachData)) {
  225. $userResult = Database::select('lastname,firstname', $userTable, array(
  226. 'where' => array(
  227. 'user_id = ?' => $coachData[0]
  228. )
  229. ), 'first');
  230. $coachName = api_get_person_name($userResult['firstname'], $userResult['lastname']);
  231. }
  232. $courses[] = array(
  233. 'id' => $courseId,
  234. 'name' => $course['title'],
  235. 'coachName' => $coachName,
  236. );
  237. }
  238. echo json_encode($courses);
  239. break;
  240. default:
  241. echo '';
  242. }
  243. exit;