mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
synced 2024-11-28 01:00:02 +00:00
8af75aa6e5
The ResourceLoader module associated with the gadget will have mobile and desktop targets, but this allows gadgets to disable themselves on the mobile site if necessary by not adding the gadget to the page if it's been marked as such. This also has the benefit of not showing the gadget on the preferences page if it's not relevant. Bug: T328610 Change-Id: I4f2b57d1d22f641ff7520358a46cd0e6b2103aa9
66 lines
1.9 KiB
PHP
66 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Extension\Gadgets;
|
|
|
|
/**
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @author Siddharth VP
|
|
* @file
|
|
*/
|
|
|
|
use OutputPage;
|
|
use Skin;
|
|
use User;
|
|
|
|
class GadgetLoadConditions {
|
|
/** @var User */
|
|
private $user;
|
|
/** @var Skin */
|
|
private $skin;
|
|
/** @var string */
|
|
private $action;
|
|
/** @var bool */
|
|
private $isMobileView;
|
|
/** @var string|null */
|
|
private $withGadgetParam;
|
|
|
|
/**
|
|
* @param OutputPage $out
|
|
*/
|
|
public function __construct( OutputPage $out, bool $isMobileView = false ) {
|
|
$this->user = $out->getUser();
|
|
$this->skin = $out->getSkin();
|
|
$this->action = $out->getContext()->getActionName();
|
|
$this->withGadgetParam = $out->getRequest()->getRawVal( 'withgadget' );
|
|
$this->isMobileView = $isMobileView;
|
|
}
|
|
|
|
/**
|
|
* @param Gadget $gadget
|
|
* @return bool
|
|
*/
|
|
public function check( Gadget $gadget ) {
|
|
$urlLoad = $this->withGadgetParam === $gadget->getName() && $gadget->supportsUrlLoad();
|
|
|
|
return ( $gadget->isEnabled( $this->user ) || $urlLoad )
|
|
&& $gadget->isAllowed( $this->user )
|
|
&& $gadget->isActionSupported( $this->action )
|
|
&& $gadget->isSkinSupported( $this->skin )
|
|
&& $gadget->isTargetSupported( $this->isMobileView );
|
|
}
|
|
}
|