Browse Source

Add new event when user confirms the email LOG_USER_CONFIRMED_EMAIL

See #2554
Julio Montoya 6 years ago
parent
commit
c6991d1984

+ 11 - 2
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 {

+ 1 - 0
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_\.]/');
 

+ 26 - 23
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

+ 2 - 1
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)
     {

+ 8 - 0
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;
     }
 
     /**