LLMS_Events::record( array $args = array() )
Store an event in the database.
Parameters Parameters
- $args
-
(array) (Optional) Event data
- 'actor_id'
(int) WP_User ID. - 'object_type'
(string) Type of object being acted upon (post,user,comment,etc...). - 'object_id'
(int) WP_Post ID, WP_User ID, WP_Comment ID, etc... - 'event_type'
(string) Type of event (account, page, course, etc...). - 'event_action'
(string) The event action or verb (signon,viewed,launched,etc...).
Default value: array()
- 'actor_id'
Return Return
(LLMS_Event|WP_Error)
Source Source
File: includes/class-llms-events.php
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | public function record( $args = array () ) { $err = new WP_Error(); foreach ( array ( 'actor_id' , 'object_type' , 'object_id' , 'event_type' , 'event_action' ) as $key ) { if ( ! in_array( $key , array_keys ( $args ), true ) ) { // Translators: %s = key name of the missing field. $err ->add( 'llms_event_record_missing_field' , sprintf( __( 'Missing required field: "%s".' , 'lifterlms' ), $key ) ); } } if ( $err ->get_error_codes() ) { return $err ; } $event = sprintf( '%1$s.%2$s' , $args [ 'event_type' ], $args [ 'event_action' ] ); if ( ! $this ->is_event_valid( $event ) ) { // Translators: %s = Submitted event string. return new WP_Error( 'llms_event_record_invalid_event' , sprintf( __( 'The event "%s" is invalid.' , 'lifterlms' ), $event ) ); } $args = $this ->sanitize_raw_event( $args ); $meta = isset( $args [ 'meta' ] ) ? $args [ 'meta' ] : null; unset( $args [ 'meta' ] ); if ( ! in_array( $event , array ( 'session.start' , 'session.end' ), true ) ) { // Start a session if one isn't open. $sessions = LLMS_Sessions::instance(); $user_id = 'account.signon' === $event && isset( $args [ 'actor_id' ] ) ? $args [ 'actor_id' ] : null; if ( false === $sessions ->get_current( $user_id ) ) { $sessions ->start( $user_id ); } } $llms_event = new LLMS_Event(); if ( ! $llms_event ->setup( $args )->save() ) { $err ->add( 'llms_event_recored_unknown_error' , __( 'An unknown error occurred during event creation.' , 'lifterlms' ) ); return $err ; } if ( $meta && ! empty ( $meta ) ) { $llms_event ->set_metas( $meta , true ); } // End the current session on signout. if ( 'account.signout' === $event ) { LLMS_Sessions::instance()->end_current(); } return $llms_event ; } |
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
4.5.0 | Fixed event session end not recorded on sign-out. |
3.36.0 | Introduced. |