jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/376778 )
Change subject: Add an import notice to the top of an imported page's wikitext
......................................................................
Add an import notice to the top of an imported page's wikitext
Bug: T160182
Change-Id: Ic32f8025338f81a64ccd060f3bd534ed3231212d
---
M extension.json
M src/Data/ImportPlan.php
M src/ServiceWiring.php
M src/Services/Importer.php
D src/Services/NullRevisionCreator.php
5 files changed, 39 insertions(+), 80 deletions(-)
Approvals:
Addshore: Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index f5fdf66..4a4533f 100644
--- a/extension.json
+++ b/extension.json
@@ -55,7 +55,6 @@
"FileImporter\\Services\\Importer": "src/Services/Importer.php",
"FileImporter\\Services\\ImportPlanFactory":
"src/Services/ImportPlanFactory.php",
"FileImporter\\Services\\ImportPlanValidator":
"src/Services/ImportPlanValidator.php",
- "FileImporter\\Services\\NullRevisionCreator":
"src/Services/NullRevisionCreator.php",
"FileImporter\\Services\\SourceSite":
"src/Services/SourceSite.php",
"FileImporter\\Services\\SourceSiteLocator":
"src/Services/SourceSiteLocator.php",
"FileImporter\\Services\\SourceUrlNormalizer":
"src/Services/SourceUrlNormalizer.php",
@@ -87,7 +86,11 @@
"FileImporterSourceSiteServices": [],
"FileImporterTextPotentialProblems": [],
"FileImporterTextReplacements": [],
- "FileImporterAccountForSuppressedUsername":
"FileImporterSuppressed"
+ "FileImporterAccountForSuppressedUsername":
"FileImporterSuppressed",
+ "@FileImporterCommentForPostImportRevision": "Text used for the
edit summary of a post import revision.",
+ "FileImporterCommentForPostImportRevision": "Imported with
FileImporter from $1",
+ "@FileImporterTextForPostImportRevision": "Text added to the
top of the imported page's wikitext",
+ "FileImporterTextForPostImportRevision": "<!--This file was
moved here using FileImporter from $1-->\n"
},
"ResourceModules": {
"ext.FileImporter.Special": {
diff --git a/src/Data/ImportPlan.php b/src/Data/ImportPlan.php
index 5dc279d..5f192ab 100644
--- a/src/Data/ImportPlan.php
+++ b/src/Data/ImportPlan.php
@@ -122,15 +122,28 @@
return $intendedWikiText;
}
}
- return
$this->getDetails()->getTextRevisions()->getLatest()->getField( '*' );
+ return $this->getInitialFileInfoText();
+ }
+
+ /**
+ * Appends a marker to the beginning of the original File Info Text
indicating that
+ * it was imported using FileImporter
+ *
+ * @return string
+ */
+ public function getInitialFileInfoText() {
+ $config = MediaWikiServices::getInstance()->getMainConfig();
+
+ return wfMsgReplaceArgs(
+ $config->get( 'FileImporterTextForPostImportRevision'
), [ $this->request->getUrl() ]
+ ) .
$this->details->getTextRevisions()->getLatest()->getField( '*' );
}
/**
* @return bool
*/
public function wasFileInfoTextChanged() {
- return $this->getFileInfoText() !==
$this->getDetails()->getTextRevisions()->getLatest()
- ->getField( '*' );
+ return $this->getFileInfoText() !==
$this->getInitialFileInfoText();
}
}
diff --git a/src/ServiceWiring.php b/src/ServiceWiring.php
index 8d3fa31..4de81ae 100644
--- a/src/ServiceWiring.php
+++ b/src/ServiceWiring.php
@@ -10,7 +10,6 @@
use FileImporter\Services\Http\HttpRequestExecutor;
use FileImporter\Services\Importer;
use FileImporter\Services\ImportPlanFactory;
-use FileImporter\Services\NullRevisionCreator;
use FileImporter\Services\SourceSite;
use FileImporter\Services\SourceSiteLocator;
use FileImporter\Services\SourceUrlNormalizer;
@@ -58,24 +57,17 @@
'FileImporterImporter' => function ( MediaWikiServices $services ) {
/** @var WikiRevisionFactory $wikiRevisionFactory */
$wikiRevisionFactory = $services->getService(
'FileImporterWikiRevisionFactory' );
- /** @var NullRevisionCreator $nullRevisionCreator */
- $nullRevisionCreator = $services->getService(
'FileImporterNullRevisionCreator' );
/** @var HttpRequestExecutor $httpRequestExecutor */
$httpRequestExecutor = $services->getService(
'FileImporterHttpRequestExecutor' );
/** @var UploadBaseFactory $uploadBaseFactory */
$uploadBaseFactory = $services->getService(
'FileImporterUploadBaseFactory' );
$importer = new Importer(
$wikiRevisionFactory,
- $nullRevisionCreator,
$httpRequestExecutor,
$uploadBaseFactory
);
$importer->setLogger( LoggerFactory::getInstance(
'FileImporter' ) );
return $importer;
- },
-
- 'FileImporterNullRevisionCreator' => function ( MediaWikiServices
$services ) {
- return new NullRevisionCreator( $services->getDBLoadBalancer()
);
},
'FileImporterWikiRevisionFactory' => function ( MediaWikiServices
$services ) {
diff --git a/src/Services/Importer.php b/src/Services/Importer.php
index 691cb70..850086f 100644
--- a/src/Services/Importer.php
+++ b/src/Services/Importer.php
@@ -4,6 +4,7 @@
use FileImporter\Data\ImportOperations;
use FileImporter\Data\ImportPlan;
+use MediaWiki\MediaWikiServices;
use FileImporter\Exceptions\ImportException;
use FileImporter\Operations\FileRevisionFromRemoteUrl;
use FileImporter\Operations\TextRevisionFromTextRevision;
@@ -27,11 +28,6 @@
private $wikiRevisionFactory;
/**
- * @var NullRevisionCreator
- */
- private $nullRevisionCreator;
-
- /**
* @var HttpRequestExecutor
*/
private $httpRequestExecutor;
@@ -48,18 +44,15 @@
/**
* @param WikiRevisionFactory $wikiRevisionFactory
- * @param NullRevisionCreator $nullRevisionCreator
* @param HttpRequestExecutor $httpRequestExecutor
* @param UploadBaseFactory $uploadBaseFactory
*/
public function __construct(
WikiRevisionFactory $wikiRevisionFactory,
- NullRevisionCreator $nullRevisionCreator,
HttpRequestExecutor $httpRequestExecutor,
UploadBaseFactory $uploadBaseFactory
) {
$this->wikiRevisionFactory = $wikiRevisionFactory;
- $this->nullRevisionCreator = $nullRevisionCreator;
$this->httpRequestExecutor = $httpRequestExecutor;
$this->uploadBaseFactory = $uploadBaseFactory;
$this->logger = new NullLogger();
@@ -120,7 +113,7 @@
// TODO the below should be an ImportOperation
$articleIdForUpdate = $this->getArticleIdForUpdate( $importPlan
);
- $this->createPostImportNullRevision( $importPlan,
$articleIdForUpdate, $user );
+ $this->createPostImportRevision( $importPlan,
$articleIdForUpdate, $user );
$this->createPostImportEdit( $importPlan, $articleIdForUpdate,
$user );
// TODO do we need to call WikiImporter::finishImportPage??
@@ -147,17 +140,27 @@
* @param int $articleIdForUpdate
* @param User $user
*/
- private function createPostImportNullRevision(
+ private function createPostImportRevision(
ImportPlan $importPlan,
$articleIdForUpdate,
User $user
) {
- $this->nullRevisionCreator->createForLinkTarget(
- $articleIdForUpdate,
- $user,
- 'Imported from ' . $importPlan->getRequest()->getUrl(),
// TODO i18n
- true
+ $config = MediaWikiServices::getInstance()->getMainConfig();
+ $page = \WikiPage::newFromID( $articleIdForUpdate );
+ $editResult = $page->doEditContent(
+ new \WikitextContent(
$importPlan->getInitialFileInfoText() ),
+ wfMsgReplaceArgs(
+ $config->get(
'FileImporterCommentForPostImportRevision' ),
+ [ $importPlan->getRequest()->getUrl() ]
+ ),
+ EDIT_MINOR,
+ false,
+ $user
);
+
+ if ( !$editResult->isOK() ) {
+ throw new RuntimeException( 'Failed to create import
edit' );
+ }
}
/**
diff --git a/src/Services/NullRevisionCreator.php
b/src/Services/NullRevisionCreator.php
deleted file mode 100644
index 84c5632..0000000
--- a/src/Services/NullRevisionCreator.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace FileImporter\Services;
-
-use Revision;
-use RuntimeException;
-use User;
-use Wikimedia\Rdbms\LoadBalancer;
-
-class NullRevisionCreator {
-
- /**
- * @var LoadBalancer
- */
- private $loadBalancer;
-
- public function __construct(
- LoadBalancer $loadBalancer
- ) {
- $this->loadBalancer = $loadBalancer;
- }
-
- /**
- * @param int $pageId
- * @param User $user
- * @param string $summary
- * @param bool $minor
- *
- * @throws RuntimeException
- * @return Revision
- */
- public function createForLinkTarget( $pageId, User $user, $summary,
$minor ) {
- $dbw = $this->loadBalancer->getConnection( DB_MASTER );
-
- $revision = Revision::newNullRevision(
- $dbw,
- $pageId,
- $summary,
- $minor,
- $user
- );
-
- if ( $revision === null ) {
- throw new RuntimeException( 'Failed to create null
revision' );
- }
-
- $revision->insertOn( $dbw );
-
- return $revision;
- }
-
-}
--
To view, visit https://gerrit.wikimedia.org/r/376778
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic32f8025338f81a64ccd060f3bd534ed3231212d
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/extensions/FileImporter
Gerrit-Branch: master
Gerrit-Owner: Andrew-WMDE <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Andrew-WMDE <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WMDE-Fisch <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits