PluginProbe
User Menus – Nav Menu Visibility / 1.3.2
User Menus – Nav Menu Visibility v1.3.2
trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2
user-menus / user-menus.php

user-menus.php in User Menus – Nav Menu Visibility 1.3.2, at user-menus.php

268 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: User Menus
4 * Plugin URI: https://wordpress.org/plugins/user-menus/
5 * Description: Quickly customize your menus with a user's name & avatar, or show items based on user role.
6 * Version: 1.3.2
7 * Author: Code Atlantic
8 * Author URI: https://code-atlantic.com/
9 * License: GPL2 or later
10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11 * Text Domain: user-menus
12 *
13 * Minimum PHP: 5.6
14 * Minimum WP: 4.6
15 *
16 * @author Daniel Iser
17 * @package User Menus
18 * @copyright Copyright (c) 2019, Code Atlantic LLC
19 *
20 * Prior Work Credits. Big thanks to the following:
21 * - No Conflict Nav Menu Walker (Modified) - Nav Menu Roles @helgatheviking
22 * - Menu Importer (Modified) - Kathy Darling
23 */
24
25 if ( ! defined( 'ABSPATH' ) ) {
26 exit;
27 }
28
29 if ( ! function_exists( 'um_fs' ) ) {
30 /**
31 * Create a helper function for easy SDK access.
32 *
33 * @return \Freemius
34 */
35 function um_fs() {
36 global $um_fs;
37
38 if ( ! isset( $um_fs ) ) {
39 // Include Freemius SDK.
40 require_once dirname( __FILE__ ) . '/freemius/start.php';
41
42 $um_fs = fs_dynamic_init( [
43 'id' => '3637',
44 'slug' => 'user-menus',
45 'type' => 'plugin',
46 'public_key' => 'pk_367ac2d0a38c35ef2a78d161fed88',
47 'is_premium' => false,
48 'has_addons' => false,
49 'has_paid_plans' => false,
50 'menu' => [
51 'first-path' => 'plugins.php',
52 'account' => false,
53 'contact' => false,
54 'support' => false,
55 ],
56 ] );
57 }
58
59 return $um_fs;
60 }
61
62 // Init Freemius.
63 um_fs();
64
65 // Signal that SDK was initiated.
66 do_action( 'um_fs_loaded' );
67 }
68
69 /**
70 * Class JP_User_Menus
71 */
72 class JP_User_Menus {
73
74 /**
75 * Plugin Name
76 *
77 * @var string
78 */
79 public static $NAME = 'User Menus';
80
81 /**
82 * Plugin Version
83 *
84 * @var string
85 */
86 public static $VER = '1.3.2';
87
88 /**
89 * Minimum PHP version
90 *
91 * @var string
92 */
93 public static $MIN_PHP_VER = '5.6';
94
95 /**
96 * Minimum WP version
97 *
98 * @var string
99 */
100 public static $MIN_WP_VER = '4.6';
101
102 /**
103 * Plugin URL
104 *
105 * @var string
106 */
107 public static $URL = '';
108
109 /**
110 * Plugin Directory
111 *
112 * @var string
113 */
114 public static $DIR = '';
115
116 /**
117 * Plugin File
118 *
119 * @var string
120 */
121 public static $FILE = '';
122
123 /**
124 * Plugin Template Directory
125 *
126 * @var string
127 */
128 public static $TEMPLATE_PATH = 'jp/user-menus/';
129
130 /**
131 * Text Domain
132 *
133 * @var string
134 */
135 public static $TD = 'user-menus';
136
137 /**
138 * Instance of the plugin class
139 *
140 * @var JP_User_Menus $instance The one true JP_User_Menus
141 */
142 private static $instance;
143
144 /**
145 * Get active instance
146 *
147 * @access public
148 * @since 1.0.0
149 * @return object self::$instance The one true JP_User_Menus
150 */
151 public static function instance() {
152 if ( ! self::$instance ) {
153 self::$instance = new static();
154 self::$instance->setup_constants();
155
156 add_action( 'plugins_loaded', [ self::$instance, 'load_textdomain' ] );
157
158 self::$instance->includes();
159 }
160
161 return self::$instance;
162 }
163
164 /**
165 * Setup plugin constants
166 *
167 * @since 1.0.0
168 */
169 private function setup_constants() {
170 self::$DIR = self::$instance->plugin_path();
171 self::$URL = self::$instance->plugin_url();
172 self::$FILE = __FILE__;
173 }
174
175 /**
176 * Include necessary files
177 *
178 * @since 1.0.0
179 */
180 private function includes() {
181 // Menu Items.
182 require_once self::$DIR . 'includes/classes/menu/item.php';
183 require_once self::$DIR . 'includes/classes/menu/items.php';
184 require_once self::$DIR . 'includes/classes/user/codes.php';
185 if ( is_admin() ) {
186 // Admin Menu Editor.
187 require_once self::$DIR . 'includes/classes/admin/menu-editor.php';
188 require_once self::$DIR . 'includes/classes/admin/menu-settings.php';
189 require_once self::$DIR . 'includes/classes/admin/menu-importer.php';
190 require_once self::$DIR . 'includes/classes/admin/reviews.php';
191 } else {
192 // Site Menu Filter.
193 require_once self::$DIR . 'includes/classes/site/menus.php';
194 }
195 }
196
197 /**
198 * Get the plugin path.
199 *
200 * @return string
201 */
202 public function plugin_path() {
203 return plugin_dir_path( __FILE__ );
204 }
205
206 /**
207 * Get the plugin url.
208 *
209 * @return string
210 */
211 public function plugin_url() {
212 return plugins_url( '/', __FILE__ );
213 }
214
215 /**
216 * Plugin Activation hook function to check for Minimum PHP and WordPress versions
217 */
218 public static function activation_check() {
219 global $wp_version;
220
221 if ( version_compare( PHP_VERSION, self::$MIN_PHP_VER, '<' ) ) {
222 $flag = 'PHP';
223 } elseif ( version_compare( $wp_version, self::$MIN_WP_VER, '<' ) ) {
224 $flag = 'WordPress';
225 } else {
226 return;
227 }
228
229 $version = 'PHP' === $flag ? self::$MIN_PHP_VER : self::$MIN_WP_VER;
230
231 // Deactivate automatically due to insufficient PHP or WP Version.
232 deactivate_plugins( basename( __FILE__ ) );
233
234 /* translators: 1: Plugin Name, 2: Flagged software (PHP or WP), 3: PHP or WordPress version */
235 $notice = sprintf( __( 'The %4$s %1$s %5$s plugin requires %2$s version %3$s or greater.', 'user-menus' ), self::$NAME, $flag, $version, '<strong>', '</strong>' );
236
237 /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
238 wp_die( sprintf( '<p>%s</p>', $notice ), __( 'Plugin Activation Error', 'user-menus' ), [
239 'response' => 200,
240 'back_link' => true,
241 ] );
242 }
243
244 /**
245 * Internationalization
246 *
247 * @since 1.0.0
248 */
249 public function load_textdomain() {
250 load_plugin_textdomain( 'user-menus' );
251 }
252
253 }
254
255 /**
256 * Globally available function to get plugin instance.
257 *
258 * @return object
259 */
260 function jp_user_menus() {
261 return JP_User_Menus::instance();
262 }
263
264 jp_user_menus();
265
266 // Ensure plugin & environment compatibility.
267 register_activation_hook( __FILE__, [ 'JP_User_Menus', 'activation_check' ] );
268