updateUser.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php //Script loaded by local.inc.php providing update user information of type external_logininfo.
  2. /*
  3. This script must not exit.
  4. */
  5. require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php');
  6. require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
  7. define('USERINFO_TABLE', 'userinfo');
  8. //TODO : Please implements this function for this module to work.
  9. /**
  10. * Gets user info from external source
  11. * @param string login
  12. * @param string password
  13. * @return user array with at least the following fields:
  14. * firstname
  15. * lastname
  16. * status
  17. * email
  18. * login
  19. * password
  20. * or false if no data
  21. **/
  22. function external_get_user_info($login, $password){
  23. //Those are the mandatory fields for user creation.
  24. //See external_add_user function for all the fields you can have.
  25. $table = USERINFO_TABLE;
  26. $sql = "SELECT * from $table where username='".Database::escape_string($login)."'";
  27. $result = Database::query($sql);
  28. if (Database::num_rows($result) == 0 ) { //false password
  29. return false;
  30. }
  31. $user_info = Database::fetch_assoc($result);
  32. // User status
  33. $admin = false;
  34. switch($user_info['status']){
  35. case 'admin':
  36. $status = COURSEMANAGER;
  37. $admin = true;
  38. break;
  39. case 'teacher':
  40. $status = COURSEMANAGER;
  41. break;
  42. case 'user':
  43. $status = STUDENT;
  44. break;
  45. default:
  46. $status = STUDENT;
  47. }
  48. // Language
  49. switch($user_info['language']){
  50. case 'FR' :
  51. $language = 'french';
  52. break;
  53. case 'EN' :
  54. $language = 'english';
  55. break;
  56. default :
  57. $language = 'english';
  58. break;
  59. }
  60. $u = array(
  61. 'firstname' => $user_info['firstname'],
  62. 'lastname' => $user_info['lastname'],
  63. 'status' => $status,
  64. 'admin' => $admin,
  65. 'email' => $user_info['email'],
  66. 'login' => $user_info['username'],
  67. 'language' => $language,
  68. 'password' => DEFAULT_PASSWORD,
  69. 'courses' => $user_info['courses'],
  70. 'profile_link' => $user_info['profile_link'],
  71. 'worldwide_bu' => $user_info['worlwide_bu'],
  72. 'manager' => $user_info['manager'],
  73. 'country_bu' => $user_info['country_bu'],
  74. 'extra' => array(
  75. 'position_title' => $user_info['position_title'],
  76. 'country' => $user_info['country'],
  77. 'job_family' => $user_info['job_family'],
  78. 'update_type' => 'external_logininfo')
  79. );
  80. return $u; //Please return false if user does not exist
  81. }
  82. /**
  83. * update user info in database
  84. **/
  85. function external_update_user($u){
  86. $updated = UserManager::update_user($u['user_id'], $u['firstname'], $u['lastname'], $u['login'], null, $u['auth_source'], $u['email'], $u['status'], $u['official_code'], $u['phone'], $u['picture_uri'], $u['expiration_date'], $u['active'], $u['creator_id'], $u['hr_dept_id'], $u['extra'], $u['language'],'');
  87. if(!empty($user['courses'])){
  88. $autoSubscribe = explode('|', $u['courses']);
  89. foreach ($autoSubscribe as $code) {
  90. if (CourseManager::course_exists($code)) {
  91. CourseManager::subscribe_user($_user['user_id'], $code);
  92. }
  93. }
  94. }
  95. // Is User Admin ?
  96. if ($user['admin']){
  97. $is_platformAdmin = true;
  98. Database::query("INSERT INTO admin values ('$chamilo_uid')");
  99. }
  100. }
  101. //MAIN CODE
  102. //$uData variable is set in local.inc.php
  103. $user = UserManager::get_user_info_by_id($uData['user_id']);
  104. $new_user = external_get_user_info($login);
  105. $user['firstname'] = $new_user['firstname'];
  106. $user['lastname'] = $new_user['lastname'];
  107. $user['status'] = $new_user['status'];
  108. $user['admin'] = $new_user['admin'];
  109. $user['email'] = $new_user['email'];
  110. $user['username'] = $new_user['login'];
  111. $user['profile_link'] = $new_user['profile_link'];
  112. $user['worldwide_bu'] = $new_user['worldwide_bu'];
  113. $user['manager'] = $new_user['manager'];
  114. $user['country_bu'] = $new_user['country_bu'];
  115. $user['extra'] = $new_user['extra'];
  116. if ($new_user !== false) {
  117. $new_user['user_id'] = $uData['user_id'];
  118. external_update_user($new_user);
  119. }
  120. ?>