Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5960526
MobilePage.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
MobilePage.php
View Options
<?php
namespace
MobileFrontend\Models
;
use
File
;
use
MediaWiki\Html\Html
;
use
MediaWiki\MediaWikiServices
;
use
MediaWiki\Revision\RevisionRecord
;
use
MediaWiki\Title\Title
;
/**
* Retrieves information specific to a mobile page
* Currently this only provides helper functions for creating Page Thumbnail
* @todo FIXME: Rename this class when its purpose becomes clearer
*/
class
MobilePage
{
public
const
SMALL_IMAGE_WIDTH
=
220
;
public
const
TINY_IMAGE_WIDTH
=
120
;
/**
* @var Title
*/
private
$title
;
/**
* @var RevisionRecord|bool|null
*/
private
$rev
=
false
;
/**
* @var string|bool
*/
private
$revisionTimestamp
;
/**
* @var File|false Associated page image file (see PageImages extension)
*/
private
$file
;
/**
* @param Title $title Page title
* @param File|false $file Page image file
*/
public
function
__construct
(
Title
$title
,
$file
=
false
)
{
$this
->
title
=
$title
;
$this
->
file
=
$file
;
}
/**
* @return RevisionRecord|null
*/
private
function
getRevision
()
{
if
(
$this
->
rev
===
false
)
{
$this
->
rev
=
MediaWikiServices
::
getInstance
()->
getRevisionStore
()
->
getRevisionByTitle
(
$this
->
title
);
}
return
$this
->
rev
;
}
/**
* Retrieve timestamp when the page content was last modified. Does not reflect null edits.
* @return string|bool Timestamp (MW format) or false
*/
public
function
getLatestTimestamp
()
{
if
(
$this
->
revisionTimestamp
===
null
)
{
$rev
=
$this
->
getRevision
();
$this
->
revisionTimestamp
=
$rev
?
$rev
->
getTimestamp
()
:
false
;
}
return
$this
->
revisionTimestamp
;
}
/**
* Retrieve the last edit to this page.
* @return array defining edit with keys:
* - string name
* - string timestamp (Unix format)
* - string gender
*/
public
function
getLatestEdit
()
{
$rev
=
$this
->
getRevision
();
$edit
=
[
'timestamp'
=>
false
,
'name'
=>
''
,
'gender'
=>
''
,
];
if
(
$rev
)
{
$edit
[
'timestamp'
]
=
wfTimestamp
(
TS_UNIX
,
$rev
->
getTimestamp
()
);
$userIdentity
=
$rev
->
getUser
();
if
(
$userIdentity
)
{
$userOptionsLookup
=
MediaWikiServices
::
getInstance
()->
getUserOptionsLookup
();
$edit
[
'name'
]
=
$userIdentity
->
getName
();
$edit
[
'gender'
]
=
$userOptionsLookup
->
getOption
(
$userIdentity
,
'gender'
);
}
}
return
$edit
;
}
/**
* Get the title of the page
*
* @return Title
*/
public
function
getTitle
()
{
return
$this
->
title
;
}
/**
* Get a small sized thumbnail in div container.
*
* @param bool $useBackgroundImage Whether the thumbnail should have a background image
* @return string
*/
public
function
getSmallThumbnailHtml
(
$useBackgroundImage
=
false
)
{
return
$this
->
getPageImageHtml
(
self
::
SMALL_IMAGE_WIDTH
,
$useBackgroundImage
);
}
/**
* Get the thumbnail container for getMediumThumbnailHtml() and getSmallThumbnailHtml().
*
* @param int $size the width of the thumbnail
* @param bool $useBackgroundImage Whether the thumbnail should have a background image
* @return string
*/
private
function
getPageImageHtml
(
$size
,
$useBackgroundImage
=
false
)
{
if
(
!
$this
->
file
)
{
return
''
;
}
// FIXME: Use more generic classes - no longer restricted to lists
$thumb
=
$this
->
file
->
transform
(
[
'width'
=>
$size
]
);
if
(
$thumb
&&
$thumb
->
getUrl
()
)
{
$className
=
'list-thumb '
;
$className
.=
$thumb
->
getWidth
()
>
$thumb
->
getHeight
()
?
'list-thumb-y'
:
'list-thumb-x'
;
$props
=
[
'class'
=>
$className
,
];
$urlUtils
=
MediaWikiServices
::
getInstance
()->
getUrlUtils
();
$imgUrl
=
$urlUtils
->
expand
(
(
string
)
$thumb
->
getUrl
(),
PROTO_CURRENT
)
??
''
;
if
(
$useBackgroundImage
)
{
$props
[
'style'
]
=
'background-image: url("'
.
$urlUtils
->
expand
(
$imgUrl
,
PROTO_CURRENT
)
.
'")'
;
$text
=
''
;
}
else
{
$props
[
'src'
]
=
$imgUrl
;
$text
=
$this
->
title
->
getText
();
}
return
Html
::
element
(
$useBackgroundImage
?
'div'
:
'img'
,
$props
,
$text
);
}
return
''
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 07:22 (2 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
71/ed/a571139d93ac2f56eca8e7455e22
Default Alt Text
MobilePage.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment