PluginProbe
YayMail – WooCommerce Email Customizer / 3.3
YayMail – WooCommerce Email Customizer v3.3
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 3.4.2 3.4.3 All 55 releases
yaymail / includes / YayCommerceMenu / RegisterMenu.php

RegisterMenu.php in YayMail – WooCommerce Email Customizer 3.3, at includes/YayCommerceMenu/RegisterMenu.php

157 lines 5.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Add YayCommerce menu or submenu in admin
4 *
5 * @package YayMail\Admin
6 */
7
8 namespace YayMail\YayCommerceMenu;
9
10 defined( 'ABSPATH' ) || exit;
11
12 /**
13 * Declare class
14 */
15 class RegisterMenu {
16
17 /**
18 * Contains intance of class
19 */
20 protected static $instance = null;
21
22 /**
23 * Contains position of the menu
24 *
25 * @var int
26 */
27 public static $position = 55.5;
28
29 /**
30 * Contains capability of YayCommerce menu
31 *
32 * @var string
33 */
34 public static $capability = 'manage_options';
35
36 /**
37 * Get instance - singleton pattern
38 */
39 public static function get_instance() {
40 if ( empty( self::$instance ) ) {
41 self::$instance = new self();
42 }
43 return self::$instance;
44 }
45
46 /**
47 * Constructor
48 */
49 public function __construct() {
50 if ( ! defined( 'YAYMAIL_MENU_ORDER' ) ) {
51 define( 'YAYMAIL_MENU_ORDER', 1 );
52 }
53 if ( ! defined( 'YAYMAIL_MENU_PRIORITY' ) ) {
54 define( 'YAYMAIL_MENU_PRIORITY', 100 );
55 }
56 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_yaycommerce_menu_scripts' ) );
57 add_action( 'admin_menu', array( $this, 'settings_menu' ) );
58 add_action( 'admin_menu', array( $this, 'add_placeholder_menu' ), YAYMAIL_MENU_PRIORITY + 1 );
59 OtherPluginsMenu::get_instance();
60 }
61
62 /**
63 * Add YayCommerce menus
64 */
65 public function settings_menu() {
66 global $admin_page_hooks;
67 if ( ! isset( $admin_page_hooks['yaycommerce'] ) ) {
68 add_menu_page( 'yaycommerce', 'YayCommerce', self::$capability, 'yaycommerce', null, self::get_logo_url(), self::$position );
69
70 $this->add_submenus();
71 self::delete_yaycommerce_nav();
72 }
73 }
74
75 public function get_submenus() {
76 return array(
77 // 'yaycommerce' => array(
78 // 'parent' => 'yaycommerce',
79 // 'name' => __( 'Dashboard', 'yaycommerce' ),
80 // 'capability' => 'manage_options',
81 // 'render_callback' => false,
82 // 'load_data_callback' => false,
83 // 'position' => 0,
84 // ),
85 'yaycommerce-help' => array(
86 'parent' => 'yaycommerce',
87 'name' => __( 'Help', 'yaycommerce' ),
88 'capability' => 'manage_options',
89 'render_callback' => false,
90 'load_data_callback' => false,
91 ),
92 'yaycommerce-licenses' => array(
93 'parent' => 'yaycommerce',
94 'name' => __( 'Licenses', 'yaycommerce' ),
95 'capability' => 'manage_options',
96 'render_callback' => array( '\YayMail\YayCommerceMenu\LicensesMenu', 'render' ),
97 'load_data_callback' => array( '\YayMail\YayCommerceMenu\LicensesMenu', 'load_data' ),
98 ),
99 'yaycommerce-other-plugins' => array(
100 'parent' => 'yaycommerce',
101 'name' => __( 'Other plugins', 'yaycommerce' ),
102 'capability' => 'manage_options',
103 'render_callback' => array( '\YayMail\YayCommerceMenu\OtherPluginsMenu', 'render' ),
104 'load_data_callback' => array( '\YayMail\YayCommerceMenu\OtherPluginsMenu', 'load_data' ),
105 ),
106 );
107 }
108
109 public function add_submenus() {
110 foreach ( $this->get_submenus() as $id => $submenu ) {
111 $page_id = add_submenu_page(
112 $submenu['parent'],
113 $submenu['name'],
114 $submenu['name'],
115 $submenu['capability'],
116 $id,
117 $submenu['render_callback'],
118 isset( $submenu['position'] ) ? $submenu['position'] : null
119 );
120 add_action( 'load-' . $page_id, $submenu['load_data_callback'] );
121 }
122 }
123
124 public function enqueue_yaycommerce_menu_scripts() {
125 wp_enqueue_script( 'yaycommerce-menu', plugin_dir_url( __FILE__ ) . 'assets/js/yaycommerce-menu.js', array( 'jquery' ), '1.0', true );
126 }
127
128 public static function get_logo_url() {
129 return 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQ2LjI0NzYgNi40MDg5NkM0Ni4yNDc2IDkuOTQ4MTYgNDMuMzc3OCAxMi44MTc5IDM5LjgzODYgMTIuODE3OUMzNi4yOTk0IDEyLjgxNzkgMzMuNDI5NyA5Ljk0ODE2IDMzLjQyOTcgNi40MDg5NkMzMy40Mjk3IDIuODY5NzYgMzYuMjk4MSAwIDM5LjgzODYgMEM0My4zNzkxIDAgNDYuMjQ3NiAyLjg2OTc2IDQ2LjI0NzYgNi40MDg5NlpNMS4xNjQ3MSAyMi45OTI2Qy0wLjIxODk3MiAyMy4xMzIyIC0wLjQzNzg1MiAyNS4wNTg2IDAuODc5MjY4IDI1LjUwNEM5LjI1NDMxIDI4LjMzNjYgMjEuMzAwNCAzMC45OTUyIDI3LjI0OTggMzIuMjM0MkMyOS4yOTkxIDMyLjY2MDUgMzAuNjIzOSAzNC42NDgzIDMwLjI0MTIgMzYuNzA2NkMyOC41NDUyIDQ1LjgwNjEgMjUuMzc4NSA1NS41Mjc3IDIzLjM2ODkgNjIuMzM0N0MyMi45ODYyIDYzLjYzMTQgMjQuNTk5IDY0LjU3MjIgMjUuNTM4NSA2My42MDA2QzQ3LjIxMDIgNDEuMjAxOSA1OS4zODk0IDE4LjE5OSA2My44Njk0IDguNzIzMkM2NC40MjM2IDcuNTUwNzIgNjMuMTAwMSA2LjM4NzIgNjIuMDA0NCA3LjA4MDk2QzQ1LjM5MTMgMTcuNjA2NCAxMy44NTU5IDIxLjcxNzggMS4xNjQ3MSAyMi45OTI2WiIgZmlsbD0iI0E3QUFBRCIvPgo8L3N2Zz4=';
130 }
131
132 public static function delete_yaycommerce_nav() {
133 remove_submenu_page( 'yaycommerce', 'yaycommerce' );
134 }
135
136 public function add_placeholder_menu() {
137 global $submenu;
138 if ( ! isset( $submenu['yaycommerce'] ) ) {
139 return;
140 }
141 $has_plugin_menu = false;
142 foreach ( $submenu['yaycommerce'] as $item ) {
143 if ( 'yaymail-settings' === $item[2] ) {
144 $has_plugin_menu = true;
145 }
146 }
147 if ( ! $has_plugin_menu ) {
148 add_submenu_page( 'yaycommerce', __( 'Email Builder Settings', 'yaymail' ), __( 'YayMail', 'yaymail' ), 'manage_woocommerce', 'yaymail-settings', array( $this, 'render_placeholder_menu' ), 0 );
149 }
150 }
151
152 public function render_placeholder_menu() {
153 wp_safe_redirect( admin_url( 'admin.php?page="yaycommerce-licenses"' ) );
154 }
155
156 }
157