I just pulled in a fresh 1.27alpha (ab1e69b) and suddenly all move actions fail with:
[7468e0b6] /mw-core/index.php?title=%E7%89%B9%E5%88%A5:%E7%A7%BB%E5%8B%95&action=submit MWException from line 220 of ...mw-core\includes\Hooks.php: Detected bug in an extension! Hook hook-TitleMoveComplete-closure has invalid call signature; Parameter 3 to SMW\MediaWiki\Hooks\HookRegistry::SMW\MediaWiki\Hooks\{closure}() expected to be a reference, value given
Backtrace:
#0 ...mw-core\includes\MovePage.php(376): Hooks::run(string, array)
#1 [internal function]: MovePage->{closure}()
#2 ...mw-core\includes\db\Database.php(3310): call_user_func(Closure)
#3 ...mw-core\includes\db\Database.php(3562): DatabaseBase->runOnTransactionIdleCallbacks()
#4 ...mw-core\includes\db\loadbalancer\LoadBalancer.php(1055): DatabaseBase->commit(string, string)
#5 [internal function]: LoadBalancer->commitMasterChanges()
#6 ...mw-core\includes\db\loadbalancer\LBFactory.php(194): call_user_func_array(array, array)
#7 [internal function]: LBFactory->{closure}(LoadBalancer, string, array)
#8 ...mw-core\includes\db\loadbalancer\LBFactorySimple.php(152): call_user_func_array(Closure, array)
#9 ...mw-core\includes\db\loadbalancer\LBFactory.php(195): LBFactorySimple->forEachLB(Closure, array)
#10 ...mw-core\includes\db\loadbalancer\LBFactory.php(212): LBFactory->forEachLBCallMethod(string)
#11 ...mw-core\includes\MediaWiki.php(501): LBFactory->commitMasterChanges()
#12 ...mw-core\includes\MediaWiki.php(677): MediaWiki->doPreOutputCommit()
#13 ...mw-core\includes\MediaWiki.php(474): MediaWiki->main()
#14 ...mw-core\index.php(41): MediaWiki->run()
#15 {main}MediaWiki 1.27alpha (ab1e69b)
PHP 5.6.8 (apache2handler)
MySQL 5.6.24
The claimed 3 parameter is a by-reference and this hook definition hasn't seen any change since (I can't remember ...) [0]. It surely works with MW 1.25/1.24/1.23.
$this->handlers['TitleMoveComplete'] = function ( &$oldTitle, &$newTitle, &$user, $oldId, $newId ) {
$titleMoveComplete = new TitleMoveComplete(
$oldTitle,
$newTitle,
$user,
$oldId,
$newId
);
return $titleMoveComplete->process();
};For the sake of amusement I just cleared the hook handler and left it empty such as:
$this->handlers['TitleMoveComplete'] = function ( &$oldTitle, &$newTitle, &$user, $oldId, $newId ) {
return true;
};and it still complains with the same exception.