Defer cookie block checks to resolve a circular dependency
authorMax Semenik <maxsem.wiki@gmail.com>
Wed, 26 Jun 2019 06:00:07 +0000 (23:00 -0700)
committerMax Semenik <maxsem.wiki@gmail.com>
Fri, 28 Jun 2019 05:37:44 +0000 (22:37 -0700)
commitc873333333940fd8867374b2f886fb3259022b8b
treec2b2b7481da58b65eecfbc0b5a60d73472ef0288
parent647e0709aecf59b77af8114d2c79dc5eeef514f9
Defer cookie block checks to resolve a circular dependency

User needs to load user preferences to get preferred language, which
calls User::load() which calls User::loadFromSession().

User::loadFromSession() tries to load blocks which might use messages
which need user language which calls User::load() because the previous
call to it haven't completed yet...

We have a protection against infinite recursion to prevent this from
completely crashing MW, however this patch fixes the main issue: loading
too much stuff when a User is initialized.

Bug: T180050
Change-Id: I63af6d2239b36124d5ed382b8d2aab82c8d54d69
includes/block/BlockManager.php
includes/user/User.php
tests/phpunit/includes/block/BlockManagerTest.php