Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 15
PreferenceHelper
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 15
 setGlobalPreference
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 10
 getGlobalPreference
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 5
<?php
/**
 * User preference helper methods adapted from ContentTranslation extension.
 *
 * @copyright See https://raw.githubusercontent.com/wikimedia/mediawiki-extensions-ContentTranslation/736585619e98883f0907e7eb208a06d456f04c77/AUTHORS.txt
 * @license GPL-2.0-or-later
 */
namespace MediaWiki\Extension\TheWikipediaLibrary;
use GlobalPreferences\GlobalPreferencesFactory;
use GlobalPreferences\Storage;
use MediaWiki\MediaWikiServices;
use RequestContext;
use User;
class PreferenceHelper {
    /**
     * Set a global preference for the user.
     * @param User $user
     * @param string $preference
     * @param string $value
     * @return bool
     */
    public static function setGlobalPreference( User $user, string $preference, string $value ) {
        /** @var GlobalPreferencesFactory $globalPref */
        $globalPref = MediaWikiServices::getInstance()->getPreferencesFactory();
        // Need GlobalPreferences extension.
        if ( !$globalPref instanceof GlobalPreferencesFactory ) {
            return false;
        }
        '@phan-var GlobalPreferencesFactory $globalPref';
        $prefs = $globalPref->getGlobalPreferencesValues( $user, Storage::SKIP_CACHE );
        $prefs[$preference] = $value;
        $user = $user->getInstanceForUpdate();
        // Set up the context and check if WikiPage is available from it
        // Once preference definitions don't require the context, this can be removed
        $context = RequestContext::getMain();
        if ( $context->canUseWikiPage() ) {
            return $globalPref->setGlobalPreferences( $user, $prefs, $context );
        }
        return false;
    }
    /**
     * Get a global preference for the user.
     * @param User $user
     * @param string $preference
     * @return string|null Preference value
     */
    public static function getGlobalPreference( User $user, string $preference ) {
        /** @var GlobalPreferencesFactory $globalPref */
        $globalPref = MediaWikiServices::getInstance()->getPreferencesFactory();
        // Need GlobalPreferences extension.
        if ( !$globalPref instanceof GlobalPreferencesFactory ) {
            return null;
        }
        '@phan-var GlobalPreferencesFactory $globalPref';
        $prefs = $globalPref->getGlobalPreferencesValues( $user, Storage::SKIP_CACHE );
        return $prefs[$preference] ?? null;
    }
}