. * * @file * @ingroup extensions */ namespace Popups; use Config; use ExtensionRegistry; /** * Gadgets integration * * @package Popups */ class PopupsGadgetsIntegration { /** * @var string */ const CONFIG_NAVIGATION_POPUPS_NAME = 'PopupsConflictingNavPopupsGadgetName'; /** * @var \ExtensionRegistry */ private $extensionRegistry; /** * @var string */ private $navPopupsGadgetName; /** * PopupsGadgetsIntegration constructor. * * @param Config $config * @param ExtensionRegistry $extensionRegistry */ public function __construct( Config $config , ExtensionRegistry $extensionRegistry ) { $this->extensionRegistry = $extensionRegistry; $this->navPopupsGadgetName = $config->get( self::CONFIG_NAVIGATION_POPUPS_NAME ); } /** * @return bool */ private function isGadgetExtensionEnabled() { return $this->extensionRegistry->isLoaded( 'Gadgets' ); } /** * Check if Page Previews conflicts with Nav Popups Gadget * If user enabled Nav Popups PagePreviews are not available * * @param \User $user * @return bool */ public function conflictsWithNavPopupsGadget( \User $user ) { if ( $this->isGadgetExtensionEnabled() ) { $gadgetsRepo = \GadgetRepo::singleton(); $match = array_search( $this->navPopupsGadgetName, $gadgetsRepo->getGadgetIds() ); if ( $match !== false ) { return $gadgetsRepo->getGadget( $this->navPopupsGadgetName )->isEnabled( $user ); } } return false; } }