merged master
[lhc/web/wiklou.git] / maintenance / purgeList.php
index adfcbd7..4b3c382 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  */
 
-require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+require_once( __DIR__ . '/Maintenance.php' );
 
+/**
+ * Maintenance script that sends purge requests for listed pages to squid.
+ *
+ * @ingroup Maintenance
+ */
 class PurgeList extends Maintenance {
        public function __construct() {
                parent::__construct();
@@ -47,12 +53,12 @@ class PurgeList extends Maintenance {
 
                while ( !feof( $stdin ) ) {
                        $page = trim( fgets( $stdin ) );
-                       if ( substr( $page, 0, 7 ) == 'http://' ) {
+                       if ( preg_match( '%^https?://%', $page ) ) {
                                $urls[] = $page;
                        } elseif ( $page !== '' ) {
                                $title = Title::newFromText( $page );
                                if ( $title ) {
-                                       $url = $title->getFullUrl();
+                                       $url = $title->getInternalUrl();
                                        $this->output( "$url\n" );
                                        $urls[] = $url;
                                        if ( $this->getOption( 'purge' ) ) {
@@ -68,64 +74,63 @@ class PurgeList extends Maintenance {
 
        /** Purge a namespace given by --namespace */
        private function purgeNamespace() {
-        $dbr = wfGetDB( DB_SLAVE );
-        $ns = $dbr->addQuotes( $this->getOption( 'namespace') );
-
-        $result = $dbr->select(
-            array( 'page' ),
-            array( 'page_namespace', 'page_title' ),
-            array( "page_namespace = $ns" ),
-            __METHOD__,
-            array( 'ORDER BY' => 'page_id' )
-        );
-
-        $start   = 0;
-        $end = $dbr->numRows( $result );
-        $this->output( "Will purge $end pages from namespace $ns\n" );
-
-        # Do remaining chunk
-        $end += $this->mBatchSize - 1;
-        $blockStart = $start;
-        $blockEnd = $start + $this->mBatchSize - 1;
-
-        while( $blockEnd <= $end ) {
-            # Select pages we will purge:
-            $result = $dbr->select(
-                array( 'page' ),
-                array( 'page_namespace', 'page_title' ),
-                array( "page_namespace = $ns" ),
-                __METHOD__,
-                array( # conditions
-                    'ORDER BY' => 'page_id',
-                    'LIMIT'    => $this->mBatchSize,
-                    'OFFSET'   => $blockStart,
-                 )
-            );
-            # Initialize/reset URLs to be purged
-            $urls = array();
-            foreach( $result as $row ) {
-                $title = Title::makeTitle( $row->page_namespace, $row->page_title );
-                $url = $title->getFullUrl();
-                $urls[] = $url;
-            }
+               $dbr = wfGetDB( DB_SLAVE );
+               $ns = $dbr->addQuotes( $this->getOption( 'namespace') );
+
+               $result = $dbr->select(
+                       array( 'page' ),
+                       array( 'page_namespace', 'page_title' ),
+                       array( "page_namespace = $ns" ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'page_id' )
+               );
+
+               $start   = 0;
+               $end = $dbr->numRows( $result );
+               $this->output( "Will purge $end pages from namespace $ns\n" );
+
+               # Do remaining chunk
+               $end += $this->mBatchSize - 1;
+               $blockStart = $start;
+               $blockEnd = $start + $this->mBatchSize - 1;
+
+               while( $blockEnd <= $end ) {
+                       # Select pages we will purge:
+                       $result = $dbr->select(
+                               array( 'page' ),
+                               array( 'page_namespace', 'page_title' ),
+                               array( "page_namespace = $ns" ),
+                               __METHOD__,
+                               array( # conditions
+                                       'ORDER BY' => 'page_id',
+                                       'LIMIT'    => $this->mBatchSize,
+                                       'OFFSET'   => $blockStart,
+                               )
+                       );
+                       # Initialize/reset URLs to be purged
+                       $urls = array();
+                       foreach( $result as $row ) {
+                               $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+                               $url = $title->getInternalUrl();
+                               $urls[] = $url;
+                       }
 
-            $this->sendPurgeRequest( $urls );
+                       $this->sendPurgeRequest( $urls );
 
-            $blockStart += $this->mBatchSize;
-            $blockEnd   += $this->mBatchSize;
-        }
-    }
+                       $blockStart += $this->mBatchSize;
+                       $blockEnd   += $this->mBatchSize;
+               }
+       }
 
        /**
         * Helper to purge an array of $urls
         * @param $urls array List of URLS to purge from squids
         */
-    private function sendPurgeRequest( $urls ) {
-        $this->output( "Purging " . count( $urls ). " urls\n" );
-        $u = new SquidUpdate( $urls );
-        $u->doUpdate();
-    }
-
+       private function sendPurgeRequest( $urls ) {
+               $this->output( "Purging " . count( $urls ). " urls\n" );
+               $u = new SquidUpdate( $urls );
+               $u->doUpdate();
+       }
 
 }