HEX
Server: LiteSpeed
System: Linux server315.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: globfdxw (6114)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/globfdxw/www/wp-content/plugins/bearsthemes-addons/widgets/give-form/widget.php
<?php
namespace BearsthemesAddons\Widgets\Give_Form;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

use Give\Helpers\Form\Template;

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

class Be_Give_Form extends Widget_Base {

	public function get_name() {
		return 'be-give-form';
	}

	public function get_title() {
		return __( 'Be Give Form', 'bearsthemes-addons' );
	}

	public function get_icon() {
		return 'eicon-posts-ticker';
	}

	public function get_categories() {
		return [ 'bearsthemes-addons' ];
	}

	public function get_script_depends() {
		return [ 'bearsthemes-addons' ];
	}

	protected function register_skins() {
		$this->add_skin( new Skins\Skin_Andrus( $this ) );
		$this->add_skin( new Skins\Skin_Tronador( $this ) );
		$this->add_skin( new Skins\Skin_Yutmaru( $this ) );
		$this->add_skin( new Skins\Skin_Vaccine( $this ) );
		$this->add_skin( new Skins\Skin_Jimara( $this ) );
		$this->add_skin( new Skins\Skin_Nuptse( $this ) );
		$this->add_skin( new Skins\Skin_Somoni( $this ) );

	}

	protected function get_supported_post_ids() {
		$supported_taxonomies = [];

		$args = array(
			'post_type' => 'give_forms',
			'post_status'    => 'publish',
		);

		$query = new \WP_Query( $args );
		if ( $query->have_posts() ) :
			while ( $query->have_posts() ) : $query->the_post();
			$supported_taxonomies[get_the_ID()] = get_the_title();
			endwhile;
	 		wp_reset_postdata();
	 	endif;

		return $supported_taxonomies;
	}

	protected function register_layout_section_controls() {
		$this->start_controls_section(
			'section_layout',
			[
				'label' => __( 'Layout', 'bearsthemes-addons' ),
			]
		);

		$this->add_control(
			'form_id',
			[
				'label' => __( 'Form Id', 'bearsthemes-addons' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_supported_post_ids(),
			]
		);

		$this->end_controls_section();
	}

	protected function register_design_latyout_section_controls() {
		$this->start_controls_section(
			'section_design_layout',
			[
				'label' => __( 'Layout', 'bearsthemes-addons' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => __( 'Alignment', 'bearsthemes-addons' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => __( 'Left', 'bearsthemes-addons' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => __( 'Center', 'bearsthemes-addons' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => __( 'Right', 'bearsthemes-addons' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-give-form' => 'text-align: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function register_design_content_section_controls() {
		$this->start_controls_section(
			'section_design_content',
			[
				'label' => __( 'Content (Apply On Legacy)', 'bearsthemes-addons' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'_skin' => '',
				],
			]
		);

		$this->add_control(
			'form_main_color',
			[
				'label' => __( 'Main Color', 'bearsthemes-addons' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'.give-form[data-style="elementor-give-form--default"] .give-total-wrap #give-amount,
					.give-form[data-style="elementor-give-form--default"] #give-donation-level-button-wrap .give-btn:hover,
					.give-form[data-style="elementor-give-form--default"] #give-gateway-radio-list > li.give-gateway-option-selected label,
					.give-form[data-style="elementor-give-form--default"] #give-gateway-radio-list > li label:hover,
					.give-form[data-style="elementor-give-form--default"] #give-donation-level-radio-list li input.give-default-level + label,
					.give-form[data-style="elementor-give-form--default"] #give-donation-level-radio-list li label:hover,
					.give-form[data-style="elementor-give-form--default"] #give-gateway-radio-list > li label:hover,
					.give-form[data-style="elementor-give-form--default"] #give_terms_agreement label:hover,
					.give-form[data-style="elementor-give-form--default"] #give_terms_agreement label:hover,
					.give-form[data-style="elementor-give-form--default"] #give_terms_agreement input[type=checkbox]:checked + label,
					.give-form[data-style="elementor-give-form--default"] .give_terms_links:hover,
					.give-form[data-style="elementor-give-form--default"] #give-final-total-wrap .give-final-total-amount' => 'color: {{VALUE}};',

				 '.give-form[data-style="elementor-give-form--default"] .give-total-wrap .give-currency-symbol,
				 .give-form[data-style="elementor-give-form--default"] #give-donation-level-button-wrap .give-btn.give-default-level,
				 .give-form[data-style="elementor-give-form--default"] #give-donation-level-radio-list li label:after,
				 .give-form[data-style="elementor-give-form--default"] #give-gateway-radio-list > li label:after,
				 .give-form[data-style="elementor-give-form--default"] #give_terms_agreement input[type=checkbox]:checked + label:before,
				 .give-form[data-style="elementor-give-form--default"] #give-final-total-wrap .give-donation-total-label,
				 .give-form[data-style="elementor-give-form--default"] .give-submit,
				 .give-form[data-style="elementor-give-form--default"] .give-btn-modal' => 'background-color: {{VALUE}};',

				 '.give-form[data-style="elementor-give-form--default"] #give-donation-level-button-wrap .give-btn.give-default-level,
				 .give-form[data-style="elementor-give-form--default"] #give-donation-level-button-wrap .give-btn:hover,
				 .give-form[data-style="elementor-give-form--default"] #give_terms_agreement input[type=checkbox]:checked + label:before' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'form_main_color_hover',
			[
				'label' => __( 'Main Color Hover', 'bearsthemes-addons' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'.give-form[data-style="elementor-give-form--default"] .give-submit:hover,
 				  .give-form[data-style="elementor-give-form--default"] .give-btn-modal:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'form_typography',
				'label' => __( 'Typography', 'bearsthemes-addons' ),
				'default' => '',
				'selector' => '.give-form[data-style="elementor-give-form--default"]',
			]
		);

		$this->end_controls_section();
	}

	protected function register_controls() {
		$this->register_layout_section_controls();

		$this->register_design_latyout_section_controls();
		$this->register_design_content_section_controls();
	}

	public function get_instance_value_skin( $key ) {
		$settings = $this->get_settings_for_display();

		if( !empty( $settings['_skin'] ) && isset( $settings[str_replace( '-', '_', $settings['_skin'] ) . '_' . $key] ) ) {
			 return $settings[str_replace( '-', '_', $settings['_skin'] ) . '_' . $key];
		}
		return $settings[$key];
	}

	public function render_loop_header() {
		$settings = $this->get_settings_for_display();

		$classes = 'elementor-give-form';

		if( $settings['_skin'] ) {
			$classes .= ' elementor-give-form--' . $settings['_skin'];
		} else {
			$classes .= ' elementor-give-form--default';
		}

		?>
			<div class="<?php echo esc_attr( $classes ); ?>">
		<?php
	}

	public function render_loop_footer() {

		?>
			</div>
		<?php
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		$this->render_loop_header();

		if( !empty( $settings['form_id'] ) ) {
			if( !Template::getActiveID($settings['form_id']) ) {
				echo do_shortcode('[give_form id="' . $settings['form_id'] . '"]');
			} else {
				// Maybe display the form donate button.
				$atts = array(
					'id' => $settings['form_id'],  // integer.
					'show_title' => false, // boolean.
					'show_goal' => false, // boolean.
					'show_content' => 'none', //above, below, or none
					'display_style' => 'modal', //modal, button, and reveal
					'continue_button_title' => '' //string

				);

				add_filter('give_form_html_tags', function($form_html_tags, $form) {
					$form_html_tags['data-style'] = 'elementor-give-form--default';

					return $form_html_tags;
				}, 10, 2);

				echo give_get_donation_form( $atts );
			}
		}

		$this->render_loop_footer();

	}

	protected function content_template() {

	}
}