wiki.techinc.nl/includes/jobqueue/jobs/UserOptionsUpdateJob.php
Timo Tijhof 7e5de85900 jobqueue: Clean up file headers and @ingroup
* 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
2022-09-23 16:10:58 +01:00

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;
}
}