Changeset 1929


Ignore:
Timestamp:
06/10/10 00:46:32 (3 years ago)
Author:
shibuya246
Message:

[Branch 1.4] new query for getting user stats reduced to 1 db call instead of 8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.4/libs/UserInfo.php

    r1805 r1929  
    314314        public function stats($h, $stat_type = '') 
    315315        { 
    316                 switch ($stat_type) { 
    317                         case 'admins': 
    318                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    319                                 $query = $h->db->prepare($sql, 'admin'); 
    320                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    321                                 $users = $h->db->get_var($query); 
    322                                 break; 
    323                         case 'supermods': 
    324                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    325                                 $query = $h->db->prepare($sql, 'supermod'); 
    326                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    327                                 $users = $h->db->get_var($query); 
    328                                 break; 
    329                         case 'moderators': 
    330                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    331                                 $query = $h->db->prepare($sql, 'moderator'); 
    332                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    333                                 $users = $h->db->get_var($query); 
    334                                 break; 
    335                         case 'members': 
    336                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    337                                 $query = $h->db->prepare($sql, 'member'); 
    338                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    339                                 $users = $h->db->get_var($query); 
    340                                 break; 
    341                         case 'total_users': 
    342                                 $query = "SELECT count(user_id) FROM " . TABLE_USERS; 
    343                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    344                                 $users = $h->db->get_var($query); 
    345                                 break; 
    346                         case 'approved_users': 
    347                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s OR user_role = %s OR user_role = %s OR  user_role = %s"; 
    348                                 $query = $h->db->prepare($sql, 'admin', 'supermod', 'moderator', 'member'); 
    349                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    350                                 $users = $h->db->get_var($query); 
    351                                 break; 
    352                         case 'pending_users': 
    353                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    354                                 $query = $h->db->prepare($sql, 'pending'); 
    355                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    356                                 $users = $h->db->get_var($query); 
    357                                 break; 
    358                         case 'undermod_users': 
    359                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    360                                 $query = $h->db->prepare($sql, 'undermod'); 
    361                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    362                                 $users = $h->db->get_var($query); 
    363                                 break; 
    364                         case 'banned_users': 
    365                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    366                                 $query = $h->db->prepare($sql, 'banned'); 
    367                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    368                                 $users = $h->db->get_var($query); 
    369                                 break; 
    370                         case 'killspammed_users': 
    371                                 $sql = "SELECT count(user_id) FROM " . TABLE_USERS . " WHERE user_role = %s"; 
    372                                 $query = $h->db->prepare($sql, 'killspammed'); 
    373                                 $h->smartCache('on', 'users', 60, $query); // start using cache 
    374                                 $users = $h->db->get_var($query); 
    375                                 break; 
    376                         default: 
    377                                 $users = 0; 
    378                 } 
     316                $sql = "SELECT user_role, count(user_id) FROM " . TABLE_USERS . " GROUP BY user_role"; 
     317                $query = $h->db->prepare($sql, 'admin'); 
     318                $h->smartCache('on', 'users', 60, $query); // start using cache 
     319                $users = $h->db->get_results($query, ARRAY_N); 
    379320                $h->smartCache('off'); // stop using cache 
    380321                 
Note: See TracChangeset for help on using the changeset viewer.