123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- <?php
- //define('USERINFO_TABLE', 'danone_userinfo');
- //define('DEFAULT_PASSWORD', 'danonelearning');
- //TODO : Please implements this function for this module to work.
- /**
- * Gets user info from external source.
- *
- * @param string login
- * @param string password
- *
- * @return user array with at least the following fields:
- * firstname
- * lastname
- * status
- * email
- * login
- * password
- * or false if no data
- * */
- function external_get_user_info($login, $password)
- {
- //Those are the mandatory fields for user creation.
- //See external_add_user function for all the fields you can have.
- $table = USERINFO_TABLE;
- $sql = "SELECT * from $table where username='".Database::escape_string($login)."'";
- $result = Database::query($sql);
- if (Database::num_rows($result) == 0) { //false password
- return false;
- }
- $user_info = Database::fetch_assoc($result);
- // User status
- $admin = false;
- switch ($user_info['status']) {
- case 'admin':
- $status = COURSEMANAGER;
- $admin = true;
- break;
- case 'teacher':
- $status = COURSEMANAGER;
- break;
- case 'user':
- $status = STUDENT;
- break;
- default:
- $status = STUDENT;
- }
- // Language
- switch ($user_info['language']) {
- case 'FR':
- $language = 'french';
- break;
- case 'EN':
- $language = 'english';
- break;
- default:
- $language = 'english';
- break;
- }
- //Can Send Message ?
- $can_send_message = ($user_info['can_send_message'] == 1) ? 'yes' : 'no';
- $u = [
- 'firstname' => $user_info['firstname'],
- 'lastname' => $user_info['lastname'],
- 'status' => $status,
- 'admin' => $admin,
- 'email' => $user_info['email'],
- 'username' => $user_info['username'],
- 'language' => $language,
- 'password' => DEFAULT_PASSWORD,
- 'courses' => $user_info['courses'],
- 'profile_link' => $user_info['profile_link'],
- 'worldwide_bu' => $user_info['worlwide_bu'],
- 'manager' => $user_info['manager'],
- 'extra' => [
- 'position_title' => $user_info['position_title'],
- 'country' => $user_info['country'],
- 'job_family' => $user_info['job_family'],
- 'country_bu' => $user_info['country_bu'],
- 'worldwide_bu' => $user_info['worldwide_bu'],
- 'profile_link' => $user_info['profile_link'],
- 'can_send_message' => $can_send_message,
- 'update_type' => 'external_logininfo', ],
- ];
- return $u; //Please return false if user does not exist
- //return false;
- }
- /**
- * Return an array with all user info.
- *
- * @param associative array with at least thes fields setted :
- firstname, lastname, status, email, login, password
- * @return mixed new user id - if the new user creation succeeds, false otherwise
- * */
- function external_add_user($u)
- {
- //Setting default
- if (empty($u['password'])) {
- $u['password'] = null;
- }
- if (empty($u['status'])) {
- $u['status'] = 5;
- }
- if (!isset($u['official_code'])) {
- $u['official_code'] = '';
- }
- if (!isset($u['language'])) {
- $u['language'] = '';
- }
- if (!isset($u['phone'])) {
- $u['phone'] = '';
- }
- if (!isset($u['picture_uri'])) {
- $u['picture_uri'] = '';
- }
- if (!isset($u['auth_source'])) {
- $u['auth_source'] = PLATFORM_AUTH_SOURCE;
- }
- if (!isset($u['expiration_date'])) {
- $u['expiration_date'] = '';
- }
- if (!isset($u['active'])) {
- $u['active'] = 1;
- }
- if (!isset($u['hr_dept_id'])) {
- $u['hr_dept_id'] = 0;
- } //id of responsible HR
- if (!isset($u['extra'])) {
- $u['extra'] = null;
- }
- if (!isset($u['encrypt_method'])) {
- $u['encrypt_method'] = '';
- }
- $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']
- );
- return $chamilo_uid;
- }
- /**
- * Update the user in chamilo database. It upgrade only info that is present in the
- * new_user array.
- *
- * @param $new_user associative array with the value to upgrade
- * WARNING user_id key is MANDATORY
- * Possible keys are :
- * - firstname
- * - lastname
- * - username
- * - auth_source
- * - email
- * - status
- * - official_code
- * - phone
- * - picture_uri
- * - expiration_date
- * - active
- * - creator_id
- * - hr_dept_id
- * - extra : array of custom fields
- * - language
- * - courses : string of all courses code separated by '|'
- * - admin : boolean
- *
- * @return bool|null
- *
- * @author ndiechburg <noel@cblue.be>
- * */
- function external_update_user($new_user)
- {
- $old_user = api_get_user_info($new_user['user_id']);
- $u = array_merge($old_user, $new_user);
- $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'],
- ''
- );
- if (isset($u['courses']) && !empty($u['courses'])) {
- $autoSubscribe = explode('|', $u['courses']);
- foreach ($autoSubscribe as $code) {
- if (CourseManager::course_exists($code)) {
- CourseManager::subscribeUser($u['user_id'], $code, STUDENT);
- }
- }
- }
- // Is User Admin ?
- //TODO decomments and check that user_is is not already in admin table
- /*
- if (isset($u['admin']) && $u['admin']){
- $table = Database::get_main_table(TABLE_MAIN_ADMIN);
- $res = Database::query("SELECT * from $table WHERE user_id = ".$u['user_id']);
- } */
- }
|