Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.226.214.1
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/misswavenigeria.com/wp-content/plugins/so-widgets-bundle/widgets/hero/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/misswavenigeria.com/wp-content/plugins/so-widgets-bundle/widgets/hero/hero.php
<?php
/*
Widget Name: Hero Image
Description: Build an impressive hero image section with custom content, buttons, background image, color, and video.
Author: SiteOrigin
Author URI: https://siteorigin.com
Documentation: https://siteorigin.com/widgets-bundle/hero-image-widget/
*/

if ( ! class_exists( 'SiteOrigin_Widget_Base_Slider' ) ) {
	include_once plugin_dir_path( SOW_BUNDLE_BASE_FILE ) . '/base/inc/widgets/base-slider.class.php';
}

class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
	protected $buttons = array();

	public function __construct() {
		parent::__construct(
			'sow-hero',
			__( 'SiteOrigin Hero', 'so-widgets-bundle' ),
			array(
				'description' => __( 'Build an impressive hero image section with custom content, buttons, background image, color, and video.', 'so-widgets-bundle' ),
				'help' => 'https://siteorigin.com/widgets-bundle/hero-image-widget/',
				'panels_title' => false,
			),
			array( ),
			false,
			plugin_dir_path( __FILE__ )
		);
	}

	public function initialize() {
		// This widget requires the button widget
		if ( ! class_exists( 'SiteOrigin_Widget_Button_Widget' ) ) {
			SiteOrigin_Widgets_Bundle::single()->include_widget( 'button' );
		}

		add_action( 'siteorigin_widgets_enqueue_frontend_scripts_' . $this->id_base, array( $this, 'enqueue_widget_scripts' ) );

		add_filter( 'siteorigin_widgets_wrapper_classes_' . $this->id_base, array( $this, 'wrapper_class_filter' ), 10, 2 );
		add_filter( 'siteorigin_widgets_wrapper_data_' . $this->id_base, array( $this, 'wrapper_data_filter' ), 10, 2 );

		// Let the slider base class do its initialization
		parent::initialize();
	}

	public function get_widget_form() {
		$units = siteorigin_widgets_get_measurements_list();
		unset( $units[1] ); // Remove %;

		return parent::widget_form( array(
			'frames' => array(
				'type' => 'repeater',
				'label' => __( 'Hero frames', 'so-widgets-bundle' ),
				'item_name' => __( 'Frame', 'so-widgets-bundle' ),
				'item_label' => array(
					'selectorArray' => array(
						array(
							'selector' => '.siteorigin-widget-field-background .media-field-wrapper .current .title',
							'valueMethod' => 'html',
						),
						array(
							'selector' => '.siteorigin-widget-field-videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
							'valueMethod' => 'html',
						),
						array(
							'selector' => ".siteorigin-widget-field-videos [id*='url']",
							'update_event' => 'change',
							'value_method' => 'val',
						),
					),
				),
				'fields' => array(
					'content' => array(
						'type' => 'tinymce',
						'label' => __( 'Content', 'so-widgets-bundle' ),
					),

					'autop' => array(
						'type' => 'checkbox',
						'default' => false,
						'label' => __( 'Automatically add paragraphs', 'so-widgets-bundle' ),
					),

					'buttons' => array(
						'type' => 'repeater',
						'label' => __( 'Buttons', 'so-widgets-bundle' ),
						'item_name' => __( 'Button', 'so-widgets-bundle' ),
						'description' => __( 'Add [buttons] shortcode to the content to insert these buttons.', 'so-widgets-bundle' ),

						'item_label' => array(
							'selector' => "[id*='buttons-button-text']",
							'update_event' => 'change',
							'value_method' => 'val',
						),
						'fields' => array(
							'button' => array(
								'type' => 'widget',
								'class' => 'SiteOrigin_Widget_Button_Widget',
								'label' => __( 'Button', 'so-widgets-bundle' ),
								'form_filter' => array( $this, 'filter_button_widget_form' ),
								'collapsible' => false,
							),
						),
					),

					'background' => array(
						'type' => 'section',
						'label' => __( 'Background', 'so-widgets-bundle' ),
						'fields' => array(
							'image' => array(
								'type' => 'media',
								'label' => __( 'Background image', 'so-widgets-bundle' ),
								'library' => 'image',
								'fallback' => true,
								'state_emitter' => array(
									'callback' => 'conditional',
									'args'     => array(
										'has_background_image[show]: val',
										'has_background_image[hide]: ! val',
									),
								),
							),

							'size' => array(
								'type' => 'image-size',
								'label' => __( 'Image size', 'so-widgets-bundle' ),
								'state_handler' => array(
									'has_background_image[show]' => array( 'show' ),
									'has_background_image[hide]' => array( 'hide' ),
								),
							),

							'image_type' => array(
								'type' => 'select',
								'label' => __( 'Background image type', 'so-widgets-bundle' ),
								'options' => array(
									'cover' => __( 'Cover', 'so-widgets-bundle' ),
								),
								'default' => 'cover',
								'state_handler' => array(
									'has_background_image[show]' => array( 'show' ),
									'has_background_image[hide]' => array( 'hide' ),
								),
							),

							'opacity' => array(
								'label' => __( 'Background image opacity', 'so-widgets-bundle' ),
								'type' => 'slider',
								'min' => 0,
								'max' => 100,
								'default' => 100,
								'state_handler' => array(
									'has_background_image[show]' => array( 'show' ),
									'has_background_image[hide]' => array( 'hide' ),
								),
							),

							'color' => array(
								'type' => 'color',
								'label' => __( 'Background color', 'so-widgets-bundle' ),
								'default' => '#333333',
								'alpha' => true,
							),

							'url' => array(
								'type' => 'link',
								'label' => __( 'Destination URL', 'so-widgets-bundle' ),
							),

							'new_window' => array(
								'type' => 'checkbox',
								'label' => __( 'Open URL in a new window', 'so-widgets-bundle' ),
							),

							'videos' => array(
								'type' => 'repeater',
								'item_name' => __( 'Video', 'so-widgets-bundle' ),
								'label' => __( 'Background videos', 'so-widgets-bundle' ),
								'item_label' => array(
									'selectorArray' => array(
										array(
											'selector' => "[id*='url']",
											'update_event' => 'change',
											'value_method' => 'val',
										),
										array(
											'selector' => '.siteorigin-widget-field-file .media-field-wrapper .current .title',
											'valueMethod' => 'html',
										),
									),
								),
								'fields' => $this->video_form_fields(),
							),
						),
					),
				),
			),

			'controls' => array(
				'type' => 'section',
				'label' => __( 'Slider Controls', 'so-widgets-bundle' ),
				'fields' => $this->control_form_fields(),
			),

			'layout' => array(
				'type' => 'section',
				'label' => __( 'Layout', 'so-widgets-bundle' ),
				'fields' => array(
					'desktop' => array(
						'type' => 'section',
						'label' => __( 'Desktop', 'so-widgets-bundle' ),
						'fields' => array(
							'height' => array(
								'type' => 'measurement',
								'label' => __( 'Height', 'so-widgets-bundle' ),
								'units' => $units,
							),

							'padding' => array(
								'type' => 'measurement',
								'label' => __( 'Top and bottom padding', 'so-widgets-bundle' ),
								'default' => '50px',
							),

							'padding_extra_top' => array(
								'type' => 'measurement',
								'label' => __( 'Extra top padding', 'so-widgets-bundle' ),
								'description' => __( 'Additional padding added to the top of the slider', 'so-widgets-bundle' ),
								'default' => '0px',
							),

							'padding_sides' => array(
								'type' => 'measurement',
								'label' => __( 'Side padding', 'so-widgets-bundle' ),
								'default' => '20px',
							),

							'width' => array(
								'type' => 'measurement',
								'label' => __( 'Maximum container width', 'so-widgets-bundle' ),
								'default' => '1280px',
							),
						),
					),
					'mobile' => array(
						'type' => 'section',
						'label' => __( 'Mobile', 'so-widgets-bundle' ),
						'fields' => array(
							'height_responsive' => array(
								'type' => 'measurement',
								'label' => __( 'Height', 'so-widgets-bundle' ),
								'units' => $units,
							),

							'padding' => array(
								'type' => 'measurement',
								'label' => __( 'Top and bottom padding', 'so-widgets-bundle' ),
							),

							'padding_extra_top' => array(
								'type' => 'measurement',
								'label' => __( 'Extra top padding', 'so-widgets-bundle' ),
								'description' => __( 'Additional padding added to the top of the slider', 'so-widgets-bundle' ),
							),

							'padding_sides' => array(
								'type' => 'measurement',
								'label' => __( 'Side padding', 'so-widgets-bundle' ),
							),
						),
					),
					'vertically_align' => array(
						'type' => 'checkbox',
						'label' => __( 'Vertically center align slide contents', 'so-widgets-bundle' ),
						'description' => __( 'For perfect centering, consider setting the Extra top padding setting to 0 when enabling this setting.', 'so-widgets-bundle' ),
					),
				),
			),

			'design' => array(
				'type' => 'section',
				'label' => __( 'Design', 'so-widgets-bundle' ),
				'fields' => array(
					'heading_font' => array(
						'type' => 'font',
						'label' => __( 'Heading font', 'so-widgets-bundle' ),
						'default' => '',
					),

					'heading_color' => array(
						'type' => 'color',
						'label' => __( 'Heading color', 'so-widgets-bundle' ),
						'default' => '#fff',
					),

					'heading_size' => array(
						'type' => 'measurement',
						'label' => __( 'Heading size', 'so-widgets-bundle' ),
						'description' => __( 'Enter the h1 font size. h2 - h6 will be proportionally sized based on this value.', 'so-widgets-bundle' ),
						'default' => '38px',
					),

					'fittext' => array(
						'type' => 'checkbox',
						'label' => __( 'Use FitText', 'so-widgets-bundle' ),
						'description' => __( 'Dynamically adjust your heading font size based on screen size.', 'so-widgets-bundle' ),
						'default' => true,
						'state_emitter' => array(
							'callback' => 'conditional',
							'args'     => array(
								'use_fittext[show]: val',
								'use_fittext[hide]: ! val',
							),
						),
					),

					'fittext_compressor' => array(
						'type' => 'number',
						'label' => __( 'FitText compressor strength', 'so-widgets-bundle' ),
						'description' => __( 'The higher the value, the more your headings will be scaled down. Values above 1 are allowed.', 'so-widgets-bundle' ),
						'default' => 0.85,
						'step' => 0.01,
						'state_handler' => array(
							'use_fittext[show]' => array( 'show' ),
							'use_fittext[hide]' => array( 'hide' ),
						),
					),

					'heading_shadow' => array(
						'type' => 'slider',
						'label' => __( 'Heading shadow intensity', 'so-widgets-bundle' ),
						'max' => 100,
						'min' => 0,
						'default' => 50,
					),

					'text_color' => array(
						'type' => 'color',
						'label' => __( 'Text color', 'so-widgets-bundle' ),
						'default' => '#f6f6f6',
					),
					'text_size' => array(
						'type' => 'measurement',
						'label' => __( 'Text size', 'so-widgets-bundle' ),
						'default' => '16px',
					),
					'text_font' => array(
						'type' => 'font',
						'label' => __( 'Text font', 'so-widgets-bundle' ),
						'default' => '',
					),
					'text_shadow' => array(
						'type' => 'slider',
						'label' => __( 'Text shadow intensity', 'so-widgets-bundle' ),
						'max' => 100,
						'min' => 0,
						'default' => 25,
					),

					'link_color' => array(
						'type' => 'color',
						'label' => __( 'Link color', 'so-widgets-bundle' ),
					),

					'link_color_hover' => array(
						'type' => 'color',
						'label' => __( 'Link hover color', 'so-widgets-bundle' ),
					),
				),
			),
		) );
	}

	public function filter_button_widget_form( $form_fields ) {
		unset( $form_fields['design']['fields']['align'] );
		unset( $form_fields['design']['fields']['mobile_align'] );

		return $form_fields;
	}

	/**
	 * Get everything necessary for the background image.
	 *
	 * @return array
	 */
	public function get_frame_background( $i, $frame ) {
		$background_image = siteorigin_widgets_get_attachment_image_src(
			$frame['background']['image'],
			! empty( $frame['background']['size'] ) ? $frame['background']['size'] : 'full',
			! empty( $frame['background']['image_fallback'] ) ? $frame['background']['image_fallback'] : ''
		);

		return array(
			'color' => ! empty( $frame['background']['color'] ) ? $frame['background']['color'] : false,
			'image' => ! empty( $background_image[0] ) ? $background_image[0] : false,
			'image-width' => ! empty( $background_image[1] ) ? $background_image[1] : 0,
			'image-height' => ! empty( $background_image[2] ) ? $background_image[2] : 0,
			'image-sizing' => $frame['background']['image_type'],
			'url' => ! empty( $frame['background']['url'] ) ? $frame['background']['url'] : false,
			'new_window' => ! empty( $frame['background']['new_window'] ),
			'videos' => $frame['background']['videos'],
			'video-sizing' => 'background',
			'opacity' => (int) $frame['background']['opacity'] / 100,
		);
	}

	/**
	 * Render the actual content of the frame
	 */
	public function render_frame_contents( $i, $frame ) {
		?>
		<div class="sow-slider-image-container">
			<div class="sow-slider-image-wrapper">
				<?php echo $this->process_content( $frame['content'], $frame ); ?>
			</div>
		</div>
		<?php
	}

	/**
	 * Process the content. Most importantly add the buttons by replacing [buttons] in the content
	 *
	 * @return string
	 */
	public function process_content( $content, $frame ) {
		$content = wp_kses_post( $content );

		if ( ! empty( $frame['autop'] ) ) {
			$content = wpautop( $content );
		}

		if ( strpos( $content, '[buttons]' ) !== false ) {
			// Replace [buttons] with button wrapper.
			$content = preg_replace( '/(?:<(?:p|h\d|em|strong|li|blockquote) *([^>]*)> *)?\[ *buttons *\](:? *<\/(?:p|h\d|em|strong|li|blockquote)>)?/i', '<div class="sow-hero-buttons" $1>[SiteOriginHeroButton]</div>', $content );

			$button_code = '';
			// Generate buttons.
			foreach ( $frame['buttons'] as $button ) {
				$button_code .= $this->sub_widget( 'SiteOrigin_Widget_Button_Widget', array(), $button['button'], true );
			}

			// Add buttons to wrapper.
			$content = str_replace( '[SiteOriginHeroButton]', $button_code, $content );
		}

		// Process normal shortcodes
		$content = do_shortcode( shortcode_unautop( $content ) );

		return apply_filters( 'siteorigin_hero_frame_content', $content, $frame );
	}

	/**
	 * Migrate Slider settings.
	 *
	 * @return mixed
	 */
	public function modify_instance( $instance ) {
		if ( empty( $instance ) ) {
			return array();
		}

		// Migrate Text shadow intensity setting to the 0 - 100 range.
		if (
			! empty( $instance['design'] ) &&
			! empty( $instance['design']['text_shadow'] ) &&
			(int) $instance['design']['text_shadow'] != $instance['design']['text_shadow']
		) {
			$instance['design']['text_shadow'] *= 100;
		}

		// Run general slider migrations.
		$instance = parent::modify_instance( $instance );

		return $instance;
	}

	/**
	 * The less variables to control the design of the slider
	 *
	 * @return array
	 */
	public function get_less_variables( $instance ) {
		$less = array();

		if ( empty( $instance ) ) {
			return $less;
		}

		// Slider navigation controls
		$less['nav_color_hex'] = $instance['controls']['nav_color_hex'];
		$less['nav_size'] = $instance['controls']['nav_size'];
		$less['nav_align'] = ! empty( $instance['controls']['nav_align'] ) ? $instance['controls']['nav_align'] : 'right';

		// Measurement field type options
		$meas_options = array();

		// Layouts settings.
		if ( ! empty( $instance['layout'] ) ) {
			if ( ! empty( $instance['layout']['desktop'] ) ) {
				$settings = $instance['layout']['desktop'];

				$meas_options['slide_height'] = ! empty( $settings['height'] ) ? $settings['height'] : '';
				$meas_options['slide_padding'] = ! empty( $settings['padding'] ) ? $settings['padding'] : '';
				$meas_options['slide_padding_extra_top'] = ! empty( $settings['padding_extra_top'] ) ? $settings['padding_extra_top'] : '';
				$meas_options['slide_padding_sides'] = ! empty( $settings['padding_sides'] ) ? $settings['padding_sides'] : '';
				$meas_options['slide_width'] = ! empty( $settings['width'] ) ? $settings['width'] : '';
			}

			if ( ! empty( $instance['layout']['mobile'] ) ) {
				$settings = $instance['layout']['mobile'];
				$meas_options['slide_height_responsive'] = ! empty( $settings['height_responsive'] ) ? $settings['height_responsive'] : '';

				if ( isset( $settings['padding'] ) ) {
					$meas_options['slide_padding_responsive'] = ! empty( $settings['padding'] ) ? $settings['padding'] : '0px';
				}

				if ( isset( $settings['padding_extra_top'] ) ) {
					$meas_options['slide_padding_extra_top_responsive'] = ! empty( $settings['padding_extra_top'] ) ? $settings['padding_extra_top'] : '0px';
				}

				// If neither padding is set, we need to unset them both to prevent an override.
				if (
					(
						empty( $settings['slide_padding_responsive'] ) ||
						$meas_options['slide_padding_responsive'] == '0px'
					) &&
					(
						empty( $settings['slide_padding_extra_top_responsive'] ) ||
						$meas_options['slide_padding_extra_top_responsive'] == '0px'
					)
				) {
					unset( $meas_options['slide_padding_responsive'] );
					unset( $meas_options['slide_padding_extra_top_responsive'] );
				}
				$meas_options['slide_padding_sides_responsive'] = ! empty( $settings['padding_sides'] ) ? $settings['padding_sides'] : '';
			}
		}

		$meas_options['heading_size'] = $instance['design']['heading_size'];
		$meas_options['text_size'] = $instance['design']['text_size'];

		foreach ( $meas_options as $key => $val ) {
			$less[ $key ] = $this->add_default_measurement_unit( $val );
		}

		$less['vertically_align'] = empty( $instance['layout']['vertically_align'] ) ? 'false' : 'true';

		$less['heading_shadow'] = (int) $instance['design']['heading_shadow'];
		$less['heading_color'] = $instance['design']['heading_color'];
		$less['text_shadow'] = isset( $instance['design']['text_shadow'] ) ? (float) $instance['design']['text_shadow'] : 25;
		$less['text_color'] = $instance['design']['text_color'];

		$less['link_color'] = ! empty( $instance['design']['link_color'] ) ? $instance['design']['link_color'] : '';
		$less['link_color_hover'] = ! empty( $instance['design']['link_color_hover'] ) ? $instance['design']['link_color_hover'] : '';

		$heading_font = siteorigin_widget_get_font( $instance['design']['heading_font'] );
		$less['heading_font'] = $heading_font['family'];

		if ( ! empty( $heading_font['weight'] ) ) {
			$less['heading_font_weight'] = $heading_font['weight_raw'];
			$less['heading_font_style'] = $heading_font['style'];
		}

		if ( ! empty( $instance['design']['text_font'] ) ) {
			$text_font = siteorigin_widget_get_font( $instance['design']['text_font'] );
			$less['text_font'] = $text_font['family'];

			if ( ! empty( $text_font['weight'] ) ) {
				$less['text_font_weight'] = $text_font['weight_raw'];
				$less['text_font_style'] = $text_font['style'];
			}
		}

		$global_settings = $this->get_global_settings();

		if ( ! empty( $global_settings['responsive_breakpoint'] ) ) {
			$less['responsive_breakpoint'] = $global_settings['responsive_breakpoint'];
		}

		return $less;
	}

	public function add_default_measurement_unit( $val ) {
		if ( ! empty( $val ) ) {
			if ( !preg_match( '/\d+([a-zA-Z%]+)/', $val ) ) {
				$val .= 'px';
			}
		}

		return $val;
	}

	public function wrapper_class_filter( $classes, $instance ) {
		if ( ! empty( $instance['design']['fittext'] ) ) {
			$classes[] = 'so-widget-fittext-wrapper';
		}

		return $classes;
	}

	public function wrapper_data_filter( $data, $instance ) {
		if ( ! empty( $instance['design']['fittext'] ) && ! empty( $instance['design']['fittext_compressor'] ) ) {
			$data['fit-text-compressor'] = $instance['design']['fittext_compressor'];
		}

		return $data;
	}

	public function enqueue_widget_scripts( $instance ) {
		if ( ! empty( $instance['design']['fittext'] ) || $this->is_preview( $instance ) ) {
			wp_enqueue_script( 'sowb-fittext' );
		}
	}

	public function get_form_teaser() {
		if ( class_exists( 'SiteOrigin_Premium' ) ) {
			return false;
		}

		return array(
			sprintf(
				__( 'Add multiple Hero frames in one go with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
				'<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/multiple-media" target="_blank" rel="noopener noreferrer">',
				'</a>'
			),
			sprintf(
				__( 'Add Hero frame content animation effects with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
				'<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/hero" target="_blank" rel="noopener noreferrer">',
				'</a>'
			),
			sprintf(
				__( 'Add parallax and fixed background images with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
				'<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/parallax-sliders" target="_blank" rel="noopener noreferrer">',
				'</a>'
			),
			sprintf(
				__( 'Use Google Fonts right inside the Hero Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
				'<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/web-font-selector" target="_blank" rel="noopener noreferrer">',
				'</a>'
			),
		);
	}
}

siteorigin_widget_register( 'sow-hero', __FILE__, 'SiteOrigin_Widget_Hero_Widget' );

Youez - 2016 - github.com/yon3zu
LinuXploit