Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4072998
TitleLinksTable.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
TitleLinksTable.php
View Options
<?php
namespace
MediaWiki\Deferred\LinksUpdate
;
use
MediaWiki\Page\PageReferenceValue
;
use
MediaWiki\Title\Title
;
/**
* An abstract base class for tables that link to local titles.
*
* @stable to extend
* @since 1.38
*/
abstract
class
TitleLinksTable
extends
LinksTable
{
/**
* Convert a link ID to a PageReferenceValue
*
* @param mixed $linkId
* @return PageReferenceValue
*/
abstract
protected
function
makePageReferenceValue
(
$linkId
):
PageReferenceValue
;
/**
* Convert a link ID to a Title
*
* @stable to override
* @param mixed $linkId
* @return Title
*/
protected
function
makeTitle
(
$linkId
):
Title
{
return
Title
::
newFromPageReference
(
$this
->
makePageReferenceValue
(
$linkId
)
);
}
/**
* Given an iterator over link IDs, remove links which go to the same
* title, leaving only one link per title.
*
* @param iterable<mixed> $linkIds
* @return iterable<mixed>
*/
abstract
protected
function
deduplicateLinkIds
(
$linkIds
);
/**
* Get link IDs for a given set type, filtering out duplicate links to the
* same title.
*
* @param int $setType
* @return iterable<mixed>
*/
protected
function
getDeduplicatedLinkIds
(
$setType
)
{
$linkIds
=
$this
->
getLinkIDs
(
$setType
);
// Only the CHANGED set type should have duplicates
if
(
$setType
===
self
::
CHANGED
)
{
$linkIds
=
$this
->
deduplicateLinkIds
(
$linkIds
);
}
return
$linkIds
;
}
/**
* Get a link set as an array of Title objects. This is memory-inefficient.
*
* @deprecated since 1.38, hard-deprecated since 1.43
* @param int $setType
* @return Title[]
*/
public
function
getTitleArray
(
$setType
)
{
wfDeprecated
(
__METHOD__
,
'1.43'
);
$linkIds
=
$this
->
getDeduplicatedLinkIds
(
$setType
);
$titles
=
[];
foreach
(
$linkIds
as
$linkId
)
{
$titles
[]
=
$this
->
makeTitle
(
$linkId
);
}
return
$titles
;
}
/**
* Get a link set as an iterator over PageReferenceValue objects.
*
* @param int $setType
* @return iterable<PageReferenceValue>
* @phan-return \Traversable
*/
public
function
getPageReferenceIterator
(
$setType
)
{
$linkIds
=
$this
->
getDeduplicatedLinkIds
(
$setType
);
foreach
(
$linkIds
as
$linkId
)
{
yield
$this
->
makePageReferenceValue
(
$linkId
);
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 17 2026, 09:27 (11 w, 2 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
91/03/ad498a31273a7afbf73d8e817fea
Default Alt Text
TitleLinksTable.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment