initSiteStats.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Re-initialise or update the site statistics table.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License along
  16. * with this program; if not, write to the Free Software Foundation, Inc.,
  17. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. * http://www.gnu.org/copyleft/gpl.html
  19. *
  20. * @file
  21. * @ingroup Maintenance
  22. * @author Brion Vibber
  23. * @author Rob Church <robchur@gmail.com>
  24. */
  25. require_once __DIR__ . '/Maintenance.php';
  26. /**
  27. * Maintenance script to re-initialise or update the site statistics table
  28. *
  29. * @ingroup Maintenance
  30. */
  31. class InitSiteStats extends Maintenance {
  32. public function __construct() {
  33. parent::__construct();
  34. $this->addDescription( 'Re-initialise the site statistics tables' );
  35. $this->addOption( 'update', 'Update the existing statistics' );
  36. $this->addOption( 'active', 'Also update active users count' );
  37. $this->addOption( 'use-master', 'Count using the master database' );
  38. }
  39. public function execute() {
  40. $this->output( "Refresh Site Statistics\n\n" );
  41. $counter = new SiteStatsInit( $this->hasOption( 'use-master' ) );
  42. $this->output( "Counting total edits..." );
  43. $edits = $counter->edits();
  44. $this->output( "{$edits}\nCounting number of articles..." );
  45. $good = $counter->articles();
  46. $this->output( "{$good}\nCounting total pages..." );
  47. $pages = $counter->pages();
  48. $this->output( "{$pages}\nCounting number of users..." );
  49. $users = $counter->users();
  50. $this->output( "{$users}\nCounting number of images..." );
  51. $image = $counter->files();
  52. $this->output( "{$image}\n" );
  53. if ( $this->hasOption( 'update' ) ) {
  54. $this->output( "\nUpdating site statistics..." );
  55. $counter->refresh();
  56. $this->output( "done.\n" );
  57. } else {
  58. $this->output( "\nTo update the site statistics table, run the script "
  59. . "with the --update option.\n" );
  60. }
  61. if ( $this->hasOption( 'active' ) ) {
  62. $this->output( "\nCounting and updating active users..." );
  63. $active = SiteStatsUpdate::cacheUpdate( $this->getDB( DB_MASTER ) );
  64. $this->output( "{$active}\n" );
  65. }
  66. $this->output( "\nDone.\n" );
  67. }
  68. }
  69. $maintClass = "InitSiteStats";
  70. require_once RUN_MAINTENANCE_IF_MAIN;