X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/83d77d516665c41ca445a93119dfd97311bfb498..refs/pull/2515/head:/app/Auth/User.php diff --git a/app/Auth/User.php b/app/Auth/User.php index fdfd9e616..9d7eaa72e 100644 --- a/app/Auth/User.php +++ b/app/Auth/User.php @@ -1,19 +1,20 @@ 'datetime']; + /** * The attributes excluded from the model's JSON form. * @var array @@ -181,7 +184,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon /** * Get the social account associated with this user. - * @return \Illuminate\Database\Eloquent\Relations\HasMany + * @return HasMany */ public function socialAccounts() { @@ -218,7 +221,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon try { $avatar = $this->avatar ? url($this->avatar->getThumb($size, $size, false)) : $default; - } catch (\Exception $err) { + } catch (Exception $err) { $avatar = $default; } return $avatar; @@ -226,7 +229,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon /** * Get the avatar for the user. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @return BelongsTo */ public function avatar() { @@ -242,11 +245,16 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon } /** - * Get the latest activity instance for this user. + * Get the last activity time for this user. */ - public function latestActivity(): HasOne + public function scopeWithLastActivityAt(Builder $query) { - return $this->hasOne(Activity::class)->latest(); + $query->addSelect(['activities.created_at as last_activity_at']) + ->leftJoinSub(function (\Illuminate\Database\Query\Builder $query) { + $query->from('activities')->select('user_id') + ->selectRaw('max(created_at) as created_at') + ->groupBy('user_id'); + }, 'activities', 'users.id', '=', 'activities.user_id'); } /**