From 30d645574fed0fa7e8476f7c9d6d9474f2181db4 Mon Sep 17 00:00:00 2001 From: Gilles Dubuc Date: Fri, 30 Jun 2017 12:23:02 +0200 Subject: [PATCH] Maintenance script to purge specific page Bug: T169195 Change-Id: Ia55f926e019eed5d5f421d49506b8182e5b2c5b7 --- autoload.php | 1 + maintenance/purgePage.php | 78 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 maintenance/purgePage.php diff --git a/autoload.php b/autoload.php index 2560bdbdb9..953f0bd39a 100644 --- a/autoload.php +++ b/autoload.php @@ -1159,6 +1159,7 @@ $wgAutoloadLocalClasses = [ 'PurgeList' => __DIR__ . '/maintenance/purgeList.php', 'PurgeModuleDeps' => __DIR__ . '/maintenance/purgeModuleDeps.php', 'PurgeOldText' => __DIR__ . '/maintenance/purgeOldText.php', + 'PurgePage' => __DIR__ . '/maintenance/purgePage.php', 'PurgeParserCache' => __DIR__ . '/maintenance/purgeParserCache.php', 'QueryPage' => __DIR__ . '/includes/specialpage/QueryPage.php', 'QuickTemplate' => __DIR__ . '/includes/skins/QuickTemplate.php', diff --git a/maintenance/purgePage.php b/maintenance/purgePage.php new file mode 100644 index 0000000000..44d390ead4 --- /dev/null +++ b/maintenance/purgePage.php @@ -0,0 +1,78 @@ +addDescription( 'Purge page.' ); + $this->addOption( 'skip-exists-check', 'Skip page existence check', false, false ); + } + + public function execute() { + $stdin = $this->getStdin(); + + while ( !feof( $stdin ) ) { + $title = trim( fgets( $stdin ) ); + if ( $title != '' ) { + $this->purge( $title ); + } + } + } + + private function purge( $title ) { + $title = Title::newFromText( $title ); + + if ( is_null( $title ) ) { + $this->error( 'Invalid page title' ); + return; + } + + $page = WikiPage::factory( $title ); + + if ( is_null( $page ) ) { + $this->error( "Could not instantiate page object" ); + return; + } + + if ( !$this->getOption( 'skip-exists-check' ) && !$page->exists() ) { + $this->error( "Page doesn't exist" ); + return; + } + + if ( $page->doPurge() ) { + $this->output( "Purged\n" ); + } else { + $this->error( "Purge failed" ); + } + } +} + +$maintClass = "PurgePage"; +require_once RUN_MAINTENANCE_IF_MAIN; -- 2.20.1