wiki.techinc.nl/includes/user/TempUser/PlainNumericSerialMapping.php
Thalia e1cb9deacb Temp users: Add 'offset' option for PlainNumericSerialMapping
Why:

* Naming conflicts may arise on autocreation.
* For example, when generating temporary user names, the config
  wgAutoCreateTempUser['serialMapping']['type'] determines how
  the unique, numerical part of the name is generated, and naming
  conflicts may arise when changing types.
* Specifically we encountered the case of changing the
  $wgAutoCreateTempUser['serialMapping']['type'] from 'scramble'
  to 'plain-numeric'.
* In general conflict could be avoided in 'plain-numeric' mode if
  the highest number used in an existing username is known, by
  adding an offset.

What:

* Handle an 'offset' config option in PlainNumericSerialMapping to
  allow avoiding conflicts.

Bug: T353545
Change-Id: Id2f9a5b5cc808ce859b93b597cf7ea0efcd9e269
2023-12-18 12:20:42 +00:00

24 lines
449 B
PHP

<?php
namespace MediaWiki\User\TempUser;
/**
* Simple serial mapping for ASCII decimal numbers
*
* @since 1.39
*/
class PlainNumericSerialMapping implements SerialMapping {
/** @var int */
private $offset;
/**
* @param array $config
*/
public function __construct( $config ) {
$this->offset = $config['offset'] ?? 0;
}
public function getSerialIdForIndex( int $index ): string {
return (string)( $index + $this->offset );
}
}