LLMS_Sessions::is_session_idle( LLMS_Event $start )
Determine if a session is idle.
Description Description
A session is considered idle if it’s open and no new events have been recorded in the last 30 minutes.
Parameters Parameters
- $start
-
(LLMS_Event) (Required) Event record for the start of the session.
Return Return
(bool)
Source Source
File: includes/class-llms-sessions.php
public function is_session_idle( $start ) {
// Session is closed so it can't be idle.
if ( ! $this->is_session_open( $start ) ) {
return false;
}
$now = llms_current_time( 'timestamp' );
/**
* Filter the time (in minutes) to allow a session to remain open before it's considered an "idle" session.
*
* @param int $minutes Number of minutes.
*/
$timeout = absint( apply_filters( 'llms_idle_session_timeout', 30 ) ) * MINUTE_IN_SECONDS;
// Session has started within the idle window, so it can't have expired yet.
if ( ( $now - strtotime( $start->get( 'date' ) ) ) < $timeout ) {
return false;
}
$events = $this->get_session_events(
$start,
array(
'per_page' => 1,
'sort' => array(
'date' => 'DESC',
),
'no_found_rows' => true,
)
);
// No events, the session is idle.
if ( ! $events ) {
return true;
}
$last_event = array_shift( $events );
return ( ( $now - strtotime( $last_event->get( 'date' ) ) ) > $timeout );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.7.0 | When retrieving the last event, instantiate the events query passing no_found_rows arg as true, to improve performance. |
| 3.36.0 | Introduced. |