ID ) );
$venues = eo_get_venues();
$venue_id = (int) eo_get_venue( $post->ID );
//$sche_once is used to disable date editing unless the user specifically requests it.
//But a new event might be recurring (via filter), and we don't want to 'lock' new events.
//See http://wordpress.org/support/topic/wrong-default-in-input-element
$sche_once = ( $schedule == 'once' || !empty(get_current_screen()->action) );
if ( !$sche_once ){
$notices = ''. __( 'This is a reoccurring event', 'eventorganiser' ).' . '
. __( 'Check to edit this event and its reoccurrences', 'eventorganiser' )
.' ';
}else{
$notices = '';
}
//Start of meta box
if( $notices = apply_filters('eventorganiser_event_metabox_notice', $notices, $post ) ){
echo '
';
}
?>
'.$format.'', ' hh:mm ' );?>
'', 'EndDate' => '', 'StartTime' => '00:00', 'FinishTime' => '23:59', 'schedule' => 'once', 'event_frequency' => 1,
'schedule_end' => '', 'allday' => 0, 'schedule_meta' => '', 'days' => array(), 'include' => '', 'exclude' => '', ) );
//Update venue
$venue_id = !empty( $raw_data['event-venue'] ) ? intval( $raw_data['event-venue'] ) : null;
//Maybe create a new venue
if ( empty( $venue_id ) && !empty( $_POST['eo_venue']) && current_user_can( 'manage_venues' ) ){
$venue = $_POST['eo_venue'];
if ( !empty( $venue['name'] ) ){
$new_venue = eo_insert_venue( $venue['name'], $venue );
if ( !is_wp_error( $new_venue ) )
$venue_id = $new_venue['term_id'];
}
}
//Set venue
$r = wp_set_post_terms( $post_id, array( $venue_id ), 'event-venue', false );
//If reocurring, but not editing occurrences, can abort here, but trigger hook.
if ( eo_reoccurs( $post_id ) && ( !isset( $raw_data['AlterRe'] ) || 'yes' != $raw_data['AlterRe'] ) ){
do_action( 'eventorganiser_save_event', $post_id );//Need this to update cache
return;
}
//Set times for all day events
$all_day = intval($raw_data['allday']);
if ( $all_day ){
$raw_data['StartTime'] = '00:00';
$raw_data['FinishTime'] = '23:59';
}
//Check dates
$start = _eventorganiser_check_datetime( trim( $raw_data['StartDate'] ) . ' ' . trim( $raw_data['StartTime'] ) );
$end = _eventorganiser_check_datetime( trim( $raw_data['EndDate'] ) . ' ' . trim( $raw_data['FinishTime'] ) );
$schedule_last = _eventorganiser_check_datetime( trim( $raw_data['schedule_end'] ) . ' ' . trim( $raw_data['StartTime'] ) );
//Collect schedule meta
$schedule = $raw_data['schedule'];
if ( 'weekly' == $schedule ){
$schedule_meta = $raw_data['days'];
$occurs_by = '';
} elseif ( 'monthly' == $schedule ){
$schedule_meta = $raw_data['schedule_meta'];
$occurs_by = trim( $schedule_meta, '=' );
} else {
$schedule_meta = '';
$occurs_by = '';
}
//Collect include/exclude
$in_ex = array();
foreach ( array( 'include', 'exclude' ) as $key ):
$in_ex[$key] = array();
$arr = explode( ',', sanitize_text_field( $raw_data[$key] ) );
if ( !empty( $arr ) ){
foreach ( $arr as $date ):
$date_obj = _eventorganiser_check_datetime( $date . ' ' . $raw_data['StartTime'], 'Y-m-d' );
if( $date_obj )
$in_ex[$key][] = $date_obj;
endforeach;
}
endforeach;
$event_data = array(
'start' => $start,
'end' => $end,
'all_day' => $all_day,
'schedule' => $schedule,
'frequency' => (int) $raw_data['event_frequency'],
'schedule_last' => $schedule_last,
'schedule_meta' => $schedule_meta,
'occurs_by' => $occurs_by,
'include' => $in_ex['include'],
'exclude' => $in_ex['exclude'],
);
$response = eo_update_event( $post_id, $event_data );
if ( is_wp_error( $response ) ){
global $EO_Errors;
$code = $response->get_error_code();
$message = $response->get_error_message( $code );
$errors[$post_id][] = __( 'Event dates were not saved.', 'eventorganiser' );
$errors[$post_id][] = $message;
$EO_Errors->add( 'eo_error',$message );
update_option( 'eo_notice', $errors );
}
return;
}
/**
* Display custom error or alert messages on events CPT page
*
* @ignore
* @since 1.0.0
*/
add_action( 'admin_notices', '_eventorganiser_event_edit_admin_notice', 0 );
function _eventorganiser_event_edit_admin_notice(){
global $post;
$notice = get_option( 'eo_notice' );
if ( empty( $notice ) || empty( $post->ID ) ) return '';
foreach ( $notice as $pid => $messages ){
if ( $post->ID == $pid ){
printf( '', implode( ' ', $messages ) );
//make sure to remove notice after its displayed so its only displayed when needed.
unset( $notice[0] );
unset( $notice[$pid] );
update_option( 'eo_notice', $notice );
}
}
}
?>