PHP 8.2.31
Preview: review-util.php Size: 13.25 KB
/home/nshryvcy/blissfulnepal.com/wp-content/plugins/tourmaster/tour/include/review-util.php

<?php
	/*	
	*	Utility function for uses
	*/

	// ajax review list
	add_action('wp_ajax_get_single_tour_review', 'tourmaster_get_single_tour_review');
	add_action('wp_ajax_nopriv_get_single_tour_review', 'tourmaster_get_single_tour_review');
	if( !function_exists('tourmaster_get_single_tour_review') ){
		function tourmaster_get_single_tour_review(){

			// sort_by
			// filter_by
			if( !empty($_POST['tour_id']) ){
				$paged = (empty($_POST['paged'])? '1': $_POST['paged']);
				$review_num_fetch = apply_filters('tourmaster_review_num_fetch', 5);
				$review_args = array(
					'review_tour_id' => $_POST['tour_id'], 
					'review_score' => 'IS NOT NULL',
					'order_status' => array(
						'hide-prefix' => true,
						'custom' => ' (order_status IS NULL OR order_status != \'cancel\') '
					)
				);
				$review_settings = array(
					'only-review' => true,
					'num-fetch' => $review_num_fetch,
					'paged' => $paged,
					'orderby' => 'review_date',
					'order' => 'desc'
				);
				if( !empty($_POST['filter_by']) ){
					$review_args['review_type'] = $_POST['filter_by'];
				}

				if( empty($_POST['sort_by']) || $_POST['sort_by'] == 'date' ){
					$review_settings['orderby'] = 'review_date';
				}else if( $_POST['sort_by'] == 'rating' ){
					$review_settings['orderby'] = 'review_score';
				}

				$results = tourmaster_get_booking_data($review_args, $review_settings);
				$max_num_page = intval(tourmaster_get_booking_data($review_args, array('only-review' => true), 'COUNT(*)')) / $review_num_fetch;

				die(json_encode(array(
					'content' => tourmaster_get_review_content_list($results) .
						tourmaster_get_review_content_pagination($max_num_page, $paged)
				)));
			}

			die(json_encode(array()));

		} // tourmaster_get_single_tour_review
	}

	// review content
	if( !function_exists('tourmaster_get_review_content_list') ){
		function tourmaster_get_review_content_list( $query, $editable = false ){
			
			$ret  = '';
			foreach( $query as $result ){
				
				$user_id = '';
				$avatar = '';
				if( !empty($result->user_id) ){
					$user_id = $result->user_id;
					$avatar = get_the_author_meta('tourmaster-user-avatar', $user_id);
				}else if( !empty($result->reviewer_email) ){
					$user_id = $result->reviewer_email;
				}

				$reviewer_name = '';
				if( !empty($result->user_id) ){
					$reviewer_name = tourmaster_get_user_meta($result->user_id);
				}else if( !empty($result->reviewer_name) ){
					$reviewer_name = $result->reviewer_name;
				}

				$ret .= '<div class="tourmaster-single-review-content-item clearfix" >';
				$ret .= '<div class="tourmaster-single-review-user clearfix" >';
				if( !empty($user_id) ){
					$ret .= '<div class="tourmaster-single-review-avatar tourmaster-media-image" >';
					if( !empty($avatar['thumbnail']) ){
						$ret .= '<img src="' . esc_url($avatar['thumbnail']) . '" alt="profile-image" />';
					}else if( !empty($avatar['file_url']) ){
						$ret .= '<img src="' . esc_url($avatar['file_url']) . '" alt="profile-image" />';
					}else{
						$ret .= get_avatar($user_id, 85);
					}
					$ret .= '</div>'; 
				}
				$ret .= '<h4 class="tourmaster-single-review-user-name" >' . $reviewer_name . '</h4>';
				$ret .= '<div class="tourmaster-single-review-user-type" >';
				if( $result->review_type == 'solo' ){
					$ret .= esc_html__('Solo Traveller', 'tourmaster');
				}else if( $result->review_type == 'couple' ){
					$ret .= esc_html__('Couple Traveller', 'tourmaster');
				}else if( $result->review_type == 'family' ){
					$ret .= esc_html__('Family Traveller', 'tourmaster');
				}else if( $result->review_type == 'group' ){
					$ret .= esc_html__('Group Traveller', 'tourmaster');
				}
				$ret .= '</div>'; // tourmaster-single-review-user-type
				$ret .= '</div>'; // tourmaster-single-review-user

				$ret .= '<div class="tourmaster-single-review-detail" >';
				if( !empty($result->review_description) ){
					$ret .= '<div class="tourmaster-single-review-detail-description" >' . tourmaster_content_filter($result->review_description) . '</div>';
				}
				$ret .= '<div class="tourmaster-single-review-detail-rating" >' . tourmaster_get_rating($result->review_score) . '</div>';
				$ret .= '<div class="tourmaster-single-review-detail-date" >' . tourmaster_date_format($result->review_date) . '</div>';
				
				if( $editable ){
					$ret .= '<div class="tourmaster-single-review-editable" >';
					$ret .= '<div class="tourmaster-single-review-edit" data-id="' . esc_attr($result->review_id) . '" ><i class="fa fa-edit" ></i>' . esc_html__('Edit', 'tourmaster') . '</div>';
					$ret .= '<div class="tourmaster-single-review-remove" data-id="' . esc_attr($result->review_id) . '" ><i class="fa fa-remove" ></i>' . esc_html__('Remove', 'tourmaster') . '</div>';
					$ret .= '</div>';
				}
				$ret .= '</div>'; // tourmaster-single-review-detail
				$ret .= '</div>'; // tourmaster-single-review-content-item
			}

			return $ret;
		} // tourmaster_get_review_content_list
	}
	if( !function_exists('tourmaster_get_review_content_pagination') ){
		function tourmaster_get_review_content_pagination( $max_num_page, $current_page = 1 ){

			$ret = '';
			if( !empty($max_num_page) && $max_num_page > 1 ){
				$ret .= '<div class="tourmaster-review-content-pagination" >';
				if( $current_page > 1 ){
					$ret .= '<span data-paged="' . esc_attr($current_page-1) . '" ><i class="fa fa-angle-left" ></i></span>';
				}
				for( $i = 1; $i <= $max_num_page; $i++ ){
					if( $i == $current_page ){
						$ret .= '<span class="tourmaster-active" >' . $i . '</span>';
					}else{
						$ret .= '<span data-paged="' . esc_attr($i) . '" >' . $i . '</span>';
					}
				}
				if( $current_page < $max_num_page ){
					$ret .= '<span data-paged="' . esc_attr($current_page+1) . '" ><i class="fa fa-angle-right" ></i></span>';
				}
				$ret .= '</div>';
			}

			return $ret;
		} // tourmaster_get_review_content_pagination
	}

	// review form
	if( !function_exists('tourmaster_get_review_form') ){
		function tourmaster_get_review_form( $query, $is_admin = false, $value = array() ){
			ob_start();
?>

<?php if( $is_admin ){ ?>
<div class="tourmaster-review-form tourmaster-form-field tourmaster-with-border" >
	<?php if( $is_admin === true ){ ?>
		<div class="tourmaster-review-form-name" >
			<span class="tourmaster-head" ><?php echo esc_html__('Reviewer Name', 'tourmaster'); ?></span>
			<input type="text" name="review-name" />
		</div>
		<div class="tourmaster-review-form-email" >	
			<span class="tourmaster-head" ><?php echo esc_html__('Reviewer Email (For Gravatar Profile Picture)', 'tourmaster'); ?></span>
			<input type="text" name="review-email" />
		</div>
	<?php } ?>
<?php }else{ ?> 
<form class="tourmaster-review-form tourmaster-form-field tourmaster-with-border" method="POST" >
	<div class="tourmaster-review-form-title">
		<span class="tourmaster-head" ><?php echo esc_html__('Tour Name :', 'tourmaster'); ?></span>
		<?php echo get_the_title($query->tour_id) ?>
	</div> 	
<?php } ?>
	<div class="tourmaster-review-form-description" >
		<div class="tourmaster-head" ><?php echo esc_html__('What do you say about this tour? *', 'tourmaster'); ?></div>
		<textarea name="description" ><?php echo empty($value['description'])? '': esc_textarea($value['description']); ?></textarea>
	</div>
	<div class="tourmaster-review-form-traveller-type" >
		<div class="tourmaster-head" ><?php echo esc_html__('Which traveller type were you on this tour? *', 'tourmaster'); ?></div>
		<div class="tourmaster-combobox-wrap">
			<select name="traveller-type" >
				<option value="solo" <?php echo (!empty($value['traveller-type']) && $value['traveller-type'] == 'solo')? 'selected': ''; ?> ><?php echo esc_html__('Solo', 'tourmaster'); ?></option>
				<option value="couple" <?php echo (!empty($value['traveller-type']) && $value['traveller-type'] == 'couple')? 'selected': ''; ?> ><?php echo esc_html__('Couple', 'tourmaster'); ?></option>
				<option value="family" <?php echo (!empty($value['traveller-type']) && $value['traveller-type'] == 'family')? 'selected': ''; ?> ><?php echo esc_html__('Family', 'tourmaster'); ?></option>
				<option value="group" <?php echo (!empty($value['traveller-type']) && $value['traveller-type'] == 'group')? 'selected': ''; ?> ><?php echo esc_html__('Group', 'tourmaster'); ?></option>
			</select>
		</div>
	</div>
	<div class="tourmaster-review-form-rating-wrap" >
		<div class="tourmaster-head" ><?php echo esc_html__('Rate this tour *', 'tourmaster'); ?></div>
		<div class="tourmaster-review-form-rating clearfix" >
		<?php
			$rating_value = empty($value['rating'])? 10: intval($value['rating']);

			for( $i = 1; $i <= 10; $i++ ){
				if( $i % 2 == 0 ){
					echo '<span class="tourmaster-rating-select" data-rating-score="' . esc_attr($i) . '" ></span>';
				}else{
					echo '<i class="tourmaster-rating-select ';
					if( $rating_value == $i ){
						echo 'fa fa-star-half-empty';
					}else if( $rating_value > $i ){
						echo 'fa fa-star';
					}else{
						echo 'fa fa-star-o';
					}
					echo '" data-rating-score="' . esc_attr($i) . '" ></i>';
				}
			}

			echo '<input type="hidden" name="rating" value="' . esc_attr($rating_value) . '" />';
		?>
		</div>
	</div>
<?php if( $is_admin ){ ?>	
	<div class="tourmaster-review-form-date" >	
		<span class="tourmaster-head" ><?php echo esc_html__('Published Date', 'tourmaster'); ?></span>
		<input type="text" class="tourmaster-html-option-datepicker" name="review-published-date" value="<?php
			if( !empty($value['published-date']) ){
				echo esc_attr(date('Y-m-d', strtotime($value['published-date'])));
			}
		?>" />
		<?php if( $is_admin === true ){ ?>
			<input type="hidden" name="review_action" value="tourmaster_admin_add_review" />
			<input type="hidden" name="tour_id" value="<?php echo esc_attr(get_the_ID()); ?>" />
		<?php }else{ ?>
			<input type="hidden" name="review_action" value="tourmaster_admin_edit_review" />
			<input type="hidden" name="review_id" value="<?php echo esc_attr($value['review-id']); ?>" />
		<?php } ?>
	</div>
	<input class="tourmaster-button tourmaster-submit-review" data-ajax-url="<?php echo esc_attr(TOURMASTER_AJAX_URL); ?>" type="button" value="<?php echo esc_html__('Submit Review', 'tourmaster'); ?>" />
</div>
<?php }else{ ?>
	<input type="hidden" name="review_id" value="<?php echo esc_attr($query->id); ?>" />
	<input type="hidden" name="tour_id" value="<?php echo esc_attr($query->tour_id); ?>" />
	<input class="tourmaster-button" type="submit" value="<?php echo esc_html__('Submit Review', 'tourmaster'); ?>" />
</form>
<?php }
			$ret = ob_get_contents();
			ob_end_clean();

			return $ret;
		}
	}
	if( !function_exists('tourmaster_get_submitted_review') ){
		function tourmaster_get_submitted_review( $query ){
			ob_start();
?>
<div class="tourmaster-review-form" >
	<div class="tourmaster-review-form-title">
		<span class="tourmaster-head" ><?php echo esc_html__('Tour Name :', 'tourmaster'); ?></span>
		<?php echo get_the_title($query->tour_id) ?>
	</div> 	
	<?php if( !empty($query->review_description) ){ ?>
		<div class="tourmaster-review-form-description" >
			<div class="tourmaster-head" ><?php echo esc_html__('What do you say about this tour? *', 'tourmaster'); ?></div>
			<div class="tourmaster-tail"><?php echo tourmaster_content_filter($query->review_description); ?></div>
		</div>
	<?php } ?>
	<?php if( !empty($query->review_type) ){ ?>
		<div class="tourmaster-review-form-description" >
			<div class="tourmaster-head" ><?php echo esc_html__('Which traveller type were you on this tour? *', 'tourmaster'); ?></div>
			<div class="tourmaster-tail"><?php 
				switch($query->review_type){
					case 'solo': echo esc_html__('Solo', 'tourmaster'); break;
					case 'couple': echo esc_html__('Couple', 'tourmaster'); break;
					case 'family': echo esc_html__('Family', 'tourmaster'); break;
					case 'group': echo esc_html__('Group', 'tourmaster'); break;
				}
			?></div>
		</div>
	<?php } ?>
	<?php if( !empty($query->review_score) ){ ?>
		<div class="tourmaster-review-form-rating-wrap" >
			<div class="tourmaster-head" ><?php echo esc_html__('Rate this tour *', 'tourmaster'); ?></div>
			<div class="tourmaster-review-form-rating clearfix" >	
			<?php
				$score = intval($query->review_score);
				echo tourmaster_get_rating($score);
			?>
			</div>
		</div>
	<?php } ?>
</div>
<?php			
			$ret = ob_get_contents();
			ob_end_clean();

			return $ret;
		}
	} // tourmaster_get_submitted_review

	if( !function_exists('tourmaster_update_review_score') ){
		function tourmaster_update_review_score( $tour_id ){

			$results = tourmaster_get_booking_data(array(
		    	'review_tour_id' => $tour_id,
		    	'review_score' => 'IS NOT NULL',
				'order_status' => array(
					'hide-prefix' => true,
					'custom' => ' (order_status IS NULL OR order_status != \'cancel\') '
				)
		    ), array('only-review' => true), 'review_score');

		    $review_score = 0;
		    $review_number = 0;
		    foreach( $results as $result ){
		    	if( $result->review_score != '' ){
		    		$review_score += $result->review_score;
		    		$review_number++;
		    	}
		    }

		    update_post_meta($tour_id, 'tourmaster-tour-rating', array(
		    	'score' => $review_score,
		    	'reviewer' => $review_number
		    ));

		    if( $review_number > 0 ){
		    	update_post_meta($tour_id, 'tourmaster-tour-rating-score', $review_score / $review_number);
		    }else{
		    	delete_post_meta($tour_id, 'tourmaster-tour-rating-score');
		    }

		} // tourmaster_update_review_score
	}

Directory Contents

Dirs: 2 × Files: 10

Name Size Perms Modified Actions
pb DIR
- drwxr-xr-x 2024-05-28 15:48:43
Edit Download
widget DIR
- drwxr-xr-x 2024-05-28 15:48:43
Edit Download
28.92 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
39.89 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
116.90 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
13.25 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
5.40 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
3.81 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
144.66 KB lrw-r--r-- 2024-06-14 07:31:15
Edit Download
5.00 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
89.81 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download
7.32 KB lrw-r--r-- 2024-05-28 15:48:43
Edit Download

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