Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
PreferenceHelper
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 2
56
0.00% covered (danger)
0.00%
0 / 1
 setGlobalPreference
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
20
 getGlobalPreference
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * User preference helper methods adapted from ContentTranslation extension.
4 *
5 * @copyright See https://raw.githubusercontent.com/wikimedia/mediawiki-extensions-ContentTranslation/736585619e98883f0907e7eb208a06d456f04c77/AUTHORS.txt
6 * @license GPL-2.0-or-later
7 */
8
9namespace MediaWiki\Extension\TheWikipediaLibrary;
10
11use GlobalPreferences\GlobalPreferencesFactory;
12use GlobalPreferences\Storage;
13use MediaWiki\Context\RequestContext;
14use MediaWiki\MediaWikiServices;
15use MediaWiki\User\User;
16
17class PreferenceHelper {
18
19    /**
20     * Set a global preference for the user.
21     * @param User $user
22     * @param string $preference
23     * @param string $value
24     * @return bool
25     */
26    public static function setGlobalPreference( User $user, string $preference, string $value ) {
27        $globalPref = MediaWikiServices::getInstance()->getPreferencesFactory();
28        // Need GlobalPreferences extension.
29        if ( !$globalPref instanceof GlobalPreferencesFactory ) {
30            return false;
31        }
32
33        // Set up the context and check if WikiPage is available from it
34        // Once preference definitions don't require the context, this can be removed
35        $context = RequestContext::getMain();
36        if ( !$context->canUseWikiPage() ) {
37            return false;
38        }
39
40        $prefs = $globalPref->getGlobalPreferencesValues( $user, Storage::SKIP_CACHE ) ?: [];
41        $prefs[$preference] = $value;
42        return $globalPref->setGlobalPreferences( $user, $prefs, $context );
43    }
44
45    /**
46     * Get a global preference for the user.
47     * @param User $user
48     * @param string $preference
49     * @return string|null Preference value
50     */
51    public static function getGlobalPreference( User $user, string $preference ) {
52        $globalPref = MediaWikiServices::getInstance()->getPreferencesFactory();
53        // Need GlobalPreferences extension.
54        if ( !$globalPref instanceof GlobalPreferencesFactory ) {
55            return null;
56        }
57
58        $prefs = $globalPref->getGlobalPreferencesValues( $user, Storage::SKIP_CACHE ) ?: [];
59        return $prefs[$preference] ?? null;
60    }
61}