[MCR] Factor PageUpdater out of WikiPage
authordaniel <daniel.kinzler@wikimedia.de>
Sat, 27 Jan 2018 01:48:19 +0000 (17:48 -0800)
committerAddshore <addshorewiki@gmail.com>
Thu, 14 Jun 2018 13:22:13 +0000 (13:22 +0000)
commite8632ab0f6264851d2115a2e6338c2074b9a9b8c
treebecbbac3dde84688a7fe7bc6cc8da6dcf8eb8d7d
parent3fc48dec34fb2aee0ffbc785a3e2895c931cd842
[MCR] Factor PageUpdater out of WikiPage

This introduces PageUpdater to replace WikiPage::doEditContent,
and DerivedPageDataUpdater, to replace WikiPage::doEditUpdates
and WikiPage::prepareContentForEdit.

See docs/pageupdater.txt for a description of their
functionality.

MCR migration notes:

* The interface of PageUpdater is expected to
remain mostly stable after this patch. Code that has been using
WikiPage::doEditContent can be confidently migrated to using the
new mechanism for revision creation.

* This patch keeps the code inside PageUpdater largely aligned
with the old code in WikiPage, to make review easier to to avoid
mistakes. It is intended to be refactored further, moving
application logic into stateless services.

* DerivedPageDataUpdate is intended as a stepping stone for further
refactoring. Its behavior is designed to be compatible with
callback code that currently relies on
WikiPage::prepareContentForEdit. Much of the code that currently
lives in DerivedPageDataUpdate should be factored out into
services, all behavior relevant to calling code should be exposed
via narrow interfaces.

Bug: T174038
Bug: T196653
Change-Id: If610c68f4912e89af616cdcac1d35a1be3946afa
25 files changed:
docs/pageupdater.txt [new file with mode: 0644]
includes/EditPage.php
includes/Storage/DerivedPageDataUpdater.php [new file with mode: 0644]
includes/Storage/MutableRevisionRecord.php
includes/Storage/MutableRevisionSlots.php
includes/Storage/PageUpdateException.php [new file with mode: 0644]
includes/Storage/PageUpdater.php [new file with mode: 0644]
includes/Storage/RevisionRecord.php
includes/Storage/RevisionSlots.php
includes/Storage/RevisionSlotsUpdate.php
includes/changes/RecentChange.php
includes/edit/PreparedEdit.php
includes/page/WikiPage.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/user/User.php
tests/phpunit/includes/Storage/DerivedPageDataUpdaterTest.php [new file with mode: 0644]
tests/phpunit/includes/Storage/MutableRevisionRecordTest.php
tests/phpunit/includes/Storage/MutableRevisionSlotsTest.php
tests/phpunit/includes/Storage/PageUpdaterTest.php [new file with mode: 0644]
tests/phpunit/includes/Storage/RevisionSlotsTest.php
tests/phpunit/includes/Storage/RevisionSlotsUpdateTest.php
tests/phpunit/includes/Storage/RevisionStoreRecordTest.php
tests/phpunit/includes/api/ApiQueryWatchlistIntegrationTest.php
tests/phpunit/includes/page/WikiPageDbTestBase.php
tests/phpunit/includes/user/UserTest.php