static function ( $key, $default ) {
return get_option( 'hfe_' . $key, $default );
},
'update' => static function ( $key, $value ) {
$autoload = ( 'usage_events_pushed' === $key );
update_option( 'hfe_' . $key, $value, $autoload );
},
]
);
return self::$instance;
}
/**
* Track an event. See BSF_Analytics_Events::track() for behavior.
*
* @param string $event_name Event identifier.
* @param string $event_value Primary value (version, mode, etc.).
* @param array $properties Additional context as key-value pairs.
* @param bool $force When true, bypass pushed dedup and overwrite pending entry.
* @since 2.8.6
* @since 2.8.7 Added the $force parameter.
* @return void
*/
public static function track( $event_name, $event_value = '', $properties = [], $force = false ) {
$events = self::instance();
if ( null === $events ) {
return;
}
$events->track( $event_name, $event_value, $properties, $force );
}
/**
* Flush pending events into payload, then clean up.
*
* @since 2.8.6
* @return array Pending events. Empty array if none or library unavailable.
*/
public static function flush_pending() {
$events = self::instance();
if ( null === $events ) {
return [];
}
return $events->flush_pending();
}
/**
* Check if an event has already been tracked (sent or pending).
*
* @param string $event_name Event identifier.
* @since 2.8.6
* @return bool
*/
public static function is_tracked( $event_name ) {
$events = self::instance();
if ( null === $events ) {
return false;
}
return $events->is_tracked( $event_name );
}
/**
* Remove specific event names from the pushed dedup flag, allowing them to be re-tracked.
* Empty array clears all pushed events.
*
* @param array