PluginProbe
YayMail – WooCommerce Email Customizer / 4.4.2
YayMail – WooCommerce Email Customizer v4.4.2
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.2, at vendor-prefixed/src/Menu/PagesRouter.php

58 lines 3.0 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 use YayMailScoped\YayCommerce\AdminShell\Support\AdminContext;
10 /**
11 * Registers Licenses, Other Plugins, and Help submenus under 'yaycommerce'.
12 * Ported from YayMail Pro RegisterMenu::add_submenus() — de-branded and
13 * adapter-driven (no hardcoded cross-plugin class_exists() probes).
14 * @internal
15 */
16 class PagesRouter
17 {
18 private LicenseRegistry $registry;
19 public function __construct(LicenseRegistry $registry)
20 {
21 $this->registry = $registry;
22 }
23 public function init() : void
24 {
25 // Bind on both admin_menu and network_admin_menu so the shell pages
26 // (Help, Licenses, Recommended) appear in the Multisite Network Admin too.
27 AdminContext::bind_menu([$this, 'register_submenus'], 11);
28 // Instantiate RecommendedPluginsPage to register its wp_ajax_* handlers.
29 RecommendedPluginsPage::get_instance();
30 }
31 public function register_submenus() : void
32 {
33 $submenus = $this->get_submenus();
34 foreach ($submenus as $slug => $submenu) {
35 $page_id = add_submenu_page($submenu['parent'], $submenu['name'], $submenu['name'], $submenu['capability'], $slug, $submenu['render_callback'], $submenu['position'] ?? null);
36 if ($submenu['load_callback']) {
37 add_action('load-' . $page_id, $submenu['load_callback']);
38 }
39 }
40 }
41 private function get_submenus() : array
42 {
43 $submenus = [];
44 // Plugin submenus use position 0-99 (via adapter).
45 // Shell pages use 900+ so they always appear at the bottom.
46 // In Network Admin the capability is elevated to manage_network.
47 $capability = AdminContext::capability('manage_options');
48 $submenus['yaycommerce-help'] = ['parent' => 'yaycommerce', 'name' => \__('Help', 'yaycommerce'), 'capability' => $capability, 'render_callback' => [HelpPage::class, 'render'], 'load_callback' => [HelpPage::class, 'load_data'], 'position' => 900];
49 // Licenses submenu — only shown if any plugins are registered.
50 $has_any = !empty($this->registry->all());
51 if ($has_any) {
52 $submenus['yaycommerce-licenses'] = ['parent' => 'yaycommerce', 'name' => \__('Licenses', 'yaycommerce'), 'capability' => $capability, 'render_callback' => [LicensesPage::class, 'render'], 'load_callback' => [LicensesPage::class, 'load_data'], 'position' => 910];
53 }
54 $submenus['yaycommerce-other-plugins'] = ['parent' => 'yaycommerce', 'name' => \__('Recommended Plugins', 'yaycommerce'), 'capability' => $capability, 'render_callback' => [RecommendedPluginsPage::class, 'render'], 'load_callback' => [RecommendedPluginsPage::class, 'load_data'], 'position' => 920];
55 return $submenus;
56 }
57 }
58