You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
6.2 KiB
225 lines
6.2 KiB
<?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 = array(
|
|
'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' => array(
|
|
'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 boolean|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::subscribe_user($u['user_id'], $code);
|
|
}
|
|
}
|
|
}
|
|
// 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']);
|
|
} */
|
|
} |