Manual:Hooks/DeleteUnknownPreferences

DeleteUnknownPreferences
Available from version 1.31.0
Called by the cleanupPreferences.php maintenance script to build a WHERE clause with which to delete preferences that are not known about.
Define function:
public static function onDeleteUnknownPreferences( array &$where, \Wikimedia\Rdbms\IDatabase $db ) { ... }
Attach hook: In extension.json:
{
	"Hooks": {
		"DeleteUnknownPreferences": "MediaWiki\\Extension\\MyExtension\\Hooks::onDeleteUnknownPreferences"
	}
}
Called from: File(s): ../maintenance/cleanupPreferences.php
Interface: DeleteUnknownPreferencesHook.php

For more information about attaching hooks, see Manual:Hooks .
For examples of extensions using this hook, see Category:DeleteUnknownPreferences extensions.

This hook is called by the cleanupPreferences.php maintenance script to build a WHERE clause with which to delete preferences that are not known about. This hook is used by extensions that have dynamically-named preferences that should not be deleted in the usual cleanup process. For example, the Gadgets extension creates preferences prefixed with 'gadget-', and so anything with that prefix is excluded from the deletion.

Arguments

edit
  • &where: An array that will be passed as the $cond parameter to IDatabase::select() to determine what will be deleted from the user_properties table.
  • $db: The IDatabase object, useful for accessing $db->buildLike() etc.

Example

edit

To prevent the deletion of any preference whose name ends in -custom-pref:

namespace MediaWiki\Extension\MyExtension;
class MyExtensionHooks {
	public static function onDeleteUnknownPreferences( &$where, \Wikimedia\Rdbms\IDatabase $db ) {
		$where[] = 'up_property NOT ' . $db->buildLike( $db->anyString(), '-custom-pref' );
	}
}