registry = new ExtensionRegistry(); self::$active_registry = $this->registry; } public function register() { do_action( 'artbees_qv/extensions/register', $this->registry ); ( new \artbees\QuickView\Lifecycle\MigrationRunner() )->run(); ( new \artbees\QuickView\Admin\ProductVisibilityController() )->register(); ( new \artbees\QuickView\Admin\CategoryVisibilityController() )->register(); $compatibility = new \artbees\QuickView\Compatibility\CompatibilityRegistry(); $compatibility->register( static function () { return array( 'id' => 'woocommerce', 'status' => defined( 'WC_VERSION' ) ? 'detected_untested' : 'not_detected', 'action' => defined( 'WC_VERSION' ) ? __( 'Review the documented compatibility matrix.', 'artbees-quick-view' ) : __( 'Activate WooCommerce.', 'artbees-quick-view' ) ); } ); do_action( 'artbees_qv/compatibility/register', $compatibility ); $cache = new \artbees\QuickView\Storage\EligibilityCache(); ( new \artbees\QuickView\Storage\EligibilityCacheInvalidator( $cache ) )->register(); ( new \artbees\QuickView\Http\StatusController( $compatibility, $cache ) )->register(); $schema = new \artbees\QuickView\Domain\Settings\SettingsSchema(); $settings = new \artbees\QuickView\Storage\SettingsRepository( $schema ); $eligibility = new \artbees\QuickView\Domain\Eligibility\EligibilityResolver( $settings, new \artbees\QuickView\Domain\Eligibility\CategoryAncestryEvaluator() ); new \artbees\QuickView\Frontend\CollectionValidator( $eligibility ); $triggers = new \artbees\QuickView\Frontend\TriggerRegistry( $settings, $eligibility ); $triggers->register(); ( new \artbees\QuickView\Frontend\BlockRegistry( $triggers ) )->register(); $builder = new \artbees\QuickView\Frontend\ProductResponseBuilder( $settings, new \artbees\QuickView\WooCommerce\ProductContextRunner(), new \artbees\QuickView\Frontend\ModuleRenderer() ); $product_controller = new \artbees\QuickView\Http\ProductController( $builder, $schema, $eligibility ); $product_controller->register(); ( new \artbees\QuickView\Http\SettingsController( $settings, $schema ) )->register(); ( new \artbees\QuickView\Admin\Workspace( $settings ) )->register(); do_action( 'artbees_qv/bootstrap/registered' ); } public function registry() { return $this->registry; } public static function extension_registry() { return self::$active_registry; } }