diff --git a/src/Events/Core_Events.php b/src/Event/Core_Events.php similarity index 61% rename from src/Events/Core_Events.php rename to src/Event/Core_Events.php index 2fa09b5..04c5889 100644 --- a/src/Events/Core_Events.php +++ b/src/Event/Core_Events.php @@ -1,105 +1,106 @@ 'stop', 'event' => 'Plugins Load', 'category' => 'plugin', - ); + ]; - $stops['plugins_loaded'][ - 1 ] = array( + $stops['plugins_loaded'][-1] = [ 'event' => 'Plugins Loaded Hook', 'category' => 'plugin', - ); + ]; - $stops['plugins_loaded'][20] = array( + $stops['plugins_loaded'][20] = [ 'action' => 'stop', 'event' => 'Plugins Loaded Hook', 'category' => 'plugin', - ); + ]; - $stops['setup_theme'][0] = array( + $stops['setup_theme'][0] = [ 'event' => 'Themes Load', 'category' => 'theme', - ); + ]; - $stops['after_setup_theme'][20] = array( + $stops['after_setup_theme'][20] = [ 'action' => 'stop', 'event' => 'Themes Load', 'category' => 'theme', - ); + ]; - $stops['init'][- 1] = array( + $stops['init'][-1] = [ 'event' => 'Core Init', 'category' => 'core', - ); + ]; - $stops['wp_loaded'][20] = array( + $stops['wp_loaded'][20] = [ 'action' => 'stop', 'event' => 'Core Init', 'category' => 'core', - ); + ]; - $stops['admin_init'][- 1] = array( + $stops['admin_init'][-1] = [ 'event' => 'Core Admin Init', 'category' => 'core', - ); + ]; - $stops['admin_init'][ PHP_INT_MAX -1 ] = array( + $stops['admin_init'][ PHP_INT_MAX - 1 ] = [ 'action' => 'stop', 'event' => 'Core Admin Init', 'category' => 'core', - ); + ]; - $stops['_admin_menu'][- 1] = array( + $stops['_admin_menu'][-1] = [ 'event' => 'Admin Menu', 'category' => 'core', - ); - $stops['admin_menu'][ PHP_INT_MAX -1 ] = array( + ]; + + $stops['admin_menu'][ PHP_INT_MAX - 1 ] = [ 'action' => 'stop', 'event' => 'Admin Menu', 'category' => 'core', - ); + ]; - $stops['admin_bar_menu'][-1] = array( + $stops['admin_bar_menu'][-1] = [ 'event' => 'Toolbar', 'category' => 'core', - ); + ]; - $stops['loop_start'][10] = array( + $stops['loop_start'][10] = [ 'event' => 'Main Loop', 'category' => 'theme', - ); + ]; - $stops['loop_end'][10] = array( + $stops['loop_end'][10] = [ 'action' => 'stop', 'event' => 'Main Loop', 'category' => 'theme', - ); + ]; - $stops['admin_enqueue_scripts'][10] = array( + $stops['admin_enqueue_scripts'][10] = [ 'event' => 'Admin Print Scripts', 'category' => 'core', - ); + ]; - $stops['admin_print_scripts'][10] = array( + $stops['admin_print_scripts'][10] = [ 'action' => 'stop', 'event' => 'Admin Print Scripts', 'category' => 'core', - ); + ]; return $stops; } diff --git a/src/Event/Genesis_Events.php b/src/Event/Genesis_Events.php new file mode 100644 index 0000000..2c60111 --- /dev/null +++ b/src/Event/Genesis_Events.php @@ -0,0 +1,59 @@ + 'Header', + 'category' => 'theme', + ]; + + $events['genesis_after_header'][10] = [ + 'action' => 'stop', + 'event' => 'Header', + 'category' => 'theme', + ]; + + $events['genesis_before_sidebar_widget_area'][10] = [ + 'event' => 'Sidebar', + 'category' => 'theme', + ]; + + $events['genesis_after_sidebar_widget_area'][10] = [ + 'action' => 'stop', + 'event' => 'Sidebar', + 'category' => 'theme', + ]; + + $events['genesis_before_sidebar_alt_widget_area'][10] = [ + 'event' => 'Sidebar (alternate)', + 'category' => 'theme', + ]; + + $events['genesis_after_sidebar_alt_widget_area'][10] = [ + 'action' => 'stop', + 'event' => 'Sidebar (alternate)', + 'category' => 'theme', + ]; + + return $events; + } +} diff --git a/src/Event/Hook_Event_Config_Interface.php b/src/Event/Hook_Event_Config_Interface.php new file mode 100644 index 0000000..943d7ae --- /dev/null +++ b/src/Event/Hook_Event_Config_Interface.php @@ -0,0 +1,11 @@ + 'Header', 'category' => 'theme', - ); + ]; - $events["{$prefix}_after_header"][10] = array( + $events["{$prefix}_after_header"][10] = [ 'action' => 'stop', 'event' => 'Header', 'category' => 'theme', - ); + ]; $sidebars = get_theme_support( 'hybrid-core-sidebars' ); if ( ! empty( $sidebars[0] ) ) { foreach ( $sidebars[0] as $sidebar ) { - $events["{$prefix}_before_{$sidebar}"][10] = array( + $events["{$prefix}_before_{$sidebar}"][10] = [ 'event' => "Sidebar ({$sidebar})", 'category' => 'theme', - ); + ]; - $events["{$prefix}_after_{$sidebar}"][10] = array( + $events["{$prefix}_after_{$sidebar}"][10] = [ 'action' => 'stop', 'event' => "Sidebar ({$sidebar})", 'category' => 'theme', - ); + ]; } } diff --git a/src/Event/THA_Events.php b/src/Event/THA_Events.php new file mode 100644 index 0000000..db7bac9 --- /dev/null +++ b/src/Event/THA_Events.php @@ -0,0 +1,47 @@ + 'Header', + 'category' => 'theme', + ]; + + $events['tha_header_after'][10] = [ + 'action' => 'stop', + 'event' => 'Header', + 'category' => 'theme', + ]; + + $events['tha_sidebars_before'][10] = [ + 'event' => 'Sidebars', + 'category' => 'theme', + ]; + + $events['tha_sidebars_after'][10] = [ + 'action' => 'stop', + 'event' => 'Sidebars', + 'category' => 'theme', + ]; + + return $events; + } +} diff --git a/src/Events/Yoast_Events.php b/src/Event/Yoast_Events.php similarity index 50% rename from src/Events/Yoast_Events.php rename to src/Event/Yoast_Events.php index 8e17739..eeb07a6 100644 --- a/src/Events/Yoast_Events.php +++ b/src/Event/Yoast_Events.php @@ -1,37 +1,33 @@ 'WP SEO head hook', 'category' => 'plugin', - ); + ]; - $stops['wpseo_head'][100] = array( + $stops['wpseo_head'][100] = [ 'action' => 'stop', 'event' => 'WP SEO head hook', 'category' => 'plugin', - ); + ]; return $stops; } diff --git a/src/Events/Genesis_Events.php b/src/Events/Genesis_Events.php deleted file mode 100644 index 7ff4384..0000000 --- a/src/Events/Genesis_Events.php +++ /dev/null @@ -1,62 +0,0 @@ - 'Header', - 'category' => 'theme', - ); - - $events['genesis_after_header'][10] = array( - 'action' => 'stop', - 'event' => 'Header', - 'category' => 'theme', - ); - - $events['genesis_before_sidebar_widget_area'][10] = array( - 'event' => 'Sidebar', - 'category' => 'theme', - ); - - $events['genesis_after_sidebar_widget_area'][10] = array( - 'action' => 'stop', - 'event' => 'Sidebar', - 'category' => 'theme', - ); - - $events['genesis_before_sidebar_alt_widget_area'][10] = array( - 'event' => 'Sidebar (alternate)', - 'category' => 'theme', - ); - - $events['genesis_after_sidebar_alt_widget_area'][10] = array( - 'action' => 'stop', - 'event' => 'Sidebar (alternate)', - 'category' => 'theme', - ); - - return $events; - } -} diff --git a/src/Events/Laps_Events.php b/src/Events/Laps_Events.php deleted file mode 100644 index 6af9f65..0000000 --- a/src/Events/Laps_Events.php +++ /dev/null @@ -1,40 +0,0 @@ -is_applicable() ) { - return $this->get_events(); - } - - return array(); - } - - /** - * Is event pack relevant to current runtime - * - * @return bool - */ - protected function is_applicable() { - - return true; - } - - /** - * Inherit with internal events compiling and return - * - * @return array - */ - abstract protected function get_events(); -} diff --git a/src/Events/THA_Events.php b/src/Events/THA_Events.php deleted file mode 100644 index 9138de1..0000000 --- a/src/Events/THA_Events.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Header', - 'category' => 'theme', - ); - - $events['tha_header_after'][10] = array( - 'action' => 'stop', - 'event' => 'Header', - 'category' => 'theme', - ); - - $events['tha_sidebars_before'][10] = array( - 'event' => 'Sidebars', - 'category' => 'theme', - ); - - $events['tha_sidebars_after'][10] = array( - 'action' => 'stop', - 'event' => 'Sidebars', - 'category' => 'theme', - ); - - return $events; - } -} diff --git a/src/Laps.php b/src/Laps.php index f2d927d..ed2487b 100644 --- a/src/Laps.php +++ b/src/Laps.php @@ -5,6 +5,7 @@ namespace Rarst\Laps; use Pimple\Container; use Pimple\ServiceProviderInterface; use Rarst\Laps\Provider\Bootable_Provider_Interface; +use Rarst\Laps\Provider\Hook_Event_Provider; use Rarst\Laps\Provider\Manager_Provider; use Rarst\Laps\Provider\Record_Provider; @@ -29,6 +30,7 @@ class Laps extends Container { }; $laps->register( new Manager_Provider() ); + $laps->register( new Hook_Event_Provider() ); $laps->register( new Record_Provider() ); foreach ( $values as $key => $value ) { diff --git a/src/Provider/Hook_Event_Provider.php b/src/Provider/Hook_Event_Provider.php new file mode 100644 index 0000000..8dbff4a --- /dev/null +++ b/src/Provider/Hook_Event_Provider.php @@ -0,0 +1,27 @@ + new Core_Events(), + 'genesis' => new Genesis_Events(), + 'hybrid' => new Hybrid_Events(), + 'tha' => new THA_Events(), + 'yoast' => new Yoast_Events(), + ]; + }; + } +} diff --git a/src/Provider/Record_Provider.php b/src/Provider/Record_Provider.php index e0ada3c..b1c64e8 100644 --- a/src/Provider/Record_Provider.php +++ b/src/Provider/Record_Provider.php @@ -21,7 +21,7 @@ class Record_Provider implements ServiceProviderInterface, Bootable_Provider_Int $pimple['collectors'] = function ( Laps $laps ) { return [ - new Hook_Record_Collector( $laps['stopwatch'] ), + new Hook_Record_Collector( $laps['hook.events'], $laps['stopwatch'] ), new Http_Record_Collector( $laps['stopwatch'] ), new Sql_Record_Collector(), ]; diff --git a/src/Record/Hook_Record_Collector.php b/src/Record/Hook_Record_Collector.php index 7ba2f18..2b1b08c 100644 --- a/src/Record/Hook_Record_Collector.php +++ b/src/Record/Hook_Record_Collector.php @@ -2,26 +2,31 @@ namespace Rarst\Laps\Record; -use Rarst\Laps\Events\Core_Events; +use Rarst\Laps\Event\Hook_Event_Config_Interface; use Rarst\Laps\Events\Laps_Events; use Symfony\Component\Stopwatch\Stopwatch; use Symfony\Component\Stopwatch\StopwatchEvent; class Hook_Record_Collector implements Record_Collector_Interface { + /** @var Hook_Event_Config_Interface[] $event_configs */ + protected $event_configs = []; + /** @var Stopwatch $stopwatch */ protected $stopwatch; protected $events = []; - public function __construct( Stopwatch $stopwatch ) { + public function __construct( array $event_configs, Stopwatch $stopwatch ) { $this->stopwatch = $stopwatch; $this->stopwatch->start( 'Plugins Load', 'plugin' ); - $events = new Core_Events(); - $this->add_events( $events->get() ); + $this->add_events( $event_configs['core']->get_events() ); + + unset( $event_configs['core'] ); + $this->event_configs = $event_configs; add_action( 'after_setup_theme', [ $this, 'after_setup_theme' ], 15 ); } @@ -49,12 +54,8 @@ class Hook_Record_Collector implements Record_Collector_Interface { */ public function after_setup_theme() { - foreach ( [ 'THA', 'Hybrid', 'Genesis', 'Yoast' ] as $vendor ) { - - $class = "Rarst\\Laps\\Events\\{$vendor}_Events"; - /** @var Laps_Events $events */ - $events = new $class; - $this->add_events( $events->get() ); + foreach ( $this->event_configs as $config ) { + $this->add_events( $config->get_events() ); } }