mediawiki-extensions-Visual.../autodisablePref.php
Alex Monk 97e70ba3cc Autodisable preference
We want to flip the default of visualeditor-enable to true, but don't
necessarily want to turn it on for users who already have contributions but who
haven't already enabled it. Therefore we're considering adding such users to
this autodisable preference which they can self-remove (by explicitly enabling
VE) or we can target later, separate from betatempdisable users.

Bug: T112352
Change-Id: I1ce5e6c92055e30fdc82bc912a767e913b190ef6
2015-09-29 00:30:27 +01:00

64 lines
1.7 KiB
PHP

<?php
/**
* Sets the VisualEditor autodisable preference on appropriate users.
*
* @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
* @author Alex Monk <amonk@wikimedia.org>
* @file
* @ingroup Extensions
* @ingroup Maintenance
*/
require_once ( getenv( 'MW_INSTALL_PATH' ) !== false
? getenv( 'MW_INSTALL_PATH' ) . '/maintenance/Maintenance.php'
: __DIR__ . '/../../../maintenance/Maintenance.php' );
class VEAutodisablePref extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Sets the VisualEditor autodisable preference on appropriate users.";
$this->setBatchSize( 500 );
}
public function execute() {
$dbr = wfGetDB( DB_SLAVE );
$lastUserId = -1;
do {
$results = $dbr->select(
array( 'user', 'user_properties' ),
'user_id',
array(
'user_id > ' . $dbr->addQuotes( $lastUserId ),
'up_value IS NULL', // only select users with no entry in user_properties
'user_editcount > 0'
),
__METHOD__,
array(
'LIMIT' => $this->mBatchSize,
'ORDER BY' => 'user_id'
),
array(
'user_properties' => array(
'LEFT OUTER JOIN',
'user_id = up_user and up_property = "visualeditor-enable"'
)
)
);
foreach ( $results as $userRow ) {
$user = User::newFromId( $userRow->user_id );
$user->setOption( 'visualeditor-autodisable', true );
$user->saveSettings();
$lastUserId = $userRow->user_id;
}
$this->output( "Added preference for " . count( $results ) . " users." );
wfWaitForSlaves();
} while ( $results->numRows() );
$this->output( "done.\n" );
}
}
$maintClass = "VEAutodisablePref";
require_once RUN_MAINTENANCE_IF_MAIN;