user_information.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?php
  2. // $Id: user_information.php 20076 2009-04-24 15:13:03Z cfasanando $
  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. require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php');
  39. $interbreadcrumb[] = array ("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
  40. $interbreadcrumb[] = array ("url" => 'user_list.php', "name" => get_lang('UserList'));
  41. if( ! isset($_GET['user_id']))
  42. {
  43. api_not_allowed();
  44. }
  45. $user = api_get_user_info($_GET['user_id']);
  46. $tool_name = api_get_person_name($user['firstName'], $user['lastName']).(empty($user['official_code'])?'':' ('.$user['official_code'].')');
  47. Display::display_header($tool_name);
  48. $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  49. $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  50. if( isset($_GET['action']) ) {
  51. switch($_GET['action']) {
  52. case 'unsubscribe':
  53. if( CourseManager::get_user_in_course_status($_GET['user_id'],$_GET['course_code']) == STUDENT)
  54. {
  55. CourseManager::unsubscribe_user($_GET['user_id'],$_GET['course_code']);
  56. Display::display_normal_message(get_lang('UserUnsubscribed'));
  57. }
  58. else
  59. {
  60. Display::display_error_message(get_lang('CannotUnsubscribeUserFromCourse'));
  61. }
  62. break;
  63. }
  64. }
  65. api_display_tool_title($tool_name);
  66. 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',get_lang('Reporting')).'</a></div>'."\n";
  67. //getting the user image
  68. $sysdir_array = UserManager::get_user_picture_path_by_id($user['user_id'],'system',false,true);
  69. $sysdir = $sysdir_array['dir'];
  70. $webdir_array = UserManager::get_user_picture_path_by_id($user['user_id'],'web',false,true);
  71. $webdir = $webdir_array['dir'];
  72. $fullurl=$webdir.$webdir_array['file'];
  73. $system_image_path=$sysdir.$webdir_array['file'];
  74. list($width, $height, $type, $attr) = @getimagesize($system_image_path);
  75. $resizing = (($height > 200) ? 'height="200"' : '');
  76. $height += 30;
  77. $width += 30;
  78. $window_name = 'window'.uniqid('');
  79. $onclick = $window_name."=window.open('".$fullurl."','".$window_name."','alwaysRaised=yes, alwaysLowered=no,alwaysOnTop=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=".$width.",height=".$height.",left=200,top=20'); return false;";
  80. echo '<a href="javascript: void(0);" onclick="'.$onclick.'" ><img src="'.$fullurl.'" '.$resizing.' alt="'.$alt.'"/></a><br />';
  81. echo '<p>'. ($user['status'] == 1 ? get_lang('Teacher') : get_lang('Student')).'</p>';
  82. echo '<p>'.Display :: encrypted_mailto_link($user['mail'], $user['mail']).'</p>';
  83. /**
  84. * Show the sessions and the courses in wich this user is subscribed
  85. */
  86. echo '<p><b>'.get_lang('SessionList').'</b></p>';
  87. echo '<blockquote>';
  88. $main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
  89. $main_course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
  90. $main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
  91. $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
  92. $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
  93. $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
  94. $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  95. $tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
  96. $user_id = $user['user_id'];
  97. $result=Database::query("SELECT DISTINCT id, name, date_start, date_end
  98. FROM session_rel_user, session
  99. WHERE id_session=id AND id_user=$user_id
  100. AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
  101. ORDER BY date_start, date_end, name");
  102. $sessions=Database::store_result($result);
  103. // get the list of sessions where the user is subscribed as coach in a course
  104. $result=Database::query("SELECT DISTINCT id, name, date_start, date_end
  105. FROM $tbl_session as session
  106. INNER JOIN $tbl_session_course as session_rel_course
  107. ON session_rel_course.id_coach = $user_id
  108. AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
  109. ORDER BY date_start, date_end, name");
  110. $session_is_coach = Database::store_result($result);
  111. $personal_course_list = array();
  112. if(count($sessions)>0){
  113. $header[] = array (get_lang('Code'), true);
  114. $header[] = array (get_lang('Title'), true);
  115. $header[] = array (get_lang('Status'), true);
  116. $header[] = array ('', false);
  117. foreach($sessions as $enreg){
  118. $data = array ();
  119. $personal_course_list = array();
  120. $id_session = $enreg['id'];
  121. /*
  122. $personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "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')
  123. FROM $tbl_session_course as session_course
  124. INNER JOIN $tbl_course AS course
  125. ON course.code = session_course.course_code
  126. LEFT JOIN $tbl_user as user
  127. ON user.user_id = session_course.id_coach
  128. INNER JOIN $tbl_session_course_user
  129. ON $tbl_session_course_user.id_session = $id_session
  130. AND $tbl_session_course_user.id_user = $user_id
  131. INNER JOIN $tbl_session as session
  132. ON session_course.id_session = session.id
  133. WHERE session_course.id_session = $id_session
  134. ORDER BY i";
  135. */
  136. // this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not
  137. $personal_course_list_sql = "SELECT distinct course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "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_user.id_user = 3,'2', '5')
  138. FROM $tbl_session_course_user as session_course_user INNER JOIN $tbl_course AS course
  139. ON course.code = session_course_user.course_code AND session_course_user.id_session = $id_session
  140. INNER JOIN $tbl_session as session ON session_course_user.id_session = session.id
  141. INNER JOIN $tbl_session_course as session_course
  142. LEFT JOIN $tbl_user as user ON user.user_id = session_course_user.id_user AND session_course_user.status = 2
  143. WHERE session_course_user.id_user = $user_id ORDER BY i";
  144. $course_list_sql_result = Database::query($personal_course_list_sql);
  145. while ($result_row = Database::fetch_array($course_list_sql_result)){
  146. $key = $result_row['id_session'].' - '.$result_row['k'];
  147. $result_row['s'] = $result_row['14'];
  148. if(!isset($personal_course_list[$key])){
  149. $personal_course_list[$key] = $result_row;
  150. }
  151. }
  152. foreach ($personal_course_list as $my_course){
  153. $row = array ();
  154. $row[] = $my_course['k'];
  155. $row[] = $my_course['i'];
  156. $row[] = $my_course['s'] == STUDENT ? get_lang('Student') : get_lang('Teacher');
  157. $tools = '<a href="course_information.php?code='.$my_course['k'].'&id_session='.$id_session.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
  158. '<a href="'.api_get_path(WEB_COURSE_PATH).$my_course['d'].'?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>' .
  159. '<a href="session_course_edit.php?id_session='.$id_session.'&course_code='.$my_course['k'].'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
  160. if( $my_course->status == STUDENT ){
  161. $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>';
  162. }
  163. $row[] = $tools;
  164. $data[] = $row;
  165. }
  166. echo $enreg['name'];
  167. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  168. echo '<br><br><br>';
  169. }
  170. }
  171. else{
  172. echo '<p>'.get_lang('NoSessionsForThisUser').'</p>';
  173. }
  174. echo '</blockquote>';
  175. /**
  176. * Show the courses in which this user is subscribed
  177. */
  178. $sql = 'SELECT * FROM '.$table_course_user.' cu, '.$table_course.' c WHERE cu.user_id = '.$user['user_id'].' AND cu.course_code = c.code AND cu.relation_type <> '.COURSE_RELATION_TYPE_RRHH.' ';
  179. $res = Database::query($sql);
  180. if (Database::num_rows($res) > 0)
  181. {
  182. $header=array();
  183. $header[] = array (get_lang('Code'), true);
  184. $header[] = array (get_lang('Title'), true);
  185. $header[] = array (get_lang('Status'), true);
  186. $header[] = array ('', false);
  187. $data = array ();
  188. while ($course = Database::fetch_object($res))
  189. {
  190. $row = array ();
  191. $row[] = $course->code;
  192. $row[] = $course->title;
  193. $row[] = $course->status == STUDENT ? get_lang('Student') : get_lang('Teacher');
  194. $tools = '<a href="course_information.php?code='.$course->code.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>'.
  195. '<a href="'.api_get_path(WEB_COURSE_PATH).$course->directory.'">'.Display::return_icon('course_home.gif', get_lang('CourseHomepage')).'</a>' .
  196. '<a href="course_edit.php?course_code='.$course->code.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>';
  197. if( $course->status == STUDENT )
  198. {
  199. $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>';
  200. }
  201. $row[] = $tools;
  202. $data[] = $row;
  203. }
  204. echo '<p><b>'.get_lang('Courses').'</b></p>';
  205. echo '<blockquote>';
  206. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  207. echo '</blockquote>';
  208. }
  209. else
  210. {
  211. echo '<p>'.get_lang('NoCoursesForThisUser').'</p>';
  212. }
  213. /**
  214. * Show the classes in which this user is subscribed
  215. */
  216. $table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
  217. $table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
  218. $sql = 'SELECT * FROM '.$table_class_user.' cu, '.$table_class.' c WHERE cu.user_id = '.$user['user_id'].' AND cu.class_id = c.id';
  219. $res = Database::query($sql);
  220. if (Database::num_rows($res) > 0)
  221. {
  222. $header = array();
  223. $header[] = array (get_lang('ClassName'), true);
  224. $header[] = array ('', false);
  225. $data = array ();
  226. while ($class = Database::fetch_object($res))
  227. {
  228. $row = array();
  229. $row[] = $class->name;
  230. $row[] = '<a href="class_information.php?id='.$class->id.'">'.Display::return_icon('synthese_view.gif', get_lang('Overview')).'</a>';
  231. $data[] = $row;
  232. }
  233. echo '<p><b>'.get_lang('Classes').'</b></p>';
  234. echo '<blockquote>';
  235. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  236. echo '</blockquote>';
  237. }
  238. else
  239. {
  240. echo '<p>'.get_lang('NoClassesForThisUser').'</p>';
  241. }
  242. /**
  243. * Show the URL in which this user is subscribed
  244. */
  245. global $_configuration;
  246. if ($_configuration['multiple_access_urls']==true) {
  247. require_once(api_get_path(LIBRARY_PATH).'urlmanager.lib.php');
  248. $url_list= UrlManager::get_access_url_from_user($user['user_id']);
  249. if (count($url_list) > 0) {
  250. $header = array();
  251. $header[] = array (get_lang('URL'), true);
  252. $data = array ();
  253. foreach ($url_list as $url) {
  254. $row = array();
  255. $row[] = $url['url'];
  256. $data[] = $row;
  257. }
  258. echo '<p><b>'.get_lang('URLList').'</b></p>';
  259. echo '<blockquote>';
  260. Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => $_GET['user_id']));
  261. echo '</blockquote>';
  262. } else {
  263. echo '<p>'.get_lang('NoUrlForThisUser').'</p>';
  264. }
  265. }
  266. /*
  267. ==============================================================================
  268. FOOTER
  269. ==============================================================================
  270. */
  271. Display::display_footer();
  272. ?>