refactoring: each event plugin now is represented as a class with static functions
This commit is contained in:
parent
b2076951b5
commit
457f433ed9
16 changed files with 183 additions and 204 deletions
|
@ -23,7 +23,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Events_Manager extends Event_Transformer {
|
||||
final class Events_Manager extends Event_Transformer {
|
||||
|
||||
/**
|
||||
* Holds the EM_Event object.
|
||||
|
|
|
@ -23,7 +23,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class GatherPress extends Event {
|
||||
final class GatherPress extends Event {
|
||||
|
||||
/**
|
||||
* The target ActivityPub Event object of the transformer.
|
||||
|
|
|
@ -22,7 +22,7 @@ use WP_Post;
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class The_Events_Calendar extends Event {
|
||||
final class The_Events_Calendar extends Event {
|
||||
|
||||
/**
|
||||
* The Tribe Event object.
|
||||
|
@ -38,9 +38,10 @@ class The_Events_Calendar extends Event {
|
|||
* has a lot of useful functions, we make use of our getter functions.
|
||||
*
|
||||
* @param WP_Post $wp_object The WordPress object.
|
||||
* @param string $wp_taxonomy The taxonomy slug of the event post type.
|
||||
*/
|
||||
public function __construct( $wp_object ) {
|
||||
parent::__construct( $wp_object );
|
||||
public function __construct( $wp_object, $wp_taxonomy ) {
|
||||
parent::__construct( $wp_object, $wp_taxonomy );
|
||||
$this->tribe_event = \tribe_get_event( $wp_object );
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class VS_Event_List extends Event_Transformer {
|
||||
final class VS_Event_List extends Event_Transformer {
|
||||
|
||||
/**
|
||||
* The target transformer ActivityPub Event object.
|
||||
|
@ -44,7 +44,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
* @access public
|
||||
* @return string Widget name.
|
||||
*/
|
||||
public function get_transformer_name() {
|
||||
public function get_transformer_name(): string {
|
||||
return 'activitypub-event-transformers/vs-event';
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
* @access public
|
||||
* @return string Widget title.
|
||||
*/
|
||||
public function get_transformer_label() {
|
||||
public function get_transformer_label(): string {
|
||||
return 'VS Event';
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
* @access public
|
||||
* @return array Widget categories.
|
||||
*/
|
||||
public static function get_supported_post_types() {
|
||||
public static function get_supported_post_types(): string {
|
||||
return array( 'event' );
|
||||
}
|
||||
|
||||
|
@ -81,16 +81,16 @@ class VS_Event_List extends Event_Transformer {
|
|||
* @since 1.0.0
|
||||
* @return string The Event Object-Type.
|
||||
*/
|
||||
protected function get_type() {
|
||||
protected function get_type(): string {
|
||||
return 'Event';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the event location.
|
||||
*
|
||||
* @return array The Place.
|
||||
* @return Place The Place.
|
||||
*/
|
||||
public function get_location() {
|
||||
public function get_location(): Place {
|
||||
$address = get_post_meta( $this->wp_object->ID, 'event-location', true );
|
||||
$place = new Place();
|
||||
$place->set_type( 'Place' );
|
||||
|
@ -102,7 +102,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
/**
|
||||
* Get the end time from the events metadata.
|
||||
*/
|
||||
protected function get_end_time() {
|
||||
protected function get_end_time(): string {
|
||||
$end_time = get_post_meta( $this->wp_object->ID, 'event-date', true );
|
||||
return \gmdate( 'Y-m-d\TH:i:s\Z', $end_time );
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
/**
|
||||
* Get the end time from the events metadata.
|
||||
*/
|
||||
protected function get_start_time() {
|
||||
protected function get_start_time(): string {
|
||||
$start_time = get_post_meta( $this->wp_object->ID, 'event-start-date', true );
|
||||
return \gmdate( 'Y-m-d\TH:i:s\Z', $start_time );
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ class VS_Event_List extends Event_Transformer {
|
|||
/**
|
||||
* Get the event link from the events metadata.
|
||||
*/
|
||||
private function get_event_link() {
|
||||
private function get_event_link(): array {
|
||||
$event_link = get_post_meta( $this->wp_object->ID, 'event-link', true );
|
||||
if ( $event_link ) {
|
||||
return array(
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
namespace Activitypub_Event_Extensions\Admin;
|
||||
|
||||
use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
||||
|
||||
/**
|
||||
* Class responsible for Event Plugin related admin notices.
|
||||
*
|
||||
|
@ -22,14 +24,14 @@ class Event_Plugin_Admin_Notices {
|
|||
/**
|
||||
* Information about the event plugin.
|
||||
*
|
||||
* @var array
|
||||
* @var Event_Plugin
|
||||
*/
|
||||
protected $event_plugin;
|
||||
|
||||
/**
|
||||
* Adds admin notices to an active supported event plugin.
|
||||
*
|
||||
* @param array $event_plugin Information about the activate event plugin.
|
||||
* @param Event_Plugin $event_plugin Class that has implements functions to handle a certain supported activate event plugin.
|
||||
*/
|
||||
public function __construct( $event_plugin ) {
|
||||
$this->event_plugin = $event_plugin;
|
||||
|
@ -43,32 +45,28 @@ class Event_Plugin_Admin_Notices {
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function event_post_type_is_not_activitypub_enabled() {
|
||||
return ! in_array( $this->event_plugin['post_type'], get_option( 'activitypub_support_post_types', array() ), true );
|
||||
private function event_post_type_is_not_activitypub_enabled(): bool {
|
||||
return ! in_array( $this->event_plugin::get_post_type(), get_option( 'activitypub_support_post_types', array() ), true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the admin notices for the plugins.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function admin_notice_activitypub_not_enabled_for_post_type() {
|
||||
// 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 && $this->event_plugin['post_type'] === $screen->post_type;
|
||||
$is_event_plugins_settings_page = $this->event_plugin['settings_page_id'] === $screen->id;
|
||||
|
||||
if ( $is_event_plugins_edit_page || $is_event_plugins_settings_page ) {
|
||||
$this->do_admin_notice_post_type_not_activitypub_enabled( $this->event_plugin['plugin_file'] );
|
||||
public function admin_notice_activitypub_not_enabled_for_post_type(): void {
|
||||
if ( $this->event_plugin::is_plugin_page() ) {
|
||||
$this->do_admin_notice_post_type_not_activitypub_enabled();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print admin notice that the current post type is not enabled in the ActivityPub plugin.
|
||||
*
|
||||
* @param string $event_plugin_file The event plugin file path.
|
||||
* @return void
|
||||
*/
|
||||
private function do_admin_notice_post_type_not_activitypub_enabled( $event_plugin_file ) {
|
||||
$event_plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $event_plugin_file );
|
||||
private function do_admin_notice_post_type_not_activitypub_enabled(): void {
|
||||
$event_plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $this->event_plugin::get_plugin_file() );
|
||||
$activitypub_plugin_data = get_plugin_data( ACTIVITYPUB_PLUGIN_FILE );
|
||||
$notice = sprintf(
|
||||
/* translators: 1: the name of the event plugin a admin notice is shown. 2: The name of the ActivityPub plugin. */
|
||||
|
|
|
@ -84,7 +84,7 @@ class General_Admin_Notices {
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function activitypub_plugin_not_enabled() {
|
||||
public static function activitypub_plugin_not_enabled(): void {
|
||||
$notice = self::get_admin_notice_activitypub_plugin_not_enabled();
|
||||
echo '<div class="notice notice-warning"><p>' . \wp_kses( $notice, self::ALLOWED_HTML ) . '</p></div>';
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ class General_Admin_Notices {
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function no_supported_event_plugin_active() {
|
||||
public static function no_supported_event_plugin_active(): void {
|
||||
$notice = self::get_admin_notice_no_supported_event_plugin_active();
|
||||
echo '<div class="notice notice-warning"><p>' . \wp_kses( $notice, self::ALLOWED_HTML ) . '</p></div>';
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
namespace Activitypub_Event_Extensions\Admin;
|
||||
|
||||
use Activitypub_Event_Extensions\Setup;
|
||||
use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
||||
|
||||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
@ -59,19 +60,20 @@ class Settings_Page {
|
|||
/**
|
||||
* Receive the event categories (terms) used by the event plugin.
|
||||
*
|
||||
* @param array $event_plugin Contains info about a certain 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 ) {
|
||||
if ( isset( $event_plugin['taxonomy'] ) ) {
|
||||
$taxonomy = $event_plugin::get_taxonomy();
|
||||
if ( $taxonomy ) {
|
||||
$event_terms = get_terms(
|
||||
array(
|
||||
'taxonomy' => $event_plugin['taxonomy'],
|
||||
'taxonomy' => $taxonomy,
|
||||
'hide_empty' => true,
|
||||
)
|
||||
);
|
||||
return $event_terms;
|
||||
return ! is_wp_error( $event_terms ) ? $event_terms : array();
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
|
@ -87,8 +89,8 @@ class Settings_Page {
|
|||
|
||||
$event_terms = array();
|
||||
|
||||
foreach ( $event_plugins as $event_plugin_name => $events_plugin_info ) {
|
||||
$event_terms = array_merge( $event_terms, self::get_event_terms( $events_plugin_info ) );
|
||||
foreach ( $event_plugins as $event_plugin ) {
|
||||
$event_terms = array_merge( $event_terms, self::get_event_terms( $event_plugin ) );
|
||||
}
|
||||
|
||||
$args = array(
|
||||
|
|
|
@ -26,12 +26,19 @@ defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
|||
class Settings {
|
||||
const SETTINGS_SLUG = 'activitypub-event-extensions';
|
||||
|
||||
/**
|
||||
* The default ActivityPub event category.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const DEFAULT_EVENT_CATEGORY = 'MEETING';
|
||||
|
||||
/**
|
||||
* Register the settings for the ActivityPub Event Extensions plugin.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function register_settings() {
|
||||
public static function register_settings(): void {
|
||||
\register_setting(
|
||||
'activitypub-event-extensions',
|
||||
'activitypub_event_extensions_default_event_category',
|
||||
|
@ -61,7 +68,7 @@ class Settings {
|
|||
*
|
||||
* @param string $event_category The ActivityPUb event category.
|
||||
*/
|
||||
public static function sanitize_mapped_event_category( $event_category ) {
|
||||
public static function sanitize_mapped_event_category( $event_category ): string {
|
||||
return self::is_allowed_event_category( $event_category ) ? $event_category : self::DEFAULT_EVENT_CATEGORY;
|
||||
}
|
||||
|
||||
|
@ -71,8 +78,10 @@ class Settings {
|
|||
* Currently only the default event categories are allowed to be target of a mapping.
|
||||
*
|
||||
* @param array $event_category_mappings The settings value.
|
||||
*
|
||||
* @return array An array that contains only valid mapping pairs.
|
||||
*/
|
||||
public static function sanitize_event_category_mappings( $event_category_mappings ) {
|
||||
public static function sanitize_event_category_mappings( $event_category_mappings ): array {
|
||||
if ( empty( $event_category_mappings ) ) {
|
||||
return array();
|
||||
}
|
||||
|
@ -91,7 +100,7 @@ class Settings {
|
|||
*
|
||||
* @return bool True if allowed, false otherwise.
|
||||
*/
|
||||
private static function is_allowed_event_category( $event_category ) {
|
||||
private static function is_allowed_event_category( $event_category ): bool {
|
||||
$allowed_event_categories = Event::DEFAULT_EVENT_CATEGORIES;
|
||||
return in_array( $event_category, $allowed_event_categories, true );
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ namespace Activitypub_Event_Extensions;
|
|||
use Activitypub_Event_Extensions\Admin\Event_Plugin_Admin_Notices;
|
||||
use Activitypub_Event_Extensions\Admin\General_Admin_Notices;
|
||||
use Activitypub_Event_Extensions\Admin\Settings_Page;
|
||||
use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
||||
|
||||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
@ -29,34 +30,6 @@ require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|||
* @since 1.0.0
|
||||
*/
|
||||
class Setup {
|
||||
const SUPPORTED_EVENT_PLUGINS = array(
|
||||
'events_manager' => array(
|
||||
'plugin_file' => 'events-manager/events-manager.php',
|
||||
'post_type' => 'event',
|
||||
'settings_page' => 'options-general.php?page=vsel',
|
||||
'transformer_class' => 'Events_Manager',
|
||||
),
|
||||
'gatherpress' => array(
|
||||
'plugin_file' => 'gatherpress/gatherpress.php',
|
||||
'post_type' => 'gatherpress_event',
|
||||
'transformer_class' => 'GatherPress',
|
||||
'settings_page_id' => 'gatherpress_general',
|
||||
),
|
||||
'the_events_calendar' => array(
|
||||
'plugin_file' => 'the-events-calendar/the-events-calendar.php',
|
||||
'post_type' => 'tribe_events',
|
||||
'transformer_class' => 'Tribe',
|
||||
'settings_page_id' => 'tribe_general',
|
||||
),
|
||||
'vsel' => array(
|
||||
'plugin_file' => 'very-simple-event-list/vsel.php',
|
||||
'post_type' => 'event',
|
||||
'settings_page_id' => 'settings_page_vsel',
|
||||
'transformer_class' => 'VS_Event_List',
|
||||
'taxonomy' => 'event_cat',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Keep the information whether the ActivityPub plugin is active.
|
||||
*
|
||||
|
@ -67,7 +40,7 @@ class Setup {
|
|||
/**
|
||||
* Holds an array of the currently activated supported event plugins.
|
||||
*
|
||||
* @var array
|
||||
* @var Event_Plugin[]
|
||||
*/
|
||||
protected $active_event_plugins = array();
|
||||
|
||||
|
@ -80,7 +53,7 @@ class Setup {
|
|||
*/
|
||||
protected function __construct() {
|
||||
$this->activitypub_plugin_is_active = is_plugin_active( 'activitypub/activitypub.php' );
|
||||
$this->active_event_plugins = self::detect_supported_event_plugins();
|
||||
$this->active_event_plugins = self::detect_active_event_plugins();
|
||||
$this->setup_hooks();
|
||||
}
|
||||
|
||||
|
@ -109,40 +82,47 @@ class Setup {
|
|||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function get_event_plugins() {
|
||||
// Get all plugin definition classes from the includes/plugins folder.
|
||||
$plugin_files = glob( ACTIVITYPUB_EVENT_EXTENSIONS_PLUGIN_DIR . 'includes/plugins/class-*.php' );
|
||||
|
||||
foreach ( $plugin_files as $plugin_file ) {
|
||||
require_once $plugin_file;
|
||||
|
||||
}
|
||||
return $basenames;
|
||||
/**
|
||||
* Getter function for the active event plugins.
|
||||
*
|
||||
* @return Event_Plugin[]
|
||||
*/
|
||||
public function get_active_event_plugins() {
|
||||
return $this->active_event_plugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds all the classes for the supported event plugins.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private const EVENT_PLUGIN_CLASSES = array(
|
||||
'\Activitypub_Event_Extensions\Plugins\Events_Manager',
|
||||
'\Activitypub_Event_Extensions\Plugins\GatherPress',
|
||||
'\Activitypub_Event_Extensions\Plugins\The_Events_Calendar',
|
||||
'\Activitypub_Event_Extensions\Plugins\VS_Event_List',
|
||||
);
|
||||
|
||||
/**
|
||||
* Function that checks for supported activated event plugins.
|
||||
*
|
||||
* @return array List of supported event plugins as keys from the SUPPORTED_EVENT_PLUGINS const.
|
||||
*/
|
||||
public static function detect_supported_event_plugins(): array {
|
||||
public static function detect_active_event_plugins(): array {
|
||||
$active_event_plugins = array();
|
||||
foreach ( self::SUPPORTED_EVENT_PLUGINS as $event_plugin_key => $event_plugin ) {
|
||||
if ( \is_plugin_active( $event_plugin['plugin_file'] ) ) {
|
||||
$active_event_plugins[ $event_plugin_key ] = $event_plugin;
|
||||
|
||||
foreach ( self::EVENT_PLUGIN_CLASSES as $event_plugin_class ) {
|
||||
if ( ! class_exists( $event_plugin_class ) || ! method_exists( $event_plugin_class, 'get_plugin_file' ) ) {
|
||||
continue;
|
||||
}
|
||||
$event_plugin_file = call_user_func( array( $event_plugin_class, 'get_plugin_file' ) );
|
||||
if ( \is_plugin_active( $event_plugin_file ) ) {
|
||||
$active_event_plugins[] = new $event_plugin_class();
|
||||
}
|
||||
}
|
||||
return $active_event_plugins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter function for the active event plugins.
|
||||
*/
|
||||
public function get_active_event_plugins() {
|
||||
return $this->active_event_plugins;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set up hooks for various purposes.
|
||||
*
|
||||
|
@ -178,8 +158,10 @@ class Setup {
|
|||
* Add the CSS for the admin pages.
|
||||
*
|
||||
* @param string $hook_suffix The suffix of the hook.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function enqueue_styles( $hook_suffix ) {
|
||||
public static function enqueue_styles( $hook_suffix ): void {
|
||||
if ( false !== strpos( $hook_suffix, 'activitypub-event-extensions' ) ) {
|
||||
wp_enqueue_style(
|
||||
'activitypub-event-extensions-admin-styles',
|
||||
|
@ -229,9 +211,11 @@ class Setup {
|
|||
|
||||
// Get the transformer for a specific event plugins event-post type.
|
||||
foreach ( $this->active_event_plugins as $event_plugin ) {
|
||||
if ( $wp_object->post_type === $event_plugin['post_type'] ) {
|
||||
$transformer_class = 'Activitypub_Event_Extensions\Activitypub\Transformer\\' . $event_plugin['transformer_class'];
|
||||
return new $transformer_class( $wp_object, $event_plugin['taxonomy'] );
|
||||
if ( $wp_object->post_type === $event_plugin->get_post_type() ) {
|
||||
$transformer_class = $event_plugin->get_activitypub_event_transformer_class();
|
||||
if ( class_exists( $transformer_class ) ) {
|
||||
return new $transformer_class( $wp_object, $event_plugin->get_taxonomy() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -266,7 +250,7 @@ class Setup {
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public function activate() {
|
||||
public function activate(): void {
|
||||
// Don't allow plugin activation, when the ActivityPub plugin is not activated yet.
|
||||
if ( ! $this->activitypub_plugin_is_active ) {
|
||||
deactivate_plugins( plugin_basename( ACTIVITYPUB_EVENT_EXTENSIONS_PLUGIN_FILE ) );
|
||||
|
|
76
includes/plugins/class-event-plugin.php
Normal file
76
includes/plugins/class-event-plugin.php
Normal file
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
/**
|
||||
* Interface for defining supported Event Plugins.
|
||||
*
|
||||
* Basic information that each supported event needs for this plugin to work.
|
||||
*
|
||||
* @package Activitypub_Event_Extensions
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
namespace Activitypub_Event_Extensions\Plugins;
|
||||
|
||||
use Activitypub_Event_Extensions\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_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 '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 );
|
||||
}
|
||||
}
|
|
@ -14,8 +14,6 @@ namespace Activitypub_Event_Extensions\Plugins;
|
|||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
||||
require_once __DIR__ . '/interface-event-plugin.php';
|
||||
|
||||
/**
|
||||
* Interface for a supported event plugin.
|
||||
*
|
||||
|
@ -23,14 +21,14 @@ require_once __DIR__ . '/interface-event-plugin.php';
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Events_Manager implements Event_Plugin {
|
||||
final class Events_Manager extends Event_Plugin {
|
||||
/**
|
||||
* Returns the full plugin file.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_plugin_file(): string {
|
||||
return 'the-events-calendar/the-events-calendar.php';
|
||||
return 'events-manager/events-manager.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,15 +49,6 @@ class Events_Manager implements Event_Plugin {
|
|||
return 'wp-admin/edit.php?post_type=event&page=events-manager-options#general';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ActivityPub transformer class.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_activitypub_transformer_class_name(): string {
|
||||
return 'GatherPress';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the taxonomy used for the plugin's event categories.
|
||||
*
|
||||
|
|
|
@ -14,13 +14,6 @@ namespace Activitypub_Event_Extensions\Plugins;
|
|||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
||||
require_once __DIR__ . '/interface-event-plugin.php';
|
||||
|
||||
use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
||||
use GatherPress\Core\Event;
|
||||
use GatherPress\Core\Topic;
|
||||
use GatherPress\Core\Utility;
|
||||
|
||||
/**
|
||||
* Interface for a supported event plugin.
|
||||
*
|
||||
|
@ -28,14 +21,14 @@ use GatherPress\Core\Utility;
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Gatherpress implements Event_Plugin {
|
||||
final class GatherPress extends Event_Plugin {
|
||||
/**
|
||||
* Returns the full plugin file.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_plugin_file(): string {
|
||||
return 'the-events-calendar/the-events-calendar.php';
|
||||
return 'gatherpress/gatherpress.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,7 +37,7 @@ class Gatherpress implements Event_Plugin {
|
|||
* @return string
|
||||
*/
|
||||
public static function get_post_type(): string {
|
||||
return Event::POST_TYPE;
|
||||
return class_exists( '\GatherPress\Core\Event' ) ? \GatherPress\Core\Event::POST_TYPE : 'gatherpress_event';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,7 +46,7 @@ class Gatherpress implements Event_Plugin {
|
|||
* @return string The settings page url.
|
||||
*/
|
||||
public static function get_settings_page(): string {
|
||||
return Utility::prefix_key( 'general' );
|
||||
return class_exists( '\GatherPress\Core\Utility' ) ? \GatherPress\Core\Utility::prefix_key( 'general' ) : 'gatherpress_general';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,6 +64,6 @@ class Gatherpress implements Event_Plugin {
|
|||
* @return string
|
||||
*/
|
||||
public static function get_taxonomy(): string {
|
||||
return Topic::TAXONOMY;
|
||||
return class_exists( '\GatherPress\Core\Topic' ) ? \GatherPress\Core\Topic::TAXONOMY : 'gatherpress_topic';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,10 +14,6 @@ namespace Activitypub_Event_Extensions\Plugins;
|
|||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
||||
require_once __DIR__ . '/interface-event-plugin.php';
|
||||
|
||||
use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
||||
|
||||
/**
|
||||
* Interface for a supported event plugin.
|
||||
*
|
||||
|
@ -25,7 +21,7 @@ use Activitypub_Event_Extensions\Plugins\Event_Plugin;
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class The_Events_Calendar implements Event_plugin {
|
||||
final class The_Events_Calendar extends Event_plugin {
|
||||
/**
|
||||
* Returns the full plugin file.
|
||||
*
|
||||
|
@ -41,11 +37,9 @@ class The_Events_Calendar implements Event_plugin {
|
|||
* @return string
|
||||
*/
|
||||
public static function get_post_type(): string {
|
||||
return \Tribe__Events__Main::POSTTYPE;
|
||||
return class_exists( '\Tribe__Events__Main' ) ? \Tribe__Events__Main::POSTTYPE : 'tribe_event';
|
||||
}
|
||||
|
||||
const POST_TYPE = class_exists( 'Tribe__Events__Main' ) ? \Tribe__Events__Main::POSTTYPE : 'tribe_event';
|
||||
|
||||
/**
|
||||
* Returns the ID of the main settings page of the plugin.
|
||||
*
|
||||
|
@ -56,21 +50,12 @@ class The_Events_Calendar implements Event_plugin {
|
|||
return 'edit.php?post_type=tribe_events&page=tec-events-settings';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ActivityPub transformer class.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_activitypub_transformer_class_name(): string {
|
||||
return 'Tribe';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the taxonomy used for the plugin's event categories.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_taxonomy(): string {
|
||||
return Tribe__Events__Main::TAXONOMY;
|
||||
return class_exists( '\Tribe__Events__Main' ) ? \Tribe__Events__Main::TAXONOMY : 'tribe_events_cat';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
namespace Activitypub_Event_Extensions\Plugins;
|
||||
|
||||
use Activitypub_Event_Extensions\Event_Plugins;
|
||||
|
||||
// Exit if accessed directly.
|
||||
defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore
|
||||
|
||||
require_once __DIR__ . '/interface-event-plugin.php';
|
||||
|
||||
/**
|
||||
* Interface for a supported event plugin.
|
||||
*
|
||||
|
@ -24,7 +24,7 @@ require_once __DIR__ . '/interface-event-plugin.php';
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class VS_Event_List implements Event_Plugin {
|
||||
final class VS_Event_List extends Event_Plugin {
|
||||
/**
|
||||
* Returns the full plugin file.
|
||||
*
|
||||
|
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Interface for defining supported Event Plugins.
|
||||
*
|
||||
* Basic information that each supported event needs for this plugin to work.
|
||||
*
|
||||
* @package Activitypub_Event_Extensions
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
namespace Activitypub_Event_Extensions\Plugins;
|
||||
|
||||
// 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
|
||||
*/
|
||||
interface Event_Plugin {
|
||||
/**
|
||||
* Returns the full plugin file.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_plugin_file(): string;
|
||||
|
||||
/**
|
||||
* Returns the event post type of the plugin.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_post_type(): 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;
|
||||
|
||||
/**
|
||||
* Returns the ActivityPub transformer class.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_activitypub_transformer_class_name(): string;
|
||||
|
||||
/**
|
||||
* Returns the taxonomy used for the plugin's event categories.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_taxonomy(): string;
|
||||
}
|
Loading…
Reference in a new issue