/** * Update user information with all the parameters passed to this function * @param int The ID of the user to be updated * @param string The user's firstname * @param string The user's lastname * @param string The user's username (login) * @param string The user's password * @param string The authentication source (default: "platform") * @param string The user's e-mail address * @param int The user's status * @param string The user's official code (usually just an internal institutional code) * @param string The user's phone number * @param string The user's picture URL (internal to the Chamilo directory) * @param int The user ID of the person who registered this user (optional, defaults to null) * @param int The department of HR in which the user is registered (optional, defaults to 0) * @param array A series of additional fields to add to this user as extra fields (optional, defaults to null) * @return boolean true if the user information was updated * @assert (false) === false */ public static function update_user($user_id, $firstname, $lastname, $username, $password = null, $auth_source = null, $email = null, $status = STUDENT, $official_code = null, $phone = null, $picture_uri = null, $expiration_date = null, $active = 1, $creator_id = null, $hr_dept_id = 0, $extra = null, $language = 'english', $encrypt_method = '', $send_email = false, $reset_password = 0) { global $_configuration; $original_password = $password; $user_info = api_get_user_info($user_id, false, true); if ($reset_password == 0) { $password = null; $auth_source = $user_info['auth_source']; } elseif ($reset_password == 1) { $original_password = $password = api_generate_password(); $auth_source = PLATFORM_AUTH_SOURCE; } elseif ($reset_password == 2) { $password = $password; $auth_source = PLATFORM_AUTH_SOURCE; } elseif ($reset_password == 3) { $password = $password; $auth_source = $auth_source; } if ($user_id != strval(intval($user_id))) { return false; } if ($user_id === false) { return false; } // Checking the user language. $languages = api_get_platform_isocodes(); if (!in_array($language, $languages)) { $language = Container::getTranslator()->getLocale(); } if (!is_null($password)) { if ($encrypt_method == '') { $password = api_get_encrypted_password($password); } else { if ($_configuration['password_encryption'] === $encrypt_method) { if ($encrypt_method == 'md5' && !preg_match('/^[A-Fa-f0-9]{32}$/', $password)) { return api_set_failure('encrypt_method invalid'); } else { if ($encrypt_method == 'sha1' && !preg_match('/^[A-Fa-f0-9]{40}$/', $password)) { return api_set_failure('encrypt_method invalid'); } } } else { return api_set_failure('encrypt_method invalid'); } } } $em = Database::getManager(); /** @var Chamilo\UserBundle\Entity\User $user */ $user = $em->getRepository('ChamiloUserBundle:User')->find($user_id); if (is_array($extra) && count($extra) > 0) { $res = true; foreach ($extra as $name => $value) { //$userField = $em->getRepository('ChamiloUserBundle:UserField')->findOneByName($name); $res = $res && self::update_extra_field_value($user_id, $name, $value); } } if ($user_info['active'] != $active) { self::change_active_state($user_id, $active); } // Updating user $user->setLastname($lastname)->setFirstname($firstname)->setUsername($username)->setAuthSource($auth_source)->setLanguage($language)->setEmail($email)->setOfficialCode($official_code)->setPhone($phone)->setPictureUri($picture_uri)->setExpirationDate($expiration_date)->setActive($active)->setHrDeptId($hr_dept_id); if (!empty($original_password)) { $user->setPlainPassword($original_password); } if (is_array($status)) { foreach ($status as $groupId) { $group = $em->getRepository('ChamiloUserBundle:Group')->find($groupId); $user->addGroup($group); } } else { $group = $em->getRepository('ChamiloUserBundle:Group')->find($status); $user->addGroup($group); } Container::getUserManager()->updateUser($user, true); if (!empty($email) && $send_email) { $recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS); $emailsubject = '[' . api_get_setting('platform.site_name') . '] ' . get_lang('YourReg') . ' ' . api_get_setting('platform.site_name'); $sender_name = api_get_person_name(api_get_setting('platform.administrator_name'), api_get_setting('platform.administrator_surname'), null, PERSON_NAME_EMAIL_ADDRESS); $email_admin = api_get_setting('platform.administrator_email'); $emailbody = null; /*api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);*/ } $user_info = api_get_user_info($user_id); Event::addEvent(LOG_USER_UPDATED, LOG_USER_ID, $user_id, api_get_utc_datetime(), api_get_user_id()); Event::addEvent(LOG_USER_UPDATED, LOG_USER_OBJECT, $user_info, api_get_utc_datetime(), api_get_user_id()); return $user_id; }