* Improve various job descriptions where I know.
* Annotate DeletePageJob as since 1.32 (commit ca9f1dabf3),
and consider it stable to construct ("newable") to reflect
the status quo, which is that WMF-deployed extensions do queue
this job sometimes.
* Annotate various other jobs as `@internal` where I believe it is
not intended by the authors for these to be queued by other code
and where no such usage exists.
Follows similar commits to the objectcache, rdbms, profiler,
filerepo components and other areas [1].
* Remove duplicate descriptions from file blocks in favour of class
doc blocks. This reduces needless duplication and was often
incorrect or outdated, and helps (ironically) to make the header
more consistently visually ignorable.
* Remove `ingroup` from file blocks in class files as otherwise
the file is indexed twice (e.g. in Doxygen) which makes
navigation messy.
[1] https://gerrit.wikimedia.org/r/q/message:ingroup+owner:Krinkle
Change-Id: I6509325ee3ddcda733a600db194a63d79dfd5bd0
60 lines
1.7 KiB
PHP
60 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* This program 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 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
*/
|
|
|
|
use MediaWiki\MediaWikiServices;
|
|
|
|
/**
|
|
* Job that updates a user's preferences.
|
|
*
|
|
* The following job parameters are required:
|
|
* - userId: the user ID
|
|
* - options: a map of (option => value)
|
|
*
|
|
* @since 1.33
|
|
* @ingroup JobQueue
|
|
*/
|
|
class UserOptionsUpdateJob extends Job implements GenericParameterJob {
|
|
public function __construct( array $params ) {
|
|
parent::__construct( 'userOptionsUpdate', $params );
|
|
$this->removeDuplicates = true;
|
|
}
|
|
|
|
public function run() {
|
|
if ( !$this->params['options'] ) {
|
|
return true; // nothing to do
|
|
}
|
|
|
|
$user = User::newFromId( $this->params['userId'] );
|
|
$user->load( $user::READ_EXCLUSIVE );
|
|
if ( !$user->isRegistered() ) {
|
|
return true;
|
|
}
|
|
|
|
$userOptionsManager = MediaWikiServices::getInstance()
|
|
->getUserOptionsManager();
|
|
foreach ( $this->params['options'] as $name => $value ) {
|
|
$userOptionsManager->setOption( $user, $name, $value );
|
|
}
|
|
|
|
$user->saveSettings();
|
|
|
|
return true;
|
|
}
|
|
}
|