mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-12-19 02:30:45 +00:00
e32fc4914e
I believe these additional newlines all make the code easier to read. It's easier to see what belongs together, and what is a separate thing. I found the Squiz.WhiteSpace.FunctionSpacing sniff very helpful to enforce this code style. We enabled this already in almost all WMDE codebases. It is not yet part of the upstream MediaWiki rule set, but discussed. Change-Id: Ibdf788529b28637bf98e7940c2516852c3afcef7
91 lines
2.5 KiB
PHP
91 lines
2.5 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of the MediaWiki extension Popups.
|
|
*
|
|
* Popups is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Popups 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Popups. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* @file
|
|
* @ingroup extensions
|
|
*/
|
|
namespace Popups;
|
|
|
|
use MediaWiki\MediaWikiServices;
|
|
use User;
|
|
use HTMLForm;
|
|
|
|
/**
|
|
* User Preferences save change listener
|
|
*
|
|
* @package Popups
|
|
*/
|
|
class UserPreferencesChangeHandler {
|
|
|
|
/**
|
|
* @var PopupsContext
|
|
*/
|
|
private $popupsContext;
|
|
|
|
/**
|
|
* @param PopupsContext $context Popups context instance
|
|
*/
|
|
public function __construct( $context ) {
|
|
$this->popupsContext = $context;
|
|
}
|
|
|
|
/**
|
|
* Hook executed on Preferences Form Save, when user disables Page Previews call PopupsContext
|
|
* to log `disabled` event.
|
|
*
|
|
* @param User $user Logged-in user
|
|
* @param array $oldUserOptions Old user options array
|
|
*/
|
|
public function doPreferencesFormPreSave( User $user, array $oldUserOptions ) {
|
|
if ( !array_key_exists( PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME, $oldUserOptions ) ) {
|
|
return;
|
|
}
|
|
$oldSetting = $oldUserOptions[ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ];
|
|
$newSetting = $user->getOption( PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME );
|
|
|
|
if ( $oldSetting == PopupsContext::PREVIEWS_ENABLED
|
|
&& $newSetting == PopupsContext::PREVIEWS_DISABLED ) {
|
|
$this->popupsContext->logUserDisabledPagePreviewsEvent();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return UserPreferencesChangeHandler
|
|
*/
|
|
private static function newFromGlobalState() {
|
|
return MediaWikiServices::getInstance()->getService( 'Popups.UserPreferencesChangeHandler' );
|
|
}
|
|
|
|
/**
|
|
* @param array $formData Form data submitted by user
|
|
* @param HTMLForm $form A preferences form
|
|
* @param User $user Logged-in user
|
|
* @param bool &$result Variable defining is form save successful
|
|
* @param array $oldUserOptions Old user options array
|
|
*/
|
|
public static function onPreferencesFormPreSave(
|
|
array $formData,
|
|
HTMLForm $form,
|
|
User $user,
|
|
&$result,
|
|
$oldUserOptions
|
|
) {
|
|
self::newFromGlobalState()->doPreferencesFormPreSave( $user, $oldUserOptions );
|
|
}
|
|
|
|
}
|