<?php
/**
 * Elementor class
 *
 * @package OceanWP WordPress theme
 */

// If Elementor plugins doesn't exist then return.
if ( ! OCEANWP_ELEMENTOR_ACTIVE
	&& version_compare( PHP_VERSION, '5.6', '>=' ) ) {
	return;
}

if ( ! class_exists( 'OceanWP_Elementor' ) ) :

	class OceanWP_Elementor {

		/**
		 * Setup class.
		 *
		 * @since 1.4.0
		 */
		public function __construct() {
			add_action( 'elementor/preview/enqueue_styles', array( $this, 'preview_styles' ) );
			add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
		}

		/**
		 * Get the top bar content ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_topbar_content_id() {

			// Template
			$id = get_theme_mod( 'ocean_top_bar_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}

				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the top bar social alternative ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_topbar_social_alt_id() {

			// Template
			$id = get_theme_mod( 'ocean_top_bar_social_alt_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the vertical header ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_vertical_header_id() {

			// Template
			$id = get_theme_mod( 'ocean_vertical_header_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the vertical header bottom ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_vertical_header_bottom_id() {

			// Template
			$id = get_theme_mod( 'ocean_vertical_header_bottom_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the header ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_header_id() {

			// Template
			$id = oceanwp_custom_header_template();

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the nav ID.
		 *
		 * @since 1.4.7
		 */
		public static function get_nav_id() {

			// Template
			$id = oceanwp_custom_nav_template();

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the social menu ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_social_menu_id() {

			// Template
			$id = get_theme_mod( 'ocean_menu_social_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the footer ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_footer_id() {

			// Template
			$id = oceanwp_custom_footer_template();

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Get the 404 error page ID.
		 *
		 * @since 1.4.0
		 */
		public static function get_error_page_id() {

			// Template
			$id = get_theme_mod( 'ocean_error_page_template' );

			// If template is selected
			if ( ! empty( $id ) ) {

				// Get Polylang Translation of template
				if ( function_exists( 'pll_get_post' )) {
					$id_polylang = pll_get_post( $id, pll_current_language() );
					if ( ! empty( $id_polylang ) ) {
						$id = $id_polylang;
					}
				}
				
				return $id;
			}

			// Return
			return false;
			
		}

		/**
		 * Preview styles
		 *
		 * @since 1.5.21
		 */
		public static function preview_styles() {
			wp_enqueue_style( 'oceanwp-elementor-preview', OCEANWP_CSS_DIR_URI .'third/elementor-editor.min.css' );
		}

		/**
		 * Enqueue styles
		 *
		 * @since 1.4.0
		 */
		public static function enqueue_styles() {

			if ( class_exists( '\Elementor\Core\Files\CSS\Post' ) ) {

				$topbar_id 					= self::get_topbar_content_id();
				$topbar_social_alt_id 		= self::get_topbar_social_alt_id();
				$vertical_header_id 		= self::get_vertical_header_id();
				$vertical_header_bottom_id 	= self::get_vertical_header_bottom_id();
				$header_id 					= self::get_header_id();
				$nav_id 					= self::get_nav_id();
				$social_menu_id 			= self::get_social_menu_id();
				$footer_id 					= self::get_footer_id();
				$error_id 					= self::get_error_page_id();

				// Enqueue top bar content css file
				if ( false != $topbar_id ) {
					$topbar_css = new \Elementor\Core\Files\CSS\Post( $topbar_id );
					$topbar_css->enqueue();
				}

				// Enqueue top bar social alternative css file
				if ( false != $topbar_social_alt_id ) {
					$topbar_social_alt_css = new \Elementor\Core\Files\CSS\Post( $topbar_social_alt_id );
					$topbar_social_alt_css->enqueue();
				}

				// Enqueue vertical header css file
				if ( false != $vertical_header_id ) {
					$vertical_header_css = new \Elementor\Core\Files\CSS\Post( $vertical_header_id );
					$vertical_header_css->enqueue();
				}

				// Enqueue vertical header bottom css file
				if ( false != $vertical_header_bottom_id ) {
					$vertical_header_bottom_css = new \Elementor\Core\Files\CSS\Post( $vertical_header_bottom_id );
					$vertical_header_bottom_css->enqueue();
				}

				// Enqueue header css file
				if ( false != $header_id ) {
					$header_css = new \Elementor\Core\Files\CSS\Post( $header_id );
					$header_css->enqueue();
				}

				// Enqueue nav css file
				if ( false != $nav_id ) {
					$nav_css = new \Elementor\Core\Files\CSS\Post( $nav_id );
					$nav_css->enqueue();
				}

				// Enqueue social menu css file
				if ( false != $social_menu_id ) {
					$social_menu_css = new \Elementor\Core\Files\CSS\Post( $social_menu_id );
					$social_menu_css->enqueue();
				}

				// Enqueue footer css file
				if ( false != $footer_id ) {
					$footer_css = new \Elementor\Core\Files\CSS\Post( $footer_id );
					$footer_css->enqueue();
				}

				// Enqueue 404 error page css file
				if ( false != $error_id ) {
					$error_css = new \Elementor\Core\Files\CSS\Post( $error_id );
					$error_css->enqueue();
				}

			}

		}

		/**
		 * Prints the top bar content.
		 *
		 * @since 1.4.0
		 */
		public static function get_topbar_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_topbar_content_id() );
		}

		/**
		 * Prints the top bar social alternative content.
		 *
		 * @since 1.4.0
		 */
		public static function get_topbar_social_alt_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_topbar_social_alt_id() );
		}

		/**
		 * Prints the vertical header content.
		 *
		 * @since 1.4.0
		 */
		public static function get_vertical_header_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_vertical_header_id() );
		}

		/**
		 * Prints the vertical header bottom content.
		 *
		 * @since 1.4.0
		 */
		public static function get_vertical_header_bottom_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_vertical_header_bottom_id() );
		}

		/**
		 * Prints the header content.
		 *
		 * @since 1.4.0
		 */
		public static function get_header_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_header_id() );
		}

		/**
		 * Prints the nav content.
		 *
		 * @since 1.4.7
		 */
		public static function get_nav_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_nav_id() );
		}

		/**
		 * Prints the social menu content.
		 *
		 * @since 1.4.0
		 */
		public static function get_social_menu_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_social_menu_id() );
		}

		/**
		 * Prints the footer content.
		 *
		 * @since 1.4.0
		 */
		public static function get_footer_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_footer_id() );
		}

		/**
		 * Prints the 404 error page content.
		 *
		 * @since 1.4.0
		 */
		public static function get_error_page_content() {
			echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( self::get_error_page_id() );
		}

	}

endif;

return new OceanWP_Elementor();