Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4026366
UserMode.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
UserMode.php
View Options
<?php
namespace
MobileFrontend\Amc
;
use
MediaWiki\MediaWikiServices
;
use
MediaWiki\User\Options\UserOptionsManager
;
use
MediaWiki\User\UserIdentity
;
use
MobileFrontend\Features\IUserMode
;
use
MobileFrontend\Features\IUserSelectableMode
;
use
RuntimeException
;
class
UserMode
implements
IUserMode
,
IUserSelectableMode
{
public
const
USER_OPTION_MODE_AMC
=
'mf_amc_optin'
;
/**
* Value in the user options when AMC is enabled
*/
public
const
OPTION_ENABLED
=
'1'
;
/**
* Value in the user options when AMC is disabled (default state)
*/
public
const
OPTION_DISABLED
=
'0'
;
/**
* @var UserIdentity
*/
private
$userIdentity
;
/**
* @var Manager
*/
private
$amc
;
/**
* @var UserOptionsManager
*/
private
$userOptionsManager
;
/**
* @param Manager $amcManager
* @param UserIdentity $userIdentity
* @param UserOptionsManager $userOptionsManager
* @throws RuntimeException When AMC mode is not available
*/
public
function
__construct
(
Manager
$amcManager
,
UserIdentity
$userIdentity
,
UserOptionsManager
$userOptionsManager
)
{
$this
->
amc
=
$amcManager
;
$this
->
userIdentity
=
$userIdentity
;
$this
->
userOptionsManager
=
$userOptionsManager
;
}
/**
* @return string
*/
public
function
getModeIdentifier
()
{
return
$this
->
amc
->
getModeIdentifier
();
}
/**
* Return information if the AMC mode is enabled by user
* @return bool
*/
public
function
isEnabled
()
{
$userOption
=
$this
->
userOptionsManager
->
getOption
(
$this
->
userIdentity
,
self
::
USER_OPTION_MODE_AMC
,
self
::
OPTION_DISABLED
);
return
$this
->
amc
->
isAvailable
()
&&
$userOption
===
self
::
OPTION_ENABLED
;
}
/**
* Set Advanced Mobile Contributions mode to enabled or disabled.
*
* WARNING: Does not persist the updated user preference to the database.
* The caller must handle this by calling User::saveSettings() after all
* preference updates associated with this web request are made.
* @param bool $isEnabled
* @throws RuntimeException when mode is disabled
*/
public
function
setEnabled
(
bool
$isEnabled
)
{
if
(
!
$this
->
amc
->
isAvailable
()
)
{
throw
new
RuntimeException
(
'AMC Mode is not available'
);
}
$this
->
userOptionsManager
->
setOption
(
$this
->
userIdentity
,
self
::
USER_OPTION_MODE_AMC
,
$isEnabled
?
self
::
OPTION_ENABLED
:
self
::
OPTION_DISABLED
);
}
/**
* Create UserMode for given user
* NamedConstructor used by hooks system
*
* @param UserIdentity $userIdentity
* @return self
*/
public
static
function
newForUser
(
UserIdentity
$userIdentity
)
{
$services
=
MediaWikiServices
::
getInstance
();
return
new
self
(
$services
->
getService
(
'MobileFrontend.AMC.Manager'
),
$userIdentity
,
$services
->
getUserOptionsManager
()
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 14 2026, 20:34 (13 w, 26 m ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
ff/b2/dd6e134f466d36242c1247d82ef1
Default Alt Text
UserMode.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment