-require_once( 'commandLine.inc' );
-
-$dbr =& wfGetDB( DB_SLAVE );
-
-$edits = $dbr->selectField( 'revision', 'COUNT(rev_id)', '' );
-$pages = $dbr->selectField( 'page', 'COUNT(page_id)',
- array(
- 'page_namespace' => 0,
- 'page_is_redirect' => 0,
- 'page_len > 0',
- )
-); // HACK APPROXIMATION
-
-echo "$wgDBname: setting edits $edits, pages $pages\n";
-
-$dbw =& wfGetDB( DB_MASTER );
-if( isset( $options['update'] ) ) {
- echo "(updating...)\n";
- $dbw->update( 'site_stats',
- array( 'ss_total_edits' => $edits,
- 'ss_good_articles' => $pages ),
- array( 'ss_row_id' => 1 ) );
-} else {
- $dbw->delete( 'site_stats', array( 'ss_row_id' => 1 ) );
- $dbw->insert( 'site_stats',
- array( 'ss_row_id'=> 1,
- 'ss_total_views' => 0,
- 'ss_total_edits' => $edits,
- 'ss_good_articles' => $pages ) );
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class InitStats extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Re-initialise the site statistics tables";
+ $this->addOption( 'update', 'Update the existing statistics (preserves the ss_total_views field)' );
+ $this->addOption( 'noviews', "Don't update the page view counter" );
+ $this->addOption( 'active', 'Also update active users count' );
+ $this->addOption( 'use-master', 'Count using the master database' );
+ }
+
+ public function execute() {
+ $this->output( "Refresh Site Statistics\n\n" );
+ $counter = new SiteStatsInit( $this->hasOption( 'use-master' ) );
+
+ $this->output( "Counting total edits..." );
+ $edits = $counter->edits();
+ $this->output( "{$edits}\nCounting number of articles..." );
+
+ $good = $counter->articles();
+ $this->output( "{$good}\nCounting total pages..." );
+
+ $pages = $counter->pages();
+ $this->output( "{$pages}\nCounting number of users..." );
+
+ $users = $counter->users();
+ $this->output( "{$users}\nCounting number of images..." );
+
+ $image = $counter->files();
+ $this->output( "{$image}\n" );
+
+ if ( !$this->hasOption( 'noviews' ) ) {
+ $this->output( "Counting total page views..." );
+ $views = $counter->views();
+ $this->output( "{$views}\n" );
+ }
+
+ if ( $this->hasOption( 'active' ) ) {
+ $this->output( "Counting active users..." );
+ $active = SiteStatsUpdate::cacheUpdate();
+ $this->output( "{$active}\n" );
+ }
+
+ $this->output( "\nUpdating site statistics..." );
+
+ if ( $this->hasOption( 'update' ) ) {
+ $counter->update();
+ } else {
+ $counter->refresh();
+ }
+
+ $this->output( "done.\n" );
+ }