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.
		
		
		
		
		
			
		
			
				
					
					
						
							649 lines
						
					
					
						
							22 KiB
						
					
					
				
			
		
		
	
	
							649 lines
						
					
					
						
							22 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
/**
 | 
						|
 * @package chamilo.webservices
 | 
						|
 */
 | 
						|
require_once __DIR__.'/../inc/global.inc.php';
 | 
						|
require_once __DIR__.'/webservice.php';
 | 
						|
 | 
						|
/**
 | 
						|
 * Web services available for the User module. This class extends the WS class.
 | 
						|
 */
 | 
						|
class WSUser extends WS
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Disables a user.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value
 | 
						|
     */
 | 
						|
    public function DisableUser(
 | 
						|
        $secret_key,
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value
 | 
						|
    ) {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            // Let the implementation handle it
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $result = $this->changeUserActiveState(
 | 
						|
                $user_id_field_name,
 | 
						|
                $user_id_value,
 | 
						|
                0
 | 
						|
            );
 | 
						|
            if ($result instanceof WSError) {
 | 
						|
                $this->handleError($result);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Disables multiple users.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param array Array of users with elements of the form
 | 
						|
     * array('user_id_field_name' => 'name_of_field', 'user_id_value' => 'value')
 | 
						|
     *
 | 
						|
     * @return array Array with elements like
 | 
						|
     *               array('user_id_value' => 'value', 'result' => array('code' => 0, 'message' => 'Operation was successful')).
 | 
						|
     *               Note that if the result array contains a code different
 | 
						|
     *               than 0, an error occured
 | 
						|
     */
 | 
						|
    public function DisableUsers($secret_key, $users)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            // Let the implementation handle it
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            return $this->changeUsersActiveState($users, 0);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Enables a user.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value
 | 
						|
     */
 | 
						|
    public function EnableUser($secret_key, $user_id_field_name, $user_id_value)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $result = $this->changeUserActiveState(
 | 
						|
                $user_id_field_name,
 | 
						|
                $user_id_value,
 | 
						|
                1
 | 
						|
            );
 | 
						|
            if ($result instanceof WSError) {
 | 
						|
                $this->handleError($result);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Enables multiple users.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param array Array of users with elements of the form
 | 
						|
     * array('user_id_field_name' => 'name_of_field', 'user_id_value' => 'value')
 | 
						|
     *
 | 
						|
     * @return array Array with elements like
 | 
						|
     *               array('user_id_value' => 'value', 'result' => array('code' => 0, 'message' => 'Operation was successful')).
 | 
						|
     *               Note that if the result array contains a code different
 | 
						|
     *               than 0, an error occured
 | 
						|
     */
 | 
						|
    public function EnableUsers($secret_key, $users)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            // Let the implementation handle it
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            return $this->changeUsersActiveState($users, 1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Deletes a user.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value
 | 
						|
     */
 | 
						|
    public function DeleteUser($secret_key, $user_id_field_name, $user_id_value)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $result = $this->deleteUserHelper(
 | 
						|
                $user_id_field_name,
 | 
						|
                $user_id_value
 | 
						|
            );
 | 
						|
            if ($result instanceof WSError) {
 | 
						|
                $this->handleError($result);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Deletes multiple users.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param array Array of users with elements of the form
 | 
						|
     * array('user_id_field_name' => 'name_of_field', 'user_id_value' => 'value')
 | 
						|
     *
 | 
						|
     * @return array Array with elements like
 | 
						|
     *               array('user_id_value' => 'value', 'result' => array('code' => 0, 'message' => 'Operation was successful')).
 | 
						|
     *               Note that if the result array contains a code different
 | 
						|
     *               than 0, an error occured
 | 
						|
     */
 | 
						|
    public function DeleteUsers($secret_key, $users)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $results = [];
 | 
						|
            foreach ($users as $user) {
 | 
						|
                $result_tmp = [];
 | 
						|
                $result_op = $this->deleteUserHelper(
 | 
						|
                    $user['user_id_field_name'],
 | 
						|
                    $user['user_id_value']
 | 
						|
                );
 | 
						|
                $result_tmp['user_id_value'] = $user['user_id_value'];
 | 
						|
                if ($result_op instanceof WSError) {
 | 
						|
                    // Return the error in the results
 | 
						|
                    $result_tmp['result'] = $result_op->toArray();
 | 
						|
                } else {
 | 
						|
                    $result_tmp['result'] = $this->getSuccessfulResult();
 | 
						|
                }
 | 
						|
                $results[] = $result_tmp;
 | 
						|
            }
 | 
						|
 | 
						|
            return $results;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a user.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param string User first name
 | 
						|
     * @param string User last name
 | 
						|
     * @param int User status
 | 
						|
     * @param string Login name
 | 
						|
     * @param string Password (encrypted or not)
 | 
						|
     * @param string Encrypt method. Leave blank if you are passing the password in clear text,
 | 
						|
     * set to the encrypt method used to encrypt the password otherwise. Remember
 | 
						|
     * to include the salt in the extra fields if you are encrypting the password
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value. Leave blank if you are using the internal user_id
 | 
						|
     * @param int Visibility. Set by default to 1
 | 
						|
     * @param string User email. Set by default to an empty string
 | 
						|
     * @param string Language. Set by default to english
 | 
						|
     * @param string Phone. Set by default to an empty string
 | 
						|
     * @param string Expiration date. Set to null by default
 | 
						|
     * @param array Extra fields. An array with elements of the form
 | 
						|
     * array('field_name' => 'name_of_the_field', 'field_value' => 'value_of_the_field'). Set to an empty array by default
 | 
						|
     *
 | 
						|
     * @return int New user id generated by the system
 | 
						|
     */
 | 
						|
    public function CreateUser(
 | 
						|
        $secret_key,
 | 
						|
        $firstname,
 | 
						|
        $lastname,
 | 
						|
        $status,
 | 
						|
        $login,
 | 
						|
        $password,
 | 
						|
        $encrypt_method,
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value,
 | 
						|
        $visibility = 1,
 | 
						|
        $email = '',
 | 
						|
        $language = 'english',
 | 
						|
        $phone = '',
 | 
						|
        $expiration_date = '0000-00-00 00:00:00',
 | 
						|
        $extras = []
 | 
						|
    ) {
 | 
						|
        // First, verify the secret key
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $result = $this->createUserHelper(
 | 
						|
                $firstname,
 | 
						|
                $lastname,
 | 
						|
                $status,
 | 
						|
                $login,
 | 
						|
                $password,
 | 
						|
                $encrypt_method,
 | 
						|
                $user_id_field_name,
 | 
						|
                $user_id_value,
 | 
						|
                $visibility,
 | 
						|
                $email,
 | 
						|
                $language,
 | 
						|
                $phone,
 | 
						|
                $expiration_date,
 | 
						|
                $extras
 | 
						|
            );
 | 
						|
            if ($result instanceof WSError) {
 | 
						|
                $this->handleError($result);
 | 
						|
            } else {
 | 
						|
                return $result;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates multiple users.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param array Users array. Each member of this array must follow the structure imposed by the CreateUser method
 | 
						|
     *
 | 
						|
     * @return array Array with elements of the form
 | 
						|
     *               array('user_id_value' => 'original value sent', 'user_id_generated' => 'value_generated', 'result' => array('code' => 0, 'message' => 'Operation was successful'))
 | 
						|
     */
 | 
						|
    public function CreateUsers($secret_key, $users)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $results = [];
 | 
						|
            foreach ($users as $user) {
 | 
						|
                $result_tmp = [];
 | 
						|
                // re-initialize variables just in case
 | 
						|
                $firstname = $lastname = $status = $login = $password = $encrypt_method = $user_id_field_name = $user_id_value = $visibility = $email = $language = $phone = $expiration_date = $extras = null;
 | 
						|
                extract($user);
 | 
						|
                $result = $this->createUserHelper(
 | 
						|
                    $firstname,
 | 
						|
                    $lastname,
 | 
						|
                    $status,
 | 
						|
                    $login,
 | 
						|
                    $password,
 | 
						|
                    $encrypt_method,
 | 
						|
                    $user_id_field_name,
 | 
						|
                    $user_id_value,
 | 
						|
                    $visibility,
 | 
						|
                    $email,
 | 
						|
                    $language,
 | 
						|
                    $phone,
 | 
						|
                    $expiration_date,
 | 
						|
                    $extras
 | 
						|
                );
 | 
						|
                if ($result instanceof WSError) {
 | 
						|
                    $result_tmp['result'] = $result->toArray();
 | 
						|
                    $result_tmp['user_id_value'] = $user_id_value;
 | 
						|
                    $result_tmp['user_id_generated'] = 0;
 | 
						|
                } else {
 | 
						|
                    $result_tmp['result'] = $this->getSuccessfulResult();
 | 
						|
                    $result_tmp['user_id_value'] = $user_id_value;
 | 
						|
                    $result_tmp['user_id_generated'] = $result;
 | 
						|
                }
 | 
						|
                $results[] = $result_tmp;
 | 
						|
            }
 | 
						|
 | 
						|
            return $results;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Edits user info.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" in order to use internal system id
 | 
						|
     * @param string User id value
 | 
						|
     * @param string First name
 | 
						|
     * @param string Last name
 | 
						|
     * @param int User status
 | 
						|
     * @param string Login name
 | 
						|
     * @param string Password. Leave blank if you don't want to update it
 | 
						|
     * @param string Encrypt method
 | 
						|
     * @param string User email
 | 
						|
     * @param string Language. Set by default to english
 | 
						|
     * @param string Phone. Set by default to an empty string
 | 
						|
     * @param string Expiration date. Set to null by default
 | 
						|
     * @param array Extra fields. An array with elements of the form
 | 
						|
     * ('field_name' => 'name_of_the_field', 'field_value' => 'value_of_the_field'). Leave empty if you don't want to update
 | 
						|
     */
 | 
						|
    public function EditUser(
 | 
						|
        $secret_key,
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value,
 | 
						|
        $firstname,
 | 
						|
        $lastname,
 | 
						|
        $status,
 | 
						|
        $loginname,
 | 
						|
        $password,
 | 
						|
        $encrypt_method,
 | 
						|
        $email,
 | 
						|
        $language,
 | 
						|
        $phone,
 | 
						|
        $expiration_date,
 | 
						|
        $extras
 | 
						|
    ) {
 | 
						|
        // First, verify the secret key
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $extras_associative = [];
 | 
						|
            if (!empty($extras)) {
 | 
						|
                foreach ($extras as $extra) {
 | 
						|
                    $extras_associative[$extra['field_name']] = $extra['field_value'];
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            $result = $this->editUserHelper(
 | 
						|
                $user_id_field_name,
 | 
						|
                $user_id_value,
 | 
						|
                $firstname,
 | 
						|
                $lastname,
 | 
						|
                $status,
 | 
						|
                $loginname,
 | 
						|
                $password,
 | 
						|
                $encrypt_method,
 | 
						|
                $email,
 | 
						|
                $language,
 | 
						|
                $phone,
 | 
						|
                $expiration_date,
 | 
						|
                $extras_associative
 | 
						|
            );
 | 
						|
            if ($result instanceof WSError) {
 | 
						|
                $this->handleError($result);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Edits multiple users.
 | 
						|
     *
 | 
						|
     * @param string API secret key
 | 
						|
     * @param array Users array. Each member of this array must follow the structure imposed by the EditUser method
 | 
						|
     *
 | 
						|
     * @return array Array with elements like
 | 
						|
     *               array('user_id_value' => 'value', 'result' => array('code' => 0, 'message' => 'Operation was successful')).
 | 
						|
     *               Note that if the result array contains a code different
 | 
						|
     *               than 0, an error occured
 | 
						|
     */
 | 
						|
    public function EditUsers($secret_key, $users)
 | 
						|
    {
 | 
						|
        $verifKey = $this->verifyKey($secret_key);
 | 
						|
        if ($verifKey instanceof WSError) {
 | 
						|
            $this->handleError($verifKey);
 | 
						|
        } else {
 | 
						|
            $results = [];
 | 
						|
            foreach ($users as $user) {
 | 
						|
                $result_tmp = [];
 | 
						|
                // re-initialize variables just in case
 | 
						|
                $user_id_field_name = $user_id_value = $firstname = $lastname = $status = $loginname = $password = $encrypt_method = $email = $language = $phone = $expiration_date = $extras = null;
 | 
						|
                extract($user);
 | 
						|
                $result_op = $this->editUserHelper(
 | 
						|
                    $user_id_field_name,
 | 
						|
                    $user_id_value,
 | 
						|
                    $firstname,
 | 
						|
                    $lastname,
 | 
						|
                    $status,
 | 
						|
                    $loginname,
 | 
						|
                    $password,
 | 
						|
                    $encrypt_method,
 | 
						|
                    $email,
 | 
						|
                    $language,
 | 
						|
                    $phone,
 | 
						|
                    $expiration_date,
 | 
						|
                    $extras
 | 
						|
                );
 | 
						|
                $result_tmp['user_id_value'] = $user['user_id_value'];
 | 
						|
                if ($result_op instanceof WSError) {
 | 
						|
                    // Return the error in the results
 | 
						|
                    $result_tmp['result'] = $result_op->toArray();
 | 
						|
                } else {
 | 
						|
                    $result_tmp['result'] = $this->getSuccessfulResult();
 | 
						|
                }
 | 
						|
                $results[] = $result_tmp;
 | 
						|
            }
 | 
						|
 | 
						|
            return $results;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Enables or disables a user.
 | 
						|
     *
 | 
						|
     * @param string User id field name
 | 
						|
     * @param string User id value
 | 
						|
     * @param int Set to 1 to enable and to 0 to disable
 | 
						|
     *
 | 
						|
     * @return int
 | 
						|
     */
 | 
						|
    protected function changeUserActiveState(
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value,
 | 
						|
        $state
 | 
						|
    ) {
 | 
						|
        $user_id = $this->getUserId($user_id_field_name, $user_id_value);
 | 
						|
        if ($user_id instanceof WSError) {
 | 
						|
            return $user_id;
 | 
						|
        } else {
 | 
						|
            if ($state == 0) {
 | 
						|
                UserManager::disable($user_id);
 | 
						|
            } else {
 | 
						|
                if ($state == 1) {
 | 
						|
                    UserManager::enable($user_id);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Enables or disables multiple users.
 | 
						|
     *
 | 
						|
     * @param array Users
 | 
						|
     * @param int Set to 1 to enable and to 0 to disable
 | 
						|
     *
 | 
						|
     * @return array Array of results
 | 
						|
     */
 | 
						|
    protected function changeUsersActiveState($users, $state)
 | 
						|
    {
 | 
						|
        $results = [];
 | 
						|
        foreach ($users as $user) {
 | 
						|
            $result_tmp = [];
 | 
						|
            $result_op = $this->changeUserActiveState(
 | 
						|
                $user['user_id_field_name'],
 | 
						|
                $user['user_id_value'],
 | 
						|
                $state
 | 
						|
            );
 | 
						|
            $result_tmp['user_id_value'] = $user['user_id_value'];
 | 
						|
            if ($result_op instanceof WSError) {
 | 
						|
                // Return the error in the results
 | 
						|
                $result_tmp['result'] = $result_op->toArray();
 | 
						|
            } else {
 | 
						|
                $result_tmp['result'] = $this->getSuccessfulResult();
 | 
						|
            }
 | 
						|
            $results[] = $result_tmp;
 | 
						|
        }
 | 
						|
 | 
						|
        return $results;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Deletes a user (helper method).
 | 
						|
     *
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value
 | 
						|
     *
 | 
						|
     * @return mixed True if user was successfully deleted, WSError otherwise
 | 
						|
     */
 | 
						|
    protected function deleteUserHelper($user_id_field_name, $user_id_value)
 | 
						|
    {
 | 
						|
        $user_id = $this->getUserId($user_id_field_name, $user_id_value);
 | 
						|
        if ($user_id instanceof WSError) {
 | 
						|
            return $user_id;
 | 
						|
        } else {
 | 
						|
            if (!UserManager::delete_user($user_id)) {
 | 
						|
                return new WSError(
 | 
						|
                    101,
 | 
						|
                    "There was a problem while deleting this user"
 | 
						|
                );
 | 
						|
            } else {
 | 
						|
                return true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a user (helper method).
 | 
						|
     *
 | 
						|
     * @param string User first name
 | 
						|
     * @param string User last name
 | 
						|
     * @param int User status
 | 
						|
     * @param string Login name
 | 
						|
     * @param string Password (encrypted or not)
 | 
						|
     * @param string Encrypt method. Leave blank if you are passing the password in clear text,
 | 
						|
     * set to the encrypt method used to encrypt the password otherwise. Remember
 | 
						|
     * to include the salt in the extra fields if you are encrypting the password
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" as the field name if you want to use the internal user_id
 | 
						|
     * @param string User id value. Leave blank if you are using the internal user_id
 | 
						|
     * @param int visibility
 | 
						|
     * @param string user email
 | 
						|
     * @param string language
 | 
						|
     * @param string phone
 | 
						|
     * @param string Expiration date
 | 
						|
     * @param array Extra fields. An array with elements of the form
 | 
						|
     * array('field_name' => 'name_of_the_field', 'field_value' => 'value_of_the_field').
 | 
						|
     *
 | 
						|
     * @return mixed New user id generated by the system, WSError otherwise
 | 
						|
     */
 | 
						|
    protected function createUserHelper(
 | 
						|
        $firstname,
 | 
						|
        $lastname,
 | 
						|
        $status,
 | 
						|
        $login,
 | 
						|
        $password,
 | 
						|
        $encrypt_method,
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value,
 | 
						|
        $visibility,
 | 
						|
        $email,
 | 
						|
        $language,
 | 
						|
        $phone,
 | 
						|
        $expiration_date,
 | 
						|
        $extras = []
 | 
						|
    ) {
 | 
						|
        // Add the original user id field name and value to the extra fields if needed
 | 
						|
        $extras_associative = [];
 | 
						|
        if ($user_id_field_name != "chamilo_user_id") {
 | 
						|
            $extras_associative[$user_id_field_name] = $user_id_value;
 | 
						|
        }
 | 
						|
        if (!empty($extras)) {
 | 
						|
            foreach ($extras as $extra) {
 | 
						|
                $extras_associative[$extra['field_name']] = $extra['field_value'];
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $result = UserManager::create_user(
 | 
						|
            $firstname,
 | 
						|
            $lastname,
 | 
						|
            $status,
 | 
						|
            $email,
 | 
						|
            $login,
 | 
						|
            $password,
 | 
						|
            '',
 | 
						|
            $language,
 | 
						|
            $phone,
 | 
						|
            '',
 | 
						|
            PLATFORM_AUTH_SOURCE,
 | 
						|
            $expiration_date,
 | 
						|
            $visibility,
 | 
						|
            0,
 | 
						|
            $extras_associative,
 | 
						|
            $encrypt_method
 | 
						|
        );
 | 
						|
        if (!$result) {
 | 
						|
            return new WSError(104, 'There was an error creating the user');
 | 
						|
        } else {
 | 
						|
            return $result;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Edits user info (helper method).
 | 
						|
     *
 | 
						|
     * @param string User id field name. Use "chamilo_user_id" in order to use internal system id
 | 
						|
     * @param string User id value
 | 
						|
     * @param string First name
 | 
						|
     * @param string Last name
 | 
						|
     * @param int User status
 | 
						|
     * @param string Login name
 | 
						|
     * @param string Password. Leave blank if you don't want to update it
 | 
						|
     * @param string Encrypt method
 | 
						|
     * @param string User email
 | 
						|
     * @param string Language. Set by default to english
 | 
						|
     * @param string Phone. Set by default to an empty string
 | 
						|
     * @param string Expiration date. Set to null by default
 | 
						|
     * @param array Extra fields. An array with elements of the form
 | 
						|
     * ('field_name' => 'name_of_the_field', 'field_value' => 'value_of_the_field').
 | 
						|
     * Leave empty if you don't want to update
 | 
						|
     *
 | 
						|
     * @return mixed True if user was successfully updated, WSError otherwise
 | 
						|
     */
 | 
						|
    protected function editUserHelper(
 | 
						|
        $user_id_field_name,
 | 
						|
        $user_id_value,
 | 
						|
        $firstname,
 | 
						|
        $lastname,
 | 
						|
        $status,
 | 
						|
        $loginname,
 | 
						|
        $password,
 | 
						|
        $encrypt_method,
 | 
						|
        $email,
 | 
						|
        $language,
 | 
						|
        $phone,
 | 
						|
        $expiration_date,
 | 
						|
        $extras
 | 
						|
    ) {
 | 
						|
        $user_id = $this->getUserId($user_id_field_name, $user_id_value);
 | 
						|
        if ($user_id instanceof WSError) {
 | 
						|
            return $user_id;
 | 
						|
        } else {
 | 
						|
            if ($password == '') {
 | 
						|
                $password = null;
 | 
						|
            }
 | 
						|
            $user_info = api_get_user_info($user_id);
 | 
						|
            if (count($extras) == 0) {
 | 
						|
                $extras = null;
 | 
						|
            }
 | 
						|
 | 
						|
            $result = UserManager::update_user(
 | 
						|
                $user_id,
 | 
						|
                $firstname,
 | 
						|
                $lastname,
 | 
						|
                $loginname,
 | 
						|
                $password,
 | 
						|
                PLATFORM_AUTH_SOURCE,
 | 
						|
                $email,
 | 
						|
                $status,
 | 
						|
                '',
 | 
						|
                $phone,
 | 
						|
                $user_info['picture_uri'],
 | 
						|
                $expiration_date,
 | 
						|
                $user_info['active'],
 | 
						|
                null,
 | 
						|
                $user_info['hr_dept_id'],
 | 
						|
                $extras,
 | 
						|
                $encrypt_method
 | 
						|
            );
 | 
						|
            if (!$result) {
 | 
						|
                return new WSError(105, 'There was an error updating the user');
 | 
						|
            } else {
 | 
						|
                return $result;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 |