Back to MetadataManager class

Method createSessionRecord

private void
createSessionRecord
(\Joomla\Session\SessionInterface $session, \Joomla\CMS\User\User $user)
Create the session record
Parameters
  • \Joomla\Session\SessionInterface $session The session to create the metadata record for.
  • \Joomla\CMS\User\User $user The user to associate with the record.
Returns
  • void
Since
  • 4.0.0

Method createSessionRecord - Source code

/**
 * Create the session record
 *
 * @param   SessionInterface  $session  The session to create the metadata record for.
 * @param   User              $user     The user to associate with the record.
 *
 * @return  void
 *
 * @since   4.0.0
 */
private function createSessionRecord(SessionInterface $session, User $user)
{
    $query = $this->db->getQuery(true);
    $time = $session->isNew() ? time() : $session->get('session.timer.start');
    $columns = [$this->db->quoteName('session_id'), $this->db->quoteName('guest'), $this->db->quoteName('time'), $this->db->quoteName('userid'), $this->db->quoteName('username')];
    // Add query placeholders
    $values = [':session_id', ':guest', ':time', ':user_id', ':username'];
    // Bind query values
    $sessionId = $session->getId();
    $userIsGuest = $user->guest;
    $userId = $user->id;
    $username = $user->username === null ? '' : $user->username;
    $query->bind(':session_id', $sessionId)->bind(':guest', $userIsGuest, ParameterType::INTEGER)->bind(':time', $time)->bind(':user_id', $userId, ParameterType::INTEGER)->bind(':username', $username);
    if ($this->app instanceof CMSApplication && !$this->app->get('shared_session', false)) {
        $clientId = $this->app->getClientId();
        $columns[] = $this->db->quoteName('client_id');
        $values[] = ':client_id';
        $query->bind(':client_id', $clientId, ParameterType::INTEGER);
    }
    $query->insert($this->db->quoteName('#__session'))->columns($columns)->values(implode(', ', $values));
    $this->db->setQuery($query);
    try {
        $this->db->execute();
    } catch (ExecutionFailureException $e) {
        // This failure isn't critical, we can go on without the metadata
    }
}