fixes #478, add new column user_infos.last_visit

This will speed up user edit popin opening, by avoiding to search in history for the last user visit.

The column user_infos.last_visit_from_history true/false says if the last_visit has already been search in history (to avoid making it twice). I could have implemented the search of last_visit for all users in the migration task 149 but in case of many users and long history, it would have taken years to execute...
This commit is contained in:
plegall 2016-05-31 16:00:03 +02:00
parent bd0d2ae645
commit 4560e2d824
5 changed files with 119 additions and 31 deletions

View file

@ -1614,4 +1614,46 @@ UPDATE '.USER_AUTH_KEYS_TABLE.'
;';
pwg_query($query);
}
/**
* Gets the last visit (datetime) of a user, based on history table
*
* @since 2.9
* @param int $user_id
* @param boolean $save_in_user_infos to store result in user_infos.last_visit
* @return string date & time of last visit
*/
function get_user_last_visit_from_history($user_id, $save_in_user_infos=false)
{
$last_visit = null;
$query = '
SELECT
date,
time
FROM '.HISTORY_TABLE.'
WHERE user_id = '.$user_id.'
ORDER BY id DESC
LIMIT 1
;';
$result = pwg_query($query);
while ($row = pwg_db_fetch_assoc($result))
{
$last_visit = $row['date'].' '.$row['time'];
}
if ($save_in_user_infos)
{
$query = '
UPDATE '.USER_INFOS_TABLE.'
SET last_visit = '.(is_null($last_visit) ? 'NULL' : "'".$last_visit."'").',
last_visit_from_history = \'true\',
lastmodified = lastmodified
WHERE user_id = '.$user_id.'
';
pwg_query($query);
}
return $last_visit;
}
?>