MOON
Server: Apache
System: Linux server.netcommlabs.in 3.10.0-1160.83.1.el7.x86_64 #1 SMP Wed Jan 25 16:41:43 UTC 2023 x86_64
User: dermova (1051)
PHP: 5.4.45
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/dermova/public_html/india/wp-content/plugins/wr-megamenu/includes/addon.php
<?php
/**
 * @version    $Id$
 * @package    WR MegaMenu
 * @author     WooRockets Team <support@woorockets.com>
 * @copyright  Copyright (C) 2014 WooRockets.com All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Websites: http://www.woorockets.com
 * Technical Support:  Feedback - http://www.woorockets.com
 */

class WR_Megamenu_Addon {

	// prodiver name
	protected $provider;

	// register assets (js/css)
	protected $assets_register;

	// enqueue assets for Admin pages
	protected $assets_enqueue_admin;

	// enqueue assets for Modal setting iframe
	protected $assets_enqueue_modal;

	// enqueue assets for Frontend
	protected $assets_enqueue_frontend;

	/**
	 * Get provider data
	 *
	 * @return type
	 */
	public function get_provider() {
		return $this->provider;
	}

	/**
	 * Get provider assets path & uri
	 *
	 * @return type
	 */
	public function get_assets_register() {
		return $this->assets_register;
	}

	/**
	 * Get custom enqueued assets for WP admin
	 *
	 * @return type
	 */
	public function get_assets_enqueue_admin() {
		return $this->assets_enqueue_admin;
	}

	/**
	 * Get custom enqueued assets for WR modal
	 *
	 * @return type
	 */
	public function get_assets_enqueue_modal() {
		return $this->assets_enqueue_modal;
	}

	/**
	 * Get custom enqueued assets for Front end
	 *
	 * @return type
	 */
	public function get_assets_enqueue_frontend() {
		return $this->assets_enqueue_frontend;
	}

	/**
	 * Set provider data
	 *
	 * @param array $provider
	 */
	public function set_provider( $provider ) {
		$this->provider = $provider;
	}

	/**
	 * Register custom assets
	 *
	 * @param array $assets
	 */
	public function set_assets_register( $assets ) {
		$this->assets_register = $assets;
	}

	/**
	 * Add custom assets for WP admin
	 *
	 * @param array $assets
	 */
	public function set_assets_enqueue_admin( $assets ) {
		$this->assets_enqueue_admin = $assets;
	}

	/**
	 * Add custom assets for WR modal
	 *
	 * @param array $assets
	 */
	public function set_assets_enqueue_modal( $assets ) {
		$this->assets_enqueue_modal = $assets;
	}

	/**
	 * Add custom assets for WP frontend
	 *
	 * @param array $assets
	 */
	public function set_assets_enqueue_frontend( $assets ) {
		$this->assets_enqueue_frontend = $assets;
	}

	/**
	 * Initialize addon
	 */
	public function __construct() {
		add_filter( 'wr_mm_provider',                array( &$this, 'get_provider_data' ) );
		add_filter( 'wr_mm_register_assets',         array( &$this, 'register_assets_register' ) );
		add_filter( 'wr_mm_assets_enqueue_admin',    array( &$this, 'enqueue_assets_admin' ) );
		add_filter( 'wr_mm_assets_enqueue_modal',    array( &$this, 'enqueue_assets_modal' ) );
		add_filter( 'wr_mm_assets_enqueue_frontend', array( &$this, 'enqueue_assets_frontend' ) );
	}

	/**
	 * Get provider data and return necessary information
	 *
	 * @param array $providers
	 *
	 * @return string
	 */
	public function get_provider_data( $providers ) {

		// get provider data
		$provider = $this->get_provider();

		if ( empty ( $provider ) || empty ( $provider['file'] ) ) {
			return $providers;
		}

		// variables
		$file = $provider['file'];
		// Fix Standard Elements
		if ( basename( $file ) == 'shortcode.php' ) {
			$path = WR_MEGAMENU_ROOT_PATH . 'shortcodes/';
			$uri  = WR_MEGAMENU_ROOT_URL . 'shortcodes/';
		} else {
			$path = plugin_dir_path( $file );
			$uri  = plugin_dir_url( $file );
		}

		$shortcode_dir    = empty ( $provider['shortcode_dir'] ) ? 'shortcodes' : $provider['shortcode_dir'];
		$js_shortcode_dir = empty ( $provider['js_shortcode_dir'] ) ? 'assets/js/shortcodes' : $provider['js_shortcode_dir'];

		// Check if path is absolute
		if ( ! is_dir( $shortcode_dir ) ) {
			$shortcode_dir = $path . $shortcode_dir;
		}

		//get plugin name & main file
		$main_file		= pathinfo( $file );
		$folder		   = basename( $main_file['dirname'] );
		$main_file		= $folder . '/' . $main_file['basename'];
		$providers[$path] = array(
			'path'             => $path,
			'uri'              => $uri,
			'file'             => $main_file,
			'file_path'        => $file,
			'folder'           => $folder,
			'name'             => $provider['name'],
			'shortcode_dir'	   => $shortcode_dir,
			'js_shortcode_dir' => array( 'path' => $path . $js_shortcode_dir, 'uri' => $uri . $js_shortcode_dir ),
		);

		return $providers;
	}

	/**
	 * Register custom assets
	 *
	 * @param array $assets
	 *
	 * @return array
	 */
	public function register_assets_register( $assets ) {
		$this_asset = $this->get_assets_register();
		$assets	    = array_merge( $assets, empty ( $this_asset ) ? array() : $this_asset );

		return $assets;
	}

	/**
	 * Register custom assets for WP admin
	 *
	 * @param array $assets
	 *
	 * @return array
	 */
	public function enqueue_assets_admin( $assets ) {
		$this_asset = $this->get_assets_enqueue_admin();
		$assets     = array_merge( $assets, empty ( $this_asset ) ? array() : $this_asset );

		return $assets;
	}

	/**
	 * Register custom assets for WR modal
	 *
	 * @param array $assets
	 *
	 * @return array
	 */
	public function enqueue_assets_modal( $assets ) {
		$this_asset = $this->get_assets_enqueue_modal();
		$assets     = array_merge( $assets, empty ( $this_asset ) ? array() : $this_asset );

		return $assets;
	}

	/**
	 * Register custom assets for WP frontend
	 *
	 * @param array $assets
	 *
	 * @return array
	 */
	public function enqueue_assets_frontend( $assets ) {
		$this_asset = $this->get_assets_enqueue_frontend();
		$assets     = array_merge( $assets, empty ( $this_asset ) ? array() : $this_asset );

		return $assets;
	}

	/**
	 * Register Path to extended Parameter type
	 *
	 * @param string $path
	 */
	public function register_extended_parameter_path( $path ) {
		WR_Megamenu_Loader::register( $path, 'WR_Megamenu_Helpers_Html_' );
	}

	/**
	 * Show admin notice
	 *
	 * @param string $addon_name
	 * @param string $core_required
	 *
	 * @return string
	 */
	static function show_notice( $data, $action, $type = 'error' ) {
		// show message
		ob_start();

		switch ( $action ) {
			// show message about core version required
			case 'core_required':
				extract( $data );

				?>
				<div class="<?php echo esc_attr( $type ); ?>">
					<p>
						<?php _e( "You can not activate this WR MegaMenu's provider:", WR_MEGAMENU_TEXTDOMAIN ); ?> <br>
						<b><?php echo esc_html( $addon_name ); ?></b>
					</p>

					<p>
						<?php _e( "It requires WR MegaMenu's version:", WR_MEGAMENU_TEXTDOMAIN ); ?> <br>
						<b><?php echo esc_html( $core_required ); ?></b> <br>
						<?php echo esc_html( 'or above to work. Please update WR MegaMenu to newest version.' ); ?>
						<br>
					</p>
				</div>

				<!-- custom js to hide "Plugin actived" -->

				<?php
				$js_code = "$( '#message.updated' ).hide();";
				echo balanceTags( WR_Megamenu_Helpers_Functions::script_box( $js_code ) );

				break;

			default:
				break;
		}

		$message = ob_get_clean();

		return $message;
	}

	/**
	 * Get Constant name defines core version required of this addon plugin
	 *
	 * @param string $addon_file
	 */
	static function core_version_constant( $addon_file ) {
		$path_parts = pathinfo( $addon_file );
		if ( $path_parts ) {
			// get dir name of add on
			$dirname = basename( $path_parts['dirname'] );
			$dirname = str_replace( '-', '_', $dirname );

			// return the Constant defines core version required of this add on
			return strtoupper( $dirname ) . '_CORE_VERSION';
		}

		return '';
	}

	/**
	 * Get Constant value of Constant defines core version required
	 *
	 * @param array  $provider
	 * @param string $addon_file
	 *
	 * @return string
	 */
	static function core_version_requied_value( $provider, $addon_file ) {

		// include defines.php from provider plugin folder, where defines core version required by addon
		if ( file_exists( $provider['path'] . 'defines.php' ) ) {
			include_once $provider['path'] . 'defines.php';
		}

		// get constant name defines core version required
		$constant = WR_Megamenu_Addon::core_version_constant( $addon_file );

		// get value of core version required
		return ( defined( $constant ) ) ? constant( $constant ) : NULL;
	}

	/**
	 * Check compatibility of this addon & WR core
	 *
	 * @param string $core_required
	 * @param string $core_version
	 * @param string $addon_file
	 *
	 * @return bool
	 */
	static function compatibility_handle( $core_required, $core_version, $addon_file ) {

		// if current core version < core version required
		if ( version_compare( $core_required, $core_version, '>' ) ) {

			// deactivate addon
			deactivate_plugins( array( $addon_file ) );

			return FALSE;
		}

		return TRUE;
	}

}