Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1428182
PageUpdaterFactory.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
PageUpdaterFactory.php
View Options
<?php
/**
* 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
*
* @file
*/
namespace
MediaWiki\Storage
;
use
JobQueueGroup
;
use
MediaWiki\Config\ServiceOptions
;
use
MediaWiki\Content\IContentHandlerFactory
;
use
MediaWiki\Content\Transform\ContentTransformer
;
use
MediaWiki\HookContainer\HookContainer
;
use
MediaWiki\Language\Language
;
use
MediaWiki\MainConfigNames
;
use
MediaWiki\Page\PageIdentity
;
use
MediaWiki\Page\WikiPageFactory
;
use
MediaWiki\Parser\ParserCache
;
use
MediaWiki\Permissions\PermissionManager
;
use
MediaWiki\Revision\RevisionRenderer
;
use
MediaWiki\Revision\RevisionStore
;
use
MediaWiki\Revision\SlotRoleRegistry
;
use
MediaWiki\Title\TitleFormatter
;
use
MediaWiki\User\TalkPageNotificationManager
;
use
MediaWiki\User\UserEditTracker
;
use
MediaWiki\User\UserGroupManager
;
use
MediaWiki\User\UserIdentity
;
use
MediaWiki\User\UserNameUtils
;
use
MessageCache
;
use
Psr\Log\LoggerInterface
;
use
Wikimedia\ObjectCache\WANObjectCache
;
use
Wikimedia\Rdbms\ILBFactory
;
/**
* A factory for PageUpdater and DerivedPageDataUpdater instances.
*
* @since 1.37
* @ingroup Page
*/
class
PageUpdaterFactory
{
/**
* Options that have to be present in the ServiceOptions object passed to the constructor.
* @note must include PageUpdater::CONSTRUCTOR_OPTIONS
* @internal
*/
public
const
CONSTRUCTOR_OPTIONS
=
[
MainConfigNames
::
ArticleCountMethod
,
MainConfigNames
::
RCWatchCategoryMembership
,
MainConfigNames
::
PageCreationLog
,
MainConfigNames
::
UseAutomaticEditSummaries
,
MainConfigNames
::
ManualRevertSearchRadius
,
MainConfigNames
::
UseRCPatrol
,
MainConfigNames
::
ParsoidCacheConfig
,
];
/** @var RevisionStore */
private
$revisionStore
;
/** @var RevisionRenderer */
private
$revisionRenderer
;
/** @var SlotRoleRegistry */
private
$slotRoleRegistry
;
/** @var ParserCache */
private
$parserCache
;
/** @var JobQueueGroup */
private
$jobQueueGroup
;
/** @var MessageCache */
private
$messageCache
;
/** @var Language */
private
$contLang
;
/** @var ILBFactory */
private
$loadbalancerFactory
;
/** @var IContentHandlerFactory */
private
$contentHandlerFactory
;
/** @var HookContainer */
private
$hookContainer
;
/** @var EditResultCache */
private
$editResultCache
;
/** @var UserNameUtils */
private
$userNameUtils
;
/** @var LoggerInterface */
private
$logger
;
/** @var ServiceOptions */
private
$options
;
/** @var UserEditTracker */
private
$userEditTracker
;
/** @var UserGroupManager */
private
$userGroupManager
;
/** @var TitleFormatter */
private
$titleFormatter
;
/** @var ContentTransformer */
private
$contentTransformer
;
/** @var PageEditStash */
private
$pageEditStash
;
/** @var TalkPageNotificationManager */
private
$talkPageNotificationManager
;
/** @var WANObjectCache */
private
$mainWANObjectCache
;
/** @var PermissionManager */
private
$permissionManager
;
/** @var WikiPageFactory */
private
$wikiPageFactory
;
/** @var string[] */
private
$softwareTags
;
/**
* @param RevisionStore $revisionStore
* @param RevisionRenderer $revisionRenderer
* @param SlotRoleRegistry $slotRoleRegistry
* @param ParserCache $parserCache
* @param JobQueueGroup $jobQueueGroup
* @param MessageCache $messageCache
* @param Language $contLang
* @param ILBFactory $loadbalancerFactory
* @param IContentHandlerFactory $contentHandlerFactory
* @param HookContainer $hookContainer
* @param EditResultCache $editResultCache
* @param UserNameUtils $userNameUtils
* @param LoggerInterface $logger
* @param ServiceOptions $options
* @param UserEditTracker $userEditTracker
* @param UserGroupManager $userGroupManager
* @param TitleFormatter $titleFormatter
* @param ContentTransformer $contentTransformer
* @param PageEditStash $pageEditStash
* @param TalkPageNotificationManager $talkPageNotificationManager
* @param WANObjectCache $mainWANObjectCache
* @param PermissionManager $permissionManager
* @param WikiPageFactory $wikiPageFactory
* @param string[] $softwareTags
*/
public
function
__construct
(
RevisionStore
$revisionStore
,
RevisionRenderer
$revisionRenderer
,
SlotRoleRegistry
$slotRoleRegistry
,
ParserCache
$parserCache
,
JobQueueGroup
$jobQueueGroup
,
MessageCache
$messageCache
,
Language
$contLang
,
ILBFactory
$loadbalancerFactory
,
IContentHandlerFactory
$contentHandlerFactory
,
HookContainer
$hookContainer
,
EditResultCache
$editResultCache
,
UserNameUtils
$userNameUtils
,
LoggerInterface
$logger
,
ServiceOptions
$options
,
UserEditTracker
$userEditTracker
,
UserGroupManager
$userGroupManager
,
TitleFormatter
$titleFormatter
,
ContentTransformer
$contentTransformer
,
PageEditStash
$pageEditStash
,
TalkPageNotificationManager
$talkPageNotificationManager
,
WANObjectCache
$mainWANObjectCache
,
PermissionManager
$permissionManager
,
WikiPageFactory
$wikiPageFactory
,
array
$softwareTags
)
{
$options
->
assertRequiredOptions
(
self
::
CONSTRUCTOR_OPTIONS
);
$this
->
revisionStore
=
$revisionStore
;
$this
->
revisionRenderer
=
$revisionRenderer
;
$this
->
slotRoleRegistry
=
$slotRoleRegistry
;
$this
->
parserCache
=
$parserCache
;
$this
->
jobQueueGroup
=
$jobQueueGroup
;
$this
->
messageCache
=
$messageCache
;
$this
->
contLang
=
$contLang
;
$this
->
loadbalancerFactory
=
$loadbalancerFactory
;
$this
->
contentHandlerFactory
=
$contentHandlerFactory
;
$this
->
hookContainer
=
$hookContainer
;
$this
->
editResultCache
=
$editResultCache
;
$this
->
userNameUtils
=
$userNameUtils
;
$this
->
logger
=
$logger
;
$this
->
options
=
$options
;
$this
->
userEditTracker
=
$userEditTracker
;
$this
->
userGroupManager
=
$userGroupManager
;
$this
->
titleFormatter
=
$titleFormatter
;
$this
->
contentTransformer
=
$contentTransformer
;
$this
->
pageEditStash
=
$pageEditStash
;
$this
->
talkPageNotificationManager
=
$talkPageNotificationManager
;
$this
->
mainWANObjectCache
=
$mainWANObjectCache
;
$this
->
permissionManager
=
$permissionManager
;
$this
->
softwareTags
=
$softwareTags
;
$this
->
wikiPageFactory
=
$wikiPageFactory
;
}
/**
* Return a PageUpdater for building an update to a page.
*
* @internal For now, most code should keep using WikiPage::newPageUpdater() instead.
* @note We can only start using this method everywhere when WikiPage::prepareContentForEdit()
* and WikiPage::getCurrentUpdate() have been removed. For now, the WikiPage instance is
* used to make the state of an ongoing edit available to hook handlers.
*
* @param PageIdentity $page
* @param UserIdentity $user
*
* @return PageUpdater
* @since 1.37
*/
public
function
newPageUpdater
(
PageIdentity
$page
,
UserIdentity
$user
):
PageUpdater
{
return
$this
->
newPageUpdaterForDerivedPageDataUpdater
(
$page
,
$user
,
$this
->
newDerivedPageDataUpdater
(
$page
)
);
}
/**
* Return a PageUpdater for building an update to a page, reusing the state of
* an existing DerivedPageDataUpdater.
*
* @param PageIdentity $page
* @param UserIdentity $user
* @param DerivedPageDataUpdater $derivedPageDataUpdater
*
* @return PageUpdater
* @internal needed by WikiPage to back the WikiPage::newPageUpdater method.
*
* @since 1.37
*/
public
function
newPageUpdaterForDerivedPageDataUpdater
(
PageIdentity
$page
,
UserIdentity
$user
,
DerivedPageDataUpdater
$derivedPageDataUpdater
):
PageUpdater
{
$pageUpdater
=
new
PageUpdater
(
$user
,
$page
,
$derivedPageDataUpdater
,
$this
->
loadbalancerFactory
,
$this
->
revisionStore
,
$this
->
slotRoleRegistry
,
$this
->
contentHandlerFactory
,
$this
->
hookContainer
,
$this
->
userEditTracker
,
$this
->
userGroupManager
,
$this
->
titleFormatter
,
new
ServiceOptions
(
PageUpdater
::
CONSTRUCTOR_OPTIONS
,
$this
->
options
),
$this
->
softwareTags
,
$this
->
logger
,
$this
->
wikiPageFactory
);
$pageUpdater
->
setUsePageCreationLog
(
$this
->
options
->
get
(
MainConfigNames
::
PageCreationLog
)
);
$pageUpdater
->
setUseAutomaticEditSummaries
(
$this
->
options
->
get
(
MainConfigNames
::
UseAutomaticEditSummaries
)
);
return
$pageUpdater
;
}
/**
* @param PageIdentity $page
*
* @return DerivedPageDataUpdater
* @internal Needed by WikiPage to back the deprecated prepareContentForEdit() method.
* @note Avoid direct usage of DerivedPageDataUpdater.
* @see docs/pageupdater.md for more information.
*/
public
function
newDerivedPageDataUpdater
(
PageIdentity
$page
):
DerivedPageDataUpdater
{
$derivedDataUpdater
=
new
DerivedPageDataUpdater
(
$this
->
options
,
$page
,
$this
->
revisionStore
,
$this
->
revisionRenderer
,
$this
->
slotRoleRegistry
,
$this
->
parserCache
,
$this
->
jobQueueGroup
,
$this
->
messageCache
,
$this
->
contLang
,
$this
->
loadbalancerFactory
,
$this
->
contentHandlerFactory
,
$this
->
hookContainer
,
$this
->
editResultCache
,
$this
->
userNameUtils
,
$this
->
contentTransformer
,
$this
->
pageEditStash
,
$this
->
talkPageNotificationManager
,
$this
->
mainWANObjectCache
,
$this
->
permissionManager
,
$this
->
wikiPageFactory
);
$derivedDataUpdater
->
setLogger
(
$this
->
logger
);
$derivedDataUpdater
->
setArticleCountMethod
(
$this
->
options
->
get
(
MainConfigNames
::
ArticleCountMethod
)
);
$derivedDataUpdater
->
setRcWatchCategoryMembership
(
$this
->
options
->
get
(
MainConfigNames
::
RCWatchCategoryMembership
)
);
return
$derivedDataUpdater
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 15:46 (14 h, 31 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
e3/41/43c369a362c67d91b28a9f29b10a
Default Alt Text
PageUpdaterFactory.php (9 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment