Function Reference: geodir_event_save_data

Summary

This function has not been documented yet.

Source File

geodir_event_save_data() is located in geodir_event_manager/gdevents_functions.php [Line: 127]

Source Code

function geodir_event_save_data( $post_id = '', $request_info ) {
	global $wpdb, $current_user; 
		
	$gd_post_info = array();
	$last_post_id = $post_id;
	$post_type = get_post_type( $post_id );
	
	if ( $post_type != 'gd_event' ) {
		return false;
	}
		
	$gd_post_info['event_reg_desc'] = isset( $request_info['event_reg_desc'] ) ? $request_info['event_reg_desc'] : '';
	$gd_post_info['event_reg_fees'] = isset( $request_info['event_reg_fees'] ) ? $request_info['event_reg_fees'] : '';
	
	$format = geodir_event_date_format();
	$default_start = date_i18n( $format, current_time( 'timestamp' ) );
	
	// Check recurring enabled
	$post_info = geodir_get_post_info( $post_id );
	$recurring_pkg = geodir_event_recurring_pkg( $post_info );
	
	// recurring event
	$is_recurring = isset( $request_info['is_recurring'] ) && empty( $request_info['is_recurring'] ) ? false : true;
	$event_date = isset( $request_info['event_date'] ) ? trim( $request_info['event_date'] ) : ( isset( $request_info['event_recurring_dates'] ) ? $request_info['event_recurring_dates'] : '' );
	$event_start = isset( $request_info['event_start'] ) ? trim( $request_info['event_start'] ) : $event_date;
	$event_end = isset( $request_info['event_end'] ) ? trim( $request_info['event_end'] ) : '';
	$all_day = isset( $request_info['all_day'] ) && !empty( $request_info['all_day'] ) ? true : false;
	$starttime = isset( $request_info['starttime'] ) && !$all_day ? trim( $request_info['starttime'] ) : '';
	$endtime = isset( $request_info['endtime'] ) && !$all_day ? trim( $request_info['endtime'] ) : '';
	$repeat_days = array();
	$repeat_weeks = array();
	
	// recurring event
	if ( $recurring_pkg && $is_recurring ) {
		$repeat_type = isset( $request_info['repeat_type'] ) && in_array( $request_info['repeat_type'], array( 'day', 'week', 'month', 'year', 'custom' ) ) ? $request_info['repeat_type'] : 'custom'; // day, week, month, year, custom
		$different_times = isset( $request_info['different_times'] ) && !empty( $request_info['different_times'] ) ? true : false;
		$starttimes = $different_times && !$all_day && isset( $request_info['starttimes'] ) ? $request_info['starttimes'] : array();
		$endtimes = $different_times && !$all_day && isset( $request_info['endtimes'] ) && !empty( $request_info['endtimes'] ) ? $request_info['endtimes'] : array();

		// week days
		if ( $repeat_type == 'week' || $repeat_type == 'month' ) {
			$repeat_days = isset( $request_info['repeat_days'] ) ? $request_info['repeat_days'] : $repeat_days;
		}
		
		// by week
		if ( $repeat_type == 'month' ) {
			$repeat_weeks = isset( $request_info['repeat_weeks'] ) ? $request_info['repeat_weeks'] : $repeat_weeks;
		}
			
		if ( $repeat_type == 'custom' ) {
			$event_recurring_dates = isset( $request_info['event_recurring_dates'] ) ? trim( $request_info['event_recurring_dates'] ) : '';
			$event_recurring_dates = geodir_event_parse_dates( $event_recurring_dates );
						
			if ( $different_times == 1 ) {
				$starttime = '';
				$endtime = '';
			}
			
			$event_start = !empty( $event_recurring_dates[0] ) ? $event_recurring_dates[0] : $default_start;
			$event_end = $event_start;
			$duration_x = 1;
			
			$repeat_x = 1;
			$repeat_end_type = 0;
			$max_repeat = 1;
			$repeat_end = '';
			
			$event_recurring_dates = !empty( $event_recurring_dates ) ? implode( ',', $event_recurring_dates ) : $event_start;			
		} else {
			$repeat_x = isset( $request_info['repeat_x'] ) ? trim( $request_info['repeat_x'] ) : '';
			$duration_x = isset( $request_info['duration_x'] ) ? trim( $request_info['duration_x'] ) : 1;
			$repeat_end_type = isset( $request_info['repeat_end_type'] ) ? trim( $request_info['repeat_end_type'] ) : 0;
			$event_end = '';
			
			$max_repeat = $repeat_end_type != 1 && isset( $request_info['max_repeat'] ) ? (int)$request_info['max_repeat'] : 1;
			$repeat_end = $repeat_end_type == 1 && isset( $request_info['repeat_end'] ) ? $request_info['repeat_end'] : '';
						
			$repeat_x = $repeat_x > 0 ? (int)$repeat_x : 1;
			$duration_x = $duration_x > 0 ? (int)$duration_x : 1;
			$max_repeat = $max_repeat > 0 ? (int)$max_repeat : 1;
			
			if ( $repeat_end_type == 1 && !geodir_event_is_date( $repeat_end ) ) {
				$repeat_end = '';
			}	
			
			if ( !geodir_event_is_date( $event_start ) ) {
				$event_start = $default_start;
			}
			
			$event_recurring_dates = geodir_event_date_occurrences( $repeat_type, $event_start, $event_end, $repeat_x, $max_repeat, $repeat_end, $repeat_days, $repeat_weeks );
			$event_recurring_dates = !empty( $event_recurring_dates ) ? implode( ",", $event_recurring_dates ) : '';
		}	
	} else {
		if ( !geodir_event_is_date( $event_start ) ) {
			$event_start = $default_start;
		}
				
		if ( strtotime( $event_end ) < strtotime( $event_start ) ) {
			$event_end = $event_start;
		}
		
		$event_recurring_dates = $event_start;
		
		$starttimes = array();
		$endtimes = array();
		
		$repeat_type = '';
		$repeat_x = '';
		$duration_x = '';
		$repeat_end_type = '';
		$max_repeat = '';
		$repeat_end = '';
		$different_times = false;
	}

	$event_shedule_info = array();
	$event_shedule_info['is_recurring'] = $is_recurring;
	$event_shedule_info['event_start'] = $event_start;
	$event_shedule_info['event_end'] = $event_end;
	$event_shedule_info['event_recurring_dates'] = $event_recurring_dates;
	$event_shedule_info['all_day'] = $all_day;
	$event_shedule_info['starttime'] = $starttime;
	$event_shedule_info['endtime'] = $endtime;
	$event_shedule_info['different_times'] = $different_times;
	$event_shedule_info['starttimes'] = $starttimes;
	$event_shedule_info['endtimes'] = $endtimes;
	$event_shedule_info['repeat_type'] = $repeat_type;
	$event_shedule_info['repeat_x'] = $repeat_x;
	$event_shedule_info['duration_x'] = $duration_x;
	$event_shedule_info['repeat_end_type'] = $repeat_end_type;
	$event_shedule_info['max_repeat'] = $max_repeat;
	$event_shedule_info['repeat_end'] = $repeat_end;
	$event_shedule_info['repeat_days'] = $repeat_days;
	$event_shedule_info['repeat_weeks'] = $repeat_weeks;
		
	// save post info
	$gd_post_info['is_recurring'] = $is_recurring;
	$gd_post_info['recurring_dates'] = maybe_serialize( $event_shedule_info );
	
	/* --- save businesses --- */
	if ( isset( $request_info['geodir_link_business' ]) ) {
		$gd_post_info['geodir_link_business'] = $request_info['geodir_link_business'];
	}

	// save event dates
	geodir_save_event_schedule( $event_shedule_info, $last_post_id ); // to create event-schedule dates	

	// save post info
	geodir_save_post_info($last_post_id, $gd_post_info);
	
	return $last_post_id;
}