Function Reference: geodir_save_event_schedule

Summary

This function has not been documented yet.

Source File

geodir_save_event_schedule() is located in geodir_event_manager/gdevents_functions.php [Line: 333]

Source Code

function geodir_save_event_schedule( $event_shedule_info = array(), $last_post_id = '' ) {
	global $wpdb;
	
	if ( empty( $event_shedule_info ) || $last_post_id == '' ) {
		return false;
	}

	// Check recurring enabled
	$post_info = geodir_get_post_info( $last_post_id );
	$recurring_pkg = geodir_event_recurring_pkg( $post_info );
	
	$format = geodir_event_date_format();
	$default_start = date_i18n( $format, current_time( 'timestamp' ) );
	
	if ( !$recurring_pkg ) {
		$event_shedule_info['is_recurring'] = false;
	}

	$wpdb->query( $wpdb->prepare( "DELETE FROM " . EVENT_SCHEDULE . " WHERE event_id=%d", array( $last_post_id ) ) );
	
	$event_recurring_dates = array();
	if ( isset( $event_shedule_info['event_recurring_dates'] ) && !empty( $event_shedule_info['event_recurring_dates'] ) ) {
		if ( is_array( $event_shedule_info['event_recurring_dates'] ) ) {
			$event_recurring_dates = $event_shedule_info['event_recurring_dates'];
		} else {
			$event_recurring_dates = explode( ',', $event_shedule_info['event_recurring_dates'] );
		}
	}
	
	// all day
	$all_day = isset( $event_shedule_info['all_day'] ) && !empty( $event_shedule_info['all_day'] ) ? true : false;
	$different_times = isset( $event_shedule_info['different_times'] ) && !empty( $event_shedule_info['different_times'] ) ? true : false;
	$starttime = !$all_day && isset( $event_shedule_info['starttime'] ) ? $event_shedule_info['starttime'] : '';
	$endtime = !$all_day && isset( $event_shedule_info['endtime'] ) ? $event_shedule_info['endtime'] : '';
	$starttimes = !$all_day && isset( $event_shedule_info['starttimes'] ) ? $event_shedule_info['starttimes'] : array();
	$endtimes = !$all_day && isset( $event_shedule_info['endtimes'] ) ? $event_shedule_info['endtimes'] : array();
	
	if ( $event_shedule_info['is_recurring'] ) {		
		if ( !empty( $event_recurring_dates ) ) {
			$duration = isset( $event_shedule_info['duration_x'] ) && (int)$event_shedule_info['duration_x'] > 0 ? (int)$event_shedule_info['duration_x'] : 1;
			$repeat_type = isset( $event_shedule_info['repeat_type'] ) ? $event_shedule_info['repeat_type'] : 'custom';
									
			$recurring = 1;
			$duration--;
		
			$c = 0;
			foreach( $event_recurring_dates as $key => $date ) {
				if ( $repeat_type == 'custom' && $different_times ) {
					$duration = 0;
					$starttime = isset( $starttimes[$c] ) ? $starttimes[$c] : '';
					$endtime = isset( $endtimes[$c] ) ? $endtimes[$c] : '';
				}
				
				if ( $all_day == 1 ) {
					$starttime = '';
					$endtime = '';
				}
				
				$event_enddate = date_i18n( 'Y-m-d', strtotime( $date . ' + ' . $duration . ' day' ) );
				$sql = $wpdb->prepare( "INSERT INTO  " . EVENT_SCHEDULE . " (event_id, event_date, event_enddate, event_starttime, event_endtime, recurring, all_day) VALUES (%d, %s, %s, %s, %s, %d, %d)", array( $last_post_id, $date, $event_enddate, $starttime, $endtime, $recurring, $all_day ) ) ;
				$wpdb->query( $sql );
				$c++;
			}
		}
	} else {		
		$start_date = isset( $event_shedule_info['event_start'] ) ? $event_shedule_info['event_start'] : '';
		$end_date = isset( $event_shedule_info['event_end'] ) ? $event_shedule_info['event_end'] : $start_date;
				
		if ( !geodir_event_is_date( $start_date ) && !empty( $event_recurring_dates ) ) {
			$start_date = $event_recurring_dates[0];
		}
		
		if ( !geodir_event_is_date( $start_date ) ) {
			$start_date = $default_start;
		}
		
		if ( strtotime( $end_date ) < strtotime( $start_date ) ) {
			$end_date = $start_date;
		}
		
		if ( $starttime == '' && !empty( $starttimes ) ) {
			$starttime = $starttimes[0];
			$endtime = $endtimes[0];
		}
		
		if ( $all_day ) {
			$starttime = '';
			$endtime = '';
		}
		$recurring = 0;
		
		$sql = $wpdb->prepare( "INSERT INTO  " . EVENT_SCHEDULE . " (event_id, event_date, event_enddate, event_starttime, event_endtime, recurring, all_day) VALUES (%d, %s, %s, %s, %s, %d, %d)", array( $last_post_id, $start_date, $end_date, $starttime, $endtime, $recurring, $all_day ) ) ;
		$wpdb->query( $sql );
	}
}