wordpress-event-bridge-for-.../includes/plugins/class-event-plugin.php
André Menrath 127df329b6
All checks were successful
PHP Code Checker / PHP Code Checker (pull_request) Successful in 38s
PHPUnit / PHPUnit – PHP 8.1 (pull_request) Successful in 1m10s
PHPUnit / PHPUnit – PHP 8.2 (pull_request) Successful in 1m12s
PHPUnit / PHPUnit – PHP 8.3 (pull_request) Successful in 1m4s
improved settings page layout
2024-10-19 13:06:01 +02:00

88 lines
2.3 KiB
PHP

<?php
/**
* Interface for defining supported Event Plugins.
*
* Basic information that each supported event needs for this plugin to work.
*
* @package ActivityPub_Event_Bridge
* @since 1.0.0
*/
namespace ActivityPub_Event_Bridge\Plugins;
use ActivityPub_Event_Bridge\Activitypub\Transformer\Event as Event_Transformer;
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
/**
* Interface for a supported event plugin.
*
* This interface defines which information is necessary for a supported event plugin.
*
* @since 1.0.0
*/
abstract class Event_Plugin {
/**
* Returns the full plugin file.
*
* @return string
*/
abstract public static function get_plugin_file(): string;
/**
* Returns the event post type of the plugin.
*
* @return string
*/
abstract public static function get_post_type(): string;
/**
* Returns the taxonomy used for the plugin's event categories.
*
* @return string
*/
abstract public static function get_event_category_taxonomy(): string;
/**
* Returns the ID of the main settings page of the plugin.
*
* @return string The settings page url.
*/
public static function get_settings_page(): string {
return '';
}
/**
* Get the plugins name from the main plugin-file's top-level-file-comment.
*/
final public static function get_plugin_name(): string {
$plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . static::get_plugin_file() );
if ( isset( $plugin_data['Name'] ) ) {
return $plugin_data['Name'];
} else {
return '';
}
}
/**
* Detects whether the current screen is a admin page of the event plugin.
*/
public static function is_plugin_page(): bool {
// Get the current page.
$screen = get_current_screen();
// Check if we are on a edit page for the event, or on the settings page of the event plugin.
$is_event_plugins_edit_page = 'edit' === $screen->base && static::get_post_type() === $screen->post_type;
$is_event_plugins_settings_page = static::get_settings_page() === $screen->id;
return $is_event_plugins_edit_page || $is_event_plugins_settings_page;
}
/**
* Returns the Activitypub transformer for the event plugins event post type.
*/
public static function get_activitypub_event_transformer_class(): string {
return str_replace( 'Plugins', 'Activitypub\Transformer', static::class );
}
}