This CodeLet will store user's login history and creates a block. Admin can place this block on user pages or on pages. Future ammendments to this code will allow to use the stored login details to be displayed using a theme function.
This CodeLet will be submitted to Drupal.org community soon.
CodeLet
<?php
/**
* @file
*
* Logs user's logins and display last login details
*
* DrupalD <DrupalD@twitter>
*/
/**
* Implementation of hook_user
*
* @param $op
* @param $edit
* @param $account
* @param $category
* DrupalD <DrupalD@twitter>
*/
function last_login_user($op, &$edit, &$account, $category = NULL) {
global $user;
switch ($op) {
case 'login':
case 'register':
db_query('INSERT INTO {last_login VALUES(id, %d, %d)', $user->uid, time('now'));
break;
}
}
/**
* Implementation of hook_block
*
* @param unknown_type $op
* @param unknown_type $delta
* @param unknown_type $edit
* DrupalD <DrupalD@twitter>
*/
function last_login_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == 'list') {
$blocks[0] = array(
'info' => t('Last login'),
'status' => 1,
'weight' => 0,
'region' => 'right',
);
return $blocks;
}
if ($op == 'view') {
switch ($delta) {
case 0:
$output = _get_last_login();
echo $output;
$block = array(
'subject' => t("Last login"),
'content' => $output,
);
break;
}
return $block;
}
}
/**
* _get_last_login
*
* Get last login details of the user
* DrupalD <DrupalD@twitter>
*/
function _get_last_login() {
global $user;
$sn__last_login = db_result(db_query('SELECT last_logged FROM {last_login} WHERE uid = %d ORDER BY id DESC LIMIT 1, 1', $user->uid));
if (empty($sn__last_login)) {
$sn__last_login = db_result(db_query('SELECT last_logged FROM {last_login} WHERE uid = %d ORDER BY id DESC LIMIT 0, 1', $user->uid));
}
if (!empty($sn__last_login)) {
$output = t('Last login at @time on @date', array('@time' => format_date($sn__last_login, 'custom', 'h:m A T'), '@date' => format_date($sn__last_login, 'custom','m/d/Y')));
}
else {
$output = t('Last login details not available');
}
return $output;
}
?>
Info file details
name = Last login details
description = Shows user's last login time stamp.
core = 6.x
package = Login
Install file details
<?php
/**
* @file
*
* Schema file for Last login
*
* DrupalD <DrupalD@twitter>
*/
/**
* Implementation of hook_install
*
* DrupalD <DrupalD@twitter>
*/
function last_login_install() {
drupal_install_schema('last_login');
}
/**
* Implemetation of hook_uninstall
*
* DrupalD <DrupalD@twitter>
*/
function last_login_uninstall() {
drupal_uninstall_schema('last_login');
}
/**
* Implemeantation of hook_schema
*
* DrupalD <DrupalD@twitter>
*/
function last_login_schema() {
$schema = array();
$schema['last_login'] = array(
'fields' => array(
'id' => array(
'type' => 'serial',
'length' => 11,
'not null' => TRUE,
),
'uid' => array(
'type' => 'int',
'length' => 11,
'not null' => TRUE,
),
'last_logged' => array(
'type' => 'int',
'length' => 11,
'not null' => TRUE,
),
),
'primary key' => array('id'),
);
return $schema;
}
?>