From f6f390cc7aa5ce5e10026d16822fb18b6f1d67e4 Mon Sep 17 00:00:00 2001 From: "This, that and the other" Date: Tue, 4 Nov 2014 17:13:21 +1100 Subject: [PATCH] Update article count when pages are moved If a page is no longer countable (or becomes newly countable) after a move, we need to update the site statistics (count of content pages). Bug: 64333 Change-Id: I0349cfe0e32229706e01d654aacf8ccbe5ebabf3 --- includes/MovePage.php | 6 +++++- includes/page/WikiPage.php | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/includes/MovePage.php b/includes/MovePage.php index 79095e9ae7..beea77604a 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -342,6 +342,9 @@ class MovePage { $dbw = wfGetDB( DB_MASTER ); + $oldpage = WikiPage::factory( $this ); + $oldcountable = $oldpage->isCountable(); + $newpage = WikiPage::factory( $nt ); if ( $moveOverRedirect ) { @@ -389,7 +392,8 @@ class MovePage { wfRunHooks( 'NewRevisionFromEditComplete', array( $newpage, $nullRevision, $nullRevision->getParentId(), $user ) ); - $newpage->doEditUpdates( $nullRevision, $user, array( 'changed' => false ) ); + $newpage->doEditUpdates( $nullRevision, $user, + array( 'changed' => false, 'moved' => true, 'oldcountable' => $oldcountable ) ); if ( !$moveOverRedirect ) { WikiPage::onArticleCreate( $nt ); diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 81c93a1f32..bd6fabcebd 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -2142,6 +2142,7 @@ class WikiPage implements Page, IDBAccessObject { * @param array $options Array of options, following indexes are used: * - changed: boolean, whether the revision changed the content (default true) * - created: boolean, whether the revision created the page (default false) + * - moved: boolean, whether the page was moved (default false) * - oldcountable: boolean or null (default null): * - boolean: whether the page was counted as an article before that * revision, only used in changed is true and created is false @@ -2152,7 +2153,12 @@ class WikiPage implements Page, IDBAccessObject { wfProfileIn( __METHOD__ ); - $options += array( 'changed' => true, 'created' => false, 'oldcountable' => null ); + $options += array( + 'changed' => true, + 'created' => false, + 'moved' => false, + 'oldcountable' => null + ); $content = $revision->getContent(); // Parse the text @@ -2201,7 +2207,7 @@ class WikiPage implements Page, IDBAccessObject { $title = $this->mTitle->getPrefixedDBkey(); $shortTitle = $this->mTitle->getDBkey(); - if ( !$options['changed'] ) { + if ( !$options['changed'] && !$options['moved'] ) { $good = 0; } elseif ( $options['created'] ) { $good = (int)$this->isCountable( $editInfo ); -- 2.20.1