HEX
Server: Apache
System: Linux p3plzcpnl507418.prod.phx3.secureserver.net 4.18.0-553.141.2.lve.el8.x86_64 #1 SMP Wed Jul 8 16:10:02 UTC 2026 x86_64
User: retoti4c1e1s (10075650)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //home/retoti4c1e1s/www/izz.world/wp-content/plugins/elespare/header-footer/class-template.php
<?php
defined( 'ABSPATH' ) || exit;

class ElespaeTemplate {
    private static $instance;

	/**
	 * Post ID
	 *
	 * @var int
	 */
	public $post_id;

	/**
	 * Post type
	 *
	 * @var String
	 */
	public $post_type;

	/**
	 *  Initiator
	 */
	public static function instance() {
		if ( ! isset( self::$instance ) ) {
			self::$instance = new self();
		}
		return self::$instance;
	}
    public function __construct() {
        add_action('wp', array($this, 'hooks'));
        add_action('wp_head', array($this, 'wp_head'));
		add_action( 'wp_enqueue_scripts', [ $this, 'elespare_enqueue_scripts' ] );
        add_filter('single_template', array($this, 'single_template'));
        add_action('elespare_hf_get_header', array($this, 'elespare_header_template'), 10);
        add_action('elespare_hf_get_header_wrapper', array($this, 'elespare_hf_get_header_wrapper_html'), 10);
        add_action('elespare_hf_get_footer_wrapper', array($this, 'elespare_hf_get_footer_wrapper_html'), 10);
        add_action('elespare_hf_get_footer', array($this, 'elespare_footer_template'), 10);

	}

	public function hooks() {
		
        
			add_action( 'get_header', array( $this, 'render_header' ) );
			add_action( 'get_footer', array( $this, 'render_footer' ) );
		
	}

	public function wp_head() {
		wp_reset_postdata();
	}

	public function elespare_enqueue_scripts(){
		if (class_exists('\Elementor\Plugin')) {
      $elementor = \Elementor\Plugin::instance();
      if (method_exists($elementor->frontend, 'enqueue_styles')) {
        $elementor->frontend->enqueue_styles();
      }
    }

    if (class_exists('\ElementorPro\Plugin')) {
      $elementor_pro = \ElementorPro\Plugin::instance();
      if (method_exists($elementor_pro, 'enqueue_styles')) {
        $elementor_pro->enqueue_styles();
      }
    }

		$header_id = $this->template_header_id();
		if ( $header_id ) {
			if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
				$css_file = new \Elementor\Core\Files\CSS\Post( $header_id );
			} elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
				$css_file = new \Elementor\Post_CSS_File( $header_id );
			}

			$css_file->enqueue();
		}

		$footer_id = $this->template_footer_id();
	
		
		if ( $footer_id ) {
			if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {
				$css_file = new \Elementor\Core\Files\CSS\Post( $footer_id);
			} elseif ( class_exists( '\Elementor\Post_CSS_File' ) ) {
				$css_file = new \Elementor\Post_CSS_File( $footer_id() );
			}

			$css_file->enqueue();
		}
	}
	public function single_template( $single_template ) {
		
		if ( 'elespare_builder' == get_post_type() ) { // phpcs:ignore
				$single_template = ELESPARE_DIR_PATH . 'header-footer/templates/hf.php';
		}

		return $single_template;
	}


    public function render_header() {
		$header_id = $this->template_header_id();
		
		if ( $header_id ) {

			require ELESPARE_DIR_PATH . 'header-footer/templates/default/header.php';
			$templates   = array();
			$templates[] = 'header.php';
			// Avoid running wp_head hooks again.
			remove_all_actions( 'wp_head' );
			ob_start();
			locate_template( $templates, true );
			ob_get_clean();
		}
	}

	/**
	 * Get Footer Site.
	 *
	 * @return Footer Site.
	 */
	public function render_footer() {

		$footer_id = $this->template_footer_id();
	
		
		if ( $footer_id ) {
	
			require ELESPARE_DIR_PATH . 'header-footer/templates/default/footer.php';
			$templates   = array();
			$templates[] = 'footer.php';
			// Avoid running wp_footer hooks again.
			remove_all_actions( 'wp_footer' );
			ob_start();
			locate_template( $templates, true );
			ob_get_clean();
		}
	}


	public function elespare_header_template() {
		global $post;
		
		if ( ! empty( $post ) ) {
			$id   = $post->ID;
			$post_type = get_post_type( $post->ID );
		}

		$path      = ELESPARE_DIR_PATH . 'header-footer/templates/content/content-header.php';
		$page_type = $this->page_type();

		if ( ! empty( $page_type ) ) {
			
				$header = $this->display_template( $page_type );
				if ( ! $header ) {
					$header = $this->display_all();
				}
				$this->render( $header, $path );
			

		}


		if ( is_singular() ) {

			$header = $this->current_single( $id, $post_type );

			if ( ! $header ) {
				$header = $this->all_single( $id, $post_type );
				if ( ! $header ) {
					$header = $this->display_all();
				}
			}
			$this->render( $header, $path );
		}
	}

    public function elespare_hf_get_header_wrapper_html()
    {

        if (defined('ESHF_COMPATIBILITY_TMPL')) {
            require_once ELESPARE_DIR_PATH . 'header-footer/templates/compat/' . ESHF_COMPATIBILITY_TMPL . '.php';
        }

    }

    public function elespare_hf_get_footer_wrapper_html()
    {
        if (defined('ESHF_COMPATIBILITY_TMPL')): ?>

            </div>
            </div>
        <?php
        endif;
    }

	public function elespare_footer_template() {
		$id        = $this->post_id;
		$post_type = $this->post_type;
		$path      = ELESPARE_DIR_PATH . 'header-footer/templates/content/content-footer.php';
		$page_type = $this->page_type();
		if ( ! empty( $page_type ) ) {
			
				$footer = $this->display_template( $page_type, 'footer' );
				if ( ! $footer ) {
					$footer = $this->display_all( 'footer' );
				}
				$this->render( $footer, $path );
			
		}

		if ( is_singular()) {
			$footer = $this->current_single( $id, $post_type, 'footer' );

			if ( ! $footer ) {
				$footer = $this->all_single( $id, $post_type, 'footer' );
				if ( ! $footer ) {
					$footer = $this->display_all( 'footer' );
				}
			}

			$this->render( $footer, $path );
		}

	}

	

	public function display_all( $type = 'header' ) {
		$args = array(
			'post_type'           => 'elespare_builder',
			'orderby'             => 'id',
			'order'               => 'DESC',
			'posts_per_page'      => 1,
			'ignore_sticky_posts' => 1,
			'meta_query'          => array(
				array(
					'key'     => 'ele_hf_type',
					'compare' => 'LIKE',
					'value'   => $type,
				),
				array(
					'key'     => 'ele_hf_display',
					'compare' => 'LIKE',
					'value'   => 'all',
				),
			),
		);

		$header = new \WP_Query( $args );
 
		$this->check_ex_post( $header );

		if ( $header->have_posts() ) {
			return $header;
		} else {

			return false;
		}
	}

	/**
	 * Template( header or Footer ) Width Conditon For Archive, Blog Page, Search Page.
	 * @param (string) $page_type | Type of page
	 * @param (string) $type | Type of elespare_builder custom post type
	 * @return Mixed (object) $template or (Boolean) false.
	 */
	public function display_template( $page_type, $type = 'header' ) {


		if ( empty( $page_type ) ) {
			return false;
		}
		$args   = array(
			'post_type'           => 'elespare_builder',
			'orderby'             => 'id',
			'order'               => 'DESC',
			'posts_per_page'      => 1,
			'ignore_sticky_posts' => 1,
			'meta_query'          => array(
				array(
					'key'     => 'ele_hf_type',
					'compare' => 'LIKE',
					'value'   => $type,
				),
				array(
					'key'     => 'ele_hf_display',
					'compare' => 'LIKE',
					'value'   => $page_type,
				),
			),
		);
		$header = new \WP_Query( $args );

		if ( $header->have_posts() ) {

			return $header;
		} else {
			return false;
		}
	}

	/**
	 * Template( header or Footer ) Width Conditon For Archive, Blog Page, Search Page.
	 * @param (int) $id | ID Single Post
	 * @param (string) $post_type | Post Type Single Post
	 * @param (string) $type | Type of elespare_builder custom post type
	 * @return Mixed (object) $template or (Boolean) false.
	 */
	public function current_single( $id, $post_type, $type = 'header' ) {
		// if ( ! is_singular()  ) {
		// 	return false;
		// }

		
		$args = array(
			'post_type'           => 'elespare_builder',
			'orderby'             => 'id',
			'order'               => 'DESC',
			'posts_per_page'      => -1,
			'ignore_sticky_posts' => 1,
			'meta_query'          => array(
				array(
					'key'     => 'ele_hf_type',
					'compare' => 'LIKE',
					'value'   => $type,
				),
				array(
					'key'     => 'ele_hf_post_type',
					'compare' => 'LIKE',
					'value'   => $post_type,
				),
			),
		);

		

		$header = new \WP_Query( $args );
		

		if ( $header->have_posts() ) {
		
			$list_header = $header->posts;
			$current     = array();

			

			foreach ( $list_header as $key => $post ) {
				
				$list_id = get_post_meta( $post->ID, 'ele_hf_post', true );
				if ( ! empty( $list_id ) || 'all' != $list_id ) { // phpcs:ignore
					$post_id = explode( ',', $list_id );
					if ( in_array( $id, $post_id ) ) { // phpcs:ignore
						$current[0] = $post;
					}
				}
			}
			wp_reset_postdata();

			if ( empty( $current ) ) {

				return false;
			} else {
				$header->posts      = $current;
				$header->post_count = 1;

				return $header;
			}
		} else {

			return false;
		}
	}

	/**
	 * Template( header or Footer ) Width Conditon For Archive, Blog Page, Search Page.
	 * @param (int) $post_id | ID Single Post
	 * @param (string) $post_type | Post Type Single Post
	 * @param (string) $type | Type of elespare_builder custom post type
	 * @return Mixed (object) $template or (Boolean) false.
	 */
	public function all_single( $post_id, $post_type, $type = 'header' ) {
		if ( ! is_singular() ) {
			return false;
		}

		

		$args   = array(
			'post_type'           => 'elespare_builder',
			'orderby'             => 'id',
			'order'               => 'DESC',
			'posts_per_page'      => 1,
			'ignore_sticky_posts' => 1,
			'meta_query'          => array(
				array(
					'key'     => 'ele_hf_type',
					'compare' => 'LIKE',
					'value'   => $type,
				),
				array(
					'key'     => 'ele_hf_post_type',
					'compare' => 'LIKE',
					'value'   => $post_type,
				),
				array(
					'key'     => 'ele_hf_post',
					'compare' => 'LIKE',
					'value'   => 'all',
				),
			),
		);
		$header = new \WP_Query( $args );

		if ( $header->have_posts() ) {

			while ( $header->have_posts() ) {
				$header->the_post();
				$id           = get_the_ID();
				$ex_post      = get_post_meta( $id, 'ele_hf_ex_post', true );
				$no_display   = get_post_meta( $id, 'ele_hf_no_display', true );
				$ex_post_type = get_post_meta( $id, 'ele_hf_ex_post_type', true );
				$list_ex_post = array();
				$post_type    = get_post_type( $post_id );
				$list_ex_post = explode( ',', $ex_post );
				if ( 'all' === $ex_post && $post_type === $ex_post_type ) {

					return false;
				}
				if ( in_array( $post_id, $list_ex_post ) ) { //phpcs:ignore

					return false;
				}
			}
			wp_reset_postdata();

			return $header;
		} else {

			return false;
		}
	}

	// Return Page Type.
	public function page_type() {
		$page_type = '';
		if ( is_home() ) {
			$page_type = 'blog';
		} elseif ( is_archive() ) {
			$page_type = 'archive';
		} elseif ( is_search() ) {
			$page_type = 'search';
		} elseif ( is_404() ) {
			$page_type = 'not_found';
		}

		return $page_type;
	}


	public function render( $header, $path ) {
		if ( $header ) {
			while ( $header->have_posts() ) {
				$header->the_post();
				load_template( $path );
			}
			wp_reset_postdata();
		}
	}

	

	/**
	 * Check condition exclude.
	 *
	 * @return (boolean) false | return false if exclude
	 */
	public function check_ex_post( $header ) {
		$post_id = $this->post_id;
		if ( $header->have_posts() ) {
			while ( $header->have_posts() ) {
				$header->the_post();
				$id           = get_the_ID();
				$ex_post      = get_post_meta( $id, 'ele_hf_ex_post', true );
				$no_display   = get_post_meta( $id, 'ele_hf_no_display', true );
				$ex_post_type = get_post_meta( $id, 'ele_hf_ex_post_type', true );
				$list_ex_post = array();
				$post_type    = get_post_type( $post_id );

				if ( 'blog' === $no_display && is_home() ) {

					return false;
				}
				if ( 'archive' === $no_display && is_archive() ) {
					
					return false;
				}

				if ( 'search' === $no_display && is_search() ) {
					return false;
				}

				if ( 'not_found' === $no_display && is_404() ) {
					return false;
				}

				if ( ! empty( $ex_post ) && 'blog' !== $no_display && 'archive' !== $no_display && 'search' !== $no_display && 'not_found' !== $no_display ) {
					$list_ex_post = explode( ',', $ex_post );
					if ( 'all' === $ex_post && is_single() && $post_type === $ex_post_type ) {

						return false;
					}
					if ( in_array( $post_id, $list_ex_post ) ) { //phpcs:ignore
						return false;
					}
				}
			}
			wp_reset_postdata();
		}
	}

	/**
	 * Get Header Template ID.
	 *
	 * @return Mixed (int) $id or (Boolean) false | ID Header Teamplate or false if not found
	 */
	public function template_header_id() {
		global $post;
		$shopId = get_option( 'woocommerce_shop_page_id' );
		if ( ! empty( $post ) ) {
			$this->post_id   = $post->ID;
			$this->post_type = get_post_type( $post->ID );
		}

		if ( class_exists( 'Woocommerce' ) && is_shop() ) {
			$this->post_id   = $shopId;
			$this->post_type = get_post_type( $shopId );
		}

		$post_id              = $this->post_id;
		$maintenance_mode     = get_option('elementor_maintenance_mode_mode');
		$maintenance_template = get_option('elementor_maintenance_mode_template_id');
		if ( 'coming_soon' == $maintenance_mode && $maintenance_template == $post_id ) {
			return false;
		}
		$page_type            = $this->page_type();
		$post_type            = $this->post_type;
		$id                   = '';
		

		if ( $this->display_all() || $this->display_template( $page_type ) || $this->all_single( $post_id, $post_type ) || $this->current_single( $post_id, $post_type ) ) {
			
			if ( $this->display_all() ) {
				$header = $this->display_all();
			}

			if ( $this->display_template( $page_type ) ) {
				$header = $this->display_template( $page_type );
			}
			if ( $this->all_single( $post_id, $post_type ) ) {
				$header = $this->all_single( $post_id, $post_type );
			}
			if ( $this->current_single( $post_id, $post_type ) ) {
				$header = $this->current_single( $post_id, $post_type );
			}

			while ( $header->have_posts() ) {
				$header->the_post();
				$id = get_the_ID();
			}
			wp_reset_postdata();

			return $id;

		} else {
			return false;
		}
	}

	/**
	 * Get Footer Template ID.
	 *
	 * @return Mixed (int) $id or (Boolean) false | ID Footer Teamplate or False if not found
	 */
	public function template_footer_id() {
		global $post;
		$shopId = get_option( 'woocommerce_shop_page_id' );
		if ( ! empty( $post ) ) {
			$this->post_id   = $post->ID;
			$this->post_type = get_post_type( $post->ID );
		}

		if ( class_exists( 'Woocommerce' ) && is_shop() ) {
			$this->post_id   = $shopId;
			$this->post_type = get_post_type( $shopId );
		}
		if ( ! empty( $post ) ) {
			$post_id = $post->ID;
			$post_type        = get_post_type( $post->ID );
		}
		$post_id              = $this->post_id;
		$maintenance_mode     = get_option('elementor_maintenance_mode_mode');
		$maintenance_template = get_option('elementor_maintenance_mode_template_id');
		if ( 'coming_soon' == $maintenance_mode && $maintenance_template == $post_id ) {
			return false;
		}
		$page_type            = $this->page_type();
		$post_type            = $this->post_type;
		$id                   = '';
		if ( $this->display_all( 'footer' ) || $this->display_template( $page_type, 'footer' ) || $this->all_single( $post_id, $post_type, 'footer' ) || $this->current_single( $post_id, $post_type, 'footer' ) ) {
			if ( $this->display_all( 'footer' ) ) {
				$header = $this->display_all( 'footer' );
			}
			if ( $this->display_template( $page_type, 'footer' ) ) {
				$header = $this->display_template( $page_type, 'footer' );
			}
			if ( $this->all_single( $post_id, $post_type, 'footer' ) ) {
				$header = $this->all_single( $post_id, $post_type, 'footer' );
			}
			if ( $this->current_single( $post_id, $post_type, 'footer' ) ) {
				$header = $this->current_single( $post_id, $post_type, 'footer' );
			}

			while ( $header->have_posts() ) {
				$header->the_post();
				$id = get_the_ID();
			}
			wp_reset_postdata();

			return $id;
		} else {
			
			return false;
		}
	}

}
ElespaeTemplate::instance();