681 lines
No EOL
28 KiB
PHP
Executable file
681 lines
No EOL
28 KiB
PHP
Executable file
<?php
|
|
/** no direct access **/
|
|
defined('MECEXEC') or die();
|
|
|
|
/**
|
|
* @author Webnus <info@webnus.net>
|
|
*/
|
|
class MEC_feature_popup extends MEC_base
|
|
{
|
|
public $factory;
|
|
public $main;
|
|
public $settings;
|
|
|
|
/**
|
|
* Constructor method
|
|
* @author Webnus <info@webnus.net>
|
|
*/
|
|
public function __construct()
|
|
{
|
|
// Import MEC Factory
|
|
$this->factory = $this->getFactory();
|
|
|
|
// Import MEC Main
|
|
$this->main = $this->getMain();
|
|
|
|
// MEC Settings
|
|
$this->settings = $this->main->get_settings();
|
|
}
|
|
|
|
/**
|
|
* Initialize popup feature
|
|
* @author Webnus <info@webnus.net>
|
|
*/
|
|
public function init()
|
|
{
|
|
// Shortcode & Event Popup
|
|
$this->factory->action('restrict_manage_posts', array($this, 'add_popup'));
|
|
|
|
// Shortcode Save
|
|
$this->factory->action('wp_ajax_mec_popup_shortcode', array($this, 'shortcode_save'));
|
|
|
|
// Event Save
|
|
$this->factory->action('wp_ajax_mec_popup_event', array($this, 'event_save'));
|
|
$this->factory->action('wp_ajax_mec_popup_event_category', array($this, 'save_category'));
|
|
}
|
|
|
|
public function add_popup($post_type)
|
|
{
|
|
// Shortcode Popup
|
|
if($post_type == $this->main->get_shortcode_post_type())
|
|
{
|
|
$path = MEC::import('app.features.popup.shortcode', true, true);
|
|
include $path;
|
|
}
|
|
//Event Popup
|
|
elseif($post_type == $this->main->get_main_post_type())
|
|
{
|
|
$path = MEC::import('app.features.popup.event', true, true);
|
|
include $path;
|
|
}
|
|
}
|
|
|
|
public function shortcode_save()
|
|
{
|
|
// Security Nonce
|
|
$wpnonce = isset($_POST['_mecnonce']) ? sanitize_text_field($_POST['_mecnonce']) : NULL;
|
|
|
|
// Check if our nonce is set.
|
|
if(!trim($wpnonce)) $this->main->response(array('success'=>0, 'code'=>'NONCE_MISSING'));
|
|
|
|
// Verify that the nonce is valid.
|
|
if(!wp_verify_nonce($wpnonce, 'mec_shortcode_popup')) $this->main->response(array('success'=>0, 'code'=>'NONCE_IS_INVALID'));
|
|
|
|
$params = (isset($_POST['shortcode']) and is_array($_POST['shortcode'])) ? $this->main->sanitize_deep_array($_POST['shortcode']) : [];
|
|
|
|
$skin = isset($params['skin']) ? sanitize_text_field($params['skin']) : 'list';
|
|
$title = isset($params['name']) ? sanitize_text_field($params['name']) : ucwords(str_replace('_', ' ', $skin));
|
|
|
|
$show_past_events = isset($params['show_past_events']) ? sanitize_text_field($params['show_past_events']) : 1;
|
|
$show_only_past_events = isset($params['show_only_past_events']) ? sanitize_text_field($params['show_only_past_events']) : 0;
|
|
$show_only_ongoing_events = isset($params['show_only_ongoing_events']) ? sanitize_text_field($params['show_only_ongoing_events']) : 0;
|
|
|
|
$sed = isset($params['sed']) ? sanitize_text_field($params['sed']) : 0;
|
|
$style = isset($params['style']) ? sanitize_text_field($params['style']) : 'clean';
|
|
$event = isset($params['event']) ? sanitize_text_field($params['event']) : 0;
|
|
$custom_style = isset($params['custom_style']) ? sanitize_text_field($params['custom_style']) : '';
|
|
|
|
$skin_options = array(
|
|
'list' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'maximum_date_range' => '',
|
|
'include_events_times' => 0,
|
|
'pagination_method' => 'loadmore',
|
|
'month_divider' => 1,
|
|
'map_on_top' => 0,
|
|
'set_geolocation' => 0,
|
|
'toggle_month_divider' => 0,
|
|
),
|
|
'grid' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'maximum_date_range' => '',
|
|
'count' => 3,
|
|
'pagination_method' => 'loadmore',
|
|
'map_on_top' => 0,
|
|
'set_geolocation' => 0,
|
|
),
|
|
'agenda' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'maximum_date_range' => '',
|
|
'month_divider' => 1,
|
|
'pagination_method' => 'loadmore',
|
|
),
|
|
'full_calendar' => array(
|
|
'start_date_type' => 'start_current_month',
|
|
'default_view' => 'list',
|
|
'monthly_style' => $style,
|
|
'list' => 1,
|
|
'yearly' => 0,
|
|
'monthly' => 1,
|
|
'weekly' => 1,
|
|
'daily' => 1,
|
|
'display_price' => 0,
|
|
),
|
|
'yearly_view' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'start_current_year',
|
|
'start_date' => '',
|
|
'next_previous_button' => 1,
|
|
),
|
|
'monthly_view' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'start_current_month',
|
|
'start_date' => '',
|
|
'next_previous_button' => 1,
|
|
),
|
|
'map' => array(
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'limit' => 200,
|
|
'geolocation' => 0,
|
|
),
|
|
'daily_view' => array(
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'next_previous_button' => 1,
|
|
),
|
|
'weekly_view' => array(
|
|
'start_date_type' => 'start_current_week',
|
|
'start_date' => '',
|
|
'next_previous_button' => 1,
|
|
),
|
|
'timetable' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'start_current_week',
|
|
'start_date' => '',
|
|
'number_of_days' => 5,
|
|
'week_start' => -1,
|
|
'start_time' => 8,
|
|
'end_time' => 20,
|
|
'next_previous_button' => 1,
|
|
),
|
|
'masonry' => array(
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'maximum_date_range' => '',
|
|
'filter_by' => '',
|
|
'fit_to_row' => 0,
|
|
'masonry_like_grid' => 0,
|
|
'pagination_method' => 'loadmore',
|
|
),
|
|
'cover' => array(
|
|
'style' => $style,
|
|
'event_id' => $event,
|
|
),
|
|
'countdown' => array(
|
|
'style' => $style,
|
|
'event_id' => $event,
|
|
),
|
|
'available_spot' => array(
|
|
'event_id' => $event,
|
|
),
|
|
'carousel' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'count' => 3,
|
|
'autoplay' => 1,
|
|
),
|
|
'slider' => array(
|
|
'style' => $style,
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'autoplay' => 1,
|
|
),
|
|
'timeline' => array(
|
|
'start_date_type' => 'today',
|
|
'start_date' => '',
|
|
'maximum_date_range' => '',
|
|
'pagination_method' => 'loadmore',
|
|
'month_divider' => 0,
|
|
),
|
|
'tile' => array(
|
|
'start_date_type' => 'start_current_month',
|
|
'start_date' => '',
|
|
'count' => 4,
|
|
'next_previous_button' => 1,
|
|
),
|
|
'custom' => array(
|
|
'style' => $custom_style,
|
|
),
|
|
);
|
|
|
|
$sk = $skin_options[$skin] ?? ['style' => $style, 'start_date_type' => 'today', 'start_date' => ''];
|
|
|
|
$sk['sed_method'] = $sed;
|
|
$sk['image_popup'] = 0;
|
|
|
|
$sf = [];
|
|
$sf_status = 0;
|
|
$sf_display_label = '';
|
|
|
|
if($skin == 'full_calendar')
|
|
{
|
|
$sf = array('month_filter'=>array('type'=>'dropdown'), 'text_search'=>array('type'=>'text_input'));
|
|
$sf_status = 1;
|
|
}
|
|
|
|
// Create Default Calendars
|
|
$metas = array(
|
|
'label' => '',
|
|
'category' => '',
|
|
'location' => '',
|
|
'organizer' => '',
|
|
'tag' => '',
|
|
'author' => '',
|
|
'skin' => $skin,
|
|
'sk-options' => array(
|
|
$skin => $sk
|
|
),
|
|
'sf-options' => array($skin => $sf),
|
|
'sf_status' => $sf_status,
|
|
'sf_display_label' => $sf_display_label,
|
|
'show_past_events' => $show_past_events,
|
|
'show_only_past_events' => $show_only_past_events,
|
|
'show_only_ongoing_events' => $show_only_ongoing_events,
|
|
);
|
|
|
|
$post = array('post_title'=>$title, 'post_content'=>'', 'post_type'=>'mec_calendars', 'post_status'=>'publish');
|
|
$post_id = wp_insert_post($post);
|
|
|
|
foreach($metas as $key=>$value) update_post_meta($post_id, $key, $value);
|
|
|
|
$this->main->response(array('success'=>1, 'id'=>$post_id));
|
|
}
|
|
|
|
public function event_save()
|
|
{
|
|
// Security Nonce
|
|
$wpnonce = isset($_POST['_mecnonce']) ? sanitize_text_field($_POST['_mecnonce']) : NULL;
|
|
|
|
// Check if our nonce is set.
|
|
if(!trim($wpnonce)) $this->main->response(array('success'=>0, 'code'=>'NONCE_MISSING'));
|
|
|
|
// Verify that the nonce is valid.
|
|
if(!wp_verify_nonce($wpnonce, 'mec_event_popup')) $this->main->response(array('success'=>0, 'code'=>'NONCE_IS_INVALID'));
|
|
|
|
$mec = (isset($_POST['mec']) and is_array($_POST['mec'])) ? $this->main->sanitize_deep_array($_POST['mec'], 'text', array('content', 'excerpt')) : [];
|
|
|
|
$post_title = isset($mec['title']) ? sanitize_text_field($mec['title']) : '';
|
|
$post_content = isset($mec['content']) ? MEC_kses::page($mec['content']) : '';
|
|
$featured_image = isset($mec['featured_image']) ? sanitize_text_field($mec['featured_image']) : '';
|
|
|
|
// Post Status
|
|
$status = 'pending';
|
|
if(current_user_can('publish_posts')) $status = 'publish';
|
|
|
|
$post = array('post_title'=>$post_title, 'post_content'=>$post_content, 'post_type'=>$this->main->get_main_post_type(), 'post_status'=>$status);
|
|
$post_id = wp_insert_post($post);
|
|
|
|
// Categories
|
|
$categories = (isset($_POST['tax_input']) and isset($_POST['tax_input']['mec_category']) and is_array($_POST['tax_input']['mec_category'])) ? $this->main->sanitize_deep_array($_POST['tax_input']['mec_category']) : [];
|
|
wp_set_post_terms($post_id, $categories, 'mec_category');
|
|
|
|
// Color
|
|
$color = isset($mec['color']) ? sanitize_text_field(trim($mec['color'], '# ')) : '';
|
|
update_post_meta($post_id, 'mec_color', $color);
|
|
|
|
// Featured Image
|
|
if($featured_image) set_post_thumbnail($post_id, $featured_image);
|
|
|
|
// Location
|
|
$location_id = isset($mec['location_id']) ? sanitize_text_field($mec['location_id']) : 0;
|
|
|
|
// Selected a saved location
|
|
if($location_id)
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $location_id, 'mec_location');
|
|
}
|
|
else
|
|
{
|
|
$address = (isset($mec['location']['address']) and trim($mec['location']['address'])) ? sanitize_text_field($mec['location']['address']) : '';
|
|
$name = (isset($mec['location']['name']) and trim($mec['location']['name'])) ? sanitize_text_field($mec['location']['name']) : (trim($address) ? $address : esc_html__('Location Name', 'modern-events-calendar-lite'));
|
|
|
|
$term = get_term_by('name', $name, 'mec_location');
|
|
|
|
// Term already exists
|
|
if(is_object($term) and isset($term->term_id))
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $term->term_id, 'mec_location');
|
|
|
|
$location_id = (int) $term->term_id;
|
|
}
|
|
else
|
|
{
|
|
$term = wp_insert_term($name, 'mec_location');
|
|
|
|
$location_id = $term['term_id'];
|
|
if($location_id)
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $location_id, 'mec_location');
|
|
|
|
$latitude = (isset($mec['location']['latitude']) and trim($mec['location']['latitude'])) ? sanitize_text_field($mec['location']['latitude']) : 0;
|
|
$longitude = (isset($mec['location']['longitude']) and trim($mec['location']['longitude'])) ? sanitize_text_field($mec['location']['longitude']) : 0;
|
|
$thumbnail = (isset($mec['location']['thumbnail']) and trim($mec['location']['thumbnail'])) ? sanitize_text_field($mec['location']['thumbnail']) : '';
|
|
|
|
if(!trim($latitude) or !trim($longitude))
|
|
{
|
|
$geo_point = $this->main->get_lat_lng($address);
|
|
|
|
$latitude = $geo_point[0];
|
|
$longitude = $geo_point[1];
|
|
}
|
|
|
|
update_term_meta($location_id, 'address', $address);
|
|
update_term_meta($location_id, 'latitude', $latitude);
|
|
update_term_meta($location_id, 'longitude', $longitude);
|
|
update_term_meta($location_id, 'thumbnail', $thumbnail);
|
|
}
|
|
else $location_id = 1;
|
|
}
|
|
}
|
|
|
|
update_post_meta($post_id, 'mec_location_id', $location_id);
|
|
|
|
$dont_show_map = isset($mec['dont_show_map']) ? sanitize_text_field($mec['dont_show_map']) : 0;
|
|
update_post_meta($post_id, 'mec_dont_show_map', $dont_show_map);
|
|
|
|
// Organizer
|
|
$organizer_id = isset($mec['organizer_id']) ? sanitize_text_field($mec['organizer_id']) : 0;
|
|
|
|
if(!isset($this->settings['organizers_status']) || $this->settings['organizers_status'])
|
|
{
|
|
// Selected a saved organizer
|
|
if($organizer_id)
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $organizer_id, 'mec_organizer');
|
|
}
|
|
else
|
|
{
|
|
$name = (isset($mec['organizer']['name']) and trim($mec['organizer']['name'])) ? sanitize_text_field($mec['organizer']['name']) : esc_html__('Organizer Name', 'modern-events-calendar-lite');
|
|
|
|
$term = get_term_by('name', $name, 'mec_organizer');
|
|
|
|
// Term already exists
|
|
if(is_object($term) and isset($term->term_id))
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $term->term_id, 'mec_organizer');
|
|
$organizer_id = (int) $term->term_id;
|
|
}
|
|
else
|
|
{
|
|
$term = wp_insert_term($name, 'mec_organizer');
|
|
|
|
$organizer_id = $term['term_id'];
|
|
if($organizer_id)
|
|
{
|
|
// Set term to the post
|
|
wp_set_object_terms($post_id, (int) $organizer_id, 'mec_organizer');
|
|
|
|
$tel = (isset($mec['organizer']['tel']) and trim($mec['organizer']['tel'])) ? sanitize_text_field($mec['organizer']['tel']) : '';
|
|
$email = (isset($mec['organizer']['email']) and trim($mec['organizer']['email'])) ? sanitize_text_field($mec['organizer']['email']) : '';
|
|
$url = (isset($mec['organizer']['url']) and trim($mec['organizer']['url'])) ? sanitize_url($mec['organizer']['url']) : '';
|
|
$thumbnail = (isset($mec['organizer']['thumbnail']) and trim($mec['organizer']['thumbnail'])) ? sanitize_text_field($mec['organizer']['thumbnail']) : '';
|
|
|
|
update_term_meta($organizer_id, 'tel', $tel);
|
|
update_term_meta($organizer_id, 'email', $email);
|
|
update_term_meta($organizer_id, 'url', $url);
|
|
update_term_meta($organizer_id, 'thumbnail', $thumbnail);
|
|
}
|
|
else $organizer_id = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
update_post_meta($post_id, 'mec_organizer_id', $organizer_id);
|
|
|
|
// Date Options
|
|
$date = $mec['date'] ?? [];
|
|
|
|
$start_date = (isset($date['start']['date']) and trim($date['start']['date'])) ? $this->main->standardize_format(sanitize_text_field($date['start']['date'])) : date('Y-m-d');
|
|
$end_date = (isset($date['end']['date']) and trim($date['end']['date'])) ? $this->main->standardize_format(sanitize_text_field($date['end']['date'])) : date('Y-m-d');
|
|
|
|
// Set the start date
|
|
$date['start']['date'] = $start_date;
|
|
|
|
$start_time_hour = isset($date['start']) ? sanitize_text_field($date['start']['hour']) : '8';
|
|
$start_time_minutes = isset($date['start']) ? sanitize_text_field($date['start']['minutes']) : '00';
|
|
$start_time_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? sanitize_text_field($date['start']['ampm']) : 'AM';
|
|
|
|
// Fix end_date if it's smaller than start_date
|
|
if(strtotime($end_date) < strtotime($start_date)) $end_date = $start_date;
|
|
|
|
// Set the end date
|
|
$date['end']['date'] = $end_date;
|
|
|
|
$end_time_hour = isset($date['end']) ? sanitize_text_field($date['end']['hour']) : '6';
|
|
$end_time_minutes = isset($date['end']) ? sanitize_text_field($date['end']['minutes']) : '00';
|
|
$end_time_ampm = (isset($date['end']) and isset($date['end']['ampm'])) ? sanitize_text_field($date['end']['ampm']) : 'PM';
|
|
|
|
if(isset($this->settings['time_format']) and $this->settings['time_format'] == 24)
|
|
{
|
|
$day_start_seconds = $this->main->time_to_seconds($this->main->to_24hours($start_time_hour, NULL, 'start'), $start_time_minutes);
|
|
$day_end_seconds = $this->main->time_to_seconds($this->main->to_24hours($end_time_hour, NULL, 'end'), $end_time_minutes);
|
|
}
|
|
else
|
|
{
|
|
$day_start_seconds = $this->main->time_to_seconds($this->main->to_24hours($start_time_hour, $start_time_ampm, 'start'), $start_time_minutes);
|
|
$day_end_seconds = $this->main->time_to_seconds($this->main->to_24hours($end_time_hour, $end_time_ampm, 'end'), $end_time_minutes);
|
|
}
|
|
|
|
if($end_date === $start_date and $day_end_seconds < $day_start_seconds)
|
|
{
|
|
$day_end_seconds = $day_start_seconds;
|
|
|
|
$end_time_hour = $start_time_hour;
|
|
$end_time_minutes = $start_time_minutes;
|
|
$end_time_ampm = $start_time_ampm;
|
|
|
|
$date['end']['hour'] = $start_time_hour;
|
|
$date['end']['minutes'] = $start_time_minutes;
|
|
$date['end']['ampm'] = $start_time_ampm;
|
|
}
|
|
|
|
// If 24 hours format is enabled then convert it back to 12 hours
|
|
if(isset($this->settings['time_format']) and $this->settings['time_format'] == 24)
|
|
{
|
|
if($start_time_hour < 12) $start_time_ampm = 'AM';
|
|
elseif($start_time_hour == 12) $start_time_ampm = 'PM';
|
|
elseif($start_time_hour > 12)
|
|
{
|
|
$start_time_hour -= 12;
|
|
$start_time_ampm = 'PM';
|
|
}
|
|
elseif($start_time_hour == 0)
|
|
{
|
|
$start_time_hour = 12;
|
|
$start_time_ampm = 'AM';
|
|
}
|
|
|
|
if($end_time_hour < 12) $end_time_ampm = 'AM';
|
|
elseif($end_time_hour == 12) $end_time_ampm = 'PM';
|
|
elseif($end_time_hour > 12)
|
|
{
|
|
$end_time_hour -= 12;
|
|
$end_time_ampm = 'PM';
|
|
}
|
|
elseif($end_time_hour == 0)
|
|
{
|
|
$end_time_hour = 12;
|
|
$end_time_ampm = 'AM';
|
|
}
|
|
|
|
// Set converted values to date array
|
|
$date['start']['hour'] = $start_time_hour;
|
|
$date['start']['ampm'] = $start_time_ampm;
|
|
|
|
$date['end']['hour'] = $end_time_hour;
|
|
$date['end']['ampm'] = $end_time_ampm;
|
|
}
|
|
|
|
$allday = isset($date['allday']) ? 1 : 0;
|
|
|
|
// Set start time and end time if event is all day
|
|
if($allday == 1)
|
|
{
|
|
$start_time_hour = '8';
|
|
$start_time_minutes = '00';
|
|
$start_time_ampm = 'AM';
|
|
|
|
$end_time_hour = '6';
|
|
$end_time_minutes = '00';
|
|
$end_time_ampm = 'PM';
|
|
}
|
|
|
|
$start_datetime = $start_date.' '.sprintf('%02d', $start_time_hour).':'.sprintf('%02d', $start_time_minutes).' '.$start_time_ampm;
|
|
$end_datetime = $end_date.' '.sprintf('%02d', $end_time_hour).':'.sprintf('%02d', $end_time_minutes).' '.$end_time_ampm;
|
|
|
|
update_post_meta($post_id, 'mec_start_date', $start_date);
|
|
update_post_meta($post_id, 'mec_start_time_hour', $start_time_hour);
|
|
update_post_meta($post_id, 'mec_start_time_minutes', $start_time_minutes);
|
|
update_post_meta($post_id, 'mec_start_time_ampm', $start_time_ampm);
|
|
update_post_meta($post_id, 'mec_start_day_seconds', $day_start_seconds);
|
|
update_post_meta($post_id, 'mec_start_datetime', $start_datetime);
|
|
|
|
update_post_meta($post_id, 'mec_end_date', $end_date);
|
|
update_post_meta($post_id, 'mec_end_time_hour', $end_time_hour);
|
|
update_post_meta($post_id, 'mec_end_time_minutes', $end_time_minutes);
|
|
update_post_meta($post_id, 'mec_end_time_ampm', $end_time_ampm);
|
|
update_post_meta($post_id, 'mec_end_day_seconds', $day_end_seconds);
|
|
update_post_meta($post_id, 'mec_end_datetime', $end_datetime);
|
|
|
|
// Repeat Options
|
|
$repeat = [];
|
|
$repeat_type = NULL;
|
|
$repeat_status = 0;
|
|
|
|
$repeat_end = '';
|
|
$repeat_end_at_occurrences = '';
|
|
$repeat_end_at_date = '';
|
|
|
|
update_post_meta($post_id, 'mec_date', $date);
|
|
update_post_meta($post_id, 'mec_repeat', $repeat);
|
|
update_post_meta($post_id, 'mec_certain_weekdays', '');
|
|
update_post_meta($post_id, 'mec_allday', $allday);
|
|
update_post_meta($post_id, 'mec_hide_time', 0);
|
|
update_post_meta($post_id, 'mec_hide_end_time', 0);
|
|
update_post_meta($post_id, 'mec_comment', '');
|
|
update_post_meta($post_id, 'mec_repeat_status', $repeat_status);
|
|
update_post_meta($post_id, 'mec_repeat_type', '');
|
|
update_post_meta($post_id, 'mec_repeat_interval', '');
|
|
update_post_meta($post_id, 'mec_repeat_end', $repeat_end);
|
|
update_post_meta($post_id, 'mec_repeat_end_at_occurrences', $repeat_end_at_occurrences);
|
|
update_post_meta($post_id, 'mec_repeat_end_at_date', $repeat_end_at_date);
|
|
update_post_meta($post_id, 'mec_advanced_days', '');
|
|
|
|
// Creating $event array for inserting in mec_events table
|
|
$event = array('post_id'=>$post_id, 'start'=>$start_date, 'repeat'=>$repeat_status, 'rinterval'=>NULL, 'time_start'=>$day_start_seconds, 'time_end'=>$day_end_seconds);
|
|
|
|
$year = NULL;
|
|
$month = NULL;
|
|
$day = NULL;
|
|
$week = NULL;
|
|
$weekday = NULL;
|
|
$weekdays = NULL;
|
|
|
|
$in_days = '';
|
|
$not_in_days = '';
|
|
|
|
update_post_meta($post_id, 'mec_in_days', $in_days);
|
|
update_post_meta($post_id, 'mec_not_in_days', $not_in_days);
|
|
|
|
// Repeat End Date
|
|
$repeat_end_date = '0000-00-00';
|
|
|
|
// Add parameters to the $event
|
|
$event['end'] = $repeat_end_date;
|
|
$event['year'] = $year;
|
|
$event['month'] = $month;
|
|
$event['day'] = $day;
|
|
$event['week'] = $week;
|
|
$event['weekday'] = $weekday;
|
|
$event['weekdays'] = $weekdays;
|
|
$event['days'] = $in_days;
|
|
$event['not_in_days'] = $not_in_days;
|
|
|
|
// DB Library
|
|
$db = $this->getDB();
|
|
|
|
// Update MEC Events Table
|
|
$mec_event_id = $db->select("SELECT `id` FROM `#__mec_events` WHERE `post_id`='".$db->escape($post_id)."'", 'loadResult');
|
|
|
|
if(!$mec_event_id)
|
|
{
|
|
$q1 = "";
|
|
$q2 = "";
|
|
|
|
foreach($event as $key=>$value)
|
|
{
|
|
$q1 .= "`$key`,";
|
|
|
|
if(is_null($value)) $q2 .= "NULL,";
|
|
else $q2 .= "'$value',";
|
|
}
|
|
|
|
$db->q("INSERT INTO `#__mec_events` (".trim($q1, ', ').") VALUES (".trim($q2, ', ').")", 'INSERT');
|
|
}
|
|
else
|
|
{
|
|
$q = "";
|
|
|
|
foreach($event as $key=>$value)
|
|
{
|
|
if(is_null($value)) $q .= "`$key`=NULL,";
|
|
else $q .= "`$key`='$value',";
|
|
}
|
|
|
|
$db->q("UPDATE `#__mec_events` SET ".trim($q, ', ')." WHERE `id`='$mec_event_id'");
|
|
}
|
|
|
|
// Update Schedule
|
|
$schedule = $this->getSchedule();
|
|
$schedule->reschedule($post_id, $schedule->get_reschedule_maximum($repeat_type));
|
|
|
|
// Hourly Schedule Options
|
|
$hourly_schedules = [];
|
|
update_post_meta($post_id, 'mec_hourly_schedules', $hourly_schedules);
|
|
|
|
// Booking and Ticket Options
|
|
$booking = [];
|
|
update_post_meta($post_id, 'mec_booking', $booking);
|
|
|
|
$tickets = [];
|
|
update_post_meta($post_id, 'mec_tickets', $tickets);
|
|
|
|
// Fee options
|
|
$fees_global_inheritance = 1;
|
|
update_post_meta($post_id, 'mec_fees_global_inheritance', $fees_global_inheritance);
|
|
|
|
$fees = [];
|
|
update_post_meta($post_id, 'mec_fees', $fees);
|
|
|
|
// Ticket Variation options
|
|
$ticket_variations_global_inheritance = 1;
|
|
update_post_meta($post_id, 'mec_ticket_variations_global_inheritance', $ticket_variations_global_inheritance);
|
|
|
|
$ticket_variations = [];
|
|
update_post_meta($post_id, 'mec_ticket_variations', $ticket_variations);
|
|
|
|
// Registration Fields options
|
|
$reg_fields_global_inheritance = 1;
|
|
update_post_meta($post_id, 'mec_reg_fields_global_inheritance', $reg_fields_global_inheritance);
|
|
|
|
$reg_fields = [];
|
|
update_post_meta($post_id, 'mec_reg_fields', $reg_fields);
|
|
|
|
// Organizer Payment Options
|
|
$op = [];
|
|
update_post_meta($post_id, 'mec_op', $op);
|
|
update_user_meta(get_post_field('post_author', $post_id), 'mec_op', $op);
|
|
|
|
// For Event Notification Badge.
|
|
update_post_meta($post_id, 'mec_event_date_submit', date('YmdHis', current_time('timestamp', 0)));
|
|
|
|
do_action('mec_after_publish_admin_event', $post_id, false);
|
|
|
|
// Save Event Data
|
|
do_action('mec_save_event_data', $post_id, $mec);
|
|
|
|
$this->main->response(array(
|
|
'success' => 1,
|
|
'id' => $post_id,
|
|
'link' => get_post_permalink($post_id),
|
|
));
|
|
}
|
|
|
|
public function save_category()
|
|
{
|
|
$category = isset($_POST['category']) ? sanitize_text_field($_POST['category']) : '';
|
|
|
|
$term = term_exists($category, 'mec_category');
|
|
if(!$term)
|
|
{
|
|
$term = wp_insert_term($category, 'mec_category');
|
|
$category_id = $term['term_id'];
|
|
}
|
|
else $category_id = $term['term_id'];
|
|
|
|
$this->main->response(array('success' => 1, 'id' => $category_id, 'name' => $category));
|
|
}
|
|
} |