user_information.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <?php
  2. // $Id: user_information.php 18156 2009-02-02 17:02:08Z juliomontoya $
  3. /*
  4. ==============================================================================
  5. Dokeos - elearning and course management software
  6. Copyright (c) 2004 Dokeos SPRL
  7. Copyright (c) 2003 Ghent University (UGent)
  8. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  9. Copyright (c) Olivier Brouckaert
  10. For a full list of contributors, see "credits.txt".
  11. The full license can be read in "license.txt".
  12. This program is free software; you can redistribute it and/or
  13. modify it under the terms of the GNU General Public License
  14. as published by the Free Software Foundation; either version 2
  15. of the License, or (at your option) any later version.
  16. See the GNU General Public License for more details.
  17. Contact: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium, info@dokeos.com
  18. ==============================================================================
  19. */
  20. /**
  21. ==============================================================================
  22. @author Bart Mollet
  23. * @package dokeos.admin
  24. ==============================================================================
  25. */
  26. /*
  27. ==============================================================================
  28. INIT SECTION
  29. ==============================================================================
  30. */
  31. // name of the language file that needs to be included
  32. $language_file = 'admin';
  33. $cidReset = true;
  34. require ('../inc/global.inc.php');
  35. $this_section=SECTION_PLATFORM_ADMIN;
  36. api_protect_admin_script();
  37. require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
  38. $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
  39. $interbreadcrumb[] = array ("url" => 'user_list.php', "name" => get_lang('UserList'));
  40. if( ! isset($_GET['user_id']))
  41. {
  42. api_not_allowed();
  43. }
  44. $user = api_get_user_info($_GET['user_id']);
  45. $tool_name = $user['firstName'].' '.$user['lastName'].(empty($user['official_code'])?'':' ('.$user['official_code'].')');
  46. Display::display_header($tool_name);
  47. $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  48. $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  49. if( isset($_GET['action']) ) {
  50. switch($_GET['action']) {
  51. case 'unsubscribe':
  52. if( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['course_code']) == STUDENT)
  53. {
  54. CourseManager::unsubscribe_user($_GET['user_id'],$_GET['course_code']);
  55. Display::display_normal_message(get_lang('UserUnsubscribed'));
  56. }
  57. else
  58. {
  59. Display::display_error_message(get_lang('CannotUnsubscribeUserFromCourse'));
  60. }
  61. break;
  62. }
  63. }
  64. api_display_tool_title($tool_name);
  65. echo '<div align="right" style="margin-right:4em;"><a href="'.api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$_GET['user_id'].'" title="'.get_lang('Reporting').'">'.Display::return_icon('statistics.gif').'</a></div>'."\n";
  66. if ($user['picture_uri'] != '')
  67. {
  68. echo '<p><img src="'.api_get_path(WEB_CODE_PATH).'upload/users/'.$user['picture_uri'].'" style="width:150px;"/></p>';
  69. }
  70. echo '<p>'. ($user['status'] == 1 ? get_lang('Teacher') : get_lang('Student')).'</p>';
  71. echo '<p>'.Display :: encrypted_mailto_link($user['mail'], $user['mail']).'</p>';
  72. /**
  73. * Show the sessions and the courses in wich this user is subscribed
  74. */
  75. echo '<p><b>'.get_lang('SessionList').'</b></p>';
  76. echo '<blockquote>';
  77. $main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
  78. $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
  79. $main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  80. $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
  81. $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  82. $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
  83. $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  84. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  85. $user_id = $user['user_id'];
  86. $result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
  87. FROM session_rel_user, session
  88. WHERE id_session=id AND id_user=$user_id
  89. AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
  90. ORDER BY date_start, date_end, name",__FILE__,__LINE__);
  91. $sessions=api_store_result($result);
  92. // get the list of sessions where the user is subscribed as coach in a course
  93. $result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
  94. FROM $tbl_session as session
  95. INNER JOIN $tbl_session_course as session_rel_course
  96. ON session_rel_course.id_coach = $user_id
  97. AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
  98. ORDER BY date_start, date_end, name",__FILE__,__LINE__);
  99. $session_is_coach = api_store_result($result);
  100. $personal_course_list = array();
  101. if(count($sessions)>0){
  102. $header[] = array (get_lang('Code'), true);
  103. $header[] = array (get_lang('Title'), true);
  104. $header[] = array (get_lang('Status'), true);
  105. $header[] = array ('', false);
  106. foreach($sessions as $enreg){
  107. $data = array ();
  108. $personal_course_list = array();
  109. $id_session = $enreg['id'];
  110. $personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, IF(session_course.id_coach = ".$user_id.",'2', '5')
  111. FROM $tbl_session_course as session_course
  112. INNER JOIN $tbl_course AS course
  113. ON course.code = session_course.course_code
  114. LEFT JOIN $tbl_user as user
  115. ON user.user_id = session_course.id_coach
  116. INNER JOIN $tbl_session_course_user
  117. ON $tbl_session_course_user.id_session = $id_session
  118. AND $tbl_session_course_user.id_user = $user_id
  119. INNER JOIN $tbl_session as session
  120. ON session_course.id_session = session.id
  121. WHERE session_course.id_session = $id_session
  122. ORDER BY i";
  123. $course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
  124. while ($result_row = Database::_fetch_array($course_list_sql_result)){
  125. $key = $result_row['id_session'].' - '.$result_row['k'];
  126. $result_row['s'] = $result_row['14'];
  127. if(!isset($personal_course_list[$key])){
  128. $personal_course_list[$key] = $result_row;
  129. }
  130. }
  131. foreach ($personal_course_list as $my_course){
  132. $row = array ();
  133. $row[] = $my_course['k'];
  134. $row[] = $my_course['i'];
  135. $row[] = $my_course['s'] == STUDENT ? get_lang('Student') : get_lang('Teacher');
  136. $tools = '<a href="course_information.php?code='.$my_course['k'].'">'.Display::return_icon('synthese_view.gif').'</a>'.
  137. '<a href="'.api_get_path(WEB_COURSE_PATH).$my_course['d'].'?id_session='.$id_session.'">'.Display::return_icon('course_home.gif').'</a>' .
  138. '<a href="course_edit.php?course_code='.$my_course['k'].'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
  139. if( $my_course->status == STUDENT ){
  140. $tools .= '<a href="user_information.php?action=unsubscribe&course_code='.$my_course['k'].'&user_id='.$user['user_id'].'">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
  141. }
  142. $row[] = $tools;
  143. $data[] = $row;
  144. }
  145. echo $enreg['name'];
  146. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  147. echo '<br><br><br>';
  148. }
  149. }
  150. else{
  151. echo '<p>'.get_lang('NoSessionsForThisUser').'</p>';
  152. }
  153. echo '</blockquote>';
  154. /**
  155. * Show the courses in which this user is subscribed
  156. */
  157. $sql = 'SELECT * FROM '.$table_course_user.' cu, '.$table_course.' c WHERE cu.user_id = '.$user['user_id'].' AND cu.course_code = c.code';
  158. $res = api_sql_query($sql,__FILE__,__LINE__);
  159. if (Database::num_rows($res) > 0)
  160. {
  161. $header=array();
  162. $header[] = array (get_lang('Code'), true);
  163. $header[] = array (get_lang('Title'), true);
  164. $header[] = array (get_lang('Status'), true);
  165. $header[] = array ('', false);
  166. $data = array ();
  167. while ($course = mysql_fetch_object($res))
  168. {
  169. $row = array ();
  170. $row[] = $course->code;
  171. $row[] = $course->title;
  172. $row[] = $course->status == STUDENT ? get_lang('Student') : get_lang('Teacher');
  173. $tools = '<a href="course_information.php?code='.$course->code.'">'.Display::return_icon('synthese_view.gif').'</a>'.
  174. '<a href="'.api_get_path(WEB_COURSE_PATH).$course->directory.'">'.Display::return_icon('course_home.gif').'</a>' .
  175. '<a href="course_edit.php?course_code='.$course->code.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
  176. if( $course->status == STUDENT )
  177. {
  178. $tools .= '<a href="user_information.php?action=unsubscribe&course_code='.$course->code.'&user_id='.$user['user_id'].'">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
  179. }
  180. $row[] = $tools;
  181. $data[] = $row;
  182. }
  183. echo '<p><b>'.get_lang('Courses').'</b></p>';
  184. echo '<blockquote>';
  185. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  186. echo '</blockquote>';
  187. }
  188. else
  189. {
  190. echo '<p>'.get_lang('NoCoursesForThisUser').'</p>';
  191. }
  192. /**
  193. * Show the classes in which this user is subscribed
  194. */
  195. $table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  196. $table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
  197. $sql = 'SELECT * FROM '.$table_class_user.' cu, '.$table_class.' c WHERE cu.user_id = '.$user['user_id'].' AND cu.class_id = c.id';
  198. $res = api_sql_query($sql,__FILE__,__LINE__);
  199. if (Database::num_rows($res) > 0)
  200. {
  201. $header = array();
  202. $header[] = array (get_lang('ClassName'), true);
  203. $header[] = array ('', false);
  204. $data = array ();
  205. while ($class = mysql_fetch_object($res))
  206. {
  207. $row = array();
  208. $row[] = $class->name;
  209. $row[] = '<a href="class_information.php?id='.$class->id.'">'.Display::return_icon('synthese_view.gif').'</a>';
  210. $data[] = $row;
  211. }
  212. echo '<p><b>'.get_lang('Classes').'</b></p>';
  213. echo '<blockquote>';
  214. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  215. echo '</blockquote>';
  216. }
  217. else
  218. {
  219. echo '<p>'.get_lang('NoClassesForThisUser').'</p>';
  220. }
  221. /**
  222. * Show the URL in which this user is subscribed
  223. */
  224. global $_configuration;
  225. if ($_configuration['multiple_access_urls']==true) {
  226. require_once(api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
  227. $url_list= UrlManager::get_access_url_from_user($user['user_id']);
  228. if (count($url_list) > 0) {
  229. $header = array();
  230. $header[] = array (get_lang('UrlName'), true);
  231. $data = array ();
  232. foreach ($url_list as $url) {
  233. $row = array();
  234. $row[] = $url['url'];
  235. $data[] = $row;
  236. }
  237. echo '<p><b>'.get_lang('UrlList').'</b></p>';
  238. echo '<blockquote>';
  239. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  240. echo '</blockquote>';
  241. } else {
  242. echo '<p>'.get_lang('NoUrlForThisUser').'</p>';
  243. }
  244. }
  245. /*
  246. ==============================================================================
  247. FOOTER
  248. ==============================================================================
  249. */
  250. Display::display_footer();
  251. ?>