From 4560e2d824a99514ea6a2ca2a89c8d0453923fbc Mon Sep 17 00:00:00 2001 From: plegall Date: Tue, 31 May 2016 16:00:03 +0200 Subject: 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... --- include/functions_user.inc.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'include/functions_user.inc.php') diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php index de8f87c7f..6a910c511 100644 --- a/include/functions_user.inc.php +++ b/include/functions_user.inc.php @@ -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; +} ?> -- cgit v1.2.3