jenkins-bot has submitted this change and it was merged.

Change subject: Implement hook for deleted pages
......................................................................


Implement hook for deleted pages

Change-Id: If25f56c31b94f8d6db204deffe3fa732ebaeafc5
---
M extension.json
M src/CognateHooks.php
M src/CognateStore.php
M tests/phpunit/CognateStoreTest.php
4 files changed, 56 insertions(+), 10 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 7276618..51e8bf1 100644
--- a/extension.json
+++ b/extension.json
@@ -23,7 +23,7 @@
   "Hooks": {
     "PageContentSaveComplete": [ "CognateHooks::onPageContentSaveComplete" ],
     "LanguageLinks": [ "CognateHooks::onLanguageLinks" ],
-    "ArticleDeleteComplete": [ "CognateHooks::onArticleDeleteComplete" ],
+    "WikiPageDeletionUpdates": [ "CognateHooks::onWikiPageDeletionUpdates" ],
     "LoadExtensionSchemaUpdates": [ 
"CognateHooks::onLoadExtensionSchemaUpdates" ],
     "UnitTestsList": [ "CognateHooks::onUnitTestsList" ]
   },
diff --git a/src/CognateHooks.php b/src/CognateHooks.php
index 7405172..e016eef 100644
--- a/src/CognateHooks.php
+++ b/src/CognateHooks.php
@@ -40,24 +40,42 @@
                global $wgCognateNamespaces, $wgLanguageCode;
 
                $title = $article->getTitle();
-               if ( !in_array( $title->getNamespace(), $wgCognateNamespaces ) 
) {
+               if ( !$title->inNamespaces( $wgCognateNamespaces ) ) {
                        return true;
                }
                $interlanguage = MediaWikiServices::getInstance()->getService( 
'CognateStore' );
-               $interlanguage->savePage( $wgLanguageCode, 
$article->getTitle()->getDBkey() );
+               $interlanguage->savePage( $wgLanguageCode, $title->getDBkey() );
 
                return true;
        }
 
-       public static function onArticleDeleteComplete(
-               &$article,
-               User &$user,
-               $reason,
-               $id,
+       /**
+        * @param WikiPage $page
+        * @param Content|null $content
+        * @param DataUpdate[] $updates
+        *
+        * @return bool
+        */
+       public static function onWikiPageDeletionUpdates(
+               WikiPage $page,
                Content $content = null,
-               LogEntry $logEntry
+               array &$updates
        ) {
-               // TODO remove language link from central storage
+               global $wgCognateNamespaces;
+
+               $title = $page->getTitle();
+               if ( $title->inNamespaces( $wgCognateNamespaces ) ) {
+                       $updates[] = new MWCallableUpdate(
+                               function () use ( $title ){
+                                       global $wgLanguageCode;
+                                       $interlanguage = 
MediaWikiServices::getInstance()->getService( 'CognateStore' );
+                                       $interlanguage->deletePage( 
$wgLanguageCode, $title->getDBkey() );
+                               },
+                               __METHOD__
+                       );
+               }
+
+               return true;
        }
 
        /**
diff --git a/src/CognateStore.php b/src/CognateStore.php
index b5fbb28..287c58c 100644
--- a/src/CognateStore.php
+++ b/src/CognateStore.php
@@ -37,6 +37,23 @@
        }
 
        /**
+        * @param string $language Language code, taken from $wgLanguageCode
+        * @param string $title Page title
+        * @return bool
+        */
+       public function deletePage( $language, $title ) {
+               $pageData = [
+                       'ilt_language' => $language,
+                       'ilt_title' => $title
+               ];
+               $dbw = $this->loadBalancer->getConnection( DB_MASTER );
+               $result = $dbw->delete( self::TABLE_NAME, $pageData, __METHOD__ 
);
+               $this->loadBalancer->reuseConnection( $dbw );
+
+               return $result;
+       }
+
+       /**
         * Get the language codes where a translations is available
         *
         * @param string $language Language code to exclude
diff --git a/tests/phpunit/CognateStoreTest.php 
b/tests/phpunit/CognateStoreTest.php
index 373fe57..7016c43 100644
--- a/tests/phpunit/CognateStoreTest.php
+++ b/tests/phpunit/CognateStoreTest.php
@@ -46,4 +46,15 @@
                $this->assertArrayEquals( [ 'de', 'eo' ], $languages );
        }
 
+       public function testSaveAndDeletePageResultsInNoEntry() {
+               $this->interlanguage->savePage( 'en', 'My_test_page' );
+               $this->interlanguage->deletePage( 'en', 'My_test_page' );
+               $this->assertSelect(
+                       'inter_language_titles',
+                       [ 'ilt_language', 'ilt_title' ],
+                       [ 'ilt_title != "UTPage"' ],
+                       []
+               );
+       }
+
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/311440
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If25f56c31b94f8d6db204deffe3fa732ebaeafc5
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Cognate
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to