Changeset 1058 for trunk/common


Ignore:
Timestamp:
11/03/09 00:15:56 (3 years ago)
Author:
bogdan2412
Message:

Fix SMF not updating it's member stats.

Currently, SMF reports it has 7000 members and the latest member registered in February, 2008.

Apparently, SMF only updates it's member statistics when a new user is registered, so I adapted some of it's update statistics code and made it run when a new user is registered.

Reviewed: http://reviewboard.infoarena.ro/r/91/

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/db/smf.php

    r1055 r1058  
    5454    ); 
    5555 
    56     return db_insert(IA_SMF_DB_PREFIX.'members', $fields); 
     56    $user_id = db_insert(IA_SMF_DB_PREFIX.'members', $fields); 
     57    smf_update_member_stats(); 
     58    return $user_id; 
     59} 
     60 
     61// Adapted from updateStats function in smf/Sources/Subs.php 
     62function smf_update_member_stats() { 
     63    $changes = array( 
     64        'memberlist_updated' => time(), 
     65    ); 
     66 
     67    // Get the latest member (highest ID_MEMBER) and count. 
     68    list($changes['totalMembers'], $changes['latestMember']) = array_values( 
     69        db_fetch(" 
     70            SELECT COUNT(*), MAX(ID_MEMBER) 
     71            FROM `" . IA_SMF_DB_PREFIX . "members`" 
     72        ) 
     73    ); 
     74 
     75    // Get the latest member's display name. 
     76    list($changes['latestRealName']) = array_values( 
     77        db_fetch(" 
     78            SELECT realName 
     79            FROM `" . IA_SMF_DB_PREFIX . "members` 
     80            WHERE ID_MEMBER = " . (int)$changes['latestMember'] . " 
     81            LIMIT 1" 
     82        ) 
     83    ); 
     84 
     85    // Update smf settings table. 
     86    // SMF also clears it's $modSettings cache at this point 
     87    // but, since infoarena and SMF don't use the same caching 
     88    // engine, I don't know how to handle this. The cache timeout 
     89    // is short though so it's ok to leave it like this. 
     90    foreach ($changes as $variable => $value) 
     91    { 
     92        db_query(" 
     93            UPDATE `" . IA_SMF_DB_PREFIX . "settings` 
     94            SET value = " . db_quote($value) . " 
     95            WHERE variable = " . db_quote($variable) . " 
     96            LIMIT 1" 
     97        ); 
     98    } 
    5799} 
    58100 
     
    61103    $fields = array( 
    62104        'memberName' => $ia_user['username'], 
    63         // 'dateRegistered' => time(), 
     105        //'dateRegistered' => time(), 
    64106        //'posts' => 0, 
    65107        //'lngfile' => '', 
Note: See TracChangeset for help on using the changeset viewer.