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/plugin/element.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_Element {

	private $wr_elements = array();

	public function init() {
		// Initialize built-in shortcodes
		include 'shortcode.php';

		$this->register_element();
		add_action( 'admin_footer', array( &$this, 'element_tpl' ) );
	}

	/**
	 * Get array of shortcode elements
	 * @return type
	 */
	function get_elements() {
		return $this->wr_elements;
	}

	/**
	 * Add shortcode element
	 * @param type $type: type of element ( element/layout )
	 * @param type $class: name of class
	 * @param type $element: instance of class
	 */
	function set_element( $type, $class, $element = null ) {
		if ( empty( $element ) )
			$this->wr_elements[$type][strtolower( $class )] = new $class();
		else
			$this->wr_elements[$type][strtolower( $class )] = $element;
	}

	/**
	 * Register all Parent & No-child element, for Add Element popover
	 */
	function register_element() {

		global $wr_megamenu_shortcodes;
		$current_shortcode      = WR_Megamenu_Helpers_Functions::current_shortcode();
		$wr_megamenu_shortcodes = ! empty ( $wr_megamenu_shortcodes ) ? $wr_megamenu_shortcodes : WR_Megamenu_Helpers_Shortcode::wr_mm_shortcode_tags();
		foreach ( $wr_megamenu_shortcodes as $name => $sc_info ) {
			$arr  = explode( '_', $name );
			$type = $sc_info['type'];
			if ( ! $current_shortcode || ! is_admin() || in_array( $current_shortcode, $arr ) || ( ! $current_shortcode && $type == 'layout' ) ) {
				$class   = WR_Megamenu_Helpers_Shortcode::get_shortcode_class( $name );
				$element = new $class();
				$this->set_element( $type, $class, $element );
				$this->register_sub_el( $class, 1 );
			}
		}

	}

	/**
	 * print HTML template of shortcodes
	 */
	function element_tpl() {

		global $post_type ;

		if ( $post_type == 'wr_megamenu_profile' ) {
			ob_start();

			// Print template for WR MegaMenu elements
			$elements = $this->get_elements();

			foreach ( $elements as $type_list ) {
				foreach ( $type_list as $element ) {
					// Get element type
					$element_type = $element->element_in_megamenu();

					// Print template tag
					foreach ( $element_type as $element_structure ) {
						echo balanceTags( "<script type='text/html' id='tmpl-{$element->config['shortcode']}'>\n{$element_structure}\n</script>\n" );
					}
				}
			}

			// Print widget template
			global $wr_megamenu_widgets;

			if ( class_exists( 'WR_Megamenu_Widget' ) ) {
				foreach ( $wr_megamenu_widgets as $shortcode => $shortcode_obj ) {
					// Instantiate Widget element
					$element = new WR_Megamenu_Widget();

					// Prepare necessary variables
					$modal_title = $shortcode_obj['identity_name'];
					$content     = $element->config['exception']['data-modal-title'] = $modal_title;

					$element->config['shortcode']		   = $shortcode;
					$element->config['shortcode_structure'] = WR_Megamenu_Helpers_Placeholder::add_placeholder( "[wr_megamenu_widget widget_id=\"$shortcode\"]%s[/wr_megamenu_widget]", 'widget_title' );
					$element->config['el_type']			 = 'widget';

					// Get element type
					$element_type = $element->element_in_megamenu( $content );

					// Print template tag
					foreach ( $element_type as $element_structure ) {
						echo balanceTags( "<script type='text/html' id='tmpl-{$shortcode}'>\n{$element_structure}\n</script>\n" );
					}
				}
			}

			// Allow printing extra footer
			do_action( 'wr_mm_footer' );

			ob_end_flush();
		}

	}

	/**
	 * Regiter sub element
	 *
	 * @param string $class
	 * @param int $level
	 */
	private function register_sub_el( $class, $level = 1 ) {
		$item  = str_repeat( 'Item_', intval( $level ) - 1 );
		$class = str_replace( "WR_$item", "WR_Item_$item", $class );
		if ( class_exists( $class ) ) {
			// 1st level sub item
			$element = new $class();
			$this->set_element( 'element', $class, $element );
			// 2rd level sub item
			$this->register_sub_el( $class, 2 );
		}
	}
}