HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/frenchy/refonte2023/wordpress/wp-content/themes/gimont/elementor/widgets/give-donations.php
<?php

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


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

class Gimont_Elementor_Give_Donations extends Widget_Base {

	public function get_name() {
		return 'gimont_elementor_give_donations';
	}

	public function get_title() {
		return esc_html__( 'Give Donations', 'gimont' );
	}

	public function get_icon() {
		return 'eicon-price-table';
	}

	public function get_categories() {
		return [ 'gimont' ];
	}

	public function get_script_depends() {
		return [ 'gimont-elementor-give-donations' ];
	}

	protected function register_controls() {

		/***** Layout Section *****/
		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'gimont' ),
			]
		);

		$this->add_control(
			'layout_columns',
			[
				'label' => esc_html__( 'Columns', 'gimont' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'default' => 'two_column',
				'options' => [
					'two_column'  	=> esc_html__( '2 Columns', 'gimont' ),
					'three_column'  => esc_html__( '3 Columns', 'gimont' ),
					'four_column'   => esc_html__( '4 Columns', 'gimont' ),
				],
			]
		);

		$this->add_control(
			'visibility',
			[
				'label' 	=> esc_html__( 'Visibility', 'gimont' ),
				'type' 		=> Controls_Manager::SELECT,
				'default' 	=> 'public',
				'options' 	=> [
					'public' 	=> esc_html__( 'Public', 'gimont' ),
					'featured' => esc_html__( 'Featured Give Form', 'gimont' ),
				],
			]
		);

		$args = array(
			'taxonomy' => 'give_forms_category',
		  	'orderby' 	=> 'name',
		  	'order' 	=> 'ASC'
		);

		$categories  	= get_categories($args);
		$cate_array 	= array();
		$arrayCateAll 	= array( 'all' => esc_html__( 'All categories', 'gimont' ) );
		
		if ($categories) {
			foreach ( $categories as $cate ) {
				$cate_array[$cate->slug] = $cate->cat_name;
			}
		} else {
			$cate_array[ esc_html__( 'No content Category found', 'gimont' ) ] = 0;
		}

		$this->add_control(
			'category',
			[
				'label' 	=> esc_html__( 'Category', 'gimont' ),
				'type' 		=> Controls_Manager::SELECT,
				'default' 	=> 'all',
				'options' 	=> array_merge($arrayCateAll,$cate_array),
			]
		);


		$this->add_control(
			'posts_per_page',
			[
				'label' => esc_html__( 'Posts Per Page', 'gimont' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 3,
			]
		);

		$this->add_control(
			'order',
			[
				'label' => esc_html__('Order', 'gimont'),
				'type' 	=> Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' 	=> esc_html__('Ascending', 'gimont'),
					'desc' 	=> esc_html__('Descending', 'gimont'),
				]
			]
		);

		$this->add_control(
			'orderby',
			[
				'label' 	=> esc_html__('Order By', 'gimont'),
				'type' 		=> \Elementor\Controls_Manager::SELECT,
				'default' 	=> 'ID',
				'options' 	=> [
					'ID' 		=> esc_html__('ID', 'gimont'),
					'title' 	=> esc_html__('Title', 'gimont'),
					'date' 		=> esc_html__('Date', 'gimont'),
					'modified' 	=> esc_html__('Modified', 'gimont'),
					'rand' 		=> esc_html__('Rand', 'gimont'),
				]
			]
		);

		$this->add_control(
			'show_category',
			[
				'label' 		=> esc_html__( 'Show Category', 'gimont' ),
				'type' 			=> \Elementor\Controls_Manager::SWITCHER,
				'label_on' 		=> esc_html__( 'Show', 'gimont' ),
				'label_off' 	=> esc_html__( 'Hide', 'gimont' ),
				'return_value' 	=> 'yes',
				'default' 		=> 'no',
			]
		);

		$this->add_control(
			'show_excerpt',
			[
				'label' 		=> esc_html__( 'Show Excerpt', 'gimont' ),
				'type' 			=> \Elementor\Controls_Manager::SWITCHER,
				'label_on' 		=> esc_html__( 'Show', 'gimont' ),
				'label_off' 	=> esc_html__( 'Hide', 'gimont' ),
				'return_value' 	=> 'yes',
				'default' 		=> 'yes',
			]
		);

		$this->add_control(
			'limit_text',
			[
				'label' 	=> esc_html__( 'Description Words Limit', 'gimont' ),
				'type' 		=> Controls_Manager::NUMBER,
				'default' 	=> 12,
				'condition' => [
					'show_excerpt' => 'yes'
				]
			]
		);


		$this->end_controls_section();
		/***** End Layout Section *****/

		//SECTION TAB STYLE TITLE
		$this->start_controls_section(
			'section_title_style',
			[
				'label' => esc_html__( 'Title', 'gimont' ),
				'tab' 	=> Controls_Manager::TAB_STYLE,
			]
		);
			$this->add_group_control(
				\Elementor\Group_Control_Typography::get_type(),
				[
					'name' 		=> 'content_typography_title',
					'label' 	=> esc_html__( 'Typography', 'gimont' ),
					'selector' 	=> '{{WRAPPER}} .ova_give_detail .detail_body .title',
				]
			);

			$this->add_control(
				'color_title',
				[
					'label' 	=> esc_html__( 'Color', 'gimont' ),
					'type' 		=> Controls_Manager::COLOR,
					'selectors' => [
						'{{WRAPPER}} .ova_give_detail .detail_body  .title' => 'color : {{VALUE}};',
						'{{WRAPPER}} .ova_give_detail .detail_body  .title a' => 'color : {{VALUE}};',	
					],
				]
			);

			$this->add_control(
				'color_title_hover',
				[
					'label' 	=> esc_html__( 'Color hover', 'gimont' ),
					'type' 		=> Controls_Manager::COLOR,
					'selectors' => [
						'{{WRAPPER}} .ova_give_detail .detail_body .title a:hover' => 'color : {{VALUE}};'
					],
					
				]
			);

			$this->add_responsive_control(
				'padding_title',
				[
					'label' 	 => esc_html__( 'Padding', 'gimont' ),
					'type' 		 => Controls_Manager::DIMENSIONS,
					'size_units' => [ 'px', 'em', '%' ],
					'selectors'  => [
						'{{WRAPPER}} .ova_give_detail .detail_body .title ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					],
				]
			);

			$this->add_responsive_control(
				'margin_title',
				[
					'label' 	 => esc_html__( 'Margin', 'gimont' ),
					'type' 		 => Controls_Manager::DIMENSIONS,
					'size_units' => [ 'px', 'em', '%' ],
					'selectors'  => [
						'{{WRAPPER}} .ova_give_detail .detail_body .title ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					],
				]
			);

		$this->end_controls_section();
		//END SECTION TAB STYLE TITLE


		$this->start_controls_section(
			'section_progress_style',
			[
				'label' => esc_html__( 'Progress', 'gimont' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

			$this->add_control(
				'color_progress_main',
				[
					'label' => esc_html__( 'Main Color', 'gimont' ),
					'type' => Controls_Manager::COLOR,
					'selectors' => [
						'{{WRAPPER}} .give-progress .project-percent' => 'background-color : {{VALUE}} !important;',
					],
				]
			);

			$this->add_control(
				'color_progress',
				[
					'label' => esc_html__( 'Sub Color', 'gimont' ),
					'type' => Controls_Manager::COLOR,
					'selectors' => [
						'{{WRAPPER}} .give-progress' => 'background-color : {{VALUE}} !important;',
					],
				]
			);

		$this->end_controls_section();

	}
	

	protected function render() {

		$settings = $this->get_settings();

		$layout_columns = $settings['layout_columns'];
		$category 		= $settings['category'];
		$posts_per_page = $settings['posts_per_page'];
		$order  		= $settings['order'];
		$orderby  		= $settings['orderby'];

		if ($settings['visibility'] != 'public') {
			$layout_show_post = array(
				array(
					'key' => 'ova_met_feature_give',
					'value' => 'on',
					'compare' => '=',
				)
			);
		} else {
			$layout_show_post = '';
		};

		$paged   = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

		if ($category == 'all') {
		    $args_base = array(
				'post_type' 	 => 'give_forms',
				'posts_per_page' => $posts_per_page,
				'orderby'		 => $orderby,
				'order'   		 => $order,
				'meta_query' 	 => $layout_show_post,
			);

		} else {
			$args_base = array(
				'post_type' 	 => 'give_forms',
				'posts_per_page' => $posts_per_page,
				'orderby'		 => $orderby,
				'order'   		 => $order,
				'meta_query' 	 => $layout_show_post,
				'tax_query'      => array(
                    array(
                        'taxonomy' => 'give_forms_category',
                        'field'    => 'slug',
                        'terms'    => $category,
                    )
                ),
			);
		}

		$give_donation = new WP_Query( $args_base );

		if( in_array('give/give.php', apply_filters('active_plugins', get_option('active_plugins') ) ) ) {

		?>

			<div class="ova-item-give <?php echo esc_attr($layout_columns); ?>">

				 <?php if( $give_donation->have_posts() ) : while ( $give_donation->have_posts() ) : $give_donation->the_post();

					ob_start(); 
						
					    get_template_part( 'give/template-parts/item-give', null, $settings );
					    
					echo ob_get_clean(); ?>

				<?php endwhile; else: ?>

					<div class="search_not_found">
						<?php esc_html_e( 'Not Found Give Form', 'gimont' ); ?>
					</div>

				<?php endif; wp_reset_postdata(); ?>

			</div>

		<?php } else {
			esc_html_e( 'Please active plugins Give Donations', 'gimont' );
		}
	}
}

$widgets_manager->register( new Gimont_Elementor_Give_Donations() );