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

Reply via email to