<?php /** * Plugin Name: User Menus * Plugin URI: https://wordpress.org/plugins/user-menus/ * Description: Quickly customize your menus with a user's name & avatar, or show items based on user role. * Version: 1.3.2 * Author: Code Atlantic * Author URI: https://code-atlantic.com/ * License: GPL2 or later * License URI: https://www.gnu.org/licenses/gpl-2.0.html * Text Domain: user-menus * * Minimum PHP: 5.6 * Minimum WP: 4.6 * * @author Daniel Iser * @package User Menus * @copyright Copyright (c) 2019, Code Atlantic LLC * * Prior Work Credits. Big thanks to the following: * - No Conflict Nav Menu Walker (Modified) - Nav Menu Roles @helgatheviking * - Menu Importer (Modified) - Kathy Darling */ if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! function_exists( 'um_fs' ) ) { /** * Create a helper function for easy SDK access. * * @return \Freemius */ function um_fs() { global $um_fs; if ( ! isset( $um_fs ) ) { // Include Freemius SDK. require_once dirname( __FILE__ ) . '/freemius/start.php'; $um_fs = fs_dynamic_init( [ 'id' => '3637', 'slug' => 'user-menus', 'type' => 'plugin', 'public_key' => 'pk_367ac2d0a38c35ef2a78d161fed88', 'is_premium' => false, 'has_addons' => false, 'has_paid_plans' => false, 'menu' => [ 'first-path' => 'plugins.php', 'account' => false, 'contact' => false, 'support' => false, ], ] ); } return $um_fs; } // Init Freemius. um_fs(); // Signal that SDK was initiated. do_action( 'um_fs_loaded' ); } /** * Class JP_User_Menus */ class JP_User_Menus { /** * Plugin Name * * @var string */ public static $NAME = 'User Menus'; /** * Plugin Version * * @var string */ public static $VER = '1.3.2'; /** * Minimum PHP version * * @var string */ public static $MIN_PHP_VER = '5.6'; /** * Minimum WP version * * @var string */ public static $MIN_WP_VER = '4.6'; /** * Plugin URL * * @var string */ public static $URL = ''; /** * Plugin Directory * * @var string */ public static $DIR = ''; /** * Plugin File * * @var string */ public static $FILE = ''; /** * Plugin Template Directory * * @var string */ public static $TEMPLATE_PATH = 'jp/user-menus/'; /** * Text Domain * * @var string */ public static $TD = 'user-menus'; /** * Instance of the plugin class * * @var JP_User_Menus $instance The one true JP_User_Menus */ private static $instance; /** * Get active instance * * @access public * @since 1.0.0 * @return object self::$instance The one true JP_User_Menus */ public static function instance() { if ( ! self::$instance ) { self::$instance = new static(); self::$instance->setup_constants(); add_action( 'plugins_loaded', [ self::$instance, 'load_textdomain' ] ); self::$instance->includes(); } return self::$instance; } /** * Setup plugin constants * * @since 1.0.0 */ private function setup_constants() { self::$DIR = self::$instance->plugin_path(); self::$URL = self::$instance->plugin_url(); self::$FILE = __FILE__; } /** * Include necessary files * * @since 1.0.0 */ private function includes() { // Menu Items. require_once self::$DIR . 'includes/classes/menu/item.php'; require_once self::$DIR . 'includes/classes/menu/items.php'; require_once self::$DIR . 'includes/classes/user/codes.php'; if ( is_admin() ) { // Admin Menu Editor. require_once self::$DIR . 'includes/classes/admin/menu-editor.php'; require_once self::$DIR . 'includes/classes/admin/menu-settings.php'; require_once self::$DIR . 'includes/classes/admin/menu-importer.php'; require_once self::$DIR . 'includes/classes/admin/reviews.php'; } else { // Site Menu Filter. require_once self::$DIR . 'includes/classes/site/menus.php'; } } /** * Get the plugin path. * * @return string */ public function plugin_path() { return plugin_dir_path( __FILE__ ); } /** * Get the plugin url. * * @return string */ public function plugin_url() { return plugins_url( '/', __FILE__ ); } /** * Plugin Activation hook function to check for Minimum PHP and WordPress versions */ public static function activation_check() { global $wp_version; if ( version_compare( PHP_VERSION, self::$MIN_PHP_VER, '<' ) ) { $flag = 'PHP'; } elseif ( version_compare( $wp_version, self::$MIN_WP_VER, '<' ) ) { $flag = 'WordPress'; } else { return; } $version = 'PHP' === $flag ? self::$MIN_PHP_VER : self::$MIN_WP_VER; // Deactivate automatically due to insufficient PHP or WP Version. deactivate_plugins( basename( __FILE__ ) ); /* translators: 1: Plugin Name, 2: Flagged software (PHP or WP), 3: PHP or WordPress version */ $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>' ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ wp_die( sprintf( '<p>%s</p>', $notice ), __( 'Plugin Activation Error', 'user-menus' ), [ 'response' => 200, 'back_link' => true, ] ); } /** * Internationalization * * @since 1.0.0 */ public function load_textdomain() { load_plugin_textdomain( 'user-menus' ); } } /** * Globally available function to get plugin instance. * * @return object */ function jp_user_menus() { return JP_User_Menus::instance(); } jp_user_menus(); // Ensure plugin & environment compatibility. register_activation_hook( __FILE__, [ 'JP_User_Menus', 'activation_check' ] );