From: This, that and the other Date: Tue, 4 Nov 2014 06:13:21 +0000 (+1100) Subject: Update article count when pages are moved X-Git-Tag: 1.31.0-rc.0~13408^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=f6f390cc7aa5ce5e10026d16822fb18b6f1d67e4 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 --- 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 );