HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/itt.kaunokolegija.lt/wp-content/plugins/ocean-elementor-widgets/includes/plugin.php
<?php
namespace owpElementor;

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/**
 * Main Plugin Class
 *
 * Register elementor widget.
 *
 * @since 1.0.0
 */
class owpElementorPlugin {

	/**
	 * @var Manager
	 */
	public $modules_manager;

	/**
	 * @var WPML
	 */
	public $wpml_compatibility;

	/**
	 * @var Plugin
	 */
	private static $_instance;
	/**
	 * @var Module_Base[]
	 */
	private $modules = [];

	/**
	 * Constructor
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function __construct() {
		spl_autoload_register( [ $this, 'autoload' ] );

		add_action( 'elementor/init', [ $this, 'init' ], 0 );
		add_action( 'elementor/init', [ $this, 'init_panel_section' ], 0 );
		add_action( 'elementor/elements/categories_registered', [ $this, 'init_panel_section' ] );

		// Modules to enqueue styles
		$this->modules = [
			'accordion',
			'advanced-heading',
			'alert',
			'animated-heading',
			'banner',
			'blog-carousel',
			'blog-grid',
			'brands',
			'business-hours',
			'buttons',
			'button-effects',
			'call-to-action',
			'circle-progress',
			'countdown',
			'divider',
			'flip-box',
			'forms',
			'google-map',
			'hotspots',
			'image-comparison',
			'image-gallery',
			'info-box',
			'instagram',
			'logged-in-out',
			'member',
			'modal',
			'navbar',
			'newsletter',
			'off-canvas',
			'price-list',
			'pricing',
			'recipe',
			'scroll-up',
			'search',
			'skillbar',
			'table',
			'tabs',
			'timeline',
			'toggle',
			'tooltip',
			'woo-addtocart',
			'woo-slider',
		];
	}

	/**
	 * Autoload Classes
	 *
	 * @since 1.0.0
	 */
	public function autoload( $class ) {
		if ( 0 !== strpos( $class, __NAMESPACE__ ) ) {
			return;
		}

		$class_to_load = $class;

		if ( ! class_exists( $class_to_load ) ) {
			$filename = strtolower(
				preg_replace(
					[ '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
					[ '', '$1-$2', '-', DIRECTORY_SEPARATOR ],
					$class_to_load
				)
			);
			$filename = OWP_ELEMENTOR_PATH . $filename . '.php';

			if ( is_readable( $filename ) ) {
				include( $filename );
			}
		}
	}

	/**
	 * Init
	 *
	 * @since 1.0.0
	 *
	 * @access private
	 */
	public function init() {

		// Elementor hooks
		$this->add_actions();

		// Include extensions
		$this->includes();

		// Components
		$this->init_components();

		do_action( 'owp_elementor/init' );
	}

	/**
	 * Plugin instance
	 * 
	 * @since 1.0.0
	 * @return Plugin
	 */
	public static function instance() {
		if ( is_null( self::$_instance ) ) {
			self::$_instance = new self();
		}

		return self::$_instance;
	}

	/**
	 * Add Actions
	 *
	 * @since 1.0.0
	 *
	 * @access private
	 */
	private function add_actions() {

		// Front-end Scripts
		add_action( 'elementor/frontend/after_register_scripts', [ $this, 'register_scripts' ] );
		add_action( 'elementor/frontend/after_register_styles', [ $this, 'register_styles' ] );

		// Preview Styles
		add_action( 'elementor/preview/enqueue_styles', [ $this, 'preview_styles' ] );

		// Editor Style
		add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'editor_style' ] );
	}

	/**
	 * Register scripts
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function register_scripts() {

		$suffix 		= defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
		$key 			= get_option( 'owp_google_map_api' );
		$site_key 		= get_option( 'owp_recaptcha_site_key' );
		$secret_key 	= get_option( 'owp_recaptcha_secret_key' );

		wp_register_script( 'isotope',
			plugins_url( '/assets/js/isotope' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'appear',
			plugins_url( '/assets/js/appear' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-accordion',
			plugins_url( '/assets/js/accordion' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-alert',
			plugins_url( '/assets/js/alert' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-blog-carousel',
			plugins_url( '/assets/js/blog-carousel' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-blog-grid',
			plugins_url( '/assets/js/blog-grid' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery', 'oceanwp-main' ],
			false,
			true
		);

		wp_register_script( 'oew-circle-progress',
			plugins_url( '/assets/js/circle-progress' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'asPieProgress',
			plugins_url( '/assets/js/asPieProgress' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-countdown',
			plugins_url( '/assets/js/countdown' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		if ( isset( $key ) && ! empty( $key ) ) {
            wp_register_script( 'oew-google-map-api',
            	'https://maps.googleapis.com/maps/api/js?key=' . $key,
            	'',
            	rand()
            );
        } else {
            wp_register_script( 'oew-google-map-api',
            	'https://maps.googleapis.com/maps/api/js',
            	'',
            	rand()
            );
        }

		wp_register_script( 'oew-google-map',
			plugins_url( '/assets/js/google-map' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-image-comparison',
			plugins_url( '/assets/js/image-comparison' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-image-gallery',
			plugins_url( '/assets/js/image-gallery' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'twentytwenty',
			plugins_url( '/assets/js/twentytwenty' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'event-move',
			plugins_url( '/assets/js/event.move' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-hotspots',
			plugins_url( '/assets/js/hotspots' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-instagram',
			plugins_url( '/assets/js/instagram' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-member',
			plugins_url( '/assets/js/member' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-modal',
			plugins_url( '/assets/js/modal' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'morphext',
			plugins_url( '/assets/js/morphext' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'typed',
			plugins_url( '/assets/js/typed' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-navbar',
			plugins_url( '/assets/js/navbar' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-newsletter',
			plugins_url( '/assets/js/newsletter' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-off-canvas',
			plugins_url( '/assets/js/off-canvas' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		if ( ! empty( $site_key )
			|| ! empty( $secret_key ) ) {
			wp_register_script( 'recaptcha', add_query_arg( array(
				'hl' => str_replace( '_', '-', get_locale() )
			), 'https://www.google.com/recaptcha/api.js' ) );
		}

		wp_register_script( 'oew-scroll-up',
			plugins_url( '/assets/js/scroll-up' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-search',
			plugins_url( '/assets/js/search' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-skillbar',
			plugins_url( '/assets/js/skillbar' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-tabs',
			plugins_url( '/assets/js/tabs' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-toggle',
			plugins_url( '/assets/js/toggle' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-tooltip',
			plugins_url( '/assets/js/tooltip' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

		wp_register_script( 'oew-woo-slider',
			plugins_url( '/assets/js/woo-slider' . $suffix . '.js', OWP_ELEMENTOR__FILE__ ),
			[ 'jquery' ],
			false,
			true
		);

	}

	/**
	 * Register styles
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function register_styles() {

		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';

		foreach ( $this->modules as $module_name ) {
			wp_register_style( 'oew-'. $module_name .'', plugins_url( '/assets/css/'. $module_name .'/style' . $suffix . '.css', OWP_ELEMENTOR__FILE__ ) );
		}

		// Effects for the Button Effects widget
		$button_effects = [
			'effect-1',
			'effect-2',
			'effect-3',
			'effect-4',
			'effect-5',
			'effect-6',
			'effect-7',
			'effect-8',
			'effect-9',
			'effect-10',
			'effect-11',
			'effect-12',
			'effect-13',
			'effect-14',
			'effect-15',
			'effect-16',
			'effect-17',
			'effect-18',
			'effect-19',
			'effect-20',
			'effect-21',
			'effect-22',
			'effect-23',
			'effect-24',
			'effect-25',
			'effect-26',
			'effect-27',
			'effect-28',
			'effect-29',
			'effect-30'
		];

		foreach ( $button_effects as $button_effect ) {
			wp_register_style( 'oew-btn-'. $button_effect .'', plugins_url( '/assets/css/button-effects/' . $button_effect . $suffix . '.css', OWP_ELEMENTOR__FILE__ ) );
		}

		// Effects for the Link Effects widget
		$link_effects = [
			'effect-1',
			'effect-2',
			'effect-3',
			'effect-4',
			'effect-5',
			'effect-6',
			'effect-7',
			'effect-8',
			'effect-9',
			'effect-10',
			'effect-11',
			'effect-12',
			'effect-13',
			'effect-14',
			'effect-15',
			'effect-16',
			'effect-17',
			'effect-18',
			'effect-19',
			'effect-20',
			'effect-21'
		];

		foreach ( $link_effects as $link_effect ) {
			wp_register_style( 'oew-'. $link_effect .'', plugins_url( '/assets/css/link-effects/' . $link_effect . $suffix . '.css', OWP_ELEMENTOR__FILE__ ) );
		}

	}

	/**
	 * Enqueue styles in the editor
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function preview_styles() {

		foreach ( $this->modules as $module_name ) {
			wp_enqueue_style( 'oew-'. $module_name .'' );
		}

		// Effects for the Button Effects widget
		$button_effects = [
			'effect-1',
			'effect-2',
			'effect-3',
			'effect-4',
			'effect-5',
			'effect-6',
			'effect-7',
			'effect-8',
			'effect-9',
			'effect-10',
			'effect-11',
			'effect-12',
			'effect-13',
			'effect-14',
			'effect-15',
			'effect-16',
			'effect-17',
			'effect-18',
			'effect-19',
			'effect-20',
			'effect-21',
			'effect-22',
			'effect-23',
			'effect-24',
			'effect-25',
			'effect-26',
			'effect-27',
			'effect-28',
			'effect-29',
			'effect-30'
		];

		foreach ( $button_effects as $button_effect ) {
			wp_enqueue_style( 'oew-btn-'. $button_effect .'' );
		}

		// Effects for the Link Effects widget
		$link_effects = [
			'effect-1',
			'effect-2',
			'effect-3',
			'effect-4',
			'effect-5',
			'effect-6',
			'effect-7',
			'effect-8',
			'effect-9',
			'effect-10',
			'effect-11',
			'effect-12',
			'effect-13',
			'effect-14',
			'effect-15',
			'effect-16',
			'effect-17',
			'effect-18',
			'effect-19',
			'effect-20',
			'effect-21'
		];

		foreach ( $link_effects as $link_effect ) {
			wp_enqueue_style( 'oew-'. $link_effect .'' );
		}

		// Fix the Woo Slider issue in the preview
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
		wp_enqueue_style( 'oew-elementor-preview', plugins_url( '/assets/css/elementor/preview' . $suffix . '.css', OWP_ELEMENTOR__FILE__ ) );
	}

	/**
	 * Enqueue style in the editor
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function editor_style() {
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
		wp_enqueue_style( 'oew-elementor-editor', plugins_url( '/assets/css/elementor/editor' . $suffix . '.css', OWP_ELEMENTOR__FILE__ ) );
	}

	/**
	 * Include components
	 *
	 * @since 1.0.0
	 *
	 * @access private
	 */
	private function includes() {

		// WPML
		include_once( OWP_ELEMENTOR_PATH .'includes/compatibility/wpml/compatibility.php' );

		// Modules
		include_once( OWP_ELEMENTOR_PATH .'includes/managers/modules.php' );

	}

	/**
	 * Sections init
	 *
	 * @since 1.0.0
	 *
	 * @access private
	 */
	public function init_panel_section() {
		// Theme branding
		if ( function_exists( 'oceanwp_theme_branding' ) ) {
			$brand = oceanwp_theme_branding();
		} else {
			$brand = 'OceanWP';
		}

		// Add element category in panel
		\Elementor\Plugin::instance()->elements_manager->add_category(
			'oceanwp-elements',
			array( 'title'  => $brand . ' ' . esc_html__( 'Elements', 'ocean-elementor-widgets' ), ),
			1
		);
	}

	/**
	 * Components init
	 *
	 * @since 1.0.0
	 *
	 * @access private
	 */
	private function init_components() {
		$this->modules_manager 			= new Modules_Manager();
		$this->wpml_compatibility 		= new Compatibility\WPML();
	}
}

if ( ! defined( 'OWP_ELEMENTOR_TESTS' ) ) {
	// In tests we run the instance manually.
	owpElementorPlugin::instance();
}