/** * Updates the current user's last access time. * * @param \Symfony\Component\HttpKernel\Event\PostResponseEvent $event * The event to process. */ public function onKernelTerminate(PostResponseEvent $event) { if ($this->account->isAuthenticated() && REQUEST_TIME - $this->account->getLastAccessedTime() > Settings::get('session_write_interval', 180)) { // Do that no more than once per 180 seconds. /** @var \Drupal\user\UserStorageInterface $storage */ $storage = $this->entityManager->getStorage('user'); $storage->updateLastAccessTimestamp($this->account, REQUEST_TIME); } }
/** * Helper callback for uasort() to sort accounts by last access. */ public static function sortUserList(AccountInterface $a, AccountInterface $b) { $a_access = (int) $a->getLastAccessedTime(); $b_access = (int) $b->getLastAccessedTime(); if ($a_access === $b_access) { return 0; } // User never access to site. if ($a_access === 0) { return 1; } return $a_access > $b_access ? -1 : 1; }