| Server IP : 80.65.208.158 / Your IP : 216.73.216.25 Web Server : Microsoft-IIS/10.0 System : Windows NT VMI1501711 10.0 build 17763 (Windows Server 2019) AMD64 User : IWPD_134(rotechno) ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Inetpub/vhosts/rotechnochem.com/httpdocs/wp-content/plugins/easy/ |
Upload File : |
<?php
/*
* Plugin Name: VS Event List
* Description: With this lightweight plugin you can create an event list.
* Version: 18.1
* Author: Guido
* Author URI: https://www.guido.site
* License: GPLv3
* License URI: https://www.gnu.org/licenses/gpl-3.0.html
* Requires PHP: 7.1
* Requires at least: 5.3
* Text Domain: very-simple-event-list
*/
// disable direct access
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// enqueue css script
function vsel_css_script() {
wp_enqueue_style( 'vsel-style', plugins_url('/css/vsel-style.min.css',__FILE__ ) );
}
add_action( 'wp_enqueue_scripts', 'vsel_css_script' );
// register widget
function vsel_register_widget() {
register_widget( 'vsel_widget' );
}
add_action( 'widgets_init', 'vsel_register_widget' );
// create rss feed
function vsel_add_rss_feed() {
$feed_setting = get_option('vsel-setting-99');
if ($feed_setting == 'yes') {
add_feed( 'vsel-rss-feed', 'vsel_rss_feed' );
}
}
add_action( 'init', 'vsel_add_rss_feed' );
// create ical feed
function vsel_add_ical_feed() {
$feed_setting = get_option('vsel-setting-49');
if ($feed_setting == 'yes') {
add_feed( 'vsel-ical-feed', 'vsel_ical_feed' );
}
}
add_action( 'init', 'vsel_add_ical_feed' );
// set timestamp for today
function vsel_timestamp_today() {
$current_date = current_datetime();
$var = $current_date->setTime(0, 0, 0, 0);
$today = $var->getTimestamp()+$var->getOffset();
return $today;
}
// set timestamp for tomorrow
function vsel_timestamp_tomorrow() {
$current_date = current_datetime();
$var = $current_date->setTime(0, 0, 0, 0);
$tomorrow = $var->getTimestamp()+$var->getOffset()+86400;
return $tomorrow;
}
// set utc timezone
function vsel_utc_timezone() {
$time_zone = new DateTimeZone('UTC');
return $time_zone;
}
// set date format for date input fields
function vsel_input_dateformat() {
$dateformat_input = get_option('date_format');
if ($dateformat_input == 'j F Y' || $dateformat_input == 'd/m/Y' || $dateformat_input == 'd-m-Y') {
$dateformat_input = 'd-m-Y';
} else {
$dateformat_input = 'Y-m-d';
}
return $dateformat_input;
}
// set date format for datepicker
function vsel_datepicker_dateformat() {
$dateformat = get_option('date_format');
if ($dateformat == 'j F Y' || $dateformat == 'd/m/Y' || $dateformat == 'd-m-Y') {
$dateformat = 'dd-mm-yy';
} else {
$dateformat = 'yy-mm-dd';
}
return $dateformat;
}
// enqueue datepicker script
function vsel_enqueue_datepicker() {
if ( get_post_type() != 'event' ) {
return;
}
wp_enqueue_script( 'vsel-datepicker-script', plugins_url( '/js/vsel-datepicker.js' , __FILE__ ), array('jquery', 'jquery-ui-datepicker') );
wp_enqueue_style( 'vsel-datepicker-style', plugins_url( '/css/vsel-datepicker.min.css',__FILE__ ) );
// datepicker args
$dataL10n = array(
'dateFormat' => vsel_datepicker_dateformat()
);
// localize script with data for datepicker
wp_localize_script( 'vsel-datepicker-script', 'vsel_datepicker_l10n', $dataL10n );
}
add_action( 'admin_enqueue_scripts', 'vsel_enqueue_datepicker' );
// create event post type
function vsel_custom_post_type() {
$vsel_labels = array(
'name' => __( 'Events', 'very-simple-event-list' ),
'singular_name' => __( 'Event', 'very-simple-event-list' ),
'all_items' => __( 'All events', 'very-simple-event-list' ),
'add_new_item' => __( 'Add new event', 'very-simple-event-list' ),
'add_new' => __( 'New event', 'very-simple-event-list' ),
'new_item' => __( 'New event', 'very-simple-event-list' ),
'edit_item' => __( 'Edit event', 'very-simple-event-list' ),
'view_item' => __( 'View event', 'very-simple-event-list' ),
'search_items' => __( 'Search events', 'very-simple-event-list' ),
'not_found' => __( 'No events found', 'very-simple-event-list' ),
'not_found_in_trash' => __( 'No events found in trash', 'very-simple-event-list' )
);
$disable_public = get_option('vsel-setting-60');
if ( $disable_public == 'yes' ) {
$public_event = false;
} else {
$public_event = true;
}
$disable_menu = get_option('vsel-setting-50');
if ( $disable_menu == 'yes' ) {
$show_in_menu = false;
} else {
$show_in_menu = true;
}
$disable_archive = get_option('vsel-setting-48');
if ( $disable_archive == 'yes' ) {
$has_archive = false;
} else {
$has_archive = true;
}
$custom_slug = get_option('vsel-setting-46');
if ( !empty($custom_slug) ) {
$event_slug = $custom_slug;
} else {
$event_slug = 'event';
}
$activate_revisions = get_option('vsel-setting-105');
if ( $activate_revisions == 'yes' ) {
$revisions = 'revisions';
} else {
$revisions = '';
}
$vsel_args = array(
'labels' => $vsel_labels,
'menu_icon' => 'dashicons-calendar-alt',
'public' => $public_event,
'can_export' => true,
'show_in_nav_menus' => $show_in_menu,
'has_archive' => $has_archive,
'show_ui' => true,
'show_in_rest' => true,
'capability_type' => 'post',
'taxonomies' => array( 'event_cat' ),
'rewrite' => array( 'slug' => sanitize_key($event_slug) ),
'supports' => array( 'title', 'thumbnail', 'page-attributes', 'custom-fields', 'editor', 'author', $revisions )
);
register_post_type( 'event', $vsel_args );
}
add_action( 'init', 'vsel_custom_post_type' );
// create event categories
function vsel_taxonomy() {
$disable_menu = get_option('vsel-setting-50');
if ( $disable_menu == 'yes' ) {
$show_in_menu = false;
} else {
$show_in_menu = true;
}
$disable_cats_column = get_option('vsel-setting-55');
if ( $disable_cats_column == 'yes' ) {
$cats_column = false;
} else {
$cats_column = true;
}
$custom_slug = get_option('vsel-setting-47');
if ( !empty($custom_slug) ) {
$cat_slug = $custom_slug;
} else {
$cat_slug = 'event_cat';
}
$vsel_cat_args = array(
'label' => __( 'Event categories', 'very-simple-event-list' ),
'hierarchical' => true,
'show_in_nav_menus' => $show_in_menu,
'show_admin_column' => $cats_column,
'show_in_rest' => true,
'rewrite' => array( 'slug' => sanitize_key($cat_slug) )
);
register_taxonomy( 'event_cat', 'event', $vsel_cat_args );
}
add_action( 'init', 'vsel_taxonomy' );
// flush rewrite rules on plugin activation
function vsel_activation_hook() {
vsel_custom_post_type();
vsel_taxonomy();
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'vsel_activation_hook' );
// create metabox
function vsel_metabox() {
add_meta_box(
'vsel-event-metabox',
__( 'Event details', 'very-simple-event-list' ),
'vsel_metabox_callback',
'event',
'normal',
'high'
);
}
add_action( 'add_meta_boxes', 'vsel_metabox' );
function vsel_metabox_callback( $post ) {
// generate a nonce field
wp_nonce_field( 'vsel_nonce_action', 'vsel_nonce' );
// get setting for one date instead of start date and end date
$one_date = get_option('vsel-setting-58');
// get setting for one time field instead of start time and end time
$one_time = get_option('vsel-setting-87');
// get previously saved meta values (if any)
$start_date_timestamp = get_post_meta( $post->ID, 'event-start-date', true );
$end_date_timestamp = get_post_meta( $post->ID, 'event-date', true );
$time = get_post_meta( $post->ID, 'event-time', true );
$hide_end_time = get_post_meta( $post->ID, 'event-hide-end-time', true );
$all_day = get_post_meta( $post->ID, 'event-all-day', true );
$location = get_post_meta( $post->ID, 'event-location', true );
$link = get_post_meta( $post->ID, 'event-link', true );
$link_label = get_post_meta( $post->ID, 'event-link-label', true );
$link_target = get_post_meta( $post->ID, 'event-link-target', true );
$link_title = get_post_meta( $post->ID, 'event-link-title', true );
$link_image = get_post_meta( $post->ID, 'event-link-image', true );
$summary = get_post_meta( $post->ID, 'event-summary', true );
// get date format
$date_format = vsel_input_dateformat();
// get utc timezone
$utc_timezone = vsel_utc_timezone();
// get timestamp today
$today = vsel_timestamp_today();
// get date if saved, else set it to today
$start_date_timestamp = !empty( $start_date_timestamp ) ? $start_date_timestamp : $today;
$end_date_timestamp = !empty( $end_date_timestamp ) ? $end_date_timestamp : $today;
// set time values
$hour_values = array('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23');
$minute_values = array('00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55');
// get start date and end date for comparing dates
$start_date = gmdate( 'Ymd', intval($start_date_timestamp) );
$end_date = gmdate( 'Ymd', intval($end_date_timestamp) );
// get start time and end time for comparing times
$start_time = gmdate( 'Hi', intval($start_date_timestamp) );
$end_time = gmdate( 'Hi', intval($end_date_timestamp) );
// error notice if start date is greater than end date
if ( $start_date > $end_date ) {
$notice_date = sprintf( __( 'Error: %1$s must be equal to or greater than %2$s.', 'very-simple-event-list' ), __( 'End date', 'very-simple-event-list' ), __( 'Start date', 'very-simple-event-list' ) );
}
// error notice if start time is greater than end time
if ( ($start_date == $end_date) && ($start_time > $end_time) ) {
$notice_time = sprintf( __( 'Error: %1$s must be equal to or greater than %2$s.', 'very-simple-event-list' ), __( 'End time', 'very-simple-event-list' ), __( 'Start time', 'very-simple-event-list' ) );
}
// metabox fields
if ( $one_date == 'yes' ) { ?>
<p><label for="event-end-date"><?php esc_attr_e( 'Date', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-end-date" type="text" name="event-end-date" required maxlength="10" placeholder="<?php esc_attr_e( 'Use datepicker', 'very-simple-event-list' ); ?>" value="<?php echo wp_date( $date_format, esc_attr( $end_date_timestamp ), $utc_timezone ); ?>" /></p>
<?php } else { ?>
<p><label for="event-start-date"><?php esc_attr_e( 'Start date', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-start-date" type="text" name="event-start-date" required maxlength="10" placeholder="<?php esc_attr_e( 'Use datepicker', 'very-simple-event-list' ); ?>" value="<?php echo wp_date( $date_format, esc_attr( $start_date_timestamp ), $utc_timezone ); ?>" /></p>
<p><label for="event-end-date"><?php esc_attr_e( 'End date', 'very-simple-event-list' ); ?>
<input class="widefat" id="event-end-date" type="text" name="event-end-date" required maxlength="10" placeholder="<?php esc_attr_e( 'Use datepicker', 'very-simple-event-list' ); ?>" value="<?php echo wp_date( $date_format, esc_attr( $end_date_timestamp ), $utc_timezone ); ?>" /><br>
<?php echo (isset($notice_date) ? '<span style="color:red;">'.esc_attr($notice_date).'</span>' : ''); ?></p>
<?php }
if ( $one_time != 'yes' ) { ?>
<fieldset><p><legend><?php esc_attr_e( 'Start time', 'very-simple-event-list' ); ?></legend>
<select id="event-start-time-hour" name="event-start-time-hour" style="width:100px;">
<?php foreach ($hour_values as $hour_value_start) { ?>
<option value='<?php echo esc_attr( $hour_value_start ); ?>'<?php echo ( ( wp_date( 'H', esc_attr( $start_date_timestamp ), $utc_timezone ) ) == $hour_value_start )?' selected':''; ?>><?php echo esc_attr( $hour_value_start ); ?></option>
<?php } ?>
</select>
<select id="event-start-time-minute" name="event-start-time-minute" style="width:100px;">
<?php foreach ($minute_values as $minute_value_start) { ?>
<option value='<?php echo esc_attr( $minute_value_start ); ?>'<?php echo ( ( wp_date( 'i', esc_attr( $start_date_timestamp ), $utc_timezone) ) == $minute_value_start )?' selected':''; ?>><?php echo esc_attr( $minute_value_start ); ?></option>
<?php } ?>
</select>
</p></fieldset>
<fieldset><p><legend><?php esc_attr_e( 'End time', 'very-simple-event-list' ); ?></legend>
<select id="event-end-time-hour" name="event-end-time-hour" style="width:100px;">
<?php foreach ($hour_values as $hour_value_end) { ?>
<option value='<?php echo esc_attr( $hour_value_end ); ?>'<?php echo ( ( wp_date( 'H', esc_attr( $end_date_timestamp ), $utc_timezone ) ) == $hour_value_end )?' selected':''; ?>><?php echo esc_attr( $hour_value_end ); ?></option>
<?php } ?>
</select>
<select id="event-end-time-minute" name="event-end-time-minute" style="width:100px;">
<?php foreach ($minute_values as $minute_value_end) { ?>
<option value='<?php echo esc_attr( $minute_value_end ); ?>'<?php echo ( ( wp_date( 'i', esc_attr( $end_date_timestamp ), $utc_timezone ) ) == $minute_value_end )?' selected':''; ?>><?php echo esc_attr( $minute_value_end ); ?></option>
<?php } ?>
</select>
<input class="checkbox" id="event-hide-end-time" type="checkbox" name="event-hide-end-time" value="yes" <?php checked( esc_attr($hide_end_time), 'yes' ); ?><label for="event-hide-end-time"><?php esc_attr_e('Hide end time', 'very-simple-event-list'); ?></label><br>
<?php echo (isset($notice_time) ? '<span style="color:red;">'.esc_attr($notice_time).'</span>' : ''); ?>
</p></fieldset>
<p><input class="checkbox" id="event-all-day" type="checkbox" name="event-all-day" value="yes" <?php checked( esc_attr($all_day), 'yes' ); ?> />
<label for="event-all-day"><?php esc_attr_e('All-day event', 'very-simple-event-list'); ?></label></p>
<?php } else { ?>
<p><label for="event-time"><?php esc_attr_e( 'Time', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-time" type="text" name="event-time" placeholder="<?php esc_attr_e( 'Example', 'very-simple-event-list' ); ?>: <?php esc_attr_e( '16:00 - 18:00', 'very-simple-event-list' ); ?>" value="<?php echo esc_attr( $time ); ?>" /></p>
<?php } ?>
<p><label for="event-location"><?php esc_attr_e( 'Location', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-location" type="text" name="event-location" placeholder="<?php esc_attr_e( 'Example', 'very-simple-event-list' ); ?>: <?php esc_attr_e( 'Times Square', 'very-simple-event-list' ); ?>" value="<?php echo esc_attr( $location ); ?>" /></p>
<p><label for="event-link"><?php esc_attr_e( 'More info link', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-link" type="text" name="event-link" placeholder="<?php esc_attr_e( 'Example', 'very-simple-event-list' ); ?>: <?php esc_attr_e( 'www.example.com/more-info', 'very-simple-event-list' ); ?>" value="<?php echo esc_url( $link ); ?>" /></p>
<p><label for="event-link-label"><?php esc_attr_e( 'Link label', 'very-simple-event-list' ); ?></label>
<input class="widefat" id="event-link-label" type="text" name="event-link-label" placeholder="<?php esc_attr_e( 'Example', 'very-simple-event-list' ); ?>: <?php esc_attr_e( 'More info', 'very-simple-event-list' ); ?>" value="<?php echo esc_attr( $link_label ); ?>" /></p>
<p><input class="checkbox" id="event-link-target" type="checkbox" name="event-link-target" value="yes" <?php checked( esc_attr($link_target), 'yes' ); ?> />
<label for="event-link-target"><?php esc_attr_e('Open link in new window', 'very-simple-event-list'); ?></label></p>
<p><input class="checkbox" id="event-link-title" type="checkbox" name="event-link-title" value="yes" <?php checked( esc_attr($link_title), 'yes' ); ?> />
<label for="event-link-title"><?php esc_attr_e('Redirect event title to the more info link', 'very-simple-event-list'); ?></label><br>
<input class="checkbox" id="event-link-image" type="checkbox" name="event-link-image" value="yes" <?php checked( esc_attr($link_image), 'yes' ); ?> />
<label for="event-link-image"><?php esc_attr_e('Redirect featured image to the more info link', 'very-simple-event-list'); ?></label><br>
<?php esc_attr_e('The more info link will be hidden in frontend.', 'very-simple-event-list'); ?></p>
<p><label for="event-summary"><?php esc_attr_e( 'Custom summary', 'very-simple-event-list' ); ?></label>
<textarea id="event-summary" name="event-summary" class="large-text" rows="6" placeholder="<?php esc_attr_e( 'This will replace the default summary', 'very-simple-event-list' ); ?>"><?php echo wp_kses_post( $summary); ?></textarea></p>
<?php
}
// save event
function vsel_save_event_info( $post_id ) {
// get current timezone
$current_zone = date_default_timezone_get();
// set utc timezone for strtotime
date_default_timezone_set('UTC');
// get setting for one date instead of start date and end date
$one_date = get_option('vsel-setting-58');
// check if nonce is set
if ( ! isset( $_POST['vsel_nonce'] ) ) {
return;
}
// verify that nonce is valid
if ( ! wp_verify_nonce( $_POST['vsel_nonce'], 'vsel_nonce_action' ) ) {
return;
}
// if this is an autosave, our form has not been submitted, so do nothing
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// check user permission
if ( ( get_post_type() != 'event' ) || ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// set start time
if ( isset( $_POST['event-start-time-hour'] ) ) {
$start_hour = $_POST['event-start-time-hour'];
} else {
$start_hour = '00';
}
if ( isset( $_POST['event-start-time-minute'] ) ) {
$start_minute = $_POST['event-start-time-minute'];
} else {
$start_minute = '00';
}
// set end time
if ( isset( $_POST['event-end-time-hour'] ) ) {
$end_hour = $_POST['event-end-time-hour'];
} else {
$end_hour = '00';
}
if ( isset( $_POST['event-end-time-minute'] ) ) {
$end_minute = $_POST['event-end-time-minute'];
} else {
$end_minute = '00';
}
// checking values and save fields
if ( $one_date == 'yes' ) {
if ( isset( $_POST['event-end-date'] ) ) {
$start_date = $_POST['event-end-date'];
$start_date_time = $start_date.$start_hour.$start_minute;
update_post_meta( $post_id, 'event-start-date', sanitize_text_field(strtotime( $start_date_time ) ) );
}
} else {
if ( isset( $_POST['event-start-date'] ) ) {
$start_date = $_POST['event-start-date'];
$start_date_time = $start_date.$start_hour.$start_minute;
update_post_meta( $post_id, 'event-start-date', sanitize_text_field(strtotime( $start_date_time ) ) );
}
}
if ( isset( $_POST['event-end-date'] ) ) {
$end_date = $_POST['event-end-date'];
$end_date_time = $end_date.$end_hour.$end_minute;
update_post_meta( $post_id, 'event-date', sanitize_text_field(strtotime( $end_date_time ) ) );
}
if ( isset( $_POST['event-time'] ) ) {
update_post_meta( $post_id, 'event-time', sanitize_text_field( $_POST['event-time'] ) );
}
if ( isset( $_POST['event-hide-end-time'] ) ) {
update_post_meta( $post_id, 'event-hide-end-time', 'yes' );
} else {
update_post_meta( $post_id, 'event-hide-end-time', 'no' );
}
if ( isset( $_POST['event-all-day'] ) ) {
update_post_meta( $post_id, 'event-all-day', 'yes' );
} else {
update_post_meta( $post_id, 'event-all-day', 'no' );
}
if ( isset( $_POST['event-location'] ) ) {
update_post_meta( $post_id, 'event-location', sanitize_text_field( $_POST['event-location'] ) );
}
if ( isset( $_POST['event-link'] ) ) {
update_post_meta( $post_id, 'event-link', esc_url_raw( $_POST['event-link'] ) );
}
if ( isset( $_POST['event-link-label'] ) ) {
update_post_meta( $post_id, 'event-link-label', sanitize_text_field( $_POST['event-link-label'] ) );
}
if ( isset( $_POST['event-link-target'] ) ) {
update_post_meta( $post_id, 'event-link-target', 'yes' );
} else {
update_post_meta( $post_id, 'event-link-target', 'no' );
}
if ( isset( $_POST['event-link-title'] ) ) {
update_post_meta( $post_id, 'event-link-title', 'yes' );
} else {
update_post_meta( $post_id, 'event-link-title', 'no' );
}
if ( isset( $_POST['event-link-image'] ) ) {
update_post_meta( $post_id, 'event-link-image', 'yes' );
} else {
update_post_meta( $post_id, 'event-link-image', 'no' );
}
if ( isset( $_POST['event-summary'] ) ) {
update_post_meta( $post_id, 'event-summary', wp_kses_post( $_POST['event-summary'] ) );
}
// set current timezone again
date_default_timezone_set($current_zone);
}
add_action( 'save_post', 'vsel_save_event_info' );
// remove default custom fields metabox from the editor
function vsel_remove_default_metabox() {
remove_meta_box( 'postcustom', 'event', 'normal' );
}
add_action( 'admin_menu' , 'vsel_remove_default_metabox' );
// dashboard event columns
function vsel_custom_columns( $defaults ) {
// get settings to disable time and location column
$disable_time_column = get_option('vsel-setting-56');
$disable_loc_column = get_option('vsel-setting-57');
$disable_menu_order_column = get_option('vsel-setting-61');
unset( $defaults['date'] );
$defaults['start_date_column'] = __( 'Start date', 'very-simple-event-list' );
$defaults['end_date_column'] = __( 'End date', 'very-simple-event-list' );
if ( $disable_time_column != 'yes' ) {
$defaults['time_column'] = __( 'Time', 'very-simple-event-list' );
}
if ( $disable_loc_column != 'yes' ) {
$defaults['location_column'] = __( 'Location', 'very-simple-event-list' );
}
if ( $disable_menu_order_column != 'yes' ) {
$defaults['menu_order_column'] = __( 'Order', 'very-simple-event-list' );
}
return $defaults;
}
add_filter( 'manage_event_posts_columns', 'vsel_custom_columns', 10 );
function vsel_custom_columns_content( $column_name, $post_id ) {
// get utc timezone
$utc_timezone = vsel_utc_timezone();
// get timestamps
$start_date_timestamp = get_post_meta( $post_id, 'event-start-date', true );
$end_date_timestamp = get_post_meta( $post_id, 'event-date', true );
// get time
$time = get_post_meta( $post_id, 'event-time', true );
// get setting for one time field instead of start time and end time
$one_time = get_option('vsel-setting-87');
// start date column
if ( 'start_date_column' == $column_name ) {
if ( !empty($start_date_timestamp) ) {
echo wp_date( get_option('date_format'), esc_attr($start_date_timestamp), $utc_timezone );
} else {
echo '<span aria-hidden="true">—</span>';
}
}
// end date column
if ( 'end_date_column' == $column_name ) {
if ( !empty($end_date_timestamp) ) {
echo wp_date( get_option('date_format'), esc_attr($end_date_timestamp), $utc_timezone );
} else {
echo '<span aria-hidden="true">—</span>';
}
}
// time column
if ( 'time_column' == $column_name ) {
if ( $one_time != 'yes' ) {
if ( !empty($start_date_timestamp) && !empty($end_date_timestamp) ) {
echo wp_date( get_option('time_format'), esc_attr($start_date_timestamp), $utc_timezone ).' - '.wp_date( get_option('time_format'), esc_attr($end_date_timestamp), $utc_timezone );
} else {
echo '<span aria-hidden="true">—</span>';
}
} else {
if ( !empty($time) ) {
echo esc_attr($time);
} else {
echo '<span aria-hidden="true">—</span>';
}
}
}
// location column
if ( 'location_column' == $column_name ) {
$location = get_post_meta( $post_id, 'event-location', true );
if ( !empty($location) ) {
echo esc_attr($location);
} else {
echo '<span aria-hidden="true">—</span>';
}
}
// order column
if ( 'menu_order_column' == $column_name ) {
$order = get_post( $post_id )->menu_order;
if ( !empty($order) ) {
echo esc_attr($order);
} else {
echo '<span aria-hidden="true">0</span>';
}
}
}
add_action( 'manage_event_posts_custom_column', 'vsel_custom_columns_content', 10, 2 );
// make event date column sortable
function vsel_make_columns_sortable( $columns ) {
$columns['start_date_column'] = 'event-start-date';
$columns['end_date_column'] = 'event-date';
return $columns;
}
add_filter( 'manage_edit-event_sortable_columns', 'vsel_make_columns_sortable' );
function vsel_start_date_column_sortable( $vars ) {
if ( is_admin() ) {
if ( isset( $vars['orderby'] ) && 'event-start-date' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'event-start-date',
'orderby' => 'meta_value_num'
) );
}
}
return $vars;
}
add_filter( 'request', 'vsel_start_date_column_sortable' );
function vsel_end_date_column_sortable( $vars ) {
if ( is_admin() ) {
if ( isset( $vars['orderby'] ) && 'event-date' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'event-date',
'orderby' => 'meta_value_num'
) );
}
}
return $vars;
}
add_filter( 'request', 'vsel_end_date_column_sortable' );
// add categories to event css class
function vsel_event_cats() {
// set global
global $post;
$terms = get_the_terms( $post->ID, 'event_cat' );
if ( $terms && ! is_wp_error( $terms ) ) {
$cats = array();
foreach ( $terms as $term ) {
$cats[] = $term->slug;
}
$vsel_cats = implode( " ", $cats );
return ' '.$vsel_cats;
} else {
return '';
}
}
// add status to event css class
function vsel_event_status() {
// set global
global $post;
// get timestamps
$start_date_timestamp = get_post_meta( $post->ID, 'event-start-date', false );
$end_date_timestamp = get_post_meta( $post->ID, 'event-date', false );
$today = vsel_timestamp_today();
$tomorrow = vsel_timestamp_tomorrow();
$start_date = array();
$end_date = array();
foreach ( $start_date_timestamp as $term ) {
$start_date = $term;
}
foreach ( $end_date_timestamp as $term ) {
$end_date = $term;
}
if ( ( $start_date < $tomorrow ) && ( $end_date >= $today ) ) {
return ' vsel-upcoming vsel-current';
} elseif ( $end_date >= $tomorrow ) {
return ' vsel-upcoming vsel-future';
} elseif ( $end_date < $today ) {
return ' vsel-past';
} else {
return '';
}
}
// add categories to single event body class
function vsel_single_event_body_class_cats( $classes ) {
if ( is_singular('event') ) {
// set global
global $post;
$terms = get_the_terms( $post->ID, 'event_cat' );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
$classes[] = 'single-'.$term->slug;
}
}
}
return $classes;
}
add_filter( 'body_class', 'vsel_single_event_body_class_cats' );
// add status to single event body class
function vsel_single_event_body_class_status( $classes ) {
if ( is_singular('event') ) {
$status_function = substr(vsel_event_status(), 1);
if ( !empty($status_function) ) {
$statuses = explode(' ', $status_function);
foreach ( $statuses as $status ) {
$classes[] = 'single-'.$status;
}
}
}
return $classes;
}
add_filter( 'body_class', 'vsel_single_event_body_class_status' );
// add class to pagination
function vsel_prev_posts() {
return 'class="vsel-prev"';
}
add_filter( 'previous_posts_link_attributes', 'vsel_prev_posts', 10 );
function vsel_next_posts() {
return 'class="vsel-next"';
}
add_filter( 'next_posts_link_attributes', 'vsel_next_posts', 10 );
// add settings link
function vsel_action_links( $links ) {
$settingslink = array( '<a href="'. admin_url( 'options-general.php?page=vsel' ) .'">'.__('Settings', 'very-simple-event-list').'</a>' );
return array_merge( $links, $settingslink );
}
add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'vsel_action_links' );
// disable event list in block editor
function vsel_disable_event_list() {
if ( defined('REST_REQUEST') && REST_REQUEST && ('edit' === $_GET['context']) ) {
$disable = true;
} else {
$disable = false;
}
return $disable;
}
// include files
include 'vsel-options.php';
include 'vsel-block.php';
include 'vsel-widget.php';
include 'vsel-page-shortcodes.php';
include 'vsel-widget-shortcodes.php';
include 'vsel-template-support.php';
include 'vsel-feed.php';