Skip to content

Commit

Permalink
Fix #3669 User Last Visit / Active accuracy (#3688)
Browse files Browse the repository at this point in the history
* acp lastact skip

* memberlist lastvisit correction

* profile lastactive accuracy

* Online state correction

* time correction

* ACP last active correction
  • Loading branch information
effone authored and euantorano committed Aug 15, 2019
1 parent 11b66b9 commit f8066f4
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 64 deletions.
15 changes: 12 additions & 3 deletions admin/modules/user/users.php
Expand Up @@ -1010,9 +1010,10 @@
}
}
$avatar_top = ceil((126-$scaled_dimensions['height'])/2);
if($user['lastactive'])
$last_seen = max(array($user['lastactive'], $user['lastvisit']));
if(!empty($last_seen))
{
$last_active = my_date('relative', $user['lastactive']);
$last_active = my_date('relative', $last_seen);
}
else
{
Expand Down Expand Up @@ -3575,7 +3576,15 @@ function build_users_view($view)
$user['view']['additionalgroups'] = "<small>{$groups_list}</small>";
$user['view']['email'] = "<a href=\"mailto:".htmlspecialchars_uni($user['email'])."\">".htmlspecialchars_uni($user['email'])."</a>";
$user['view']['regdate'] = my_date('relative', $user['regdate']);
$user['view']['lastactive'] = my_date('relative', $user['lastactive']);
$last_seen = max(array($user['lastactive'], $user['lastvisit']));
if(!empty($last_seen))
{
$user['view']['lastactive'] = my_date('relative', $last_seen);
}
else
{
$user['view']['lastactive'] = $lang->never;
}

// Build popup menu
$popup = new PopupMenu("user_{$user['uid']}", $lang->options);
Expand Down
6 changes: 6 additions & 0 deletions inc/datahandlers/user.php
Expand Up @@ -1103,6 +1103,12 @@ function insert_user()
$user[$value] = '';
}
}

// If user is being created from ACP, there is no last visit or last active
if(defined('IN_ADMINCP'))
{
$user['lastvisit'] = $user['lastactive'] = 0;
}

$this->user_insert_data = array(
"username" => $db->escape_string($user['username']),
Expand Down
82 changes: 29 additions & 53 deletions member.php
Expand Up @@ -2414,19 +2414,6 @@

$localtime = $lang->sprintf($lang->local_time_format, $memlocaldate, $memlocaltime);

if($memprofile['lastactive'])
{
$memlastvisitdate = my_date($mybb->settings['dateformat'], $memprofile['lastactive']);
$memlastvisitsep = $lang->comma;
$memlastvisittime = my_date($mybb->settings['timeformat'], $memprofile['lastactive']);
}
else
{
$memlastvisitdate = $lang->lastvisit_never;
$memlastvisitsep = '';
$memlastvisittime = '';
}

if($memprofile['birthday'])
{
$membday = explode("-", $memprofile['birthday']);
Expand Down Expand Up @@ -2574,55 +2561,44 @@
$query = $db->simple_select("sessions", "location,nopermission", "uid='$uid' AND time>'{$timesearch}'", array('order_by' => 'time', 'order_dir' => 'DESC', 'limit' => 1));
$session = $db->fetch_array($query);

$online_status = '';
if($memprofile['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $memprofile['uid'] == $mybb->user['uid'])
$timeonline = $lang->none_registered;
$memlastvisitdate = $lang->lastvisit_never;
$last_seen = max(array($memprofile['lastactive'], $memprofile['lastvisit']));
if(!empty($last_seen))
{
// Lastvisit
if($memprofile['lastactive'])
{
$memlastvisitsep = $lang->comma;
$memlastvisitdate = my_date('relative', $memprofile['lastactive']);
}

// Time Online
$timeonline = $lang->none_registered;
if($memprofile['timeonline'] > 0)
{
$timeonline = nice_time($memprofile['timeonline']);
}

// Online?
if(!empty($session))
// We have some stamp here
if($memprofile['invisible'] == 1 && $mybb->usergroup['canviewwolinvis'] != 1 && $memprofile['uid'] != $mybb->user['uid'])
{
// Fetch their current location
$lang->load("online");
require_once MYBB_ROOT."inc/functions_online.php";
$activity = fetch_wol_activity($session['location'], $session['nopermission']);
$location = build_friendly_wol_location($activity);
$location_time = my_date($mybb->settings['timeformat'], $memprofile['lastactive']);

eval("\$online_status = \"".$templates->get("member_profile_online")."\";");
$memlastvisitdate = $lang->lastvisit_hidden;
$online_status = $timeonline = $lang->timeonline_hidden;
}
// User is offline
else
{
eval("\$online_status = \"".$templates->get("member_profile_offline")."\";");
}
}
$memlastvisitdate = my_date('relative', $last_seen);

if($memprofile['invisible'] == 1 && $mybb->usergroup['canviewwolinvis'] != 1 && $memprofile['uid'] != $mybb->user['uid'])
{
$memlastvisitsep = '';
$memlastvisittime = '';
$memlastvisitdate = $lang->lastvisit_never;
if($memprofile['timeonline'] > 0)
{
$timeonline = nice_time($memprofile['timeonline']);
}

if($memprofile['lastactive'])
{
// We have had at least some active time, hide it instead
$memlastvisitdate = $lang->lastvisit_hidden;
// Online?
if(!empty($session))
{
// Fetch their current location
$lang->load("online");
require_once MYBB_ROOT."inc/functions_online.php";
$activity = fetch_wol_activity($session['location'], $session['nopermission']);
$location = build_friendly_wol_location($activity);
$location_time = my_date($mybb->settings['timeformat'], $last_seen);

eval("\$online_status = \"".$templates->get("member_profile_online")."\";");
}
}
}

$timeonline = $lang->timeonline_hidden;
if(!isset($online_status))
{
eval("\$online_status = \"".$templates->get("member_profile_offline")."\";");
}

// Reset the background colours to keep it inline
Expand Down
19 changes: 11 additions & 8 deletions memberlist.php
Expand Up @@ -488,19 +488,22 @@
$useravatar = format_avatar($user['avatar'], $user['avatardimensions'], my_strtolower($mybb->settings['memberlistmaxavatarsize']));
eval("\$user['avatar'] = \"".$templates->get("memberlist_user_avatar")."\";");

if($user['invisible'] == 1 && $mybb->usergroup['canviewwolinvis'] != 1 && $user['uid'] != $mybb->user['uid'])
$last_seen = max(array($user['lastactive'], $user['lastvisit']));
if(empty($last_seen))
{
$user['lastvisit'] = $lang->lastvisit_never;

if($user['lastvisit'])
{
// We have had at least some active time, hide it instead
$user['lastvisit'] = $lang->lastvisit_hidden;
}
}
else
{
$user['lastvisit'] = my_date('relative', $user['lastactive']);
// We have some stamp here
if($user['invisible'] == 1 && $mybb->usergroup['canviewwolinvis'] != 1 && $user['uid'] != $mybb->user['uid'])
{
$user['lastvisit'] = $lang->lastvisit_hidden;
}
else
{
$user['lastvisit'] = my_date('relative', $last_seen);
}
}

$user['regdate'] = my_date('relative', $user['regdate']);
Expand Down

0 comments on commit f8066f4

Please sign in to comment.