PHP 8.2.31
Preview: tour-item.php Size: 21.79 KB
/home/nshryvcy/blissfulnepal.com/wp-content/plugins/tourmaster/tour/include/pb/tour-item.php

<?php
	/*	
	*	Goodlayers Tour Item
	*/
	
	if( !class_exists('tourmaster_tour_item') ){
		class tourmaster_tour_item{
			
			var $settings = '';
			
			// init the variable
			function __construct( $settings = array() ){
				
				$this->settings = wp_parse_args($settings, array(
					'category' => '', 
					'tag' => '', 
					'num-fetch' => '9', 
					'layout' => 'fitrows',
					'thumbnail-size' => 'full', 
					'orderby' => 'date', 
					'order' => 'desc',
					'tour-style' => 'full', 
					'hover' => 'title-icon', 
					'hover-info' => array('title','icon'), 
					'has-column' => 'no',
					'no-space' => 'no',
					'excerpt' => 'specify-number', 
					'excerpt-number' => 55, 
					'column-size' => 60,
					'filterer' => 'none',
					'filterer-align' => 'center',
					'pagination' => 'none',
					'custom-pagination' => false
				));
				
			}
			
			// get the content of the tour item
			function get_content(){
				
				if( function_exists('gdlr_core_set_container_multiplier') && !empty($this->settings['column-size']) ){
					gdlr_core_set_container_multiplier(intval($this->settings['column-size']) / 60, false);
				}

				$ret = '';
				if( !empty($this->settings['query']) ){
					$query = $this->settings['query'];
				}else{
					$query = $this->get_tour_query();
				}

				// carousel style
				if( $this->settings['layout'] == 'carousel' ){
					$slides = array();
					$column_no = 60 / intval($this->settings['column-size']);

					$flex_atts = array(
						'carousel' => true,
						'column' => $column_no,
						'move' => empty($this->settings['carousel-scrolling-item-amount'])? '': $this->settings['carousel-scrolling-item-amount'],
						'navigation' => empty($this->settings['carousel-navigation'])? 'navigation': $this->settings['carousel-navigation'],
						'navigation-align' => empty($this->settings['carousel-navigation-align'])? '': $this->settings['carousel-navigation-align'],
						'navigation-size' => empty($this->settings['carousel-navigation-size'])? '': $this->settings['carousel-navigation-size'],
						'navigation-icon-color' => empty($this->settings['carousel-navigation-icon-color'])? '': $this->settings['carousel-navigation-icon-color'],
						'navigation-icon-background' => empty($this->settings['carousel-navigation-icon-bg'])? '': $this->settings['carousel-navigation-icon-bg'],
						'navigation-icon-padding' => empty($this->settings['carousel-navigation-icon-padding'])? '': $this->settings['carousel-navigation-icon-padding'],
						'navigation-icon-radius' => empty($this->settings['carousel-navigation-icon-radius'])? '': $this->settings['carousel-navigation-icon-radius'],
						'navigation-margin' => empty($this->settings['carousel-navigation-margin'])? '': $this->settings['carousel-navigation-margin'],
						'navigation-side-margin' => empty($this->settings['carousel-navigation-side-margin'])? '': $this->settings['carousel-navigation-side-margin'],
						'navigation-icon-margin' => empty($this->settings['carousel-navigation-icon-margin'])? '': $this->settings['carousel-navigation-icon-margin'],
						'navigation-left-icon' => empty($this->settings['carousel-navigation-left-icon'])? '': $this->settings['carousel-navigation-left-icon'],
						'navigation-right-icon' => empty($this->settings['carousel-navigation-right-icon'])? '': $this->settings['carousel-navigation-right-icon'],
						'bullet-style' => empty($this->settings['carousel-bullet-style'])? '': $this->settings['carousel-bullet-style'],
						'controls-top-margin' => empty($this->settings['carousel-bullet-top-margin'])? '': $this->settings['carousel-bullet-top-margin'],
						'nav-parent' => 'tourmaster-tour-item',
						'disable-autoslide' => (empty($this->settings['carousel-autoslide']) || $this->settings['carousel-autoslide'] == 'enable')? '': true,
						'mglr' => (($this->settings['no-space'] == 'yes')? false: true),
					);

					if( in_array($flex_atts['navigation'], array('navigation', 'both')) && empty($this->settings['title']) && empty($this->settings['caption']) ){
						$flex_atts['vcenter-nav'] = true;
						$flex_atts['additional-class'] = 'tourmaster-nav-style-rect';
					}else if( $flex_atts['navigation'] == 'navigation-outer' && empty($flex_atts['navigation-left-icon']) && empty($flex_atts['navigation-right-icon']) ){
						$flex_atts['navigation-old'] = true;
					}

					$tour_style = new tourmaster_tour_style();

					tourmaster_setup_admin_postdata();
					while($query->have_posts()){ $query->the_post();
						$slides[] = $tour_style->get_content( $this->settings );
					} // while
					wp_reset_postdata();
					tourmaster_reset_admin_postdata();
					
					$ret .= tourmaster_get_flexslider($slides, $flex_atts);

				// fitrows style
				}else{
					
					// filterer
					if( $this->settings['filterer'] != 'none' ){
						$extra_class  = ($this->settings['no-space'] == 'yes')? '': ' tourmaster-item-pdlr';
						$extra_class .= empty($this->settings['filterer'])? '': ' gdlr-core-style-' . $this->settings['filterer'];
						$extra_class .= empty($this->settings['filterer-align'])? '': ' gdlr-core-' . $this->settings['filterer-align'] . '-align';
						
						$ajax_settings =  $this->settings;
						unset($ajax_settings['query']);
						$ret .= tourmaster_get_ajax_filterer('tour', 'tour_category', $ajax_settings, 'tourmaster-tour-item-holder', $extra_class);
					}

					// order filterer
					if( !empty($this->settings['enable-order-filterer']) && $this->settings['enable-order-filterer'] == 'enable' ){
						$ret .= $this->get_tour_order_filterer();
					}

					// tour item
					tourmaster_setup_admin_postdata();
					$ret .= '<div class="tourmaster-tour-item-holder gdlr-core-js-2 clearfix" data-layout="' . $this->settings['layout'] . '" >';
					$ret .= $this->get_tour_grid_content($query);
					$ret .= '</div>';
					wp_reset_postdata();
					tourmaster_reset_admin_postdata();

					// pagination
					if( $this->settings['pagination'] != 'none' ){
						$extra_class = ($this->settings['no-space'] == 'yes')? '': 'tourmaster-item-pdlr';

						if( $this->settings['pagination'] == 'page' ){
							if( (!empty($this->settings['enable-order-filterer']) && $this->settings['enable-order-filterer'] == 'enable') ||
								(!empty($this->settings['filterer']) && $this->settings['filterer'] != 'none') ){
								
								$ajax_settings =  $this->settings;
								unset($ajax_settings['query']);
								$ret .= tourmaster_get_ajax_pagination('tour', $ajax_settings, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
							}else{
								$ret .= tourmaster_get_pagination($query->max_num_pages, $this->settings, $extra_class);
							}
						}else if( $this->settings['pagination'] ){
							$paged = empty($query->query['paged'])? 2: intval($query->query['paged']) + 1;
							
							$ajax_settings =  $this->settings;
							unset($ajax_settings['query']);
							$ret .= tourmaster_get_ajax_load_more('tour', $ajax_settings, $paged, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
						}
					}
				}

				if( function_exists('gdlr_core_set_container_multiplier') ){
					gdlr_core_set_container_multiplier(1, false);
				}

				return $ret;
			}

			// get content of non carousel tour item
			function get_tour_grid_content( $query ){

				$ret = '';
				$column_sum = 0;
				$tour_style = new tourmaster_tour_style();
				while($query->have_posts()){ $query->the_post();

					$args = $this->settings;

					if( $this->settings['has-column'] != 'no' ){
						$additional_class  = ($this->settings['no-space'] == 'yes')? '': ' tourmaster-item-pdlr';
						$additional_class .= in_array($this->settings['tour-style'], array('modern', 'modern-desc', 'metro'))? ' tourmaster-item-mgb': '';
						if( !empty($this->settings['column-size']) ){
							$additional_class .= ' tourmaster-column-' . $this->settings['column-size'];
						}

						if( $column_sum == 0 || $column_sum + intval($this->settings['column-size']) > 60 ){
							$column_sum = intval($this->settings['column-size']);
							$additional_class .= ' tourmaster-column-first';
						}else{
							$column_sum += intval($this->settings['column-size']);
						}

						$ret .= '<div class="gdlr-core-item-list ' . esc_attr($additional_class) . '" >';
					}

					$ret .= $tour_style->get_content( $args );
					
					if( $this->settings['has-column'] != 'no' ){
						$ret .= '</div>';
					}
				} // while
				
				return $ret;
			}
			
			// query the post
			function get_tour_query(){
				
				$args = array( 'post_type' => 'tour', 'post_status' => 'publish', 'suppress_filters' => false );

				if( empty($this->settings['exclude-self']) || $this->settings['exclude-self'] == 'enable' ){
					$post_id = get_the_ID();
					if( get_post_type() == 'tour' && !empty($post_id) ){
						$args['post__not_in'] = array($post_id);
					}
				}

				// apply search variable
				if( !empty($this->settings['s']) ){
					$args['s'] = $this->settings['s'];
				} 

				if( !empty($this->settings['meta_query']) ){
					$args['meta_query'] = $this->settings['meta_query'];
				}else{
					$args['meta_query'] = array();

					// discounted tour
					if( !empty($this->settings['discount-status']) && $this->settings['discount-status'] == 'discount' ){
						$args['meta_query'][] = array(
							'key' => 'tourmaster-tour-discount',
							'value' => 'true'
						);
					}

					// hide unavailable tour
					if( !empty($this->settings['hide-not-avail']) && $this->settings['hide-not-avail'] == 'enable' ){
						$args['meta_query'][] = array(
							'key' => 'tourmaster-tour-date-avail',
							'compare' => 'EXISTS'
						);
					}
				}
				
				// category - tag selection
				if( !empty($this->settings['tax_query']) ){
					$args['tax_query'] = $this->settings['tax_query'];
				}else{
					$args['tax_query'] = array(
						'relation' => empty($this->settings['relation'])? 'OR': $this->settings['relation']
					);
					
					if( !empty($this->settings['category']) ){
						if( !is_array($this->settings['category']) ){
							$this->settings['category'] = array_map('trim', explode(',', $this->settings['category']));
						}
						array_push($args['tax_query'], array('terms'=>$this->settings['category'], 'taxonomy'=>'tour_category', 'field'=>'slug'));
					}
					if( !empty($this->settings['tag']) ){
						if( !is_array($this->settings['tag']) ){
							$this->settings['tag'] = array_map('trim', explode(',', $this->settings['tag']));
						}
						array_push($args['tax_query'], array('terms'=>$this->settings['tag'], 'taxonomy'=>'tour_tag', 'field'=>'slug'));
					}

					$tax_fields = tourmaster_get_custom_tax_list();
					foreach( $tax_fields as $tax_field => $tax_title ){
						if( !empty($this->settings[$tax_field]) ){
							if( !is_array($this->settings[$tax_field]) ){
								$this->settings[$tax_field] = array_map('trim', explode(',', $this->settings[$tax_field]));
							}
							$args['tax_query'][] = array(
								array('terms'=>$this->settings[$tax_field], 'taxonomy'=>$tax_field, 'field'=>'slug')
							);
						}
					}
				}
				
				// pagination
				if( empty($this->settings['paged']) ){
					if( empty($this->settings['pagination']) || $this->settings['pagination'] != 'none' ){
						$args['paged'] = (get_query_var('paged'))? get_query_var('paged') : get_query_var('page');
					}
					$args['paged'] = empty($args['paged'])? 1: $args['paged'];
				}else{
					$args['paged'] = $this->settings['paged'];
				}
				$this->settings['paged'] = $args['paged'];
				
				// variable
				$args['posts_per_page'] = empty($this->settings['num-fetch'])? 9: $this->settings['num-fetch'];
				$args['order'] = empty($this->settings['order'])? 'desc': $this->settings['order'];

				if( empty($this->settings['orderby']) ){
					$args['orderby'] = 'date';
				}else if( in_array($this->settings['orderby'], array('date', 'title')) ){
					$args['orderby'] = $this->settings['orderby'];
				}else if( $this->settings['orderby'] == 'tour-date' ){
					$args['meta_key'] = 'tourmaster-tour-date-avail';
					$args['meta_type'] = 'CHAR';
					$args['orderby'] = 'tourmaster-tour-date-avail';
				}else if( $this->settings['orderby'] == 'price' ){
					$args['meta_key'] = 'tourmaster-tour-price';
					$args['meta_type'] = 'DECIMAL';
					$args['orderby'] = 'meta_value_num';
				}else if( $this->settings['orderby'] == 'duration' ){
					$args['meta_key'] = 'tourmaster-tour-duration';
					$args['meta_type'] = 'NUMERIC';
					$args['orderby'] = 'meta_value_num';
				}else if( $this->settings['orderby'] == 'popularity' ){
					$args['meta_key'] = 'tourmaster-view-count';
					$args['meta_type'] = 'NUMERIC';
					$args['orderby'] = 'meta_value_num';
				}else if( $this->settings['orderby'] == 'rating' ){
					$args['meta_key'] = 'tourmaster-tour-rating-score';
					$args['meta_type'] = 'NUMERIC';
					$args['orderby'] = 'meta_value_num';
				}else{
					$args['orderby'] = $this->settings['orderby'];
				}

				return new WP_Query( $args );
			}

			// for getting the tour order filterer
			function get_tour_order_filterer(){

				$ajax_settings =  $this->settings;
				unset($ajax_settings['query']);

				$ret  = '<div class="tourmaster-tour-order-filterer-wrap tourmaster-item-mglr clearfix" ';
				$ret .= 'data-tm-ajax="tourmaster_tour_order_ajax" ';
				$ret .= 'data-settings="' . esc_attr(json_encode($ajax_settings)) . '" ';
				$ret .= 'data-target="tourmaster-tour-item-holder" ';
				$ret .= 'data-target-action="replace" ';
				$ret .= 'data-ajax-url="' . esc_attr(TOURMASTER_AJAX_URL) . '" ';
				$ret .= ' >';

				$ret .= '<h3 class="tourmaster-tour-order-filterer-title" >' . esc_html__('Sort by', 'tourmaster') . '</h3>';

				// orderby
				$order_options = array(
					'date' => esc_html__('Release Date', 'tourmaster'),
					'tour-date' => esc_html__('Tour Date', 'tourmaster'),
					'title' => esc_html__('Title', 'tourmaster'),
					'price' => esc_html__('Price', 'tourmaster'),
					'popularity' => esc_html__('Popularity', 'tourmaster'),
					'rating' => esc_html__('Rating', 'tourmaster'),
					'duration' => esc_html__('Duration', 'tourmaster'),
					'max-altitude' => esc_html__('Max Altitude', 'tourmaster'),
					
					
					
					
					
				);
				$ret .= '<div class="tourmaster-combobox-wrap" >';
				$ret .= '<select data-ajax-name="orderby" >';
				foreach( $order_options as $order_slug => $order_title ){
					$ret .= '<option value="' . esc_attr($order_slug) . '" ';
					$ret .= $this->settings['orderby'] == $order_slug? 'selected': '';
					$ret .= ' >' . $order_title . '</option>';
				}
				$ret .= '</select>';
				$ret .= '</div>';

				// order
				$ret .= '<div class="tourmaster-combobox-wrap" >';
				$ret .= '<select data-ajax-name="order" >';
				$ret .= '<option value="asc" ' . ($this->settings['order'] == 'asc'? 'selected': '') . ' >' . esc_html__('Ascending', 'tourmaster') . '</option>';
				$ret .= '<option value="desc" ' . ($this->settings['order'] == 'desc'? 'selected': '') . ' >' . esc_html__('Descending', 'tourmaster') . '</option>';
				$ret .= '</select>';
				$ret .= '</div>';

				// list style
				$ret .= '<span class="tourmaster-tour-order-filterer-style" >';
				if( !empty($this->settings['order-filterer-list-style']) && $this->settings['order-filterer-list-style'] != 'none' ){
					$temp = str_replace('-with-frame', '', $this->settings['order-filterer-list-style']);
					$ret .= '<a href="#" data-ajax-name="item-style" ';
					$ret .= ' class="' . ($temp == $this->settings['tour-style']? 'tourmaster-active': '') . '" ';
					$ret .= ' data-ajax-value="list-style" >';
					if( !empty($this->settings['filter-icon']) && $this->settings['filter-icon'] == 'svg' ){
						$ret .= tourmaster_get_svg('list');
					}else{
						$ret .= '<i class="fa fa-th-list" ></i>';
					}
					$ret .= '</a>';
				}
				if( !empty($this->settings['order-filterer-grid-style']) && $this->settings['order-filterer-grid-style'] != 'none' ){
					$temp = str_replace('-with-frame', '', $this->settings['order-filterer-grid-style']);
					$ret .= '<a href="#" data-ajax-name="item-style" ';
					$ret .= ' class="' . ($temp == $this->settings['tour-style']? 'tourmaster-active': '') . '" ';
					$ret .= ' data-ajax-value="grid-style" >';
					if( !empty($this->settings['filter-icon']) && $this->settings['filter-icon'] == 'svg' ){
						$ret .= tourmaster_get_svg('grid');
					}else{
						$ret .= '<i class="fa fa-th" ></i>';
					}
					$ret .= '</a>';
				}
				$ret .= '</span>';

				$ret .= '</div>';

				return $ret;
			}
			
		} // tourmaster_tour_item
	} // class_exists
	
	add_action('wp_ajax_gdlr_core_tour_order_ajax', 'tourmaster_tour_order_ajax');
	add_action('wp_ajax_nopriv_gdlr_core_tour_order_ajax', 'tourmaster_tour_order_ajax');

	add_action('wp_ajax_tourmaster_tour_order_ajax', 'tourmaster_tour_order_ajax');
	add_action('wp_ajax_nopriv_tourmaster_tour_order_ajax', 'tourmaster_tour_order_ajax');

	if( !function_exists('tourmaster_tour_order_ajax') ){
		function tourmaster_tour_order_ajax(){

			if( !empty($_POST['settings']) ){

				$settings = $_POST['settings'];
				if( !empty($_POST['option']['name']) && !empty($_POST['option']['value']) ){	
					if( $_POST['option']['name'] == 'orderby' ){ 
						$settings['orderby'] = $_POST['option']['value'];
					}else if( $_POST['option']['name'] == 'order' ){
						$settings['order'] = $_POST['option']['value'];
					}else if( $_POST['option']['name'] == 'item-style' ){

						if( $_POST['option']['value'] == 'list-style' ){
							$settings['tour-style'] = $settings['order-filterer-list-style'];
							$settings['thumbnail-size'] = empty($settings['order-filterer-list-style-thumbnail'])? 'full': $settings['order-filterer-list-style-thumbnail'];
						}else if( $_POST['option']['value'] == 'grid-style' ){
							$settings['tour-style'] = $settings['order-filterer-grid-style'];
							$settings['thumbnail-size'] = empty($settings['order-filterer-grid-style-thumbnail'])? 'full': $settings['order-filterer-grid-style-thumbnail'];
						}

						if( strpos($settings['tour-style'], 'with-frame') !== false ){
							$settings['with-frame'] = 'enable';
							$settings['tour-style'] = str_replace('-with-frame', '', $settings['tour-style']);
						}else{
							$settings['with-frame'] = 'disable';
						}

						$settings['no-space'] = (strpos($settings['tour-style'], 'no-space') !== false)? 'yes': 'no';
						$settings['layout'] = empty($settings['layout'])? 'fitrows': $settings['layout'];
						if( in_array($settings['tour-style'], array('modern', 'modern-no-space', 'grid', 'grid-no-space')) ){
							$settings['has-column'] = 'yes';
							$settings['column-size'] = $settings['column-size-temp'];
						}else{
							$settings['has-column'] = 'no';
							$settings['column-size'] = 60;
							$settings['layout'] = 'fitrows';
						}
					}

					$settings['paged'] = 1;
				}

				$tour_item = new tourmaster_tour_item($settings);
				$query = $tour_item->get_tour_query();

				$ret = array(
					'status'=> 'success',
					'content'=> $tour_item->get_tour_grid_content($query),
					'settings'=> $settings
				);
				if( !empty($settings['pagination']) && $settings['pagination'] != 'none' ){
					$extra_class = ($settings['no-space'] == 'yes')? '': 'tourmaster-item-pdlr';

					if( $settings['pagination'] == 'load-more' ){
						$paged = empty($query->query['paged'])? 2: intval($query->query['paged']) + 1;
						$ret['load_more'] = tourmaster_get_ajax_load_more('tour', $settings, $paged, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
						$ret['load_more'] = empty($ret['load_more'])? 'none': $ret['load_more'];
					}else{
						$ret['pagination'] = tourmaster_get_ajax_pagination('tour', $settings, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
						$ret['pagination'] = empty($ret['pagination'])? 'none': $ret['pagination'];
					}

				} 

				die(json_encode($ret));
			}else{
				die(json_encode(array(
					'status'=> 'failed',
					'message'=> esc_html__('Settings variable is not defined.', 'tourmaster')
				)));
			}

		} // tourmaster_tour_ajax
	} // function_exists
	
	add_action('wp_ajax_gdlr_core_tour_ajax', 'tourmaster_tour_ajax');
	add_action('wp_ajax_nopriv_gdlr_core_tour_ajax', 'tourmaster_tour_ajax');

	add_action('wp_ajax_tourmaster_tour_ajax', 'tourmaster_tour_ajax');
	add_action('wp_ajax_nopriv_tourmaster_tour_ajax', 'tourmaster_tour_ajax');
	
	if( !function_exists('tourmaster_tour_ajax') ){
		function tourmaster_tour_ajax(){

			if( !empty($_POST['settings']) ){

				$settings = $_POST['settings'];
				if( !empty($_POST['option']['name']) && !empty($_POST['option']['value']) ){	
					if( in_array($_POST['option']['name'], array('paged', 'category')) ){ 
						$settings[$_POST['option']['name']] = $_POST['option']['value'];

						if( $_POST['option']['name'] == 'category' ){
							$settings['paged'] = 1;
						}
					}
				}else{
					$settings['paged'] = 1;
				}

				$tour_item = new tourmaster_tour_item($settings);
				$query = $tour_item->get_tour_query();

				$ret = array(
					'status'=> 'success',
					'content'=> $tour_item->get_tour_grid_content($query)
				);
				if( !empty($settings['pagination']) && $settings['pagination'] != 'none' ){

					$extra_class = ($settings['no-space'] == 'yes')? '': 'tourmaster-item-pdlr';

					// always change the load more button
					if( $settings['pagination'] == 'load-more' ){
						$paged = empty($query->query['paged'])? 2: intval($query->query['paged']) + 1;
						$ret['load_more'] = tourmaster_get_ajax_load_more('tour', $settings, $paged, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
						$ret['load_more'] = empty($ret['load_more'])? 'none': $ret['load_more'];

					// change pagination on category filter
					}else{
						$ret['pagination'] = tourmaster_get_ajax_pagination('tour', $settings, $query->max_num_pages, 'tourmaster-tour-item-holder', $extra_class);
						$ret['pagination'] = empty($ret['pagination'])? 'none': $ret['pagination'];
					}
				} 

				die(json_encode($ret));
			}else{
				die(json_encode(array(
					'status'=> 'failed',
					'message'=> esc_html__('Settings variable is not defined.', 'tourmaster')
				)));
			}

		} // tourmaster_tour_ajax
	} // function_exists
	
	
	
	
	
	
	

Directory Contents

Dirs: 0 × Files: 8

Name Size Perms Modified Actions
8.25 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
32.12 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
4.60 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
28.22 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
7.25 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
31.81 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
21.79 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
38.32 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).