[ SYSTEM ]: Linux wordpress 6.1.0-41-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
[ SERVER ]: Apache/2.4.66 (Debian) | PHP: 8.2.30
[ USER ]: www-data | IP: 172.19.30.54
GEFORCE FILE MANAGER
/
var
/
www
/
html
/
wordpress
/
wp-content
/
plugins
/
rocket-lazy-load
/
src
/
Dependencies
/
LaunchpadCore
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📁 Activation
SET
[ DEL ]
📁 Container
SET
[ DEL ]
📁 Deactivation
SET
[ DEL ]
📁 Dispatcher
SET
[ DEL ]
📁 EventManagement
SET
[ DEL ]
📄 Plugin.php
9,112 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: Plugin.php
<?php namespace RocketLazyLoadPlugin\Dependencies\LaunchpadCore; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Container\AbstractServiceProvider; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Container\HasInflectorInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Container\PrefixAwareInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Dispatcher\DispatcherAwareInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Dispatcher\Sanitizer\SubscriberSignaturesSanitizer; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\EventManagement\ClassicSubscriberInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\EventManagement\OptimizedSubscriberInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\EventManagement\Wrapper\SubscriberWrapper; use RocketLazyLoadPlugin\Dependencies\LaunchpadDispatcher\Dispatcher; use RocketLazyLoadPlugin\Dependencies\Psr\Container\ContainerExceptionInterface; use RocketLazyLoadPlugin\Dependencies\Psr\Container\ContainerInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Container\IsOptimizableServiceProvider; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\Container\ServiceProviderInterface; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\EventManagement\EventManager; use RocketLazyLoadPlugin\Dependencies\LaunchpadCore\EventManagement\SubscriberInterface; use RocketLazyLoadPlugin\Dependencies\Psr\Container\NotFoundExceptionInterface; use ReflectionException; class Plugin { /** * Instance of Container class. * * @var ContainerInterface instance */ private $container; /** * Instance of the event manager. * * @var EventManager */ private $event_manager; /** * Wraps subscriber under the common subscriber. * * @var SubscriberWrapper */ private $subscriber_wrapper; /** * Hook dispatcher. * * @var Dispatcher */ protected $dispatcher; /** * Creates an instance of the Plugin. * * @param ContainerInterface $container Instance of the container. * @param EventManager $event_manager WordPress event manager. * @param SubscriberWrapper $subscriber_wrapper Wraps subscriber under the common subscriber. * @param Dispatcher $dispatcher Hook dispatcher. */ public function __construct( ContainerInterface $container, EventManager $event_manager, SubscriberWrapper $subscriber_wrapper, Dispatcher $dispatcher ) { $this->container = $container; $this->event_manager = $event_manager; $this->subscriber_wrapper = $subscriber_wrapper; $this->dispatcher = $dispatcher; } /** * Returns the Rocket container instance. * * @return ContainerInterface */ public function get_container() { return $this->container; } /** * Loads the plugin into WordPress. * * @param array<string,mixed> $params Parameters to pass to the container. * @param array $providers List of providers from the plugin. * * @return void * * @throws ContainerExceptionInterface Error from the container. * @throws NotFoundExceptionInterface Error when a class is not found on the container. * @throws ReflectionException Error when a classname is invalid. */ public function load( array $params, array $providers = [] ) { foreach ( $params as $key => $value ) { $this->container->share( $key, $value ); } /** * Runs before the plugin is loaded. */ $this->dispatcher->do_action( "{$this->container->get('prefix')}before_load" ); add_filter( "{$this->container->get('prefix')}container", [ $this, 'get_container' ] ); $this->container->share( 'event_manager', $this->event_manager ); $this->container->share( 'dispatcher', $this->dispatcher ); $this->container->inflector( PrefixAwareInterface::class )->invokeMethod( 'set_prefix', [ $this->container->get( 'prefix' ) ] ); $this->container->inflector( DispatcherAwareInterface::class )->invokeMethod( 'set_dispatcher', [ $this->container->get( 'dispatcher' ) ] ); $providers = array_map( function ( $classname ) { if ( is_string( $classname ) ) { return new $classname(); } return $classname; }, $providers ); $providers = $this->optimize_service_providers( $providers ); foreach ( $providers as $service_provider ) { $this->container->addServiceProvider( $service_provider ); } foreach ( $providers as $service_provider ) { if ( ! $service_provider instanceof HasInflectorInterface ) { continue; } $service_provider->register_inflectors(); } foreach ( $providers as $service_provider ) { $this->load_init_subscribers( $service_provider ); } foreach ( $providers as $service_provider ) { $this->load_subscribers( $service_provider ); } /** * Runs after the plugin is loaded. */ $this->dispatcher->do_action( "{$this->container->get('prefix')}after_load" ); } /** * Optimize service providers to keep only the ones we need to load. * * @param ServiceProviderInterface[] $providers Providers given to the plugin. * * @return ServiceProviderInterface[] * * @throws ContainerExceptionInterface Error from the container. * @throws NotFoundExceptionInterface Error when a class is not found on the container. */ protected function optimize_service_providers( array $providers ): array { $optimized_providers = []; foreach ( $providers as $provider ) { if ( ! $provider instanceof IsOptimizableServiceProvider ) { $optimized_providers[] = $provider; continue; } $subscribers = array_merge( $provider->get_common_subscribers(), $provider->get_init_subscribers(), is_admin() ? $provider->get_admin_subscribers() : $provider->get_front_subscribers() ); /** * Plugin Subscribers from a provider. * * @param SubscriberInterface[] $subscribers Subscribers. * @param AbstractServiceProvider $provider Provider. * * @return SubscriberInterface[] */ $subscribers = $this->dispatcher->apply_filters( "{$this->container->get('prefix')}load_provider_subscribers", new SubscriberSignaturesSanitizer(), $subscribers, $provider ); if ( count( $subscribers ) === 0 ) { continue; } $optimized_providers[] = $provider; } return $optimized_providers; } /** * Load list of event subscribers from service provider. * * @param ServiceProviderInterface $service_provider_instance Instance of service provider. * * @return void * * @throws ContainerExceptionInterface Error from the container. * @throws NotFoundExceptionInterface Error when a class is not found on the container. * @throws ReflectionException Error when a classname is invalid. */ private function load_init_subscribers( ServiceProviderInterface $service_provider_instance ) { $subscribers = $service_provider_instance->get_init_subscribers(); /** * Plugin Init Subscribers. * * @param SubscriberInterface[] $subscribers Subscribers. * * @return SubscriberInterface[] */ $subscribers = $this->dispatcher->apply_filters( "{$this->container->get('prefix')}load_init_subscribers", new SubscriberSignaturesSanitizer(), $subscribers ); if ( empty( $subscribers ) ) { return; } foreach ( $subscribers as $subscriber ) { $subscriber_object = $this->container->get( $subscriber ); if ( ! $subscriber_object instanceof ClassicSubscriberInterface ) { $subscriber_object = $this->subscriber_wrapper->wrap( $subscriber_object ); } $this->event_manager->add_subscriber( $subscriber_object ); } } /** * Load list of event subscribers from service provider. * * @param ServiceProviderInterface $service_provider_instance Instance of service provider. * * @return void * * @throws ContainerExceptionInterface Error from the container. * @throws NotFoundExceptionInterface Error when a class is not found on the container. * @throws ReflectionException Error when a classname is invalid. */ private function load_subscribers( ServiceProviderInterface $service_provider_instance ) { $subscribers = $service_provider_instance->get_common_subscribers(); if ( ! is_admin() ) { $subscribers = array_merge( $subscribers, $service_provider_instance->get_front_subscribers() ); } else { $subscribers = array_merge( $subscribers, $service_provider_instance->get_admin_subscribers() ); } /** * Plugin Subscribers. * * @param SubscriberInterface[] $subscribers Subscribers. * @param AbstractServiceProvider $service_provider_instance Provider. * * @return SubscriberInterface[] */ $subscribers = $this->dispatcher->apply_filters( "{$this->container->get('prefix')}load_subscribers", new SubscriberSignaturesSanitizer(), $subscribers, $service_provider_instance ); if ( empty( $subscribers ) ) { return; } foreach ( $subscribers as $subscriber ) { $subscriber_object = $this->container->get( $subscriber ); if ( ! $subscriber_object instanceof ClassicSubscriberInterface ) { $subscriber_object = $this->subscriber_wrapper->wrap( $subscriber_object ); } $this->event_manager->add_subscriber( $subscriber_object ); } } }