HEX
Server: Apache
System: Linux p3plzcpnl507418.prod.phx3.secureserver.net 4.18.0-553.141.2.lve.el8.x86_64 #1 SMP Wed Jul 8 16:10:02 UTC 2026 x86_64
User: retoti4c1e1s (10075650)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: /home/retoti4c1e1s/www/izz.world/wp-content/plugins/elespare/src/widgets/date-time/widget.php
<?php

namespace Elespare\Widgets;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Group_Control_Background;



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


class DateTime extends Widget_Base{

  public function get_name(){
    return 'date-time';
  }

  public function get_title(){
    return esc_html__('Date and Time','elespare');
  }

  public function get_icon(){
    return 'demo-icon elespare-icons-clock-regular';
  }

  public function get_categories(){
    return ['elespare'];
  }
  protected function register_controls()
  {
    $this->elespare_date_time_content_Layout_options();
    $this->elespare_date_time_style_options();
  }
    protected function elespare_date_time_content_Layout_options(){
       $this->start_controls_section(
           'section_content',
           [
             'label' => esc_html__('General ','elespare')
           ]
         );

         $this->add_control(
          'display_date',
          [
              'label' => esc_html__( 'Display Date ', 'elespare' ),
              'type' => Controls_Manager::SWITCHER,
              'label_on' => esc_html__( 'Show', 'elespare' ),
              'label_off' => esc_html__( 'Hide', 'elespare' ),
              'default' => 'yes',
              'separator' => 'before',
          ]
      );
     
         $this->add_control(
           'before_date_text',
           [
             'label' => esc_html__('Before Date Text','elesapre'),
             'type' => Controls_Manager::HIDDEN,
            //  'default' => esc_html__('Current Date','elespare'),
             'condition' => [
              'display_date' => 'yes',
            ],
           ]
         );
         $this->add_control(
          'after_date_text',
          [
            'label' => esc_html__('After Date text','elespare'),
            'type' => Controls_Manager::HIDDEN,
            // 'default'=> 'A.D.' ,
            'condition' => [
              'display_date' => 'yes',
            ],
          ]
        );

        $this->add_control(
          'date_icon',
          array(
            'label'     => esc_html__( 'Date Icon', 'elespare' ),
            'type' => Controls_Manager::ICONS,
              'skin'=> 'inline',
              'label_block'=> false,
              'condition' => [
                'display_date' => 'yes',
              ],
              'default' => [
              'value' => 'demo-icon elespare-icons-calendar',
              'library' => 'reguler'
            ],
            
    
          )
        );
        
    //Time control        
          $this->add_control(
          'display_time',
          [
              'label' => esc_html__( 'Display Time ', 'elespare' ),
              'type' => Controls_Manager::SWITCHER,
              'label_on' => esc_html__( 'Show', 'elespare' ),
              'label_off' => esc_html__( 'Hide', 'elespare' ),
              'default' => 'no',
              'separator' => 'before',
          ]
      );

      $this->add_control(
        'time_icon',
        array(
          'label'     => esc_html__( 'Time Icon', 'elespare' ),
          'type' => Controls_Manager::HIDDEN,
            'skin'=> 'inline',
            'label_block'=> false,
            'condition' => [
              'display_time' => 'yes',
            ],
            'default' => [
            'value' => 'demo-icon elespare-icons-clock-regular',
            'library' => 'reguler'
          ],
          
  
        )
      );

      $this->add_control(
        'date_time_layout_style',
        [
            'label' => esc_html__( 'Layout Style', 'elespare' ),
            'type' => Controls_Manager::SELECT,
            'default' => 'date-time-style-1',
            'separator' => 'before',
            'options' => [
                'date-time-style-1' => esc_html__( 'Layout 1', 'elespare' ),
                'date-time-style-2' => esc_html__( 'Layout 2', 'elespare' ),
                // 'date-time-style-3' => esc_html__( 'Layout 3', 'elespare' ),
                // 'date-time-style-4' => esc_html__( 'Layout 4', 'elespare' ),
                // 'date-time-style-5' => esc_html__( 'Layout 5', 'elespare' ),
                // 'date-time-style-6' => esc_html__( 'Layout 6', 'elespare' ),
                // 'date-time-style-7' => esc_html__( 'Layout 7', 'elespare' ),
                // 'date-time-style-8' => esc_html__( 'Layout 8', 'elespare' ),
                // 'date-time-style-9' => esc_html__( 'Layout 9', 'elespare' ),
                // 'date-time-style-10' => esc_html__( 'Layout 10', 'elespare' ),
                // 'date-time-style-11' => esc_html__( 'Layout 11', 'elespare' ),
                // 'date-time-style-12' => esc_html__( 'Layout 12', 'elespare' ),
            ],
        ]
    );

    $this->add_control(
      'date_time_bordr_radius',
      [
          'label' => esc_html__( 'Border Radius', 'elespare' ),
          'type' => Controls_Manager::HIDDEN,
          'default' => 'date-time-mixed',
          'separator' => 'before',
          'options' => [
              'date-time-mixed' => esc_html__( 'Default', 'elespare' ),
              'date-time-rounded' => esc_html__( 'Rounded', 'elespare' ),
              'date-time-circular' => esc_html__( 'Circular', 'elespare' ),
              'date-time-rectangular' => esc_html__( 'Rectangular', 'elespare' )
          ],
          'condition' => [
            'date_time_layout_style!' => 'date-time-style-1',
          ]
      ]
  );
      
    $this->add_control(
      'date_time_order',
      [
          'label' => esc_html__( 'Order', 'elespare' ),
          'type' => Controls_Manager::HIDDEN,
          'default' => 'date-time-order-1',
          'options' => [
              'date-time-order-1' => esc_html__( 'Date-Time', 'elespare' ),
              'date-time-order-2' => esc_html__( 'Time-Date', 'elespare' ),

          ],
          'condition' => [
            'display_date' => 'yes',
            'display_time' => 'yes',
          ]
      ]
  );

  $this->add_control(
    'date_time_horizontal_vertical_style',
    [
        'label' => esc_html__( 'Layout Style', 'elespare' ),
        'type' => Controls_Manager::HIDDEN,
        'default' => 'date-time-horizontal',
        'options' => [
            'date-time-horizontal' => esc_html__( 'Horizontal', 'elespare' ),
            'date-time-vertical' => esc_html__( 'Vertical', 'elespare' ),
            
        ],
        'condition' => [
          'display_date' => 'yes',
          'display_time' => 'yes',
        ]
    ]
);
    $this->add_responsive_control(
      '_date_time_title_alignment',
      [
          'label' => esc_html__( 'Alignment', 'elespare' ),
          'type' => Controls_Manager::HIDDEN,
          'label_block' => false,
          'default'=>'elespare-left',
          'options' => [
              'elespare-left' => [
                  'title' => esc_html__( 'Left', 'elespare' ),
                  'icon' => 'eicon-text-align-left',
              ],
              'elespare-center' => [
                  'title' => esc_html__( 'Center', 'elespare' ),
                  'icon' => 'eicon-text-align-center',
              ],
              'elespare-right' => [
                  'title' => esc_html__( 'Right', 'elespare' ),
                  'icon' => 'eicon-text-align-right',
              ],
          ],
          'prefix_class' => 'elespare-section-title%s-',
          'toggle' => true,
      ]
  );

      $this->end_controls_section();
    }
    protected function elespare_date_time_style_options(){

      $this->start_controls_section(
        'primary_secondary_color_section',
        [
          'label' => esc_html__( 'Secondary Color Setting', 'elespare' ),
          'tab' => Controls_Manager::TAB_STYLE,
          'condition' => [
            'date_time_layout_style!' => 'date-time-style-1',
          ]
          
        ]
      );


      $this->add_control(
				'secondary_color',
				array(
					'label'     => esc_html__( 'Secondary Color', 'elespare' ),
					'type'      => Controls_Manager::COLOR,
          'default'     => '#ffb400',
					'selectors' => array(
						'{{WRAPPER}} .elespare-date-time-widget .elespare-date-time' => 'background-color: {{VALUE}}',
					),
				)
			);



      $this->end_controls_section();
      $this->start_controls_section(
        'style_section',
        [
          'label' => esc_html__( 'Date Settings', 'elespare' ),
          'tab' => Controls_Manager::TAB_STYLE,
          'condition' => [
            'display_date' => 'yes',
        ]
        ]
      );
  //Date style
      $this->add_group_control(
        Group_Control_Typography::get_type(),
        [
          'name' => 'date_typography',
          'label' => esc_html__( 'Date Typography', 'elespare' ),
          'fields_options' => [
            'typography' => [
                'default' => 'yes'
                
            ],
            'font_size' => [
                'default' => [
                    'unit' => 'px',
                    'size' => '16',
                ],
            ],
            'font_weight' => [
                'default' => '400',
            ],
            
        ],
          'selector' => '{{WRAPPER}} .elespare-date-wrapper span.elespare-date-text',
        ]
      );
  
      $this->add_control('date_color',
			[
				'label'     => esc_html__( 'Date Color', 'elespare' ),
				'type'      => Controls_Manager::COLOR,
				'default'	=>'#000',
        'selectors' => [
					'{{WRAPPER}} .elespare-date-wrapper span.elespare-date-text' => 'color: {{VALUE}};',
					],
				
			]);

      $this->add_control(
				'date_icon_color',
				array(
					'label'     => esc_html__( 'Icon Color', 'elespare' ),
					'type'      => Controls_Manager::HIDDEN,
          'default'	=>'#000',
					'selectors' => array(
						'{{WRAPPER}} .elespare-date-icon' => 'color: {{VALUE}}',
					),
				)
			);

      $this->add_responsive_control(
        'date_icon_size',
        [
          'label' => esc_html__( 'Date Icon Size', 'elementor' ),
          'type' => Controls_Manager::HIDDEN,
          'range' => [
            'px' => [
              'min' => 10,
              'max' => 100,
            ],
          ],
          'selectors' => [
            '{{WRAPPER}} .elespare-date-icon' => 'font-size: {{SIZE}}{{UNIT}};',
          ],
          'separator' => 'before',
        ]
      );

//Before Text Style
      // $this->add_group_control(
      //   Group_Control_Typography::get_type(),
      //   [
      //     'name' => 'before_date_typography',
      //     'label' => esc_html__( 'Before Date Text Typography', 'elespare' ),
      //     'fields_options' => [
      //       'typography' => [
      //           'default' => 'yes'
                
      //       ],
      //       'font_size' => [
      //           'default' => [
      //               'unit' => 'px',
      //               'size' => '16',
      //           ],
      //       ],
      //       'font_weight' => [
      //           'default' => '400',
      //       ],
            
      //   ],
      //     'selector' => '{{WRAPPER}} span.elespare-before-date-text',
      //     'condition' => [
      //       'before_date_text[value]!' => '',
      //      ]
      // ]
      // );
  
      // $this->add_control('before_date_color',
			// [
			// 	'label'     => esc_html__( 'Before Date Text Color', 'elespare' ),
			// 	'type'      => Controls_Manager::COLOR,
			// 	'default'	=>'#000',
      //   'selectors' => [
			// 		'{{WRAPPER}} span.elespare-before-date-text' => 'color: {{VALUE}};',
			// 		],
      //     'condition' => [
      //       'before_date_text[value]!' => '',
      //      ]
				
			// ]);
  //After Text Style
      // $this->add_group_control(
      //   Group_Control_Typography::get_type(),
      //   [
      //     'name' => 'after_date_typography',
      //     'label' => esc_html__( 'After Date Text Typography', 'elespare' ),
      //     'fields_options' => [
      //       'typography' => [
      //           'default' => 'yes'
                
      //       ],
      //       'font_size' => [
      //           'default' => [
      //               'unit' => 'px',
      //               'size' => '16',
      //           ],
      //       ],
      //       'font_weight' => [
      //           'default' => '400',
      //       ],
            
      //   ],
      //     'selector' => '{{WRAPPER}} span.elespare-after-date-text',
      //     'condition' => [
      //       'after_date_text[value]!' => '',
      //      ]
      // ]
      // );
  
      // $this->add_control('after_date_color',
			// [
			// 	'label'     => esc_html__( 'After Date Text Color', 'elespare' ),
			// 	'type'      => Controls_Manager::COLOR,
			// 	'default'	=>'#000',
      //   'selectors' => [
			// 		'{{WRAPPER}} span.elespare-after-date-text' => 'color: {{VALUE}};',
			// 		],
      //     'condition' => [
      //       'after_date_text[value]!' => '',
      //      ]
				
			// ]);


     
      $this->end_controls_section();
      
      //Time Style
      $this->start_controls_section(
        'section_time',
        [
            'label'     => esc_html__( 'Time Settings', 'elespare' ),
            'tab'       => Controls_Manager::TAB_STYLE,
            'condition' => [
                'display_time' => 'yes',
            ]
        ]
    );
    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'time_typography',
        'label' => esc_html__( 'Typography', 'elespare' ),
        'fields_options' => [
          'typography' => [
              'default' => 'yes'
              
          ],
          'font_size' => [
              'default' => [
                  'unit' => 'px',
                  'size' => '16',
              ],
          ],
          'font_weight' => [
              'default' => '400',
          ],
          
      ],
        'selector' => '{{WRAPPER}} .elespare-time-wrapper span.elespare-time-text',
      ]
     );

     $this->add_control('time_color',
     [
       'label'     => esc_html__( 'Color', 'elespare' ),
       'type'      => Controls_Manager::COLOR,
       'default'	=>'#000',
       'selectors' => [
         '{{WRAPPER}} .elespare-time-wrapper span.elespare-time-text' => 'color: {{VALUE}};',
         ],
       
     ]);

     $this->add_control(
      'time_icon_color',
      array(
        'label'     => esc_html__( 'Icon Color', 'elespare' ),
        'type'      => Controls_Manager::COLOR,
        'default'	=>'#000',
        'selectors' => array(
          '{{WRAPPER}} .elespare-time-icon' => 'color: {{VALUE}}',
        ),
      )
    );

    $this->add_responsive_control(
      'time_icon_size',
      [
        'label' => esc_html__( 'Time Icon Size', 'elementor' ),
        'type' => Controls_Manager::HIDDEN,
        'range' => [
          'px' => [
            'min' => 10,
            'max' => 100,
          ],
        ],
        'selectors' => [
          '{{WRAPPER}} .elespare-time-icon' => 'font-size: {{SIZE}}{{UNIT}};',
        ],
        'separator' => 'before',
      ]
    );

     $this->end_controls_section();

   }
      
  

  protected function render(){
    $settings = $this->get_settings_for_display();
    $current_date = $settings['display_date'];
    $current_time = $settings['display_time'];
    $date_icon = $settings['date_icon'];
    $time_icon = $settings['time_icon'];
    $layout_style = $settings['date_time_layout_style'];
    $alignment_class = $settings['_date_time_title_alignment'];
    $order = $settings['date_time_order'];
    $horizontal_vertical= $settings['date_time_horizontal_vertical_style'];
    $date_before_text = $settings['before_date_text'];
    $date_after_text = $settings['after_date_text'];
    $date_time_border_radius = $settings['date_time_bordr_radius'];
    

    $this->add_render_attribute('elespare-date-time-wrap','class',['elespare-date-time-widget',$layout_style,$alignment_class,$order,$horizontal_vertical, $date_time_border_radius]);

    
    if ('yes' == $current_date || 'yes' == $current_time ){
    ?>

    <div <?php  $this->print_render_attribute_string( 'elespare-date-time-wrap' );?>>

    
      <?php if('yes'== $current_date){
        $date_wrap_class="";
        
        if(empty($date_icon['value'])){
          $date_wrap_class.=" elespare-date-without-icon-wrapper";
        }
        ?>

  <div class="elespare-date-time elespare-date-wrapper <?php echo esc_attr($date_wrap_class); ?>">
        
    <?php if(!empty($date_icon['value'])){?> 
      <div class="elespare-icon-wrapper">
        <i class="elespare-date-icon <?php echo esc_attr( $date_icon['value'] ); ?>" aria-hidden="true"></i>
      </div>
      <?php }?>
      <div class="elespare-date">
        <?php if(!empty($date_before_text)){?> 
          <span class="elespare-before-date-text "><?php echo esc_html( $settings['before_date_text'] );?></span>
        <?php }?> 
      
        <span class='elespare-date-text'>
            <?php echo wp_kses_post(date_i18n(get_option('date_format'))); ?>
        </span>
        <?php if(!empty($date_after_text)){?> 
          <span class="elespare-after-date-text"><?php echo esc_html( $settings['after_date_text'] );?></span>
        <?php }?>
    </div>
  </div> 
      <?php } ?> 
    
      
      <?php if('yes'== $current_time){
      $time_wrap_class="";
        
        if(empty($time_icon['value'])){
          $time_wrap_class.=" elespare-time-without-icon-wrapper";
        }

        ?>
        <div class="elespare-date-time elespare-time-wrapper <?php echo esc_attr($time_wrap_class); ?>">
        <?php if(!empty($time_icon['value'])){?> 
          <div class="elespare-icon-wrapper">
            <i class="elespare-time-icon <?php echo esc_attr( $time_icon['value'] ); ?>" aria-hidden="true"></i>
          </div>
      <?php }?>
      <span class='elespare-time-text'>
        <?php  $time = current_time( 'H:i' );
              echo esc_html( $time ); 
              ?>
      </span>
      </div>
      <?php }
    ?>
    
      </div>
      <?php
  }
  }

}