Settings', ) ); } /** * Receive the event categories (terms) used by the event plugin. * * @param Event_Plugin $event_plugin Contains info about a certain event plugin. * * @return array An array of Terms. */ private static function get_event_terms( $event_plugin ): array { $taxonomy = $event_plugin::get_event_category_taxonomy(); if ( $taxonomy ) { $event_terms = get_terms( array( 'taxonomy' => $taxonomy, 'hide_empty' => true, ) ); return ! is_wp_error( $event_terms ) ? $event_terms : array(); } else { return array(); } } /** * Preparing the data and loading the template for the settings page. * * @return void */ public static function settings_page(): void { // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( empty( $_GET['tab'] ) ) { $tab = 'welcome'; } else { // phpcs:ignore WordPress.Security.NonceVerification.Recommended $tab = sanitize_key( $_GET['tab'] ); } // Fallback to always re-scan active event plugins, when user visits admin area of this plugin. Setup::get_instance()->redetect_active_event_plugins(); switch ( $tab ) { case 'settings': $plugin_setup = Setup::get_instance(); $event_plugins = $plugin_setup->get_active_event_plugins(); $event_terms = array(); foreach ( $event_plugins as $event_plugin ) { $event_terms = array_merge( $event_terms, self::get_event_terms( $event_plugin ) ); } $args = array( 'slug' => self::SETTINGS_SLUG, 'event_terms' => $event_terms, ); \load_template( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/settings.php', true, $args ); break; case 'welcome': default: wp_enqueue_script( 'plugin-install' ); add_thickbox(); wp_enqueue_script( 'updates' ); \load_template( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/welcome.php', true ); break; } } }