Page MenuHomePhabricator

Convert the GlobalPreferences\Storage class to GlobalUserOptionsManager or something compatible with UserOptionsManager
Open, Needs TriagePublic

Description

After the change of cache architecture, we meet T294675 and Change the way of fetching global preferences.
But there is another problem: if the default preference was set in the form descriptor and a local exception was set, the Special:GlobalPreferences page can't reflect the global one.
This affected one field provided by core: timecorrection. Provide default value by form descriptor is valid and extensions may also have some use cases.
I think we can Convert the GlobalPreferences\Storage class to GlobalUserOptionsManager or something compatible with UserOptionsManager, then inject it to GlobalPreferencesFactory lively (before the call to parent::getFormDescriptor() and restore the default one later).

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

I wonder if we can extend the UserOptionsManager class? I noticed there are some tasks (T285798 and T265924) that mentioned "stable policy".

Detail about how to reproduce the bug is described in T298003, and a simple fix is proposed.