parent
1e1a25e3a4
commit
2b47354113
@ -0,0 +1,127 @@ |
||||
<?php //Script loaded by local.inc.php providing update user information of type external_logininfo.
|
||||
/* |
||||
This script must not exit. |
||||
*/ |
||||
require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php'); |
||||
require_once(api_get_path(LIBRARY_PATH).'course.lib.php'); |
||||
define('USERINFO_TABLE', 'userinfo'); |
||||
//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; |
||||
} |
||||
|
||||
$u = array( |
||||
'firstname' => $user_info['firstname'], |
||||
'lastname' => $user_info['lastname'], |
||||
'status' => $status, |
||||
'admin' => $admin, |
||||
'email' => $user_info['email'], |
||||
'login' => $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'], |
||||
'country_bu' => $user_info['country_bu'], |
||||
'extra' => array( |
||||
'position_title' => $user_info['position_title'], |
||||
'country' => $user_info['country'], |
||||
'job_family' => $user_info['job_family'], |
||||
'update_type' => 'external_logininfo') |
||||
); |
||||
|
||||
return $u; //Please return false if user does not exist |
||||
} |
||||
|
||||
/** |
||||
* update user info in database |
||||
**/ |
||||
function external_update_user($u){ |
||||
$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'],''); |
||||
if(!empty($user['courses'])){ |
||||
$autoSubscribe = explode('|', $u['courses']); |
||||
foreach ($autoSubscribe as $code) { |
||||
if (CourseManager::course_exists($code)) { |
||||
CourseManager::subscribe_user($_user['user_id'], $code); |
||||
} |
||||
} |
||||
} |
||||
// Is User Admin ? |
||||
if ($user['admin']){ |
||||
$is_platformAdmin = true; |
||||
Database::query("INSERT INTO admin values ('$chamilo_uid')"); |
||||
} |
||||
|
||||
} |
||||
//MAIN CODE |
||||
|
||||
//$uData variable is set in local.inc.php |
||||
$user = UserManager::get_user_info_by_id($uData['user_id']); |
||||
$new_user = external_get_user_info($login); |
||||
$user['firstname'] = $new_user['firstname']; |
||||
$user['lastname'] = $new_user['lastname']; |
||||
$user['status'] = $new_user['status']; |
||||
$user['admin'] = $new_user['admin']; |
||||
$user['email'] = $new_user['email']; |
||||
$user['username'] = $new_user['login']; |
||||
$user['profile_link'] = $new_user['profile_link']; |
||||
$user['worldwide_bu'] = $new_user['worldwide_bu']; |
||||
$user['manager'] = $new_user['manager']; |
||||
$user['country_bu'] = $new_user['country_bu']; |
||||
$user['extra'] = $new_user['extra']; |
||||
|
||||
if ($new_user !== false) { |
||||
$new_user['user_id'] = $uData['user_id']; |
||||
external_update_user($new_user); |
||||
} |
||||
?> |
||||
Loading…
Reference in new issue