register( 'my_plugin_export', array( * 'label' => 'Export ran', * 'severity' => 'info', * 'icon' => 'download', * ) ); * } ); * * @package ActivityPilot */ if ( ! defined( 'ABSPATH' ) ) { exit; } final class APWPM_Event_Registry { /** @var array */ private static $types = array(); private static $ran = false; public static function boot() { if ( self::$ran ) { return; } self::$ran = true; APWPM_Compat::action( 'apwpm_register_event_types', 'ap_register_event_types', new self() ); } public function register( $slug, array $args = array() ) { $slug = sanitize_key( $slug ); if ( ! $slug ) { return false; } self::$types[ $slug ] = wp_parse_args( $args, array( 'label' => ucwords( str_replace( '_', ' ', $slug ) ), 'severity' => 'info', 'icon' => 'admin-generic', ) ); return true; } public static function all() { self::boot(); return self::$types; } public static function get( $slug ) { self::boot(); return self::$types[ $slug ] ?? null; } }