You are here

function user_stats_login_count_update in User Stats 7

Same name and namespace in other branches
  1. 6 user_stats.module \user_stats_login_count_update()

Manage the login count of a given user.

Parameters

$uid: Unique id of the user who's record should be updated.

$op: Whether the user login count should be incremented, decremented, or reset. Possible values are:

  • 'increment'
  • 'decrement'
  • 'reset'
2 calls to user_stats_login_count_update()
user_stats_login_count_reset_action in ./user_stats.module
Implementation of a Drupal action. Resets a user's login count.
user_stats_user_login in ./user_stats.module
Implements hook_user_login().

File

./user_stats.module, line 717
User Stats provides commonly requested user statistics for themers. These are:

Code

function user_stats_login_count_update($op, $uid) {
  if (!is_numeric($uid)) {
    return;
  }
  switch ($op) {
    case 'increment':
      if (user_stats_isset('login_count', $uid)) {

        // Update existing value.
        db_update('user_stats_values')
          ->expression('value', 'value + :value', array(
          ':value' => 1,
        ))
          ->condition('name', 'login_count')
          ->condition('uid', $uid)
          ->execute();
      }
      else {

        // If there isn't a value insert it.
        $id = db_insert('user_stats_values')
          ->fields(array(
          'name' => 'login_count',
          'uid' => $uid,
          'value' => 1,
        ))
          ->execute();
      }
      break;
    case 'decrement':
      if (user_stats_isset('login_count', $uid)) {

        // Update existing value.
        $count = user_stats_cache_get('login_count', $uid) - 1;
        db_update('user_stats_values')
          ->expression('value', 'value + :value', array(
          ':value' => 1,
        ))
          ->condition('name', 'login_count')
          ->condition('uid', $uid)
          ->execute();
      }
      else {

        // If there isn't a value insert it.
        $id = db_insert('user_stats_values')
          ->fields(array(
          'name' => 'login_count',
          'uid' => $uid,
          'value' => 0,
        ))
          ->execute();
      }
      break;
    case 'reset':
      db_delete('user_stats_values')
        ->condition('name', 'login_count')
        ->condition('uid', $uid)
        ->execute();
      break;
  }

  // Flush token cache.

  //if (module_exists('token')) {

  //token_get_values('user', NULL, TRUE);

  //}

  // Flush internal cache.
  user_stats_cache_set('reset', $uid);

  // Allow modules to react to a statistic change.
  module_invoke_all('user_stats', 'login_count', $op, $uid, user_stats_get_stats('login_count', $uid));
}