PluginProbe
YayMail – WooCommerce Email Customizer / 4.4.1
YayMail – WooCommerce Email Customizer v4.4.1
4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 trunk 1.9.6 2.1.4 2.1.5 3.2.2 3.2.6 3.2.7.1 3.2.8.1 3.2.9 3.3 3.3.1 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.4.1 All 57 releases
yaymail / vendor-prefixed / src / Menu / PagesRouter.php

PagesRouter.php in YayMail – WooCommerce Email Customizer 4.4.1, at vendor-prefixed/src/Menu/PagesRouter.php

52 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YayMailScoped\YayCommerce\AdminShell\Menu;
4
5 use YayMailScoped\YayCommerce\AdminShell\Pages\LicensesPage;
6 use YayMailScoped\YayCommerce\AdminShell\Pages\RecommendedPluginsPage;
7 use YayMailScoped\YayCommerce\AdminShell\Pages\HelpPage;
8 use YayMailScoped\YayCommerce\AdminShell\Registry\LicenseRegistry;
9 /**
10 * Registers Licenses, Other Plugins, and Help submenus under 'yaycommerce'.
11 * Ported from YayMail Pro RegisterMenu::add_submenus() — de-branded and
12 * adapter-driven (no hardcoded cross-plugin class_exists() probes).
13 */
14 class PagesRouter
15 {
16 private LicenseRegistry $registry;
17 public function __construct(LicenseRegistry $registry)
18 {
19 $this->registry = $registry;
20 }
21 public function init() : void
22 {
23 \add_action('admin_menu', [$this, 'register_submenus'], 11);
24 // Instantiate RecommendedPluginsPage to register its wp_ajax_* handlers.
25 RecommendedPluginsPage::get_instance();
26 }
27 public function register_submenus() : void
28 {
29 $submenus = $this->get_submenus();
30 foreach ($submenus as $slug => $submenu) {
31 $page_id = \add_submenu_page($submenu['parent'], $submenu['name'], $submenu['name'], $submenu['capability'], $slug, $submenu['render_callback'], $submenu['position'] ?? null);
32 if ($submenu['load_callback']) {
33 \add_action('load-' . $page_id, $submenu['load_callback']);
34 }
35 }
36 }
37 private function get_submenus() : array
38 {
39 $submenus = [];
40 // Plugin submenus use position 0-99 (via adapter).
41 // Shell pages use 900+ so they always appear at the bottom.
42 $submenus['yaycommerce-help'] = ['parent' => 'yaycommerce', 'name' => \__('Help', 'yaycommerce'), 'capability' => 'manage_options', 'render_callback' => [HelpPage::class, 'render'], 'load_callback' => [HelpPage::class, 'load_data'], 'position' => 900];
43 // Licenses submenu — only shown if any plugins are registered.
44 $has_any = !empty($this->registry->all());
45 if ($has_any) {
46 $submenus['yaycommerce-licenses'] = ['parent' => 'yaycommerce', 'name' => \__('Licenses', 'yaycommerce'), 'capability' => 'manage_options', 'render_callback' => [LicensesPage::class, 'render'], 'load_callback' => [LicensesPage::class, 'load_data'], 'position' => 910];
47 }
48 $submenus['yaycommerce-other-plugins'] = ['parent' => 'yaycommerce', 'name' => \__('Recommended Plugins', 'yaycommerce'), 'capability' => 'manage_options', 'render_callback' => [RecommendedPluginsPage::class, 'render'], 'load_callback' => [RecommendedPluginsPage::class, 'load_data'], 'position' => 920];
49 return $submenus;
50 }
51 }
52