File "class-plugin.php"
Full Path: /home/vantageo/public_html/cache/cache/js/06/class-plugin.php
File size: 6.49 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Plugin manifest class.
*
* @package responsive-menu
*/
namespace RMP\Features\Inc;
use RMP\Features\Inc\Elementor\Elementor_Manager;
use RMP\Features\Inc\Traits\Singleton;
/**
* Class Plugin
*/
class Plugin {
use Singleton;
/**
* Construct method.
*/
protected function __construct() {
// Load plugin classes.
Admin::get_instance();
Assets::get_instance();
Editor::get_instance();
Editor_Manager::get_instance();
Preview::get_instance();
Control_Manager::get_instance();
Theme_Manager::get_instance();
Option_Manager::get_instance();
Style_Manager::get_instance();
UI_Manager::get_instance();
RMP_Migration::get_instance();
Elementor_Manager::get_instance();
$this->setup_hooks();
}
/**
* To setup action/filter.
*
* @return void
*/
protected function setup_hooks() {
add_action( 'plugins_loaded', array( $this, 'rmp_load_plugin_text_domain' ) );
add_action( 'admin_notices', array( $this, 'rmp_deactivate_paid_version_notice' ) );
//Hiding upgrade to pro notice for v3 users
global $wpdb;
$table_name = $wpdb->prefix . 'responsive_menu';
$query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) );
if ( ! $wpdb->get_var( $query ) == $table_name ) {
add_action( 'admin_notices', array( $this, 'rmp_upgrade_pro_admin_notice' ) );
}
add_action( 'plugin_action_links_' . plugin_basename( RMP_PLUGIN_FILE ), array( $this, 'rmp_upgrade_pro_plugin_link' ) );
add_action( 'wp_ajax_rmp_upgrade_admin_notice_dismiss', array( $this, 'rmp_upgrade_pro_notice_dismiss' ) );
add_action( 'admin_notices', array( $this, 'no_menu_admin_notice' ) );
// Check current config and environment support wp_body_open or not.
if ( $this->has_support( 'wp_body_open' ) ) {
add_action( 'wp_body_open', array( $this, 'menu_render_on_frontend' ) );
} else {
add_action( 'wp_footer', array( $this, 'menu_render_on_frontend' ) );
}
}
/**
* Function to show the admin notice when no menu exist.
*
* @since 4.1.0
*
* @return void
*/
public function no_menu_admin_notice() {
// Check post type.
$post_type = get_post_type();
if ( empty( $post_type ) && ! empty( $_GET['post_type'] ) ) {
$post_type = intval( $_GET['post_type'] );
}
if ( 'rmp_menu' !== $post_type || ! empty( $_GET['page'] ) ) {
return;
}
// Count all post which are in list except trash.
$post_count = 0;
foreach ( wp_count_posts( 'rmp_menu' ) as $status => $count ) {
if ( 'trash' == $status ) {
continue;
}
$post_count += $count;
}
if ( $post_count >= 1 ) {
return;
} ?>
<div class="notice notice-error">
<p>
<?php
/* translators: %s: HTML tag */
echo sprintf( esc_html__( 'Responsive menu list is empty. Create a menu by clicking the %1$sCreate New Menu%2$s button. For more details visit ', 'responsive-menu' ), '<b>', '</b>' );
?>
<a target="_blank" rel="noopener" href="<?php echo esc_url( 'https://responsive.menu/knowledgebase/responsive-menu-4-0-overview/' ); ?>"> <?php esc_html_e( 'Documentation', 'responsive-menu' ); ?></a>
</p>
</div>
<?php
}
/**
* Add plugin upgrade link.
*
* Add a link to the settings page on the responsive menu page.
*
* @param array $links List of existing plugin action links.
* @return array List of modified plugin action links.
*/
public function rmp_upgrade_pro_plugin_link( $links ) {
$links = array_merge(
$links,
array( '<a class="responsive-menu-license-upgrade-link" target="_blank" rel="noopener" href="https://responsive.menu/pricing/">' . esc_html__( 'Upgrade', 'responsive-menu' ) . '</a>' )
);
return $links;
}
/**
* Function to add the admin notice to upgrade as pro.
*
* @version 4.1.0
*/
public function rmp_upgrade_pro_admin_notice() {
$post_type = get_post_type();
if ( empty( $post_type ) && ! empty( $_GET['post_type'] ) ) {
$post_type = intval( $_GET['post_type'] );
}
if ( 'rmp_menu' !== $post_type ) {
return;
}
$user_id = get_current_user_id();
if ( ! empty( get_user_meta( $user_id, 'rmp_upgrade_pro_admin_notice' ) ) ) {
return;
}
include_once RMP_PLUGIN_PATH_V4 . '/templates/admin-notices.php';
}
/**
* Function to hide the admin notice permanent.
*/
public function rmp_upgrade_pro_notice_dismiss() {
$user_id = get_current_user_id();
update_user_meta( $user_id, 'rmp_upgrade_pro_admin_notice', true );
}
/**
* Function to show the admin notice if plugin deactivate.
*
* @return void
*/
public function rmp_deactivate_paid_version_notice() {
if ( get_transient( 'og-admin-notice-activation' ) ) {
?>
<div class="notice notice-error is-dismissible">
<p><?php esc_html_e( 'Responsive Menu has been deactivated', 'responsive-menu' ); ?></p>
</div>
<?php
delete_transient( 'og-admin-notice-activation-pro' );
}
}
/**
* Load plugin text domain.
*
* @version 4.0.0
*
* @return void
*/
public function rmp_load_plugin_text_domain() {
load_plugin_textdomain( 'responsive-menu', false, RMP_PLUGIN_DIR_NAME . '/v4.0.0/languages' );
}
/**
* Function to render the nenu on frontend.
*
* @version 4.0.0
*/
public function menu_render_on_frontend() {
$option_manager = Option_Manager::get_instance();
$menu_ids = get_all_rmp_menu_ids();
if ( empty( $menu_ids ) ) {
return;
}
foreach ( $menu_ids as $menu_id ) {
$menu_show_on = $option_manager->get_option( $menu_id, 'menu_display_on' );
if ( ! empty( $menu_show_on ) && 'shortcode' === $menu_show_on ) {
continue;
}
$menu = new \RMP\Features\Inc\RMP_Menu( $menu_id );
$menu->build_menu();
}
}
/**
* Check support of wp_body_open for plugins and themes.
*
* @since 4.0.0
*
* @param string $hook Name of hook.
* @return boolean
*/
public function has_support( $hook ) {
// Check wp footer option is enabled.
$option_manager = Option_Manager::get_instance();
if ( 'wp_body_open' === $hook && 'on' === $option_manager->get_global_option( 'rmp_wp_footer_hook' ) ) {
return false;
}
// Check wp core support wp_body_open hook or not.
if ( ! has_action( $hook ) ) {
return false;
}
// If is_plugin_active function not exist then add plugin.php file from core.
if ( ! function_exists( 'is_plugin_active' ) ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
// List of unsupported themes and plugins.
$unsupported_extensions = array(
'oxygen/functions.php',
);
foreach ( $unsupported_extensions as $extension ) {
if ( is_plugin_active( $extension ) ) {
return false;
}
}
return true;
}
}