Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1430814
CheckUserPrivateEventLogFormatter.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
CheckUserPrivateEventLogFormatter.php
View Options
<?php
namespace
MediaWiki\CheckUser\Logging
;
use
InvalidArgumentException
;
use
LogEntry
;
use
LogFormatter
;
use
MediaWiki\Html\Html
;
use
MediaWiki\Message\Message
;
use
MediaWiki\User\UserFactory
;
use
MediaWiki\User\UserRigorOptions
;
/**
* LogFormatter for the rows stored in cu_private_event that are
* not visible outside of CheckUser.
*
* Supports the log types checkuser-private-event/*
*/
class
CheckUserPrivateEventLogFormatter
extends
LogFormatter
{
private
UserFactory
$userFactory
;
public
function
__construct
(
LogEntry
$entry
,
UserFactory
$userFactory
)
{
parent
::
__construct
(
$entry
);
$this
->
userFactory
=
$userFactory
;
}
/**
* @inheritDoc
*/
protected
function
getMessageParameters
()
{
$params
=
parent
::
getMessageParameters
();
if
(
$this
->
entry
->
getSubtype
()
==
'password-reset-email-sent'
||
$this
->
entry
->
getSubtype
()
==
'login-success'
||
$this
->
entry
->
getSubtype
()
==
'login-failure'
||
$this
->
entry
->
getSubtype
()
==
'login-failure-with-good-password'
)
{
// For messages:
// * logentry-checkuser-private-event-login-success
// * logentry-checkuser-private-event-login-failure
// * logentry-checkuser-private-event-login-failure-with-good-password
// * logentry-checkuser-private-event-password-reset-email-sent
if
(
$this
->
entry
->
getSubtype
()
==
'password-reset-email-sent'
)
{
$accountName
=
$this
->
entry
->
getParameters
()[
'4::receiver'
];
}
else
{
$accountName
=
$this
->
entry
->
getParameters
()[
'4::target'
];
}
// User can be non-existent or invalid in the case of failed login attempts.
$user
=
$this
->
userFactory
->
newFromName
(
$accountName
,
UserRigorOptions
::
RIGOR_NONE
);
if
(
!
$user
)
{
throw
new
InvalidArgumentException
(
"The account name $accountName is not valid."
);
}
$hidden
=
$user
->
isHidden
()
&&
!
$this
->
context
->
getAuthority
()->
isAllowed
(
'hideuser'
);
if
(
$hidden
)
{
$params
[
3
]
=
Message
::
rawParam
(
Html
::
element
(
'span'
,
[
'class'
=>
'history-deleted'
],
$this
->
msg
(
'rev-deleted-user'
)->
text
()
)
);
$params
[
4
]
=
''
;
}
else
{
$link
=
$this
->
makeUserLink
(
$user
);
if
(
$user
->
isHidden
()
)
{
$link
=
Html
::
rawElement
(
'span'
,
[
'class'
=>
[
'mw-history-suppressed'
,
'history-deleted'
]
],
$link
);
}
$params
[
3
]
=
Message
::
rawParam
(
$link
);
$params
[
4
]
=
$accountName
;
}
}
elseif
(
$this
->
entry
->
getSubtype
()
==
'email-sent'
)
{
// For message logentry-checkuser-private-event-email-sent
$params
[
3
]
=
$this
->
entry
->
getParameters
()[
'4::hash'
];
}
elseif
(
$this
->
entry
->
getSubtype
()
==
'migrated-cu_changes-log-event'
)
{
// For message logentry-checkuser-private-event-migrated-cu_changes-log-event
$params
[
3
]
=
$this
->
entry
->
getParameters
()[
'4::actiontext'
];
}
return
$params
;
}
/** @inheritDoc */
protected
function
getActionMessage
()
{
$actionMessage
=
parent
::
getActionMessage
();
if
(
$this
->
entry
->
getSubtype
()
===
'migrated-cu_changes-log-event'
)
{
// Use ::parse so that the wikitext in the actiontext parameter can be
// parsed and displayed. Similar to WikitextLogFormatter, but defined
// here to allow mixing non-wikitext and wikitext log parameters for
// different messages.
return
$actionMessage
->
parse
();
}
return
$actionMessage
;
}
/** @inheritDoc */
protected
function
getParametersForApi
()
{
if
(
$this
->
entry
->
getSubtype
()
==
'password-reset-email-sent'
||
$this
->
entry
->
getSubtype
()
==
'login-success'
||
$this
->
entry
->
getSubtype
()
==
'login-failure'
||
$this
->
entry
->
getSubtype
()
==
'login-failure-with-good-password'
)
{
$entryParametersForReturn
=
$this
->
entry
->
getParameters
();
// Hide the username if it is hidden and the user does not
// have the rights to view it.
if
(
$this
->
entry
->
getSubtype
()
==
'password-reset-email-sent'
)
{
$accountName
=
$entryParametersForReturn
[
'4::receiver'
];
}
else
{
$accountName
=
$entryParametersForReturn
[
'4::target'
];
}
// User can be non-existent or invalid in the case of failed login attempts.
$user
=
$this
->
userFactory
->
newFromName
(
$accountName
,
UserRigorOptions
::
RIGOR_NONE
);
if
(
!
$user
)
{
throw
new
InvalidArgumentException
(
"The account name $accountName is not valid."
);
}
$hidden
=
$user
->
isHidden
()
&&
!
$this
->
context
->
getAuthority
()->
isAllowed
(
'hideuser'
);
if
(
$hidden
)
{
if
(
$this
->
entry
->
getSubtype
()
==
'password-reset-email-sent'
)
{
$entryParametersForReturn
[
'4::receiver'
]
=
$this
->
msg
(
'rev-deleted-user'
)->
text
();
}
else
{
$entryParametersForReturn
[
'4::target'
]
=
$this
->
msg
(
'rev-deleted-user'
)->
text
();
}
}
return
$entryParametersForReturn
;
}
return
parent
::
getParametersForApi
();
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 19:37 (4 h, 18 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
60/f1/3e0f77fe20fc8b2324f833b47738
Default Alt Text
CheckUserPrivateEventLogFormatter.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment