From c6991d19842a2f78053d4a2bbe4eeca54e2899d4 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 2 Aug 2018 13:57:52 +0200 Subject: [PATCH] Add new event when user confirms the email LOG_USER_CONFIRMED_EMAIL See #2554 --- main/auth/user_mail_confirmation.php | 13 ++++- main/inc/lib/api.lib.php | 1 + main/inc/lib/usermanager.lib.php | 49 ++++++++++--------- .../UserBundle/Entity/Manager/UserManager.php | 3 +- src/Chamilo/UserBundle/Entity/User.php | 8 +++ 5 files changed, 48 insertions(+), 26 deletions(-) diff --git a/main/auth/user_mail_confirmation.php b/main/auth/user_mail_confirmation.php index 5cc860b171..557cf539ad 100644 --- a/main/auth/user_mail_confirmation.php +++ b/main/auth/user_mail_confirmation.php @@ -9,7 +9,6 @@ if (!ctype_alnum($token)) { $token = ''; } -/** @var \Chamilo\UserBundle\Entity\User $user */ $user = UserManager::getManager()->findUserByConfirmationToken($token); if ($user) { @@ -28,13 +27,23 @@ if ($user) { if (!empty($_GET['s'])) { $sessionId = (int) $_GET['s']; } + // Get URL to a course, to a session, or an empty string $courseUrl = api_get_course_url($courseCode, $sessionId); if (!empty($courseUrl)) { $url = $courseUrl; } - Display::addFlash(Display::return_message(get_lang('UserConfirmedNowYouCanLogInThePlatform'), 'success')); + Event::addEvent( + LOG_USER_CONFIRMED_EMAIL, + LOG_USER_OBJECT, + api_get_user_info($user->getId()), + api_get_utc_datetime() + ); + + Display::addFlash( + Display::return_message(get_lang('UserConfirmedNowYouCanLogInThePlatform'), 'success') + ); header('Location: '.$url); exit; } else { diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index 2f15082436..78b230a847 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -272,6 +272,7 @@ define('LOG_MY_FOLDER_PATH', 'path'); define('LOG_MY_FOLDER_NEW_PATH', 'new_path'); define('LOG_TERM_CONDITION_ACCEPTED', 'term_condition_accepted'); +define('LOG_USER_CONFIRMED_EMAIL', 'user_confirmed_email'); define('USERNAME_PURIFIER', '/[^0-9A-Za-z_\.]/'); diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index c695471cb8..ad24cf8e3f 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -526,7 +526,7 @@ class UserManager } else { $sendToInbox = api_get_configuration_value('send_inscription_msg_to_inbox'); if ($sendToInbox) { - $adminList = UserManager::get_all_administrators(); + $adminList = self::get_all_administrators(); $senderId = 1; if (!empty($adminList)) { $adminInfo = current($adminList); @@ -5904,8 +5904,8 @@ SQL; // Filling session variables with new data Session::write('_uid', $userId); Session::write('_user', $userInfo); - Session::write('is_platformAdmin', (bool) UserManager::is_admin($userId)); - Session::write('is_allowedCreateCourse', (bool) ($userInfo['status'] == 1)); + Session::write('is_platformAdmin', (bool) self::is_admin($userId)); + Session::write('is_allowedCreateCourse', $userInfo['status'] == 1); // will be useful later to know if the user is actually an admin or not (example reporting) Session::write('login_as', true); @@ -6065,26 +6065,29 @@ SQL; } $em = Database::getManager(); $user = api_get_user_entity($userId); - $uniqueId = uniqid('anon'); - $user->setFirstname($uniqueId); - $user->setLastname($uniqueId); - $user->setBiography(''); - $user->setAddress(''); - $user->setCurriculumItems(null); - $user->setDateOfBirth(null); - $user->setCompetences(''); - $user->setDiplomas(''); - $user->setOpenarea(''); - $user->setTeach(''); - $user->setProductions(null); - $user->setOpenid(''); - $user->setEmailCanonical($uniqueId.'@example.com'); - $user->setEmail($uniqueId.'@example.com'); - $user->setUsername($uniqueId); - $user->setUsernameCanonical($uniqueId); - $user->setPhone(''); - $user->setOfficialCode(''); - UserManager::deleteUserPicture($userId); + $uniqueId = uniqid('anon', true); + $user + ->setFirstname($uniqueId) + ->setLastname($uniqueId) + ->setBiography('') + ->setAddress('') + ->setCurriculumItems(null) + ->setDateOfBirth(null) + ->setCompetences('') + ->setDiplomas('') + ->setOpenarea('') + ->setTeach('') + ->setProductions(null) + ->setOpenid('') + ->setEmailCanonical($uniqueId.'@example.com') + ->setEmail($uniqueId.'@example.com') + ->setUsername($uniqueId) + ->setUsernameCanonical($uniqueId) + ->setPhone('') + ->setOfficialCode('') + ; + + self::deleteUserPicture($userId); // The IP address is a border-case personal data, as it does // not directly allow for personal identification (it is not // a completely safe value in most countries - the IP could diff --git a/src/Chamilo/UserBundle/Entity/Manager/UserManager.php b/src/Chamilo/UserBundle/Entity/Manager/UserManager.php index fa3685e849..1a276feda2 100644 --- a/src/Chamilo/UserBundle/Entity/Manager/UserManager.php +++ b/src/Chamilo/UserBundle/Entity/Manager/UserManager.php @@ -3,6 +3,7 @@ namespace Chamilo\UserBundle\Entity\Manager; +use Chamilo\UserBundle\Entity\User; use Sonata\UserBundle\Entity\UserManager as BaseUserManager; /** @@ -17,7 +18,7 @@ class UserManager extends BaseUserManager * * @param string $token * - * @return UserInterface + * @return User */ public function findUserByConfirmationToken($token) { diff --git a/src/Chamilo/UserBundle/Entity/User.php b/src/Chamilo/UserBundle/Entity/User.php index e1b6ec404c..47e1d1d36b 100644 --- a/src/Chamilo/UserBundle/Entity/User.php +++ b/src/Chamilo/UserBundle/Entity/User.php @@ -685,10 +685,14 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser /** * @param $items + * + * @return $this */ public function setCurriculumItems($items) { $this->curriculumItems = $items; + + return $this; } /** @@ -749,10 +753,14 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser /** * @param ArrayCollection $classes + * + * @return $this */ public function setClasses($classes) { $this->classes = $classes; + + return $this; } /**