Viewing File: /home/maglabs/riadlooma2/wp-content/themes/homey/framework/functions/calendar.php

<?php
if(!function_exists('homeyAvailabilityCalendar')) {
	function homeyAvailabilityCalendar($show_cross_btn = 1) {

		$numberOfMonths = 1;
		$timeNow  = current_time( 'timestamp' );
	    $now = date('Y-m-d');
	    $date = new DateTime();
	    
	    $currentMonth = gmdate('m', $timeNow);
	    $currentYear  = gmdate('Y', $timeNow);             
	    $unixMonth = mktime(0, 0 , 0, $currentMonth, 1, $currentYear);

        if($show_cross_btn == 1) {
            echo "<div style='position: absolute; right: 10px; top: 10px;' class='pull-right' id='calendar-cross-btn'><i id='calendar-cross-btn-i' class='homey-icon homey-icon-close'></i></div>";
        }

        while( $numberOfMonths <= homey_calendar_months() ) {
         	
         	homeyGenerateMonth( $numberOfMonths, $unixMonth, $currentMonth, $currentYear );
          
            $date->modify( 'first day of next month' );
            $currentMonth = $date->format( 'm' );
            $currentYear  = $date->format( 'Y' );
            $unixMonth = mktime(0, 0 , 0, $currentMonth, 1, $currentYear);

            $numberOfMonths++;
        }
	    
	}
}

if(!function_exists('homeyDaysInMonth')) {
	function homeyDaysInMonth($month = null, $year = null) {
	     
	    $timeNow  = current_time( 'timestamp' );    
	    if(null == ($year)) {
	        $year = gmdate('Y', $timeNow);
	    }

	    if(null == ($month)){
	        $month = gmdate('m', $timeNow);
	    }

	    $unixMonth = mktime(0, 0 , 0, $month, 1, $year);
	         
	    return date('t', $unixMonth);;
	}
}

if(!function_exists('homeyGenerateMonth')) {
	function homeyGenerateMonth( $numberOfMonths, $unixMonth, $currentMonth, $currentYear ) {
		global $wpdb, $post, $wp_locale;

		$bookedDays  = get_post_meta($post->ID, 'reservation_dates',true  ); 
		$pending_dates  = get_post_meta($post->ID, 'reservation_pending_dates',true  );
		$unavailable_dates  = get_post_meta($post->ID, 'reservation_unavailable',true  );

        $booking_type = homey_booking_type_by_id($post->ID);

        if(empty($bookedDays)) {
			$bookedDays = array();
		}

		if(empty($pending_dates)) {
			$pending_dates = array(); 
		}

		if(empty($unavailable_dates)) {
			$unavailable_dates = array(); 
		}
        

		$daysInMonth = homeyDaysInMonth($currentMonth, $currentYear);
        $weekBegins = intval(1);
        $weekArray = array();
        $weekDays = '';
        $monthDays = '';
        $weekDayInitial = true;
        $prevMonthDays = '';
        $calendar_day_class = '';
        $resv_class = '';
        //$resv_start = '';
        $resv_start=1;
        $resv_end = '';


		if( $numberOfMonths % 2 == 1 ) {
			$main_class = 'left-calendar';
		} else {
			$main_class = 'right-calendar';
		}

		$style = "";
        if( $numberOfMonths > 2 ) {
            $style = 'style="display:none;"';
        }

		for ( $wCount = 0; $wCount <= 6; $wCount++ ) {
			$weekArray[] = $wp_locale->get_weekday(($wCount + $weekBegins)%7);
		}

		foreach ( $weekArray as $weekDay ) {
			$dayName = (true == $weekDayInitial) ? $wp_locale->get_weekday_initial($weekDay) : $wp_locale->get_weekday_abbrev($weekDay);
			$weekDays .= '<li data-dayName = "'.esc_attr($weekDay).'">'.esc_attr($dayName).'</li>';
		}


		$weekMod = calendar_week_mod(date('w', $unixMonth) - $weekBegins); // Get number of days since the start of the week.
		if( $weekMod != 0 ) {
			for( $wm = 1; $wm <= $weekMod; $wm++ ) {
				$prevMonthDays .= '<li class="prev-month"></li>';
			}
		}

		for ( $day = 1; $day <= $daysInMonth; ++$day ) {
			$timestamp = strtotime( $day.'-'.$currentMonth.'-'.$currentYear);

			$dayClass = '';
			$resv_class='';


            // to check if the date is passed
            if( $timestamp < (time()-24*60*60) ) {
                $dayClass = "day-disabled past-day";
            }

            if(array_key_exists($timestamp, $unavailable_dates) && array_key_exists($timestamp, $bookedDays)) {
                unset($unavailable_dates[$timestamp]);
            }

            if(array_key_exists($timestamp, $unavailable_dates)) {
                $calendar_day_class = 'day-unavailable homey-not-available-for-booking';

                $resv_end=0;
                if($resv_start == 1 && $booking_type != 'per_month'){
                    $resv_class  = '';
                    $resv_start  = 0;
                }

            } elseif( array_key_exists($timestamp, $pending_dates) ) {
            	$calendar_day_class = 'day-pending homey-not-available-for-booking';
            	$resv_end=1;
                if($resv_start == 1  && $booking_type != 'per_month'){
                    $resv_class  = 'reservation_start';
                    $resv_start  = 0;
                }

            }  elseif( array_key_exists($timestamp, $bookedDays) ) {
                $calendar_day_class = 'day-booked homey-not-available-for-booking';
                $resv_end=1;
                if($resv_start == 1  && $booking_type != 'per_month'){
                    $resv_class  = 'reservation_start';
                    $resv_start  = 0;
                }

            } elseif(array_key_exists($timestamp, $unavailable_dates)) {
            	$calendar_day_class = 'day-unavailable homey-not-available-for-booking';
            } else {
                if( $timestamp < (time()-24*60*60) ) {
                    $dayClass = "day-disabled past-day";
                } else {
                    $dayClass = "future-day";
                    $calendar_day_class = 'day-available';
                }

				$resv_start=1;
                if($resv_end===1){
                    $resv_class=' reservation_end ';
                    $resv_end=0;
                }
            }

            $dateTimeStamp  = new DateTime($currentYear.'-'.$currentMonth.'-'.$day);
        	$dateTimeStamp = $dateTimeStamp->getTimestamp();

        	$homey_get_formatted_date = homey_get_formatted_date($currentYear, $currentMonth, $day);

            if ( $day == gmdate('j', current_time('timestamp')) && $currentMonth == gmdate('m', current_time('timestamp')) && $currentYear == gmdate('Y', current_time('timestamp')) ) {

            	$monthDays .= '<li data-timestamp="'.esc_attr($dateTimeStamp).'" data-formatted-date="'.$homey_get_formatted_date.'" class="current-month current-day '.esc_attr($resv_class).' '.esc_attr($calendar_day_class).' '.esc_attr($dayClass).'"><span class="day-number">'.esc_attr($day).'</span></li>';
            } else {
 
	            $monthDays .= '<li data-timestamp="'.esc_attr($dateTimeStamp).'" data-formatted-date="'.$homey_get_formatted_date.'" class="current-month '.esc_attr($resv_class).' '.esc_attr($calendar_day_class).' '.esc_attr($dayClass).'">
	            	<span class="day-number">'.esc_attr($day).'</span>
	            </li>';
	        }
            
		}

        $output = '<div class="single-listing-calendar-wrap '.esc_attr($main_class).'" data-month = "'.esc_attr($numberOfMonths).'" '.$style.'>';

        	$output .= '<div class="month clearfix">';
            	$output .= '<h4>'.date_i18n("F", mktime(0, 0, 0, $currentMonth, 10)).' <span>'.esc_attr($currentYear).'</span></h4>';
            $output .= '</div>';


            $output .= '<ul class="weekdays clearfix">';
                $output .= $weekDays;
            $output .= '</ul>';

            $output .= '<ul class="days clearfix">';
            	$output .= $prevMonthDays;

            	$output .= $monthDays;

            $output .= '</ul>';


        $output .= '</div>'; // end main div    

        echo ''.$output;

	} //homeyGenerateMonth
} // function_exists

//experiences calendar
if(!function_exists('expAvailabilityCalendar')) {
    function expAvailabilityCalendar($show_cross_btn = 1) {

        $numberOfMonths = 1;
        $timeNow  = current_time( 'timestamp' );
        $now = date('Y-m-d');
        $date = new DateTime();

        $currentMonth = gmdate('m', $timeNow);
        $currentYear  = gmdate('Y', $timeNow);
        $unixMonth = mktime(0, 0 , 0, $currentMonth, 1, $currentYear);

        if($show_cross_btn == 1){
            echo "<div style='position: absolute; right: 10px; top: 10px;' class='pull-right' id='calendar-cross-btn'><i id='calendar-cross-btn-i' class='homey-icon homey-icon-close'></i></div>";
        }

        while( $numberOfMonths <= homey_calendar_months() ) {

            expGenerateMonth( $numberOfMonths, $unixMonth, $currentMonth, $currentYear );

            $date->modify( 'first day of next month' );
            $currentMonth = $date->format( 'm' );
            $currentYear  = $date->format( 'Y' );
            $unixMonth = mktime(0, 0 , 0, $currentMonth, 1, $currentYear);

            $numberOfMonths++;
        }

    }
}

if(!function_exists('expDaysInMonth')) {
    function expDaysInMonth($month = null, $year = null) {

        $timeNow  = current_time( 'timestamp' );
        if(null == ($year)) {
            $year = gmdate('Y', $timeNow);
        }

        if(null == ($month)){
            $month = gmdate('m', $timeNow);
        }

        $unixMonth = mktime(0, 0 , 0, $month, 1, $year);

        return date('t', $unixMonth);;
    }
}

if(!function_exists('expGenerateMonth')) {
    function expGenerateMonth( $numberOfMonths, $unixMonth, $currentMonth, $currentYear ) {
        global $wpdb, $post, $wp_locale;

        $bookedDays  = get_post_meta($post->ID, 'reservation_dates',true  );
        $pending_dates  = get_post_meta($post->ID, 'reservation_pending_dates',true  );
//echo '<pre>all meta';print_r(get_post_meta(($post->ID));
        if(empty($bookedDays)) {
            $bookedDays = array();
        }

        if(empty($pending_dates)) {
            $pending_dates = array();
        }


        $daysInMonth = expDaysInMonth($currentMonth, $currentYear);
        $weekBegins = intval(1);
        $weekArray = array();
        $weekDays = '';
        $monthDays = '';
        $weekDayInitial = true;
        $prevMonthDays = '';
        $calendar_day_class = '';
        $resv_class = '';
        $resv_start = '';
        $resv_end = '';
        $total_no_of_attendee = get_post_meta($post->ID, 'homey_total_guests_plus_additional_guests', true );

        $main_class = 'experience-calendar';

        $style = "";
        if( $numberOfMonths > 1 ) {
            $style = 'style="display:none;"';
        }

        for ( $wCount = 0; $wCount <= 6; $wCount++ ) {
            $weekArray[] = $wp_locale->get_weekday(($wCount + $weekBegins)%7);
        }

        foreach ( $weekArray as $weekDay ) {
            $dayName = (true == $weekDayInitial) ? $wp_locale->get_weekday_initial($weekDay) : $wp_locale->get_weekday_abbrev($weekDay);
            $weekDays .= '<li data-dayName = "'.esc_attr($weekDay).'">'.esc_attr($dayName).'</li>';
        }

        $weekMod = calendar_week_mod(date('w', $unixMonth) - $weekBegins); // Get number of days since the start of the week.
        if( $weekMod != 0 ) {
            for( $wm = 1; $wm <= $weekMod; $wm++ ) {
                $prevMonthDays .= '<li class="prev-month"></li>';
            }
        }

        for ( $day = 1; $day <= $daysInMonth; ++$day ) {
            $timestamp = strtotime( $day.'-'.$currentMonth.'-'.$currentYear);

            $dayClass = '';
            $resv_class='';

            // to check if the date is passed
            if( $timestamp < (time()-24*60*60) ) {
                $dayClass = "day-disabled past-day";
            }

            $remaining_no_of_attendee = $total_no_of_attendee;

            if( $timestamp < (time()-24*60*60) ) {
                $dayClass = "day-disabled past-day";
            } else {
                // check if any slot is open?
                if( array_key_exists($timestamp, $bookedDays) || array_key_exists($timestamp, $pending_dates) ) {
                    $remaining_no_of_attendee = remainingAttendeeSlots($total_no_of_attendee, $timestamp, $bookedDays, $pending_dates);
                }

                $dayClass = "future-day";
            }

            if( array_key_exists($timestamp, $bookedDays) && $remaining_no_of_attendee < 1 ) {
                $calendar_day_class = 'day-booked homey-not-available-for-booking';
                $resv_end=1;
                if($resv_start == 1){
                    $resv_class  = '';
                    $resv_start  = 0;
                }

            } elseif( array_key_exists($timestamp, $pending_dates) && $remaining_no_of_attendee < 1) {
                $calendar_day_class = 'day-pending homey-not-available-for-booking';
                $resv_end=1;
                if($resv_start == 1){
                    $resv_class  = '';
                    $resv_start  = 0;
                }

            } else {
                $calendar_day_class = 'day-available';
                $resv_start=1;
                if($resv_end===1){
                    $resv_class='';
                    $resv_end=0;
                }
            }

            $dateTimeStamp  = new DateTime($currentYear.'-'.$currentMonth.'-'.$day);
            $dateTimeStamp = $dateTimeStamp->getTimestamp();

            $homey_get_formatted_date = homey_get_formatted_date($currentYear, $currentMonth, $day);

            if ( $day == gmdate('j', current_time('timestamp')) && $currentMonth == gmdate('m', current_time('timestamp')) && $currentYear == gmdate('Y', current_time('timestamp')) ) {

                $monthDays .= '<li data-available-slots-info="'.esc_html__('Available number of slots:', 'homey')." ".$remaining_no_of_attendee.'" data-timestamp="'.esc_attr($dateTimeStamp).'" data-formatted-date="'.$homey_get_formatted_date.'" class="current-month current-day exp-calendar '.esc_attr($resv_class).' '.esc_attr($calendar_day_class).' '.esc_attr($dayClass).'"><span class="day-number">'.esc_attr($day).'</span></li>';
            } else {

                $monthDays .= '<li data-available-slots-info="'.esc_html__('Available number of slots:', 'homey')." ".$remaining_no_of_attendee.'" data-timestamp="'.esc_attr($dateTimeStamp).'" data-formatted-date="'.$homey_get_formatted_date.'" class="current-month exp-calendar '.esc_attr($resv_class).' '.esc_attr($calendar_day_class).' '.esc_attr($dayClass).'">
	            	<span class="day-number">'.esc_attr($day).'</span>
	            </li>';
            }

        }

        $output = '<div class="single-experience-calendar-wrap '.esc_attr($main_class).'" data-month = "'.esc_attr($numberOfMonths).'" '.$style.'>';

        $output .= '<div class="month clearfix">';
        $output .= '<h4>'.date_i18n("F", mktime(0, 0, 0, $currentMonth, 10)).' <span>'.esc_attr($currentYear).'</span></h4>';
        $output .= '</div>';


        $output .= '<ul class="weekdays clearfix">';
        $output .= $weekDays;
        $output .= '</ul>';

        $output .= '<ul class="days clearfix">';
        $output .= $prevMonthDays;

        $output .= $monthDays;

        $output .= '</ul>';


        $output .= '</div>'; // end main div

        echo ''.$output;

    } //expGenerateMonth
} // function_exists

// end experiences calendar
Back to Directory File Manager