functions.inc.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. require_once api_get_path(LIBRARY_PATH) . 'usermanager.lib.php';
  3. require_once api_get_path(LIBRARY_PATH) . 'course.lib.php';
  4. //define('USERINFO_TABLE', 'danone_userinfo');
  5. //define('DEFAULT_PASSWORD', 'danonelearning');
  6. //TODO : Please implements this function for this module to work.
  7. /**
  8. * Gets user info from external source
  9. * @param string login
  10. * @param string password
  11. * @return user array with at least the following fields:
  12. * firstname
  13. * lastname
  14. * status
  15. * email
  16. * login
  17. * password
  18. * or false if no data
  19. * */
  20. function external_get_user_info($login, $password) {
  21. //Those are the mandatory fields for user creation.
  22. //See external_add_user function for all the fields you can have.
  23. $table = USERINFO_TABLE;
  24. $sql = "SELECT * from $table where username='" . Database::escape_string($login) . "'";
  25. $result = Database::query($sql);
  26. if (Database::num_rows($result) == 0) { //false password
  27. return false;
  28. }
  29. $user_info = Database::fetch_assoc($result);
  30. // User status
  31. $admin = false;
  32. switch ($user_info['status']) {
  33. case 'admin':
  34. $status = COURSEMANAGER;
  35. $admin = true;
  36. break;
  37. case 'teacher':
  38. $status = COURSEMANAGER;
  39. break;
  40. case 'user':
  41. $status = STUDENT;
  42. break;
  43. default:
  44. $status = STUDENT;
  45. }
  46. // Language
  47. switch ($user_info['language']) {
  48. case 'FR' :
  49. $language = 'french';
  50. break;
  51. case 'EN' :
  52. $language = 'english';
  53. break;
  54. default :
  55. $language = 'english';
  56. break;
  57. }
  58. //Can Send Message ?
  59. $can_send_message = ($user_info['can_send_message'] == 1) ? 'yes' : 'no';
  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. 'username' => $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. 'extra' => array(
  74. 'position_title' => $user_info['position_title'],
  75. 'country' => $user_info['country'],
  76. 'job_family' => $user_info['job_family'],
  77. 'country_bu' => $user_info['country_bu'],
  78. 'worldwide_bu' => $user_info['worldwide_bu'],
  79. 'profile_link' => $user_info['profile_link'],
  80. 'can_send_message' => $can_send_message,
  81. 'update_type' => 'external_logininfo')
  82. );
  83. return $u; //Please return false if user does not exist
  84. //return false;
  85. }
  86. /**
  87. * Return an array with all user info
  88. * @param associative array with at least thes fields setted :
  89. firstname, lastname, status, email, login, password
  90. * @return mixed new user id - if the new user creation succeeds, false otherwise
  91. * */
  92. function external_add_user($u) {
  93. //Setting default
  94. if (empty($u['password']))
  95. $u['password'] = null;
  96. if (empty($u['status']))
  97. $u['status'] = 5;
  98. if (!isset($u['official_code']))
  99. $u['official_code'] = '';
  100. if (!isset($u['language']))
  101. $u['language'] = '';
  102. if (!isset($u['phone']))
  103. $u['phone'] = '';
  104. if (!isset($u['picture_uri']))
  105. $u['picture_uri'] = '';
  106. if (!isset($u['auth_source']))
  107. $u['auth_source'] = PLATFORM_AUTH_SOURCE;
  108. if (!isset($u['expiration_date']))
  109. $u['expiration_date'] = '0000-00-00 00:00:00';
  110. if (!isset($u['active']))
  111. $u['active'] = 1;
  112. if (!isset($u['hr_dept_id']))
  113. $u['hr_dept_id'] = 0; //id of responsible HR
  114. if (!isset($u['extra']))
  115. $u['extra'] = null;
  116. if (!isset($u['encrypt_method']))
  117. $u['encrypt_method'] = '';
  118. $chamilo_uid = UserManager::create_user($u['firstname'], $u['lastname'], $u['status'], $u['email'], $u['username'], $u['password'], $u['official_code'], $u['language'], $u['phone'], $u['picture_uri'], $u['auth_source'], $u['expiration_date'], $u['active'], $u['hr_dept_id'], $u['extra'], $u['encrypt_method']);
  119. return $chamilo_uid;
  120. }
  121. /**
  122. * Update the user in chamilo database. It upgrade only info that is present in the
  123. * new_user array
  124. *
  125. * @param $new_user associative array with the value to upgrade
  126. * WARNING user_id key is MANDATORY
  127. * Possible keys are :
  128. * - firstname
  129. * - lastname
  130. * - username
  131. * - auth_source
  132. * - email
  133. * - status
  134. * - official_code
  135. * - phone
  136. * - picture_uri
  137. * - expiration_date
  138. * - active
  139. * - creator_id
  140. * - hr_dept_id
  141. * - extra : array of custom fields
  142. * - language
  143. * - courses : string of all courses code separated by '|'
  144. * - admin : boolean
  145. * @return boolean
  146. * @author ndiechburg <noel@cblue.be>
  147. * */
  148. function external_update_user($new_user) {
  149. $old_user = UserManager::get_user_info_by_id($new_user['user_id']);
  150. $u = array_merge($old_user, $new_user);
  151. $updated = UserManager::update_user($u['user_id'], $u['firstname'], $u['lastname'], $u['username'], 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'], '');
  152. if (isset($u['courses']) && !empty($u['courses'])) {
  153. $autoSubscribe = explode('|', $u['courses']);
  154. foreach ($autoSubscribe as $code) {
  155. if (CourseManager::course_exists($code)) {
  156. CourseManager::subscribe_user($u['user_id'], $code);
  157. }
  158. }
  159. }
  160. // Is User Admin ?
  161. //TODO decomments and check that user_is is not already in admin table
  162. /*
  163. if (isset($u['admin']) && $u['admin']){
  164. $table = Database::get_main_table(TABLE_MAIN_ADMIN);
  165. $res = Database::query("SELECT * from $table WHERE user_id = ".$u['user_id']);
  166. } */
  167. }
  168. ?>