Passed
Push — master ( e47bd8...f92d21 )
by Joas
14:59 queued 11s
created
apps/settings/lib/Listener/UserRemovedFromGroupActivityListener.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -37,60 +37,60 @@
 block discarded – undo
37 37
 
38 38
 class UserRemovedFromGroupActivityListener implements IEventListener {
39 39
 
40
-	/** @var Manager */
41
-	private $groupManager;
42
-
43
-	/** @var IManager */
44
-	private $activityManager;
45
-
46
-	/** @var IUserSession */
47
-	private $userSession;
48
-
49
-	public function __construct(
50
-		Manager $groupManager,
51
-		IManager $activityManager,
52
-		IUserSession $userSession
53
-	) {
54
-		$this->groupManager = $groupManager;
55
-		$this->activityManager = $activityManager;
56
-		$this->userSession = $userSession;
57
-	}
58
-
59
-	public function handle(Event $event): void {
60
-		if (!($event instanceof UserRemovedEvent)) {
61
-			return;
62
-		}
63
-
64
-		$user = $event->getUser();
65
-		$group = $event->getGroup();
66
-
67
-		$subAdminManager = $this->groupManager->getSubAdmin();
68
-		$usersToNotify = $subAdminManager->getGroupsSubAdmins($group);
69
-		$usersToNotify[] = $user;
70
-
71
-
72
-		$event = $this->activityManager->generateEvent();
73
-		$event->setApp('settings')
74
-			->setType('group_settings');
75
-
76
-		$actor = $this->userSession->getUser();
77
-		if ($actor instanceof IUser) {
78
-			$event->setAuthor($actor->getUID())
79
-				->setSubject(GroupProvider::REMOVED_FROM_GROUP, [
80
-					'user' => $user->getUID(),
81
-					'group' => $group->getGID(),
82
-					'actor' => $actor->getUID(),
83
-				]);
84
-		} else {
85
-			$event->setSubject(GroupProvider::REMOVED_FROM_GROUP, [
86
-				'user' => $user->getUID(),
87
-				'group' => $group->getGID(),
88
-			]);
89
-		}
90
-
91
-		foreach ($usersToNotify as $userToNotify) {
92
-			$event->setAffectedUser($userToNotify->getUID());
93
-			$this->activityManager->publish($event);
94
-		}
95
-	}
40
+    /** @var Manager */
41
+    private $groupManager;
42
+
43
+    /** @var IManager */
44
+    private $activityManager;
45
+
46
+    /** @var IUserSession */
47
+    private $userSession;
48
+
49
+    public function __construct(
50
+        Manager $groupManager,
51
+        IManager $activityManager,
52
+        IUserSession $userSession
53
+    ) {
54
+        $this->groupManager = $groupManager;
55
+        $this->activityManager = $activityManager;
56
+        $this->userSession = $userSession;
57
+    }
58
+
59
+    public function handle(Event $event): void {
60
+        if (!($event instanceof UserRemovedEvent)) {
61
+            return;
62
+        }
63
+
64
+        $user = $event->getUser();
65
+        $group = $event->getGroup();
66
+
67
+        $subAdminManager = $this->groupManager->getSubAdmin();
68
+        $usersToNotify = $subAdminManager->getGroupsSubAdmins($group);
69
+        $usersToNotify[] = $user;
70
+
71
+
72
+        $event = $this->activityManager->generateEvent();
73
+        $event->setApp('settings')
74
+            ->setType('group_settings');
75
+
76
+        $actor = $this->userSession->getUser();
77
+        if ($actor instanceof IUser) {
78
+            $event->setAuthor($actor->getUID())
79
+                ->setSubject(GroupProvider::REMOVED_FROM_GROUP, [
80
+                    'user' => $user->getUID(),
81
+                    'group' => $group->getGID(),
82
+                    'actor' => $actor->getUID(),
83
+                ]);
84
+        } else {
85
+            $event->setSubject(GroupProvider::REMOVED_FROM_GROUP, [
86
+                'user' => $user->getUID(),
87
+                'group' => $group->getGID(),
88
+            ]);
89
+        }
90
+
91
+        foreach ($usersToNotify as $userToNotify) {
92
+            $event->setAffectedUser($userToNotify->getUID());
93
+            $this->activityManager->publish($event);
94
+        }
95
+    }
96 96
 }
Please login to merge, or discard this patch.
apps/settings/lib/Listener/UserAddedToGroupActivityListener.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -37,60 +37,60 @@
 block discarded – undo
37 37
 
38 38
 class UserAddedToGroupActivityListener implements IEventListener {
39 39
 
40
-	/** @var Manager */
41
-	private $groupManager;
42
-
43
-	/** @var IManager */
44
-	private $activityManager;
45
-
46
-	/** @var IUserSession */
47
-	private $userSession;
48
-
49
-	public function __construct(
50
-		Manager $groupManager,
51
-		IManager $activityManager,
52
-		IUserSession $userSession
53
-	) {
54
-		$this->groupManager = $groupManager;
55
-		$this->activityManager = $activityManager;
56
-		$this->userSession = $userSession;
57
-	}
58
-
59
-	public function handle(Event $event): void {
60
-		if (!($event instanceof UserAddedEvent)) {
61
-			return;
62
-		}
63
-
64
-		$user = $event->getUser();
65
-		$group = $event->getGroup();
66
-
67
-		$subAdminManager = $this->groupManager->getSubAdmin();
68
-		$usersToNotify = $subAdminManager->getGroupsSubAdmins($group);
69
-		$usersToNotify[] = $user;
70
-
71
-
72
-		$event = $this->activityManager->generateEvent();
73
-		$event->setApp('settings')
74
-			->setType('group_settings');
75
-
76
-		$actor = $this->userSession->getUser();
77
-		if ($actor instanceof IUser) {
78
-			$event->setAuthor($actor->getUID())
79
-				->setSubject(GroupProvider::ADDED_TO_GROUP, [
80
-					'user' => $user->getUID(),
81
-					'group' => $group->getGID(),
82
-					'actor' => $actor->getUID(),
83
-				]);
84
-		} else {
85
-			$event->setSubject(GroupProvider::ADDED_TO_GROUP, [
86
-				'user' => $user->getUID(),
87
-				'group' => $group->getGID(),
88
-			]);
89
-		}
90
-
91
-		foreach ($usersToNotify as $userToNotify) {
92
-			$event->setAffectedUser($userToNotify->getUID());
93
-			$this->activityManager->publish($event);
94
-		}
95
-	}
40
+    /** @var Manager */
41
+    private $groupManager;
42
+
43
+    /** @var IManager */
44
+    private $activityManager;
45
+
46
+    /** @var IUserSession */
47
+    private $userSession;
48
+
49
+    public function __construct(
50
+        Manager $groupManager,
51
+        IManager $activityManager,
52
+        IUserSession $userSession
53
+    ) {
54
+        $this->groupManager = $groupManager;
55
+        $this->activityManager = $activityManager;
56
+        $this->userSession = $userSession;
57
+    }
58
+
59
+    public function handle(Event $event): void {
60
+        if (!($event instanceof UserAddedEvent)) {
61
+            return;
62
+        }
63
+
64
+        $user = $event->getUser();
65
+        $group = $event->getGroup();
66
+
67
+        $subAdminManager = $this->groupManager->getSubAdmin();
68
+        $usersToNotify = $subAdminManager->getGroupsSubAdmins($group);
69
+        $usersToNotify[] = $user;
70
+
71
+
72
+        $event = $this->activityManager->generateEvent();
73
+        $event->setApp('settings')
74
+            ->setType('group_settings');
75
+
76
+        $actor = $this->userSession->getUser();
77
+        if ($actor instanceof IUser) {
78
+            $event->setAuthor($actor->getUID())
79
+                ->setSubject(GroupProvider::ADDED_TO_GROUP, [
80
+                    'user' => $user->getUID(),
81
+                    'group' => $group->getGID(),
82
+                    'actor' => $actor->getUID(),
83
+                ]);
84
+        } else {
85
+            $event->setSubject(GroupProvider::ADDED_TO_GROUP, [
86
+                'user' => $user->getUID(),
87
+                'group' => $group->getGID(),
88
+            ]);
89
+        }
90
+
91
+        foreach ($usersToNotify as $userToNotify) {
92
+            $event->setAffectedUser($userToNotify->getUID());
93
+            $this->activityManager->publish($event);
94
+        }
95
+    }
96 96
 }
Please login to merge, or discard this patch.
apps/settings/lib/AppInfo/Application.php 1 patch
Indentation   +92 added lines, -92 removed lines patch added patch discarded remove patch
@@ -60,106 +60,106 @@
 block discarded – undo
60 60
 use OCP\Util;
61 61
 
62 62
 class Application extends App implements IBootstrap {
63
-	public const APP_ID = 'settings';
63
+    public const APP_ID = 'settings';
64 64
 
65
-	/**
66
-	 * @param array $urlParams
67
-	 */
68
-	public function __construct(array $urlParams = []) {
69
-		parent::__construct(self::APP_ID, $urlParams);
70
-	}
65
+    /**
66
+     * @param array $urlParams
67
+     */
68
+    public function __construct(array $urlParams = []) {
69
+        parent::__construct(self::APP_ID, $urlParams);
70
+    }
71 71
 
72
-	public function register(IRegistrationContext $context): void {
73
-		// Register Middleware
74
-		$context->registerServiceAlias('SubadminMiddleware', SubadminMiddleware::class);
75
-		$context->registerMiddleware(SubadminMiddleware::class);
76
-		$context->registerSearchProvider(SectionSearch::class);
77
-		$context->registerSearchProvider(AppSearch::class);
72
+    public function register(IRegistrationContext $context): void {
73
+        // Register Middleware
74
+        $context->registerServiceAlias('SubadminMiddleware', SubadminMiddleware::class);
75
+        $context->registerMiddleware(SubadminMiddleware::class);
76
+        $context->registerSearchProvider(SectionSearch::class);
77
+        $context->registerSearchProvider(AppSearch::class);
78 78
 
79
-		// Register listeners
80
-		$context->registerEventListener(AppPasswordCreatedEvent::class, AppPasswordCreatedActivityListener::class);
81
-		$context->registerEventListener(UserAddedEvent::class, UserAddedToGroupActivityListener::class);
82
-		$context->registerEventListener(UserRemovedEvent::class, UserRemovedFromGroupActivityListener::class);
79
+        // Register listeners
80
+        $context->registerEventListener(AppPasswordCreatedEvent::class, AppPasswordCreatedActivityListener::class);
81
+        $context->registerEventListener(UserAddedEvent::class, UserAddedToGroupActivityListener::class);
82
+        $context->registerEventListener(UserRemovedEvent::class, UserRemovedFromGroupActivityListener::class);
83 83
 
84
-		/**
85
-		 * Core class wrappers
86
-		 */
87
-		/** FIXME: Remove once OC_User is non-static and mockable */
88
-		$context->registerService('isAdmin', function () {
89
-			return \OC_User::isAdminUser(\OC_User::getUser());
90
-		});
91
-		/** FIXME: Remove once OC_SubAdmin is non-static and mockable */
92
-		$context->registerService('isSubAdmin', function () {
93
-			$userObject = \OC::$server->getUserSession()->getUser();
94
-			$isSubAdmin = false;
95
-			if ($userObject !== null) {
96
-				$isSubAdmin = \OC::$server->getGroupManager()->getSubAdmin()->isSubAdmin($userObject);
97
-			}
98
-			return $isSubAdmin;
99
-		});
100
-		$context->registerService(IProvider::class, function (IAppContainer $appContainer) {
101
-			/** @var IServerContainer $serverContainer */
102
-			$serverContainer = $appContainer->query(IServerContainer::class);
103
-			return $serverContainer->query(IProvider::class);
104
-		});
105
-		$context->registerService(IManager::class, function (IAppContainer $appContainer) {
106
-			/** @var IServerContainer $serverContainer */
107
-			$serverContainer = $appContainer->query(IServerContainer::class);
108
-			return $serverContainer->getSettingsManager();
109
-		});
84
+        /**
85
+         * Core class wrappers
86
+         */
87
+        /** FIXME: Remove once OC_User is non-static and mockable */
88
+        $context->registerService('isAdmin', function () {
89
+            return \OC_User::isAdminUser(\OC_User::getUser());
90
+        });
91
+        /** FIXME: Remove once OC_SubAdmin is non-static and mockable */
92
+        $context->registerService('isSubAdmin', function () {
93
+            $userObject = \OC::$server->getUserSession()->getUser();
94
+            $isSubAdmin = false;
95
+            if ($userObject !== null) {
96
+                $isSubAdmin = \OC::$server->getGroupManager()->getSubAdmin()->isSubAdmin($userObject);
97
+            }
98
+            return $isSubAdmin;
99
+        });
100
+        $context->registerService(IProvider::class, function (IAppContainer $appContainer) {
101
+            /** @var IServerContainer $serverContainer */
102
+            $serverContainer = $appContainer->query(IServerContainer::class);
103
+            return $serverContainer->query(IProvider::class);
104
+        });
105
+        $context->registerService(IManager::class, function (IAppContainer $appContainer) {
106
+            /** @var IServerContainer $serverContainer */
107
+            $serverContainer = $appContainer->query(IServerContainer::class);
108
+            return $serverContainer->getSettingsManager();
109
+        });
110 110
 
111
-		$context->registerService(NewUserMailHelper::class, function (IAppContainer $appContainer) {
112
-			/** @var Server $server */
113
-			$server = $appContainer->query(IServerContainer::class);
114
-			/** @var Defaults $defaults */
115
-			$defaults = $server->query(Defaults::class);
111
+        $context->registerService(NewUserMailHelper::class, function (IAppContainer $appContainer) {
112
+            /** @var Server $server */
113
+            $server = $appContainer->query(IServerContainer::class);
114
+            /** @var Defaults $defaults */
115
+            $defaults = $server->query(Defaults::class);
116 116
 
117
-			return new NewUserMailHelper(
118
-				$defaults,
119
-				$server->getURLGenerator(),
120
-				$server->getL10NFactory(),
121
-				$server->getMailer(),
122
-				$server->getSecureRandom(),
123
-				new TimeFactory(),
124
-				$server->getConfig(),
125
-				$server->getCrypto(),
126
-				Util::getDefaultEmailAddress('no-reply')
127
-			);
128
-		});
129
-	}
117
+            return new NewUserMailHelper(
118
+                $defaults,
119
+                $server->getURLGenerator(),
120
+                $server->getL10NFactory(),
121
+                $server->getMailer(),
122
+                $server->getSecureRandom(),
123
+                new TimeFactory(),
124
+                $server->getConfig(),
125
+                $server->getCrypto(),
126
+                Util::getDefaultEmailAddress('no-reply')
127
+            );
128
+        });
129
+    }
130 130
 
131
-	public function boot(IBootContext $context): void {
132
-		Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword');
133
-		Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo');
134
-	}
131
+    public function boot(IBootContext $context): void {
132
+        Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword');
133
+        Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo');
134
+    }
135 135
 
136
-	/**
137
-	 * @param array $parameters
138
-	 * @throws \InvalidArgumentException
139
-	 * @throws \BadMethodCallException
140
-	 * @throws \Exception
141
-	 * @throws \OCP\AppFramework\QueryException
142
-	 */
143
-	public function onChangePassword(array $parameters) {
144
-		/** @var Hooks $hooks */
145
-		$hooks = $this->getContainer()->query(Hooks::class);
146
-		$hooks->onChangePassword($parameters['uid']);
147
-	}
136
+    /**
137
+     * @param array $parameters
138
+     * @throws \InvalidArgumentException
139
+     * @throws \BadMethodCallException
140
+     * @throws \Exception
141
+     * @throws \OCP\AppFramework\QueryException
142
+     */
143
+    public function onChangePassword(array $parameters) {
144
+        /** @var Hooks $hooks */
145
+        $hooks = $this->getContainer()->query(Hooks::class);
146
+        $hooks->onChangePassword($parameters['uid']);
147
+    }
148 148
 
149
-	/**
150
-	 * @param array $parameters
151
-	 * @throws \InvalidArgumentException
152
-	 * @throws \BadMethodCallException
153
-	 * @throws \Exception
154
-	 * @throws \OCP\AppFramework\QueryException
155
-	 */
156
-	public function onChangeInfo(array $parameters) {
157
-		if ($parameters['feature'] !== 'eMailAddress') {
158
-			return;
159
-		}
149
+    /**
150
+     * @param array $parameters
151
+     * @throws \InvalidArgumentException
152
+     * @throws \BadMethodCallException
153
+     * @throws \Exception
154
+     * @throws \OCP\AppFramework\QueryException
155
+     */
156
+    public function onChangeInfo(array $parameters) {
157
+        if ($parameters['feature'] !== 'eMailAddress') {
158
+            return;
159
+        }
160 160
 
161
-		/** @var Hooks $hooks */
162
-		$hooks = $this->getContainer()->query(Hooks::class);
163
-		$hooks->onChangeEmail($parameters['user'], $parameters['old_value']);
164
-	}
161
+        /** @var Hooks $hooks */
162
+        $hooks = $this->getContainer()->query(Hooks::class);
163
+        $hooks->onChangeEmail($parameters['user'], $parameters['old_value']);
164
+    }
165 165
 }
Please login to merge, or discard this patch.
apps/settings/lib/Hooks.php 1 patch
Indentation   +172 added lines, -172 removed lines patch added patch discarded remove patch
@@ -40,176 +40,176 @@
 block discarded – undo
40 40
 
41 41
 class Hooks {
42 42
 
43
-	/** @var IActivityManager */
44
-	protected $activityManager;
45
-	/** @var IGroupManager|\OC\Group\Manager */
46
-	protected $groupManager;
47
-	/** @var IUserManager */
48
-	protected $userManager;
49
-	/** @var IUserSession */
50
-	protected $userSession;
51
-	/** @var IURLGenerator */
52
-	protected $urlGenerator;
53
-	/** @var IMailer */
54
-	protected $mailer;
55
-	/** @var IConfig */
56
-	protected $config;
57
-	/** @var IFactory */
58
-	protected $languageFactory;
59
-
60
-	public function __construct(IActivityManager $activityManager,
61
-								IGroupManager $groupManager,
62
-								IUserManager $userManager,
63
-								IUserSession $userSession,
64
-								IURLGenerator $urlGenerator,
65
-								IMailer $mailer,
66
-								IConfig $config,
67
-								IFactory $languageFactory) {
68
-		$this->activityManager = $activityManager;
69
-		$this->groupManager = $groupManager;
70
-		$this->userManager = $userManager;
71
-		$this->userSession = $userSession;
72
-		$this->urlGenerator = $urlGenerator;
73
-		$this->mailer = $mailer;
74
-		$this->config = $config;
75
-		$this->languageFactory = $languageFactory;
76
-	}
77
-
78
-	/**
79
-	 * @param string $uid
80
-	 * @throws \InvalidArgumentException
81
-	 * @throws \BadMethodCallException
82
-	 * @throws \Exception
83
-	 */
84
-	public function onChangePassword($uid) {
85
-		$user = $this->userManager->get($uid);
86
-
87
-		if (!$user instanceof IUser || $user->getLastLogin() === 0) {
88
-			// User didn't login, so don't create activities and emails.
89
-			return;
90
-		}
91
-
92
-		$event = $this->activityManager->generateEvent();
93
-		$event->setApp('settings')
94
-			->setType('personal_settings')
95
-			->setAffectedUser($user->getUID());
96
-
97
-		$instanceUrl = $this->urlGenerator->getAbsoluteURL('/');
98
-		$language = $this->languageFactory->getUserLanguage($user);
99
-		$l = $this->languageFactory->get('settings', $language);
100
-
101
-		$actor = $this->userSession->getUser();
102
-		if ($actor instanceof IUser) {
103
-			if ($actor->getUID() !== $user->getUID()) {
104
-				// Admin changed the password through the user panel
105
-				$text = $l->t('%1$s changed your password on %2$s.', [$actor->getDisplayName(), $instanceUrl]);
106
-				$event->setAuthor($actor->getUID())
107
-					->setSubject(Provider::PASSWORD_CHANGED_BY, [$actor->getUID()]);
108
-			} else {
109
-				// User changed their password themselves through settings
110
-				$text = $l->t('Your password on %s was changed.', [$instanceUrl]);
111
-				$event->setAuthor($actor->getUID())
112
-					->setSubject(Provider::PASSWORD_CHANGED_SELF);
113
-			}
114
-		} else {
115
-			if (\OC::$CLI) {
116
-				// Admin used occ to reset the password
117
-				$text = $l->t('Your password on %s was reset by an administrator.', [$instanceUrl]);
118
-				$event->setSubject(Provider::PASSWORD_RESET);
119
-			} else {
120
-				// User reset their password from Lost page
121
-				$text = $l->t('Your password on %s was reset.', [$instanceUrl]);
122
-				$event->setSubject(Provider::PASSWORD_RESET_SELF);
123
-			}
124
-		}
125
-
126
-		$this->activityManager->publish($event);
127
-
128
-		if ($user->getEMailAddress() !== null) {
129
-			$template = $this->mailer->createEMailTemplate('settings.PasswordChanged', [
130
-				'displayname' => $user->getDisplayName(),
131
-				'emailAddress' => $user->getEMailAddress(),
132
-				'instanceUrl' => $instanceUrl,
133
-			]);
134
-
135
-			$template->setSubject($l->t('Password for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl]));
136
-			$template->addHeader();
137
-			$template->addHeading($l->t('Password changed for %s', [$user->getDisplayName()]), false);
138
-			$template->addBodyText($text . ' ' . $l->t('If you did not request this, please contact an administrator.'));
139
-			$template->addFooter();
140
-
141
-
142
-			$message = $this->mailer->createMessage();
143
-			$message->setTo([$user->getEMailAddress() => $user->getDisplayName()]);
144
-			$message->useTemplate($template);
145
-			$this->mailer->send($message);
146
-		}
147
-	}
148
-
149
-	/**
150
-	 * @param IUser $user
151
-	 * @param string|null $oldMailAddress
152
-	 * @throws \InvalidArgumentException
153
-	 * @throws \BadMethodCallException
154
-	 */
155
-	public function onChangeEmail(IUser $user, $oldMailAddress) {
156
-		if ($oldMailAddress === $user->getEMailAddress() ||
157
-			$user->getLastLogin() === 0) {
158
-			// Email didn't really change or user didn't login,
159
-			// so don't create activities and emails.
160
-			return;
161
-		}
162
-
163
-		$event = $this->activityManager->generateEvent();
164
-		$event->setApp('settings')
165
-			->setType('personal_settings')
166
-			->setAffectedUser($user->getUID());
167
-
168
-		$instanceUrl = $this->urlGenerator->getAbsoluteURL('/');
169
-		$language = $this->languageFactory->getUserLanguage($user);
170
-		$l = $this->languageFactory->get('settings', $language);
171
-
172
-		$actor = $this->userSession->getUser();
173
-		if ($actor instanceof IUser) {
174
-			$subject = Provider::EMAIL_CHANGED_SELF;
175
-			if ($actor->getUID() !== $user->getUID()) {
176
-				$subject = Provider::EMAIL_CHANGED;
177
-			}
178
-			$text = $l->t('Your email address on %s was changed.', [$instanceUrl]);
179
-			$event->setAuthor($actor->getUID())
180
-				->setSubject($subject);
181
-		} else {
182
-			if ($this->config->getAppValue('settings', 'disable_activity.email_address_changed_by_admin', 'no') === 'yes') {
183
-				return;
184
-			}
185
-			$text = $l->t('Your email address on %s was changed by an administrator.', [$instanceUrl]);
186
-			$event->setSubject(Provider::EMAIL_CHANGED);
187
-		}
188
-		$this->activityManager->publish($event);
189
-
190
-
191
-		if ($oldMailAddress !== null) {
192
-			$template = $this->mailer->createEMailTemplate('settings.EmailChanged', [
193
-				'displayname' => $user->getDisplayName(),
194
-				'newEMailAddress' => $user->getEMailAddress(),
195
-				'oldEMailAddress' => $oldMailAddress,
196
-				'instanceUrl' => $instanceUrl,
197
-			]);
198
-
199
-			$template->setSubject($l->t('Email address for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl]));
200
-			$template->addHeader();
201
-			$template->addHeading($l->t('Email address changed for %s', [$user->getDisplayName()]), false);
202
-			$template->addBodyText($text . ' ' . $l->t('If you did not request this, please contact an administrator.'));
203
-			if ($user->getEMailAddress()) {
204
-				$template->addBodyText($l->t('The new email address is %s', [$user->getEMailAddress()]));
205
-			}
206
-			$template->addFooter();
207
-
208
-
209
-			$message = $this->mailer->createMessage();
210
-			$message->setTo([$oldMailAddress => $user->getDisplayName()]);
211
-			$message->useTemplate($template);
212
-			$this->mailer->send($message);
213
-		}
214
-	}
43
+    /** @var IActivityManager */
44
+    protected $activityManager;
45
+    /** @var IGroupManager|\OC\Group\Manager */
46
+    protected $groupManager;
47
+    /** @var IUserManager */
48
+    protected $userManager;
49
+    /** @var IUserSession */
50
+    protected $userSession;
51
+    /** @var IURLGenerator */
52
+    protected $urlGenerator;
53
+    /** @var IMailer */
54
+    protected $mailer;
55
+    /** @var IConfig */
56
+    protected $config;
57
+    /** @var IFactory */
58
+    protected $languageFactory;
59
+
60
+    public function __construct(IActivityManager $activityManager,
61
+                                IGroupManager $groupManager,
62
+                                IUserManager $userManager,
63
+                                IUserSession $userSession,
64
+                                IURLGenerator $urlGenerator,
65
+                                IMailer $mailer,
66
+                                IConfig $config,
67
+                                IFactory $languageFactory) {
68
+        $this->activityManager = $activityManager;
69
+        $this->groupManager = $groupManager;
70
+        $this->userManager = $userManager;
71
+        $this->userSession = $userSession;
72
+        $this->urlGenerator = $urlGenerator;
73
+        $this->mailer = $mailer;
74
+        $this->config = $config;
75
+        $this->languageFactory = $languageFactory;
76
+    }
77
+
78
+    /**
79
+     * @param string $uid
80
+     * @throws \InvalidArgumentException
81
+     * @throws \BadMethodCallException
82
+     * @throws \Exception
83
+     */
84
+    public function onChangePassword($uid) {
85
+        $user = $this->userManager->get($uid);
86
+
87
+        if (!$user instanceof IUser || $user->getLastLogin() === 0) {
88
+            // User didn't login, so don't create activities and emails.
89
+            return;
90
+        }
91
+
92
+        $event = $this->activityManager->generateEvent();
93
+        $event->setApp('settings')
94
+            ->setType('personal_settings')
95
+            ->setAffectedUser($user->getUID());
96
+
97
+        $instanceUrl = $this->urlGenerator->getAbsoluteURL('/');
98
+        $language = $this->languageFactory->getUserLanguage($user);
99
+        $l = $this->languageFactory->get('settings', $language);
100
+
101
+        $actor = $this->userSession->getUser();
102
+        if ($actor instanceof IUser) {
103
+            if ($actor->getUID() !== $user->getUID()) {
104
+                // Admin changed the password through the user panel
105
+                $text = $l->t('%1$s changed your password on %2$s.', [$actor->getDisplayName(), $instanceUrl]);
106
+                $event->setAuthor($actor->getUID())
107
+                    ->setSubject(Provider::PASSWORD_CHANGED_BY, [$actor->getUID()]);
108
+            } else {
109
+                // User changed their password themselves through settings
110
+                $text = $l->t('Your password on %s was changed.', [$instanceUrl]);
111
+                $event->setAuthor($actor->getUID())
112
+                    ->setSubject(Provider::PASSWORD_CHANGED_SELF);
113
+            }
114
+        } else {
115
+            if (\OC::$CLI) {
116
+                // Admin used occ to reset the password
117
+                $text = $l->t('Your password on %s was reset by an administrator.', [$instanceUrl]);
118
+                $event->setSubject(Provider::PASSWORD_RESET);
119
+            } else {
120
+                // User reset their password from Lost page
121
+                $text = $l->t('Your password on %s was reset.', [$instanceUrl]);
122
+                $event->setSubject(Provider::PASSWORD_RESET_SELF);
123
+            }
124
+        }
125
+
126
+        $this->activityManager->publish($event);
127
+
128
+        if ($user->getEMailAddress() !== null) {
129
+            $template = $this->mailer->createEMailTemplate('settings.PasswordChanged', [
130
+                'displayname' => $user->getDisplayName(),
131
+                'emailAddress' => $user->getEMailAddress(),
132
+                'instanceUrl' => $instanceUrl,
133
+            ]);
134
+
135
+            $template->setSubject($l->t('Password for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl]));
136
+            $template->addHeader();
137
+            $template->addHeading($l->t('Password changed for %s', [$user->getDisplayName()]), false);
138
+            $template->addBodyText($text . ' ' . $l->t('If you did not request this, please contact an administrator.'));
139
+            $template->addFooter();
140
+
141
+
142
+            $message = $this->mailer->createMessage();
143
+            $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]);
144
+            $message->useTemplate($template);
145
+            $this->mailer->send($message);
146
+        }
147
+    }
148
+
149
+    /**
150
+     * @param IUser $user
151
+     * @param string|null $oldMailAddress
152
+     * @throws \InvalidArgumentException
153
+     * @throws \BadMethodCallException
154
+     */
155
+    public function onChangeEmail(IUser $user, $oldMailAddress) {
156
+        if ($oldMailAddress === $user->getEMailAddress() ||
157
+            $user->getLastLogin() === 0) {
158
+            // Email didn't really change or user didn't login,
159
+            // so don't create activities and emails.
160
+            return;
161
+        }
162
+
163
+        $event = $this->activityManager->generateEvent();
164
+        $event->setApp('settings')
165
+            ->setType('personal_settings')
166
+            ->setAffectedUser($user->getUID());
167
+
168
+        $instanceUrl = $this->urlGenerator->getAbsoluteURL('/');
169
+        $language = $this->languageFactory->getUserLanguage($user);
170
+        $l = $this->languageFactory->get('settings', $language);
171
+
172
+        $actor = $this->userSession->getUser();
173
+        if ($actor instanceof IUser) {
174
+            $subject = Provider::EMAIL_CHANGED_SELF;
175
+            if ($actor->getUID() !== $user->getUID()) {
176
+                $subject = Provider::EMAIL_CHANGED;
177
+            }
178
+            $text = $l->t('Your email address on %s was changed.', [$instanceUrl]);
179
+            $event->setAuthor($actor->getUID())
180
+                ->setSubject($subject);
181
+        } else {
182
+            if ($this->config->getAppValue('settings', 'disable_activity.email_address_changed_by_admin', 'no') === 'yes') {
183
+                return;
184
+            }
185
+            $text = $l->t('Your email address on %s was changed by an administrator.', [$instanceUrl]);
186
+            $event->setSubject(Provider::EMAIL_CHANGED);
187
+        }
188
+        $this->activityManager->publish($event);
189
+
190
+
191
+        if ($oldMailAddress !== null) {
192
+            $template = $this->mailer->createEMailTemplate('settings.EmailChanged', [
193
+                'displayname' => $user->getDisplayName(),
194
+                'newEMailAddress' => $user->getEMailAddress(),
195
+                'oldEMailAddress' => $oldMailAddress,
196
+                'instanceUrl' => $instanceUrl,
197
+            ]);
198
+
199
+            $template->setSubject($l->t('Email address for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl]));
200
+            $template->addHeader();
201
+            $template->addHeading($l->t('Email address changed for %s', [$user->getDisplayName()]), false);
202
+            $template->addBodyText($text . ' ' . $l->t('If you did not request this, please contact an administrator.'));
203
+            if ($user->getEMailAddress()) {
204
+                $template->addBodyText($l->t('The new email address is %s', [$user->getEMailAddress()]));
205
+            }
206
+            $template->addFooter();
207
+
208
+
209
+            $message = $this->mailer->createMessage();
210
+            $message->setTo([$oldMailAddress => $user->getDisplayName()]);
211
+            $message->useTemplate($template);
212
+            $this->mailer->send($message);
213
+        }
214
+    }
215 215
 }
Please login to merge, or discard this patch.