diff --git a/includes/base/class-base-transformer.php b/includes/base/class-base-transformer.php deleted file mode 100644 index 7c2d445..0000000 --- a/includes/base/class-base-transformer.php +++ /dev/null @@ -1,28 +0,0 @@ -get_name() ); + }, 10, 2 ); } /** diff --git a/includes/managers/class-transformers-manager.php b/includes/managers/class-transformers-manager.php index 3c18b59..2d3721a 100644 --- a/includes/managers/class-transformers-manager.php +++ b/includes/managers/class-transformers-manager.php @@ -24,14 +24,14 @@ class Transformers_Manager { /** * Transformers. * - * Holds the list of all the transformers. Default is `null`. + * Holds the list of all the ActivityPub transformers. Default is `null`. * * @since 1.0.0 * @access private * - * @var Base_Control[] + * @var \ActivityPub\Transformer_Base[] */ - private $controls = null; + private $transformers = array(); /** * Transformers manager constructor. @@ -43,8 +43,18 @@ class Transformers_Manager { */ public function __construct() { $this->require_files(); + } - add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); + /** + * Require files. + * + * Require ActivityPub transformer base class. + * + * @since version_number_transformer_management_placeholder + * @access private + */ + private function require_files() { + require ACTIVITYPUB_PLUGIN_DIR . 'includes/base/class-transformer-base.php'; } /** @@ -53,22 +63,86 @@ class Transformers_Manager { * @since version_number_transformer_management_placeholder * @access public * - * @param \ActivityPub\Base_Transformer $transformer_instance ActivityPub Transformer. + * @param \ActivityPub\Transformer_Base $transformer_instance ActivityPub Transformer. * - * @return bool True if the transformer was registered. + * @return bool True if the ActivityPub transformer was registered. */ - public function register( Base_Transformer $control_instance, $control_id = null ) { + public function register( Transformer_Base $transformer_instance) { - // TODO: For BC. Remove in the future. - if ( $control_id ) { - Plugin::instance()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_argument( - '$control_id', '3.5.0' + if ( ! $transformer_instance instanceof Transformer_Base ) { + _doing_it_wrong( + __METHOD__, + __( 'ActivityPub transformer instance must be a implementation of the \ActivityPub\Transformer_Base class.' ), + 'version_number_transformer_management_placeholder' ); - } else { - $control_id = $control_instance->get_type(); + return false; + } + + $transformer_name = $transformer_instance->name; + if ( preg_match( '/[A-Z]+/', $transformer_name ) ) { + _doing_it_wrong( + __METHOD__, + __( 'ActivityPub transformer names must not contain uppercase characters.' ), + 'version_number_transformer_management_placeholder' + ); + return false; } - $this->controls[ $control_id ] = $control_instance; + $name_matcher = '/^[a-z0-9-]+\/[a-z0-9-]+$/'; + if ( ! preg_match( $name_matcher, $transformer_name ) ) { + _doing_it_wrong( + __METHOD__, + __( 'ActivityPub transformer names must contain a namespace prefix. Example: my-plugin/my-custom-transformer' ), + 'version_number_transformer_management_placeholder' + ); + return false; + } + + if ( $this->is_registered( $transformer_name ) ) { + _doing_it_wrong( + __METHOD__, + /* translators: %s: Block name. */ + sprintf( __( 'ActivityPub transformer with name "%s" is already registered.' ), $transformer_name ), + 'version_number_transformer_management_placeholder' + ); + return false; + } + + /** + * Should the ActivityPub transformer be registered. + * + * @since version_number_transformer_management_placeholder + * + * @param bool $should_register Should the ActivityPub transformer be registered. Default is `true`. + * @param \ActivityPub\Transformer_Base $transformer_instance Widget instance. + */ + $should_register = apply_filters( 'activitypub/transformers/is_transformer_enabled', true, $transformer_instance ); + + if ( ! $should_register ) { + return false; + } + + $this->_transformers[ $transformer_name ] = $transformer_instance; + + return true; + } + + /** + * Register controls. + * + * This method creates a list of all the supported controls by requiring the + * control files and initializing each one of them. + * + * The list of supported controls includes the regular controls and the group + * controls. + * + * External developers can register new controls by hooking to the + * `elementor/controls/controls_registered` action. + * + * @since 3.1.0 + * @access private + */ + private function register_controls() { } } \ No newline at end of file