2014-10-03 13:14:22 +00:00
|
|
|
<?php
|
2020-06-08 17:03:46 +00:00
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
2014-10-03 13:14:22 +00:00
|
|
|
/**
|
2016-07-21 15:07:57 +00:00
|
|
|
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
|
|
|
*
|
2017-11-06 14:56:42 +00:00
|
|
|
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
|
2016-05-26 17:56:05 +00:00
|
|
|
* @author Björn Schießle <bjoern@schiessle.org>
|
2019-12-03 18:57:53 +00:00
|
|
|
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
|
|
|
* @author Daniel Kesselberg <mail@danielkesselberg.de>
|
2016-07-21 15:07:57 +00:00
|
|
|
* @author Joas Schilling <coding@schilljs.com>
|
2016-05-26 17:56:05 +00:00
|
|
|
* @author Lukas Reschke <lukas@statuscode.ch>
|
2015-03-26 10:44:34 +00:00
|
|
|
* @author Morris Jobke <hey@morrisjobke.de>
|
2016-07-21 16:13:36 +00:00
|
|
|
* @author Robin Appelman <robin@icewind.nl>
|
2020-04-29 09:57:22 +00:00
|
|
|
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
2019-12-03 18:57:53 +00:00
|
|
|
* @author zulan <git@zulan.net>
|
2023-09-13 08:43:45 +00:00
|
|
|
* @author Stephan Orbaugh <stephan.orbaugh@nextcloud.com>
|
2015-03-26 10:44:34 +00:00
|
|
|
*
|
|
|
|
* @license AGPL-3.0
|
|
|
|
*
|
|
|
|
* This code is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Affero General Public License, version 3,
|
|
|
|
* as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Affero General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
2019-12-03 18:57:53 +00:00
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
2014-10-03 13:14:22 +00:00
|
|
|
*
|
|
|
|
*/
|
2019-09-17 14:33:27 +00:00
|
|
|
namespace OCA\Settings\AppInfo;
|
2014-10-03 13:14:22 +00:00
|
|
|
|
2016-10-27 15:41:15 +00:00
|
|
|
use OC\AppFramework\Utility\TimeFactory;
|
2021-02-09 10:51:09 +00:00
|
|
|
use OC\Authentication\Events\AppPasswordCreatedEvent;
|
2016-10-05 14:31:28 +00:00
|
|
|
use OC\Authentication\Token\IProvider;
|
2016-04-25 12:56:11 +00:00
|
|
|
use OC\Server;
|
2019-09-17 14:33:27 +00:00
|
|
|
use OCA\Settings\Hooks;
|
2021-02-09 10:51:09 +00:00
|
|
|
use OCA\Settings\Listener\AppPasswordCreatedActivityListener;
|
2021-07-22 09:41:29 +00:00
|
|
|
use OCA\Settings\Listener\GroupRemovedListener;
|
2021-03-02 09:38:24 +00:00
|
|
|
use OCA\Settings\Listener\UserAddedToGroupActivityListener;
|
|
|
|
use OCA\Settings\Listener\UserRemovedFromGroupActivityListener;
|
2019-09-17 14:33:27 +00:00
|
|
|
use OCA\Settings\Mailer\NewUserMailHelper;
|
|
|
|
use OCA\Settings\Middleware\SubadminMiddleware;
|
2020-08-04 14:21:22 +00:00
|
|
|
use OCA\Settings\Search\AppSearch;
|
2020-08-03 15:03:06 +00:00
|
|
|
use OCA\Settings\Search\SectionSearch;
|
2023-09-13 08:43:45 +00:00
|
|
|
use OCA\Settings\Search\UserSearch;
|
2023-12-12 15:53:13 +00:00
|
|
|
use OCA\Settings\SetupChecks\AppDirsWithDifferentOwner;
|
2023-11-13 15:24:16 +00:00
|
|
|
use OCA\Settings\SetupChecks\BruteForceThrottler;
|
2022-05-23 07:25:47 +00:00
|
|
|
use OCA\Settings\SetupChecks\CheckUserCertificates;
|
2023-10-26 13:51:51 +00:00
|
|
|
use OCA\Settings\SetupChecks\CodeIntegrity;
|
2024-01-15 14:05:14 +00:00
|
|
|
use OCA\Settings\SetupChecks\CronErrors;
|
|
|
|
use OCA\Settings\SetupChecks\CronInfo;
|
2023-11-14 14:14:14 +00:00
|
|
|
use OCA\Settings\SetupChecks\DatabaseHasMissingColumns;
|
2023-11-14 14:51:26 +00:00
|
|
|
use OCA\Settings\SetupChecks\DatabaseHasMissingIndices;
|
2023-11-14 15:07:37 +00:00
|
|
|
use OCA\Settings\SetupChecks\DatabaseHasMissingPrimaryKeys;
|
2023-11-14 15:57:32 +00:00
|
|
|
use OCA\Settings\SetupChecks\DatabasePendingBigIntConversions;
|
2024-02-29 12:35:36 +00:00
|
|
|
use OCA\Settings\SetupChecks\DataDirectoryProtected;
|
2024-01-18 15:09:11 +00:00
|
|
|
use OCA\Settings\SetupChecks\DebugMode;
|
2023-10-02 13:41:51 +00:00
|
|
|
use OCA\Settings\SetupChecks\DefaultPhoneRegionSet;
|
2023-10-26 12:45:05 +00:00
|
|
|
use OCA\Settings\SetupChecks\EmailTestSuccessful;
|
2023-10-26 13:16:28 +00:00
|
|
|
use OCA\Settings\SetupChecks\FileLocking;
|
2023-11-13 16:07:25 +00:00
|
|
|
use OCA\Settings\SetupChecks\ForwardedForHeaders;
|
2024-02-29 11:21:36 +00:00
|
|
|
use OCA\Settings\SetupChecks\HttpsUrlGeneration;
|
2023-10-09 15:32:04 +00:00
|
|
|
use OCA\Settings\SetupChecks\InternetConnectivity;
|
2023-12-21 23:00:04 +00:00
|
|
|
use OCA\Settings\SetupChecks\JavaScriptModules;
|
2024-03-06 10:09:50 +00:00
|
|
|
use OCA\Settings\SetupChecks\JavaScriptSourceMaps;
|
2022-05-30 07:59:52 +00:00
|
|
|
use OCA\Settings\SetupChecks\LegacySSEKeyFormat;
|
2023-12-13 15:19:21 +00:00
|
|
|
use OCA\Settings\SetupChecks\MaintenanceWindowStart;
|
2023-10-26 13:24:00 +00:00
|
|
|
use OCA\Settings\SetupChecks\MemcacheConfigured;
|
2024-01-16 10:30:08 +00:00
|
|
|
use OCA\Settings\SetupChecks\MysqlUnicodeSupport;
|
2024-02-15 17:11:25 +00:00
|
|
|
use OCA\Settings\SetupChecks\OcxProviders;
|
2024-01-15 12:54:26 +00:00
|
|
|
use OCA\Settings\SetupChecks\OverwriteCliUrl;
|
2023-10-02 09:21:45 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpDefaultCharset;
|
2024-01-15 16:08:14 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpDisabledFunctions;
|
2023-10-26 14:07:11 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpFreetypeSupport;
|
2023-10-26 10:20:25 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpGetEnv;
|
2023-10-24 12:19:23 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpMemoryLimit;
|
2023-11-06 16:48:42 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpModules;
|
2023-11-16 16:05:24 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpOpcacheSetup;
|
2023-09-28 10:13:44 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpOutdated;
|
2023-10-02 09:21:45 +00:00
|
|
|
use OCA\Settings\SetupChecks\PhpOutputBuffering;
|
2024-01-25 14:23:54 +00:00
|
|
|
use OCA\Settings\SetupChecks\PushService;
|
2023-10-26 13:31:09 +00:00
|
|
|
use OCA\Settings\SetupChecks\RandomnessSecure;
|
2023-10-02 13:41:51 +00:00
|
|
|
use OCA\Settings\SetupChecks\ReadOnlyConfig;
|
2023-10-02 09:21:45 +00:00
|
|
|
use OCA\Settings\SetupChecks\SupportedDatabase;
|
2023-10-26 14:53:57 +00:00
|
|
|
use OCA\Settings\SetupChecks\SystemIs64bit;
|
2024-01-18 14:32:24 +00:00
|
|
|
use OCA\Settings\SetupChecks\TempSpaceAvailable;
|
2023-10-26 13:04:02 +00:00
|
|
|
use OCA\Settings\SetupChecks\TransactionIsolation;
|
2024-02-06 16:24:47 +00:00
|
|
|
use OCA\Settings\SetupChecks\WellKnownUrls;
|
2024-02-15 01:08:04 +00:00
|
|
|
use OCA\Settings\SetupChecks\Woff2Loading;
|
2022-03-04 06:36:49 +00:00
|
|
|
use OCA\Settings\UserMigration\AccountMigrator;
|
2022-10-22 11:23:59 +00:00
|
|
|
use OCA\Settings\WellKnown\ChangePasswordHandler;
|
2021-06-23 11:46:51 +00:00
|
|
|
use OCA\Settings\WellKnown\SecurityTxtHandler;
|
2016-05-18 10:03:22 +00:00
|
|
|
use OCP\AppFramework\App;
|
2020-06-08 17:03:46 +00:00
|
|
|
use OCP\AppFramework\Bootstrap\IBootContext;
|
|
|
|
use OCP\AppFramework\Bootstrap\IBootstrap;
|
|
|
|
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
2020-07-21 12:36:40 +00:00
|
|
|
use OCP\AppFramework\IAppContainer;
|
2017-04-07 20:42:43 +00:00
|
|
|
use OCP\Defaults;
|
2021-07-22 09:41:29 +00:00
|
|
|
use OCP\Group\Events\GroupDeletedEvent;
|
2021-03-02 09:38:24 +00:00
|
|
|
use OCP\Group\Events\UserAddedEvent;
|
|
|
|
use OCP\Group\Events\UserRemovedEvent;
|
2020-07-16 08:34:53 +00:00
|
|
|
use OCP\IServerContainer;
|
2016-10-05 14:31:28 +00:00
|
|
|
use OCP\Settings\IManager;
|
2016-05-18 10:03:22 +00:00
|
|
|
use OCP\Util;
|
2014-10-03 13:14:22 +00:00
|
|
|
|
2020-06-08 17:03:46 +00:00
|
|
|
class Application extends App implements IBootstrap {
|
2020-04-10 14:54:27 +00:00
|
|
|
public const APP_ID = 'settings';
|
2014-10-03 13:14:22 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array $urlParams
|
|
|
|
*/
|
2020-10-05 13:12:57 +00:00
|
|
|
public function __construct(array $urlParams = []) {
|
2020-02-09 19:06:08 +00:00
|
|
|
parent::__construct(self::APP_ID, $urlParams);
|
2020-06-08 17:03:46 +00:00
|
|
|
}
|
2014-10-03 13:14:22 +00:00
|
|
|
|
2020-06-08 17:03:46 +00:00
|
|
|
public function register(IRegistrationContext $context): void {
|
2016-10-05 14:31:28 +00:00
|
|
|
// Register Middleware
|
2020-06-08 17:03:46 +00:00
|
|
|
$context->registerServiceAlias('SubadminMiddleware', SubadminMiddleware::class);
|
|
|
|
$context->registerMiddleware(SubadminMiddleware::class);
|
2020-08-03 15:03:06 +00:00
|
|
|
$context->registerSearchProvider(SectionSearch::class);
|
2020-08-04 14:21:22 +00:00
|
|
|
$context->registerSearchProvider(AppSearch::class);
|
2023-09-13 08:43:45 +00:00
|
|
|
$context->registerSearchProvider(UserSearch::class);
|
2016-11-22 12:33:23 +00:00
|
|
|
|
2021-02-09 10:51:09 +00:00
|
|
|
// Register listeners
|
|
|
|
$context->registerEventListener(AppPasswordCreatedEvent::class, AppPasswordCreatedActivityListener::class);
|
2021-03-02 09:38:24 +00:00
|
|
|
$context->registerEventListener(UserAddedEvent::class, UserAddedToGroupActivityListener::class);
|
|
|
|
$context->registerEventListener(UserRemovedEvent::class, UserRemovedFromGroupActivityListener::class);
|
2021-07-22 09:41:29 +00:00
|
|
|
$context->registerEventListener(GroupDeletedEvent::class, GroupRemovedListener::class);
|
2021-02-09 10:51:09 +00:00
|
|
|
|
2021-06-23 11:46:51 +00:00
|
|
|
// Register well-known handlers
|
|
|
|
$context->registerWellKnownHandler(SecurityTxtHandler::class);
|
2022-10-22 11:23:59 +00:00
|
|
|
$context->registerWellKnownHandler(ChangePasswordHandler::class);
|
2021-06-23 11:46:51 +00:00
|
|
|
|
2014-10-03 13:14:22 +00:00
|
|
|
/**
|
|
|
|
* Core class wrappers
|
|
|
|
*/
|
2014-12-04 13:15:55 +00:00
|
|
|
/** FIXME: Remove once OC_SubAdmin is non-static and mockable */
|
2020-07-16 08:34:53 +00:00
|
|
|
$context->registerService('isSubAdmin', function () {
|
2015-10-27 13:09:45 +00:00
|
|
|
$userObject = \OC::$server->getUserSession()->getUser();
|
|
|
|
$isSubAdmin = false;
|
2020-04-10 12:19:56 +00:00
|
|
|
if ($userObject !== null) {
|
2015-10-27 13:09:45 +00:00
|
|
|
$isSubAdmin = \OC::$server->getGroupManager()->getSubAdmin()->isSubAdmin($userObject);
|
|
|
|
}
|
|
|
|
return $isSubAdmin;
|
2015-01-30 13:16:16 +00:00
|
|
|
});
|
2020-07-21 12:36:40 +00:00
|
|
|
$context->registerService(IProvider::class, function (IAppContainer $appContainer) {
|
2020-07-16 08:34:53 +00:00
|
|
|
/** @var IServerContainer $serverContainer */
|
2020-07-21 12:36:40 +00:00
|
|
|
$serverContainer = $appContainer->query(IServerContainer::class);
|
2020-07-16 08:34:53 +00:00
|
|
|
return $serverContainer->query(IProvider::class);
|
2015-12-22 16:42:28 +00:00
|
|
|
});
|
2020-07-21 12:36:40 +00:00
|
|
|
$context->registerService(IManager::class, function (IAppContainer $appContainer) {
|
2020-07-16 08:34:53 +00:00
|
|
|
/** @var IServerContainer $serverContainer */
|
2020-07-21 12:36:40 +00:00
|
|
|
$serverContainer = $appContainer->query(IServerContainer::class);
|
2020-07-16 08:34:53 +00:00
|
|
|
return $serverContainer->getSettingsManager();
|
2016-08-08 21:31:26 +00:00
|
|
|
});
|
2017-04-07 12:51:05 +00:00
|
|
|
|
2020-07-21 12:36:40 +00:00
|
|
|
$context->registerService(NewUserMailHelper::class, function (IAppContainer $appContainer) {
|
2017-04-07 12:51:05 +00:00
|
|
|
/** @var Server $server */
|
2020-07-21 12:36:40 +00:00
|
|
|
$server = $appContainer->query(IServerContainer::class);
|
2017-04-07 20:42:43 +00:00
|
|
|
/** @var Defaults $defaults */
|
|
|
|
$defaults = $server->query(Defaults::class);
|
2017-04-07 12:51:05 +00:00
|
|
|
|
|
|
|
return new NewUserMailHelper(
|
2017-04-07 20:42:43 +00:00
|
|
|
$defaults,
|
2017-04-07 12:51:05 +00:00
|
|
|
$server->getURLGenerator(),
|
2018-09-24 20:54:57 +00:00
|
|
|
$server->getL10NFactory(),
|
2017-04-07 12:51:05 +00:00
|
|
|
$server->getMailer(),
|
|
|
|
$server->getSecureRandom(),
|
|
|
|
new TimeFactory(),
|
|
|
|
$server->getConfig(),
|
|
|
|
$server->getCrypto(),
|
|
|
|
Util::getDefaultEmailAddress('no-reply')
|
|
|
|
);
|
|
|
|
});
|
2023-12-12 15:53:13 +00:00
|
|
|
$context->registerSetupCheck(AppDirsWithDifferentOwner::class);
|
2023-11-13 15:24:16 +00:00
|
|
|
$context->registerSetupCheck(BruteForceThrottler::class);
|
2022-05-23 07:25:47 +00:00
|
|
|
$context->registerSetupCheck(CheckUserCertificates::class);
|
2023-10-26 13:51:51 +00:00
|
|
|
$context->registerSetupCheck(CodeIntegrity::class);
|
2024-01-15 14:05:14 +00:00
|
|
|
$context->registerSetupCheck(CronErrors::class);
|
|
|
|
$context->registerSetupCheck(CronInfo::class);
|
2023-11-14 14:14:14 +00:00
|
|
|
$context->registerSetupCheck(DatabaseHasMissingColumns::class);
|
2023-11-14 14:51:26 +00:00
|
|
|
$context->registerSetupCheck(DatabaseHasMissingIndices::class);
|
2023-11-14 15:07:37 +00:00
|
|
|
$context->registerSetupCheck(DatabaseHasMissingPrimaryKeys::class);
|
2023-11-14 15:57:32 +00:00
|
|
|
$context->registerSetupCheck(DatabasePendingBigIntConversions::class);
|
2024-02-29 12:35:36 +00:00
|
|
|
$context->registerSetupCheck(DataDirectoryProtected::class);
|
2024-01-18 15:09:11 +00:00
|
|
|
$context->registerSetupCheck(DebugMode::class);
|
2023-10-09 15:32:04 +00:00
|
|
|
$context->registerSetupCheck(DefaultPhoneRegionSet::class);
|
2023-10-26 12:45:05 +00:00
|
|
|
$context->registerSetupCheck(EmailTestSuccessful::class);
|
2023-10-26 13:16:28 +00:00
|
|
|
$context->registerSetupCheck(FileLocking::class);
|
2023-11-13 16:07:25 +00:00
|
|
|
$context->registerSetupCheck(ForwardedForHeaders::class);
|
2024-02-29 11:21:36 +00:00
|
|
|
$context->registerSetupCheck(HttpsUrlGeneration::class);
|
2023-10-09 15:32:04 +00:00
|
|
|
$context->registerSetupCheck(InternetConnectivity::class);
|
2024-03-06 10:09:50 +00:00
|
|
|
$context->registerSetupCheck(JavaScriptSourceMaps::class);
|
2023-12-21 23:00:04 +00:00
|
|
|
$context->registerSetupCheck(JavaScriptModules::class);
|
2022-05-30 07:59:52 +00:00
|
|
|
$context->registerSetupCheck(LegacySSEKeyFormat::class);
|
2023-12-13 15:19:21 +00:00
|
|
|
$context->registerSetupCheck(MaintenanceWindowStart::class);
|
2023-10-26 13:24:00 +00:00
|
|
|
$context->registerSetupCheck(MemcacheConfigured::class);
|
2024-01-16 10:30:08 +00:00
|
|
|
$context->registerSetupCheck(MysqlUnicodeSupport::class);
|
2024-02-15 17:11:25 +00:00
|
|
|
$context->registerSetupCheck(OcxProviders::class);
|
2024-01-15 12:54:26 +00:00
|
|
|
$context->registerSetupCheck(OverwriteCliUrl::class);
|
2023-10-02 09:21:45 +00:00
|
|
|
$context->registerSetupCheck(PhpDefaultCharset::class);
|
2024-01-15 16:08:14 +00:00
|
|
|
$context->registerSetupCheck(PhpDisabledFunctions::class);
|
2023-10-26 14:07:11 +00:00
|
|
|
$context->registerSetupCheck(PhpFreetypeSupport::class);
|
2023-10-26 10:20:25 +00:00
|
|
|
$context->registerSetupCheck(PhpGetEnv::class);
|
2023-10-24 12:19:23 +00:00
|
|
|
$context->registerSetupCheck(PhpMemoryLimit::class);
|
|
|
|
$context->registerSetupCheck(PhpModules::class);
|
2023-11-16 16:05:24 +00:00
|
|
|
$context->registerSetupCheck(PhpOpcacheSetup::class);
|
2023-09-28 10:13:44 +00:00
|
|
|
$context->registerSetupCheck(PhpOutdated::class);
|
2023-10-02 09:21:45 +00:00
|
|
|
$context->registerSetupCheck(PhpOutputBuffering::class);
|
2023-10-26 13:31:09 +00:00
|
|
|
$context->registerSetupCheck(RandomnessSecure::class);
|
2023-10-02 13:41:51 +00:00
|
|
|
$context->registerSetupCheck(ReadOnlyConfig::class);
|
2023-10-09 15:32:04 +00:00
|
|
|
$context->registerSetupCheck(SupportedDatabase::class);
|
2023-10-26 14:53:57 +00:00
|
|
|
$context->registerSetupCheck(SystemIs64bit::class);
|
2024-01-18 14:32:24 +00:00
|
|
|
$context->registerSetupCheck(TempSpaceAvailable::class);
|
2023-10-26 13:04:02 +00:00
|
|
|
$context->registerSetupCheck(TransactionIsolation::class);
|
2024-01-25 14:23:54 +00:00
|
|
|
$context->registerSetupCheck(PushService::class);
|
2024-02-06 16:24:47 +00:00
|
|
|
$context->registerSetupCheck(WellKnownUrls::class);
|
2024-02-15 01:08:04 +00:00
|
|
|
$context->registerSetupCheck(Woff2Loading::class);
|
2022-03-04 06:36:49 +00:00
|
|
|
|
|
|
|
$context->registerUserMigrator(AccountMigrator::class);
|
2020-06-08 17:03:46 +00:00
|
|
|
}
|
2019-02-18 16:38:38 +00:00
|
|
|
|
2020-06-08 17:03:46 +00:00
|
|
|
public function boot(IBootContext $context): void {
|
2017-04-13 09:58:19 +00:00
|
|
|
Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword');
|
2017-04-12 13:19:45 +00:00
|
|
|
Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo');
|
2019-03-04 11:46:59 +00:00
|
|
|
}
|
|
|
|
|
2017-04-13 09:49:02 +00:00
|
|
|
/**
|
|
|
|
* @param array $parameters
|
|
|
|
* @throws \InvalidArgumentException
|
|
|
|
* @throws \BadMethodCallException
|
|
|
|
* @throws \Exception
|
2017-04-13 09:58:19 +00:00
|
|
|
* @throws \OCP\AppFramework\QueryException
|
2017-04-13 09:49:02 +00:00
|
|
|
*/
|
2017-04-13 09:58:19 +00:00
|
|
|
public function onChangePassword(array $parameters) {
|
|
|
|
/** @var Hooks $hooks */
|
|
|
|
$hooks = $this->getContainer()->query(Hooks::class);
|
|
|
|
$hooks->onChangePassword($parameters['uid']);
|
2017-04-12 13:19:45 +00:00
|
|
|
}
|
|
|
|
|
2017-04-13 09:58:19 +00:00
|
|
|
/**
|
|
|
|
* @param array $parameters
|
|
|
|
* @throws \InvalidArgumentException
|
|
|
|
* @throws \BadMethodCallException
|
|
|
|
* @throws \Exception
|
|
|
|
* @throws \OCP\AppFramework\QueryException
|
|
|
|
*/
|
|
|
|
public function onChangeInfo(array $parameters) {
|
2017-04-12 13:19:45 +00:00
|
|
|
if ($parameters['feature'] !== 'eMailAddress') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2017-04-13 09:58:19 +00:00
|
|
|
/** @var Hooks $hooks */
|
|
|
|
$hooks = $this->getContainer()->query(Hooks::class);
|
2017-04-13 10:34:34 +00:00
|
|
|
$hooks->onChangeEmail($parameters['user'], $parameters['old_value']);
|
2017-04-12 13:19:45 +00:00
|
|
|
}
|
2014-10-03 13:14:22 +00:00
|
|
|
}
|