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