00001 <?php 00007 function wfInitStats( $options=array() ) { 00008 $dbr = wfGetDB( DB_SLAVE ); 00009 00010 wfOut( "Counting total edits..." ); 00011 $edits = $dbr->selectField( 'revision', 'COUNT(*)', '', __METHOD__ ); 00012 $edits += $dbr->selectField( 'archive', 'COUNT(*)', '', __METHOD__ ); 00013 wfOut( "{$edits}\nCounting number of articles..." ); 00014 00015 global $wgContentNamespaces; 00016 $good = $dbr->selectField( 'page', 'COUNT(*)', array( 'page_namespace' => $wgContentNamespaces, 'page_is_redirect' => 0, 'page_len > 0' ), __METHOD__ ); 00017 wfOut( "{$good}\nCounting total pages..." ); 00018 00019 $pages = $dbr->selectField( 'page', 'COUNT(*)', '', __METHOD__ ); 00020 wfOut( "{$pages}\nCounting number of users..." ); 00021 00022 $users = $dbr->selectField( 'user', 'COUNT(*)', '', __METHOD__ ); 00023 wfOut( "{$users}\nCounting number of admins..." ); 00024 00025 $admin = $dbr->selectField( 'user_groups', 'COUNT(*)', array( 'ug_group' => 'sysop' ), __METHOD__ ); 00026 wfOut( "{$admin}\nCounting number of images..." ); 00027 00028 $image = $dbr->selectField( 'image', 'COUNT(*)', '', __METHOD__ ); 00029 wfOut( "{$image}\n" ); 00030 00031 if( !isset( $options['noviews'] ) ) { 00032 wfOut( "Counting total page views..." ); 00033 $views = $dbr->selectField( 'page', 'SUM(page_counter)', '', __METHOD__ ); 00034 wfOut( "{$views}\n" ); 00035 } 00036 00037 wfOut( "\nUpdating site statistics..." ); 00038 00039 $dbw = wfGetDB( DB_MASTER ); 00040 $values = array( 'ss_total_edits' => $edits, 00041 'ss_good_articles' => $good, 00042 'ss_total_pages' => $pages, 00043 'ss_users' => $users, 00044 'ss_admins' => $admin, 00045 'ss_images' => $image ); 00046 $conds = array( 'ss_row_id' => 1 ); 00047 $views = array( 'ss_total_views' => isset( $views ) ? $views : 0 ); 00048 00049 if( isset( $options['update'] ) ) { 00050 $dbw->update( 'site_stats', $values, $conds, __METHOD__ ); 00051 } else { 00052 $dbw->delete( 'site_stats', $conds, __METHOD__ ); 00053 $dbw->insert( 'site_stats', array_merge( $values, $conds, $views ), __METHOD__ ); 00054 } 00055 00056 wfOut( "done.\n" ); 00057 }