public function shortcode($args = array(), $content = '') { $original_arguments = $args; $codec = new Eab_Codec_ArgumentsCodec(); $args = $codec->parse_arguments($args, array('format' => 'H:i T l', 'class' => '', 'add' => 0, 'expired' => __('Closed', Eab_EventsHub::TEXT_DOMAIN), 'legacy' => false, 'category' => false, 'categories' => false)); if (!empty($args['legacy'])) { return $this->_legacy_shortcode($original_arguments); } $class = !empty($args['class']) ? 'class="' . sanitize_html_class($args['class']) . '"' : ''; $format = "<div {$class}>%s</div>"; $output = ''; $additional = 0; if (!empty($args['add']) && (int) $args['add']) { $additional = (int) $args['add'] * 60; } $query = $codec->get_query_args($args); $now = eab_current_time() + $additional; $events = Eab_CollectionFactory::get_upcoming_events($now, $query); $ret = array(); foreach ($events as $event) { $ts = $event->get_start_timestamp(); if ($ts < $now) { continue; } $ret[$ts] = $event; } ksort($ret); $next = reset($ret); if ($next) { $output = date_i18n($args['format'], $next->get_start_timestamp()); } else { $output = !empty($args['expired']) ? esc_html($args['expired']) : $content; } return sprintf($format, $output); }
protected function _preparse_arguments($raw, $accepted) { $_template = false; if (!empty($accepted['template']) && (defined('EAB_DISALLOW_SHORTCODE_TEMPLATES') && EAB_DISALLOW_SHORTCODE_TEMPLATES)) { $_template = $accepted['template']; unset($accepted['template']); } $args = wp_parse_args($raw, $accepted); if (isset($accepted['network'])) { $args['network'] = $this->_arg_to_bool($args['network']); } if (isset($accepted['relative_date']) && !empty($args['relative_date'])) { $pivot = !empty($args['date']) ? strtotime($args['date']) : eab_current_time(); $relative_date = strtotime($args["relative_date"], $pivot); if ($relative_date) { $args['date'] = date("Y-m-d H:i:s", $relative_date); } } if (isset($accepted['date'])) { $args['date'] = $this->_arg_to_time($args['date']); } if (isset($accepted['lookahead'])) { $args['lookahead'] = $this->_arg_to_bool($args['lookahead']); } if (isset($accepted['weeks'])) { $args['weeks'] = $this->_arg_to_int($args['weeks']); } if (isset($accepted['limit'])) { $args['limit'] = $this->_arg_to_int($args['limit']); } if (isset($accepted['order'])) { $args['order'] = $args['order'] && in_array(strtoupper($args['order']), array('ASC', 'DESC')) ? strtoupper($args['order']) : false; } if (isset($accepted['category']) && $args['category']) { $args['category'] = $this->_arg_to_int($args['category']) ? array('type' => 'id', 'value' => $this->_arg_to_int($args['category'])) : array('type' => 'slug', 'value' => $args['category']); } if (isset($accepted['categories']) && !empty($args['categories'])) { $args['categories'] = $this->_arg_to_int_list($args['categories']) ? array('type' => 'id', 'value' => $this->_arg_to_int_list($args['categories'])) : false; } if (isset($accepted['paged'])) { $args['paged'] = $this->_arg_to_bool($args['paged']); } if (isset($accepted['page'])) { $args['page'] = $this->_arg_to_int($args['page']); } if (isset($accepted['navigation'])) { $args['navigation'] = $this->_arg_to_bool($args['navigation']); } if (isset($accepted['override_styles'])) { $args['override_styles'] = $this->_arg_to_bool($args['override_styles']); } if (isset($accepted['override_scripts'])) { $args['override_scripts'] = $this->_arg_to_bool($args['override_scripts']); } if ($_template && defined('EAB_DISALLOW_SHORTCODE_TEMPLATES') && EAB_DISALLOW_SHORTCODE_TEMPLATES) { $args['template'] = $_template; } return $args; }
function expire_archived_events() { if (class_exists('Eab_Events_ExpirePastEvents')) { return false; } $args = array(); $collection = new Eab_LastMonthArchivedCollection(eab_current_time(), $args); $events = $collection->to_collection(); foreach ($events as $event) { $event->set_status(Eab_EventModel::STATUS_EXPIRED); } }
function redirect() { global $post; if (!is_singular()) { return false; } if (!$post || !is_object($post) || !isset($post->post_type) || 'incsub_event' != $post->post_type) { return false; } $event = $post instanceof Eab_EventModel ? $post : new Eab_EventModel($post); if (!$event->is_recurring()) { return false; } if ($event->is_recurring_child()) { return false; } // Already an instance - no need to keep going. $collection = new Eab_AllUpcomingRecurringChildrenCollection($event, $time); $children = $collection->to_collection(); if (!$children) { return false; } $now = eab_current_time(); $redirect_to = $active = false; $fallback = array(); foreach ($children as $key => $child) { if ($child->get_end_timestamp() < $now) { continue; } // Already passed, move on if ($child->get_start_timestamp() <= $now) { $active = $child; break; // Currently ongoing event } else { $fallback[$child->get_start_timestamp()] = $child; } } if (!empty($active)) { $redirect_to = $active; } else { if (!empty($fallback)) { sort($fallback); $redirect_to = reset($fallback); } } if (!$redirect_to) { return false; } wp_redirect(get_permalink($redirect_to->get_id())); die; }
function widget($args, $instance) { global $wpdb, $current_site, $post, $wiki_tree; extract($args); $instance = apply_filters('eab-widgets-upcoming-instance_read', $instance, $this); $options = wp_parse_args((array) $instance, $this->_defaults); $title = apply_filters('widget_title', empty($instance['title']) ? __('Upcoming', $this->translation_domain) : $instance['title'], $instance, $this->id_base); $query_args = array('posts_per_page' => $options['limit']); if ($options['category']) { $query_args['tax_query'] = array(array('taxonomy' => 'eab_events_category', 'field' => 'id', 'terms' => (int) $options['category'])); } if ($options['lookahead'] && is_numeric($options['lookahead'])) { $lookahead_func = create_function('', 'return ' . $options['lookahead'] . ';'); add_filter('eab-collection-upcoming_weeks-week_number', $lookahead_func); } $_events = Eab_CollectionFactory::get_upcoming_weeks_events(eab_current_time(), $query_args); if (!empty($lookahead_func)) { remove_filter('eab-collection-upcoming_weeks-week_number', $lookahead_func); } if (is_array($_events) && count($_events) > 0) { echo $before_widget; echo $before_title . $title . $after_title; echo '<div id="event-popular"><ul>'; foreach ($_events as $_event) { $thumbnail = $excerpt = false; if ($options['thumbnail']) { $raw = wp_get_attachment_image_src(get_post_thumbnail_id($_event->get_id())); $thumbnail = $raw ? @$raw[0] : false; } $excerpt = false; if (!empty($options['excerpt'])) { $words = (int) $options['excerpt_words_limit'] ? (int) $options['excerpt_words_limit'] : false; $excerpt = eab_call_template('util_words_limit', $_event->get_excerpt_or_fallback(), $words); } echo '<li>'; echo '<a href="' . get_permalink($_event->get_id()) . '" class="' . ($_event->get_id() == $post->ID ? 'current' : '') . '" >' . ($options['thumbnail'] && $thumbnail ? '<img src="' . $thumbnail . '" /><br />' : '') . $_event->get_title() . '</a>'; if (!empty($options['dates'])) { echo '<div class="wpmudevevents-date">' . Eab_Template::get_event_dates($_event) . '</div>'; } if (!empty($options['excerpt']) && !empty($excerpt)) { echo '<p>' . $excerpt . '</p>'; } do_action('eab-widgets-upcoming-after_event', $options, $_event, $this); echo '</li>'; } echo '</ul></div>'; echo $after_widget; } else { echo $before_widget . $before_title . $title . $after_title . '<p class="eab-widget-no_events">' . __('No upcoming events.', Eab_EventsHub::TEXT_DOMAIN) . '</p>' . $after_widget; } }
/** * Sets status of old events to STATUS_ARCHIVED */ function archive_old_events() { $time = eab_current_time(); $events = Eab_CollectionFactory::get_old_events($time); foreach ($events as $event) { if ($event->get_last_end_timestamp() < $time) { if ($event->is_recurring()) { continue; } $event->set_status(Eab_EventModel::STATUS_ARCHIVED); do_action('eab-scheduler-event_archived', $event); } } }
private function _reset_expired_bookings($since) { //$rsvps = Eab_EventModel::get_bookings(Eab_EventModel::BOOKING_YES, $since); $rsvps = Eab_EventModel::get_bookings(Eab_EventModel::BOOKING_YES); // Just reset all the expired bookings. $now = eab_current_time(); $cutoff_limit = $this->_data->get_option('rsvp_auto_reset-cutoff'); $cutoff_limit = $cutoff_limit ? $cutoff_limit : 3600; $callback = (int) $this->_data->get_option('rsvp_auto_reset-remove_attendance') ? 'delete_attendance' : 'cancel_attendance'; $events = array(); // Events cache foreach ($rsvps as $rsvp) { // Check time difference $time_diff = $now - strtotime($rsvp->timestamp); if ($time_diff < $cutoff_limit) { continue; } // This one still has time to pay // Check event premium status if (empty($events[$rsvp->event_id])) { $events[$rsvp->event_id] = new Eab_EventModel(get_post($rsvp->event_id)); } if (!$events[$rsvp->event_id]->is_premium()) { continue; } // Not a paid event, carry on // Check user payment if ($events[$rsvp->event_id]->user_paid($rsvp->user_id)) { continue; } // User paid for event, we're good here. // If we got here, we should reset the users RSVP if (is_callable(array($events[$rsvp->event_id], $callback))) { $events[$rsvp->event_id]->{$callback}($rsvp->user_id); } } }
public function update_schedule() { return update_option($this->get_schedule_key(), eab_current_time()); }
private function _get_event_meta_boxes($event) { $ret = '<div id="eab-events-fpe-meta_info">'; $ret .= '<div class="eab-events-fpe-col_wrapper">'; // Date, time $ret .= '<div class="eab-events-fpe-meta_box" id="eab-events-fpe-date_time">'; // Start date/time $start = $event->get_start_timestamp(); $start = $start ? $start : eab_current_time(); $ret .= '<div>'; $ret .= '<label>' . __('Starts on', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= ' <input type="text" name="" id="eab-events-fpe-start_date" value="' . date('Y-m-d', $start) . '" size="10" />'; $ret .= ' <input type="text" name="" id="eab-events-fpe-start_time" value="' . date('H:i', $start) . '" size="3" />'; $ret .= '</div>'; // End date/time $end = $event->get_end_timestamp(); $end = $end ? $end : eab_current_time() + 3600; $ret .= '<div>'; $ret .= '<label>' . __('Ends on', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= ' <input type="text" name="" id="eab-events-fpe-end_date" value="' . date('Y-m-d', $end) . '" size="10" />'; $ret .= ' <input type="text" name="" id="eab-events-fpe-end_time" value="' . date('H:i', $end) . '" size="3" />'; $ret .= '</div>'; // End date, time, venue $ret .= '</div>'; // Status, type, misc $ret .= '<div class="eab-events-fpe-meta_box" id="eab-events-fpe-status_type">'; // Status $ret .= '<div>'; $ret .= '<label>' . __('Event status', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= '<select name="" id="eab-events-fpe-status">'; $ret .= ' <option value="' . Eab_EventModel::STATUS_OPEN . '" ' . ($event->is_open() ? 'selected="selected"' : '') . ' >' . __('Open', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= ' <option value="' . Eab_EventModel::STATUS_CLOSED . '" ' . ($event->is_closed() ? 'selected="selected"' : '') . ' >' . __('Closed', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= ' <option value="' . Eab_EventModel::STATUS_EXPIRED . '" ' . ($event->is_expired() ? 'selected="selected"' : '') . ' >' . __('Expired', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= ' <option value="' . Eab_EventModel::STATUS_ARCHIVED . '" ' . ($event->is_archived() ? 'selected="selected"' : '') . ' >' . __('Archived', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= apply_filters('eab-events-fpe-event_meta-extra_event_status', '', $event); $ret .= '</select>'; $ret .= apply_filters('eab-events-fpe-event_meta-after_event_status', '', $event); $ret .= '</div>'; // Type if ($this->_data->get_option('accept_payments')) { $ret .= '<div>'; $ret .= '<label>' . __('Is this a paid event?', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= '<select name="" id="eab-events-fpe-is_premium">'; $ret .= ' <option value="1" ' . ($event->is_premium() ? 'selected="selected"' : '') . '>' . __('Yes', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= ' <option value="0" ' . ($event->is_premium() ? '' : 'selected="selected"') . '>' . __('No', Eab_EventsHub::TEXT_DOMAIN) . '</option>'; $ret .= '</select>'; $ret .= '<div id="eab-events-fpe-event_fee-wrapper">'; $ret .= '<label for="eab-events-fpe-event_fee">' . __('Fee', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= ' <input type="text" name="" id="eab-events-fpe-event_fee" size="6" value="' . esc_attr($event->get_price()) . '" />'; $ret .= '</div>'; // eab-events-fpe-event_fee-wrapper $ret .= '</div>'; } // End status, type, misc $ret .= '</div>'; $ret .= '</div>'; // eab-events-fpe-col_wrapper $ret .= '<div class="eab-events-fpe-col_wrapper">'; // Start Venue $ret .= '<div class="eab-events-fpe-meta_box" id="eab-events-fpe-meta_box-venue">'; // Venue $ret .= '<div>'; $ret .= '<label>' . __('Venue', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= '<br /><input type="text" name="" id="eab-events-fpe-venue" value="' . esc_attr($event->get_venue_location()) . '" />'; $ret .= '</div>'; // End venue $ret .= '</div>'; $ret .= '</div>'; // eab-events-fpe-col_wrapper $ret .= '<div class="eab-events-fpe-col_wrapper">'; // Start Categories $event_cat_ids = $event->get_category_ids(); $event_cat_ids = $event_cat_ids ? $event_cat_ids : array(); $all_cats = get_terms('eab_events_category', array('hide_empty' => false)); $all_cats = $all_cats ? $all_cats : array(); $ret .= '<div class="eab-events-fpe-meta_box" id="eab-events-fpe-meta_box-categories">'; // Categories $ret .= '<div>'; $ret .= '<label>' . __('Category', Eab_EventsHub::TEXT_DOMAIN) . '</label>'; $ret .= '<br /><select id="eab-events-fpe-categories"><option value=""></option>'; foreach ($all_cats as $cat) { $selected = in_array($cat->term_id, $event_cat_ids) ? "selected='selected'" : ''; $ret .= "<option value='{$cat->term_id}' {$selected}>{$cat->name}</option>"; } $ret .= "</select>"; $ret .= '</div>'; // End Categories $ret .= '</div>'; $ret .= '</div>'; // eab-events-fpe-col_wrapper $ret .= '<div class="eab-events-fpe-col_wrapper">'; $addons = apply_filters('eab-events-fpe-add_meta', '', $event); if ($addons) { $ret .= '<div class="eab-events-fpe-col_wrapper">'; $ret .= $addons; $ret .= '</div>'; // eab-events-fpe-col_wrapper } $featured_image = $event->get_featured_image_url(); $featured_image_id = (int) $event->get_featured_image_id(); if (current_user_can('upload_files')) { /* Added by Ashok */ $ret .= '<div class="eab-events-fpe-col_wrapper">'; $ret .= '<label>' . __('Feature Image', Eab_EventsHub::TEXT_DOMAIN) . '</label>' . '<br />' . '<a href="#featured_image" class="eab-fpe-upload">' . '<input type="hidden" id="eab-fpe-attach_id" name="" value="' . $featured_image_id . '" />' . '<input type="hidden" name="featured" value="' . esc_attr($featured_image_id) . '" />' . '<img src="' . esc_url($featured_image) . '" id="eab-fpe-preview-upload" ' . (empty($featured_image) ? 'style="display:none"' : '') . ' />' . '<br />' . '<span>' . __('Change the featured image', Eab_EventsHub::TEXT_DOMAIN) . '</span>' . '</a>'; $ret .= '</div>'; /* End of adding by Ashok */ } else { if (!empty($featured_image_id) && !empty($featured_image)) { $ret .= '<div class="eab-events-fpe-col_wrapper">'; $ret .= '<label>' . __('Feature Image', Eab_EventsHub::TEXT_DOMAIN) . '</label>' . '<img src="' . esc_url($featured_image) . '" id="eab-fpe-preview-upload" />' . '<input type="hidden" id="eab-fpe-attach_id" name="featured" value="' . esc_attr($featured_image_id) . '" />' . '</div>'; } } // OK/Cancel $ok_label = $event->get_id() ? __('Update', Eab_EventsHub::TEXT_DOMAIN) : __('Publish', Eab_EventsHub::TEXT_DOMAIN); $ret .= '<div id="eab-events-fpe-ok_cancel">'; $ret .= '<input type="button" class="button button-primary" id="eab-events-fpe-ok" value="' . esc_attr($ok_label) . '" />'; $ret .= '<input type="button" class="button" id="eab-events-fpe-cancel" value="' . esc_attr(__('Cancel', Eab_EventsHub::TEXT_DOMAIN)) . '" />'; $ret .= '</div>'; $ret .= '</div>'; // eab-events-fpe-col_wrapper $ret .= '<div class="eab-events-fpe-col_wrapper">'; // RSVPs $ret .= '<div class="eab-events-fpe-meta_box" id="eab-events-fpe-rsvps">'; if ($event->has_bookings()) { $ret .= '<a href="#toggle_rsvps" id="eab-events-fpe-toggle_rsvps">' . __('Toggle RSVPs', Eab_EventsHub::TEXT_DOMAIN) . '</a>'; $ret .= '<div id="eab-events-fpe-rsvps-wrapper" style="display:none">'; $ret .= Eab_Template::get_admin_attendance_addition_form($event, Eab_Template::get_rsvp_status_list()); $ret .= '<div>'; $ret .= Eab_Template::get_admin_bookings(Eab_EventModel::BOOKING_YES, $event); $ret .= '</div>'; $ret .= '<div>'; $ret .= Eab_Template::get_admin_bookings(Eab_EventModel::BOOKING_MAYBE, $event); $ret .= '</div>'; $ret .= '<div>'; $ret .= Eab_Template::get_admin_bookings(Eab_EventModel::BOOKING_NO, $event); $ret .= '</div>'; $ret .= '</div>'; //eab-events-fpe-rsvps-wrapper } else { $ret .= Eab_Template::get_admin_attendance_addition_form($event, Eab_Template::get_rsvp_status_list()); } // End RSVPs $ret .= '</div>'; $ret .= '</div>'; // eab-events-fpe-col_wrapper $ret .= '</div>'; return $ret; }
private function _get_requested_timestamp() { global $bp; if (!$bp->action_variables) { return eab_current_time(); } $year = (int) (isset($bp->action_variables[0]) ? $bp->action_variables[0] : date('Y')); $year = $year ? $year : date('Y'); $month = (int) (isset($bp->action_variables[1]) ? $bp->action_variables[1] : date('m')); $month = $month ? $month : date('m'); return strtotime("{$year}-{$month}-01"); }
function handle_calendar_request() { $now = !empty($_POST['now']) ? (int) $_POST['now'] : false; $now = $now ? $now : eab_current_time(); $unit = !empty($_POST["unit"]) && "year" == $_POST['unit'] ? "year" : "month"; $operand = !empty($_POST['direction']) && "prev" == $_POST['direction'] ? "+1" : "-1"; $widget_id = !empty($_POST['widget_id']) && (int) $_POST['widget_id'] ? (int) $_POST['widget_id'] : $this->number; $date = strtotime("{$operand} {$unit}", $now); $all_data = $this->get_settings(); $instance = !empty($all_data[$widget_id]) ? $all_data[$widget_id] : array(); $network = is_multisite() ? (int) $instance['network'] : false; $category = !empty($instance['category']) ? is_array($instance['category']) ? array_filter(array_map('esc_attr', $instance['category'])) : array_filter(array(esc_attr($instance['category']))) : array(); echo $this->_render_calendar($date, $network, $category); die; }
function show_settings() { $tips = new WpmuDev_HelpTooltips(); $tips->set_icon_url(plugins_url('events-and-bookings/img/information.png')); $from = $this->_data->get_option('eab_cancelations-email-from'); $from = $from ? $from : get_option('admin_email'); $subject = trim($this->_data->get_option('eab_cancelations-email-subject')); $subject = !empty($subject) ? $subject : $this->_default_subject; $body = trim($this->_data->get_option('eab_cancelations-email-body')); $body = !empty($body) ? $body : $this->_default_message; $codec = new Eab_Macro_Codec(); $macros = join('</code>, <code>', $codec->get_macros()); $events = Eab_CollectionFactory::get_upcoming_events(eab_current_time(), array('posts_per_page' => 10)); ?> <div id="eab-settings-eab_cancelations" class="eab-metabox postbox"> <h3 class="eab-hndle"><?php _e('Event cancellation settings', Eab_EventsHub::TEXT_DOMAIN); ?> </h3> <div class="eab-inside"> <div class="eab-settings-settings_item"> <label for="eab_cancellations-hide_events"><?php _e('Hide cancelled events', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <input type="hidden" name="eab_cancelations[hide_events]" value="" /> <input type="checkbox" name="eab_cancelations[hide_events]" id="eab_cancellations-hide_events" value="1" <?php checked(true, $this->_data->get_option('eab_cancelations-hide_events')); ?> /> </div> <div class="eab-settings-settings_item"> <label for="eab_cancellations-email_batch_limit"><?php _e('Email batch limit', Eab_EventsHub::TEXT_DOMAIN); ?> :</label> <span><?php echo $tips->add_tip(__('This is the maximum number of emails that will be sent in one go. The rest will be scheduled for sending.', Eab_EventsHub::TEXT_DOMAIN)); ?> </span> <input type="text" name="eab_cancelations[email_batch_limit]" id="eab_cancellations-email_batch_limit" value="<?php echo (int) $this->_get_email_batch_limit(); ?> " /> </div> <div class="eab-note"> <?php _e('This is the email that will be sent to your attendees on event cancellation.', Eab_EventsHub::TEXT_DOMAIN); ?> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_cancelations-from"><?php _e('From email address', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(__('This is the address the cancellation email will be sent from', Eab_EventsHub::TEXT_DOMAIN)); ?> </span> <input type="text" id="eab_event-eab_cancelations-from" name="eab_cancelations[email-from]" value="<?php esc_attr_e($from); ?> " /> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_cancelations-subject"><?php _e('Email subject', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email subject. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <input type="text" class="widefat" id="eab_event-eab_cancelations-subject" name="eab_cancelations[email-subject]" value="<?php esc_attr_e($subject); ?> " /> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_cancelations-body"><?php _e('Email body', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email body. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <?php wp_editor($body, 'eab_cancelations-email-body', array('name' => 'eab_cancelations-email-body')); ?> </div> <div class="eab-settings-settings_item"><small><?php printf(__('You can use these macros in your subject and body: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros); ?> </small></div> <?php if ($events) { ?> <div class="eab-settings-settings_item"> <input type="button" class="button" id="eab_event-eab_cancelations-preview" value="<?php esc_attr_e(__('Preview', Eab_EventsHub::TEXT_DOMAIN)); ?> " /> <?php _e('using this event data:', Eab_EventsHub::TEXT_DOMAIN); ?> <select id="eab_event-eab_cancelations-events"> <?php foreach ($events as $event) { ?> <option value="<?php esc_attr_e($event->get_id()); ?> "><?php echo $event->get_title(); ?> </option> <?php } ?> </select> <div id="eab_event-eab_cancelations-email_preview_container" style="line-height: 1.2em"></div> </div> <?php } ?> </div> </div> <script type="text/javascript"> (function ($) { $(function () { var $container = $("#eab_event-eab_cancelations-email_preview_container"), $subject = $("#eab_event-eab_cancelations-subject"), $events = $("#eab_event-eab_cancelations-events") ; $("#eab_event-eab_cancelations-preview").on("click", function () { var editor = tinyMCE.get("eab_cancelations-email-body") body_string = (tinyMCE && tinyMCE.activeEditor && tinyMCE.activeEditor.editorId == editor.editorId ? tinyMCE.activeEditor.getContent() : $("#eab_cancelations-email-body").val() ); $container.html('<?php echo esc_js(__("Please, hold on... ", Eab_EventsHub::TEXT_DOMAIN)); ?> '); $.post(ajaxurl, { "action": "eab_cancellation_email-preview_email", "subject": $subject.val(), "body": body_string, "event_id": $events.val() }, function (data) { $container.html(data); }, 'html'); }); }) })(jQuery); </script> <?php }
public function shortcode($args = array(), $content = '') { $original_arguments = $args; $codec = new Eab_Codec_ArgumentsCodec(); $args = $codec->parse_arguments($args, array('id' => '', 'format' => 'dHMS', 'goto' => '', 'class' => '', 'type' => '', 'size' => 70, 'add' => 0, 'allow_scaling' => false, 'compact' => false, 'title' => false, 'footer_script' => false, 'expired' => __('Closed', Eab_EventsHub::TEXT_DOMAIN), 'legacy' => false, 'category' => false, 'categories' => false, 'weeks' => false)); if (!empty($args['legacy'])) { return $this->_legacy_shortcode($original_arguments); } $class = !empty($args['class']) ? 'class="' . sanitize_html_class($args['class']) . '"' : ''; $id = str_replace(array(" ", "'", '"'), "", $args['id']); // We cannot let spaces and quotes in id // Do not add quotes for page refresh if ($args['goto'] && $args['goto'] != "window.location.href") { $args['goto'] = "'" . str_replace(array("'", '"'), "", $args['goto']) . "'"; } // Do not allow quotes which may break js $transform = false; if ($args['size'] < 70 && !empty($args['allow_scaling'])) { $transform = $args['size'] / 70; } switch ($args['size']) { case 70: $height = 72; break; case 82: $height = 84; break; case 127: $height = 130; break; case 254: $height = 260; break; default: $args['size'] = 70; $height = 72; break; } $sprite_file = plugins_url('/events-and-bookings/img/sprite_' . $args['size'] . 'x' . $height . '.png'); $secs = -1; $additional = 0; if (!empty($args['add']) && (int) $args['add']) { $additional = (int) $args['add'] * 60; } $query = $codec->get_query_args($args); $now = eab_current_time() + $additional; //$events = Eab_CollectionFactory::get_upcoming_events($now, $query); $future_peeking_method = false; if (!empty($args['weeks']) && is_numeric($args['weeks'])) { $future_peeking_method = create_function('', 'return ' . (int) $args['weeks'] . ';'); } if (!empty($future_peeking_method)) { add_filter('eab-collection-upcoming_weeks-week_number', $future_peeking_method); } $events = Eab_CollectionFactory::get_upcoming_weeks_events($now, $query); if (!empty($future_peeking_method)) { remove_filter('eab-collection-upcoming_weeks-week_number', $future_peeking_method); } $ret = array(); foreach ($events as $event) { $ts = $event->get_start_timestamp(); if ($ts < $now) { continue; } $ret[$ts] = $event; } ksort($ret); $next = reset($ret); if ($next) { $secs = $next->get_start_timestamp() - $now; } else { return $content; } $script = ''; $script .= "<script type='text/javascript'>"; $script .= "jQuery(document).ready(function(\$) {"; $script .= "\$('#eab_next_event_countdown" . $id . "').countdown({\n\t\t\t\t\tformat: '" . $args['format'] . "',\n\t\t\t\t\texpiryText: '" . $args['expired'] . "',\n\t\t\t\t\tuntil: " . $secs . ","; if ($args['goto']) { $script .= "onExpiry: eab_next_event_refresh" . $id . ","; } if ($args['type'] == 'flip') { $script .= "onTick: function () { \$(document).trigger('eab-event_countdown-tick', [\$(this), '{$sprite_file}']);},"; } $script .= "alwaysExpire: true});"; if ($args['goto']) { $script .= "function eab_next_event_refresh" . $id . "() {window.location.href=" . $args['goto'] . ";}"; } $script .= "});</script>"; if ('flip' == $args['type']) { $script .= '<script type="text/javascript" src="' . plugins_url(basename(EAB_PLUGIN_DIR) . "/js/event_countdown_flip.js") . '"></script>'; } // remove line breaks to prevent wpautop break the script $script = str_replace(array("\r", "\n", "\t", "<br>", "<br />"), "", preg_replace('/\\s+/m', ' ', $script)); $this->add_countdown = true; $markup = '<div class="eab_next_event_countdown-wrapper">' . ($args['title'] ? '<h4><a href="' . get_permalink($next->get_id()) . '">' . $next->get_title() . '</a></h4>' : '') . "<div id='eab_next_event_countdown{$id}' {$class} data-height='{$height}' data-size='" . $args['size'] . "'></div>" . '</div>'; if ($transform && !empty($args['allow_scaling'])) { $markup .= <<<EOStandardTransformCSS <style type="text/css"> #eab_next_event_countdown{$id} .countdown_section { \ttransform: scale({$transform},{$transform}); \t-ms-transform: scale({$transform},{$transform}); \t-webkit-transform: scale({$transform},{$transform}); } </style> EOStandardTransformCSS; } if (!empty($args['size']) && !empty($args['compact'])) { $base_size = $transform && !empty($args['allow_scaling']) ? $args['size'] * $transform : $args['size']; $max_width = $base_size * 8 + 20; $markup .= <<<EOStandardCompactCSS <style type="text/css"> #eab_next_event_countdown{$id} { \tmax-width: {$max_width}px; } </style> EOStandardCompactCSS; } if ($args['footer_script'] && in_array($args['footer_script'], array('yes', 'true', '1'))) { self::add_script($script); add_action('wp_footer', array($this, 'inject_queued_scripts'), 99); } else { $markup .= $script; } return $markup; }
function post_type_link($permalink, $post_obj, $leavename) { if (empty($permalink)) { return $permalink; } $post_id = $post = false; if (is_object($post_obj) && !empty($post_obj->ID)) { $post_id = $post_obj->ID; $post = $post_obj; } else { if (is_numeric($post_obj)) { $post_id = $post_obj; $post = get_post($post_id); } } $rewritecode = array('%incsub_event%', '%event_year%', '%event_monthnum%'); if ($post && $post->post_type == 'incsub_event' && '' != $permalink) { $starts = get_post_meta($post_id, 'incsub_event_start'); $start = isset($starts[0]) ? strtotime($starts[0]) : eab_current_time(); $year = date('Y', $start); $month = date('m', $start); $rewritereplace = array($post->post_name == "" ? isset($post->ID) ? $post->ID : 0 : $post->post_name, $year, $month); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } return $permalink; }
function show_settings() { $tips = new WpmuDev_HelpTooltips(); $tips->set_icon_url(plugins_url('events-and-bookings/img/information.png')); $positive_rsvp = $this->_data->get_option('eab_rsvps-email_me-positive_rsvp') ? 'checked="checked"' : ''; $paid_rsvp = $this->_data->get_option('eab_rsvps-email_me-paid_rsvp') ? 'checked="checked"' : ''; $notify_admin = $this->_data->get_option('eab_rsvps-email_me-notify_admin') ? 'checked="checked"' : ''; $notify_author = $this->_data->get_option('eab_rsvps-email_me-notify_author') ? 'checked="checked"' : ''; $subject = $this->_data->get_option('eab_rsvps-email_me-subject'); $body = $this->_data->get_option('eab_rsvps-email_me-body'); $codec = new Eab_Events_RsvpEmailMe_Codec(); $macros = join('</code>, <code>', $codec->get_macros()); $events = Eab_CollectionFactory::get_upcoming_events(eab_current_time(), array('posts_per_page' => 10)); ?> <div id="eab-settings-eab_rsvps_me" class="eab-metabox postbox"> <h3 class="eab-hndle"><?php _e('RSVP Notification Email settings', Eab_EventsHub::TEXT_DOMAIN); ?> </h3> <div class="eab-inside"> <div class="eab-settings-settings_item"> <label><?php _e('Send an update', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <br /> <label for="eab_event-eab_rsvps-me-positive_rsvp" style="display:block; line-height:1.8em"> <input type="hidden" name="eab_rsvps_me[email-positive_rsvp]" value="" /> <input type="checkbox" id="eab_event-eab_rsvps-me-positive_rsvp" name="eab_rsvps_me[email-positive_rsvp]" value="1" <?php echo $positive_rsvp; ?> /> <?php _e('On all positive RSVPs', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <label for="eab_event-eab_rsvps-me-paid_rsvp" style="display:block; line-height:1.8em"> <input type="hidden" name="eab_rsvps_me[email-paid_rsvp]" value="" /> <input type="checkbox" id="eab_event-eab_rsvps-me-paid_rsvp" name="eab_rsvps_me[email-paid_rsvp]" value="1" <?php echo $paid_rsvp; ?> /> <?php _e('When user pays for a paid event', Eab_EventsHub::TEXT_DOMAIN); ?> </label> </div> <div class="eab-settings-settings_item"> <label><?php _e('Notify', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <br /> <label for="eab_event-eab_rsvps-me-notify_admin" style="display:block; line-height:1.8em"> <input type="hidden" name="eab_rsvps_me[email-notify_admin]" value="" /> <input type="checkbox" id="eab_event-eab_rsvps-me-notify_admin" name="eab_rsvps_me[email-notify_admin]" value="1" <?php echo $notify_admin; ?> /> <?php _e('Site administrator', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <label for="eab_event-eab_rsvps-me-notify_author" style="display:block; line-height:1.8em"> <input type="hidden" name="eab_rsvps_me[email-notify_author]" value="" /> <input type="checkbox" id="eab_event-eab_rsvps-me-notify_author" name="eab_rsvps_me[email-notify_author]" value="1" <?php echo $notify_author; ?> /> <?php _e('Event author', Eab_EventsHub::TEXT_DOMAIN); ?> </label> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_rsvps-me-subject"><?php _e('Email subject', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email subject. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <input type="text" class="widefat" id="eab_event-eab_rsvps-me-subject" name="eab_rsvps_me[email-subject]" value="<?php esc_attr_e($subject); ?> " /> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_rsvps-me-body"><?php _e('Email body', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email body. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <?php wp_editor($body, 'eab_rsvps-email_me-body', array('name' => 'eab_rsvps_me-email_me-body')); ?> </div> <div class="eab-settings-settings_item"><small><?php printf(__('You can use these macros in your subject and body: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros); ?> </small></div> <?php if ($events) { ?> <div class="eab-settings-settings_item"> <input type="button" class="button" id="eab_event-eab_rsvps-me-preview" value="<?php esc_attr_e(__('Preview', Eab_EventsHub::TEXT_DOMAIN)); ?> " /> <?php _e('using this event data:', Eab_EventsHub::TEXT_DOMAIN); ?> <select id="eab_event-eab_rsvps-me-events"> <?php foreach ($events as $event) { ?> <option value="<?php esc_attr_e($event->get_id()); ?> "><?php echo $event->get_title(); ?> </option> <?php } ?> </select> <div id="eab_event-eab_rsvp_me-email_preview_container" style="line-height: 1.2em"></div> </div> <?php } ?> </div> </div> <script type="text/javascript"> (function ($) { $(function () { var $container = $("#eab_event-eab_rsvp_me-email_preview_container"), $subject = $("#eab_event-eab_rsvps-me-subject"), $events = $("#eab_event-eab_rsvps-me-events") ; $("#eab_event-eab_rsvps-me-preview").on("click", function () { var body_string = (tinyMCE && tinyMCE.activeEditor ? tinyMCE.activeEditor.getContent() : $("#eab_rsvps_me-email_me-body").val() ); $container.html('<?php echo esc_js(__("Please, hold on... ", Eab_EventsHub::TEXT_DOMAIN)); ?> '); $.post(ajaxurl, { "action": "eab_rsvp_email_me-preview_email", "subject": $subject.val(), "body": body_string, "event_id": $events.val() }, function (data) { $container.html(data); }, 'html'); }); }) })(jQuery); </script> <?php }
public function spawn_recurring_instances($start, $end, $interval, $time_parts) { $old_post_ids = false; if ($this->is_recurring()) { $old_post_ids = $this->_get_recurring_children_ids(); $this->delete_recurring_instances(); do_action('eab-events-recurring_instances-deleted', $this->get_id(), $this); } // Do this first, so we can short out on draft update_post_meta($this->get_id(), 'eab_event_recurring', $interval); update_post_meta($this->get_id(), 'eab_event_recurrence_parts', $time_parts); update_post_meta($this->get_id(), 'eab_event_recurrence_starts', $start); update_post_meta($this->get_id(), 'eab_event_recurrence_ends', $end); if ('draft' === $this->_event->post_status) { return false; } // Draft recurring events do not spawn instances $check_start = $start && checkdate((int) date('n', $start), (int) date('j', $start), (int) date('Y', $start)); if (!$check_start) { do_action('eab-debug-log_error', sprintf(__('Invalid interval start boundary timestamp: [%s]', Eab_EventsHub::TEXT_DOMAIN), $check_start)); } $check_end = $end && checkdate((int) date('n', $end), (int) date('j', $end), (int) date('Y', $end)); if (!$check_end) { do_action('eab-debug-log_error', sprintf(__('Invalid interval end boundary timestamp: [%s]', Eab_EventsHub::TEXT_DOMAIN), $check_end)); } if ($end < $start) { do_action('eab-debug-log_error', sprintf(__('Invalid end boundary after start: [%s] - [%s]', Eab_EventsHub::TEXT_DOMAIN), $start, $end)); } $instances = $this->_get_recurring_instances_timestamps($start, $end, $interval, $time_parts); $duration = (double) @$time_parts['duration']; $duration = $duration ? $duration : 1; $venue = $this->get_venue(); $creation_time = date("Y-m-d H:i:s", eab_current_time()); foreach ($instances as $key => $instance) { $post = array('post_type' => self::POST_TYPE, 'post_status' => self::RECURRENCE_STATUS, 'post_parent' => $this->get_id(), 'post_name' => "{$this->_event->post_name}-{$key}", 'post_date' => $creation_time, 'post_modified' => $creation_time, 'post_title' => $this->get_title(), 'post_author' => $this->get_author(), 'post_excerpt' => $this->get_excerpt(), 'post_content' => $this->get_content(), 'to_ping' => ''); // Also propagate discussion settings if (!empty($this->_event->comment_status)) { $post['comment_status'] = $this->_event->comment_status; } if (!empty($this->_event->ping_status)) { $post['ping_status'] = $this->_event->ping_status; } global $wpdb; if (false !== $wpdb->insert($wpdb->posts, $post)) { $post_id = $wpdb->insert_id; $featured_image_id = $this->has_featured_image() ? $this->get_featured_image_id() : false; $event_cats = $this->get_category_ids(); if ($event_cats) { wp_set_post_terms($post_id, $event_cats, 'eab_events_category', false); do_action('eab-events-recurrent_event_child-assigned_taxonomies', $post_id, $event_cats); } update_post_meta($post_id, 'incsub_event_start', date("Y-m-d H:i:s", $instance)); update_post_meta($post_id, 'incsub_event_end', date("Y-m-d H:i:s", $instance + $duration * 3600)); update_post_meta($post_id, 'incsub_event_venue', $venue); update_post_meta($post_id, 'incsub_event_status', self::STATUS_OPEN); if ($this->is_premium()) { update_post_meta($post_id, 'incsub_event_paid', 1); update_post_meta($post_id, 'incsub_event_fee', $this->get_price()); } if (!empty($featured_image_id)) { update_post_meta($post_id, '_thumbnail_id', $featured_image_id); } do_action('eab-events-recurrent_event_child-save_meta', $post_id); } } if ($old_post_ids) { $new_post_ids = $this->_get_recurring_children_ids(); $this->_remap_bookings($old_post_ids, $new_post_ids); } }
function show_settings() { $tips = new WpmuDev_HelpTooltips(); $tips->set_icon_url(plugins_url('events-and-bookings/img/information.png')); $from = $this->_data->get_option('eab_rsvps-email-from'); $from = $from ? $from : get_option('admin_email'); $subject = $this->_data->get_option('eab_rsvps-email-subject'); $body = $this->_data->get_option('eab_rsvps-email-body'); $codec = new Eab_Events_RsvpEmail_Codec(); $macros = join('</code>, <code>', $codec->get_macros()); $events = Eab_CollectionFactory::get_upcoming_events(eab_current_time(), array('posts_per_page' => 10)); ?> <div id="eab-settings-eab_rsvps_email" class="eab-metabox postbox"> <h3 class="eab-hndle"><?php _e('RSVP Email settings', Eab_EventsHub::TEXT_DOMAIN); ?> </h3> <div class="eab-inside"> <div class="eab-settings-settings_item"> <label for="eab_event-eab_rsvps-from"><?php _e('From email address', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(__('This is the address the RSVP email will be sent from', Eab_EventsHub::TEXT_DOMAIN)); ?> </span> <input type="text" id="eab_event-eab_rsvps-from" name="eab_rsvps[email-from]" value="<?php esc_attr_e($from); ?> " /> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_rsvps-subject"><?php _e('Email subject', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email subject. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <input type="text" class="widefat" id="eab_event-eab_rsvps-subject" name="eab_rsvps[email-subject]" value="<?php esc_attr_e($subject); ?> " /> </div> <div class="eab-settings-settings_item"> <label for="eab_event-eab_rsvps-body"><?php _e('Email body', Eab_EventsHub::TEXT_DOMAIN); ?> </label> <span><?php echo $tips->add_tip(sprintf(__('This is your email body. You can use these macros: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros)); ?> </span> <?php wp_editor($body, 'eab_rsvps-email-body', array('name' => 'eab_rsvps-email-body')); ?> </div> <div class="eab-settings-settings_item"><small><?php printf(__('You can use these macros in your subject and body: <code>%s</code>', Eab_EventsHub::TEXT_DOMAIN), $macros); ?> </small></div> <?php if ($events) { ?> <div class="eab-settings-settings_item"> <input type="button" class="button" id="eab_event-eab_rsvps-preview" value="<?php esc_attr_e(__('Preview', Eab_EventsHub::TEXT_DOMAIN)); ?> " /> <?php _e('using this event data:', Eab_EventsHub::TEXT_DOMAIN); ?> <select id="eab_event-eab_rsvps-events"> <?php foreach ($events as $event) { ?> <option value="<?php esc_attr_e($event->get_id()); ?> "><?php echo $event->get_title(); ?> </option> <?php } ?> </select> <div id="eab_event-eab_rsvp-email_preview_container" style="line-height: 1.2em"></div> </div> <?php } ?> </div> </div> <script type="text/javascript"> (function ($) { $(function () { var $container = $("#eab_event-eab_rsvp-email_preview_container"), $subject = $("#eab_event-eab_rsvps-subject"), $events = $("#eab_event-eab_rsvps-events") ; $("#eab_event-eab_rsvps-preview").on("click", function () { var body_string = (tinyMCE && tinyMCE.activeEditor ? tinyMCE.activeEditor.getContent() : $("#eab_rsvps-email-body").val() ); $container.html('<?php echo esc_js(__("Please, hold on... ", Eab_EventsHub::TEXT_DOMAIN)); ?> '); $.post(ajaxurl, { "action": "eab_rsvp_email-preview_email", "subject": $subject.val(), "body": body_string, "event_id": $events.val() }, function (data) { $container.html(data); }, 'html'); }); }) })(jQuery); </script> <?php }
/** * NEVER NEVER EVER call this directly. Use Factory instead. */ public function __construct($timestamp = false, $args = array()) { $this->_timestamp = $timestamp ? $timestamp : eab_current_time(); $query = $this->build_query_args($args); parent::__construct($query); }
public static function get_event_dates($post) { $content = ''; $event = $post instanceof Eab_EventModel ? $post : new Eab_EventModel($post); $start_dates = $event->get_start_dates(); if (!$start_dates) { return $content; } foreach ($start_dates as $key => $start) { $start = $event->get_start_timestamp($key); $end = $event->get_end_timestamp($key); $end_date_str = date('Y-m-d', $start) != date('Y-m-d', $end) ? date_i18n(get_option('date_format'), $end) : ''; $content .= $key ? __(' and ', Eab_EventsHub::TEXT_DOMAIN) : ''; // Differentiate start/end date equality if ($end_date_str) { // Start and end day stamps differ $start_string = $event->has_no_start_time($key) ? sprintf(__('On <span class="wpmudevevents-date_format-start"><var class="eab-date_format-date">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start)) : sprintf(__('On <var class="eab-date_format-date">%s</var> <span class="wpmudevevents-date_format-start">from <var class="eab-date_format-time">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start), date_i18n(get_option('time_format'), $start)); $end_string = $event->has_no_end_time($key) ? sprintf(__('<span class="wpmudevevents-date_format-end">to %s</span><br />', Eab_EventsHub::TEXT_DOMAIN), '<span class="wpmudevevents-date_format-end_date"><var class="eab-date_format-date">' . $end_date_str . '</var></span>') : sprintf(__('<span class="wpmudevevents-date_format-end">to %s</span><br />', Eab_EventsHub::TEXT_DOMAIN), '<span class="wpmudevevents-date_format-end_date"><var class="eab-date_format-date">' . $end_date_str . '</var></span> <span class="wpmudevevents-date_format-end_time"><var class="eab-date_format-time">' . date_i18n(get_option('time_format'), $end) . '</var></span>'); } else { // The start and end day stamps do NOT differ if (eab_current_time() > $start) { // In the past $start_string = $event->has_no_start_time($key) ? sprintf(__('Took place on <span class="wpmudevevents-date_format-start"><var class="eab-date_format-date">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start)) : sprintf(__('Took place on <var class="eab-date_format-date">%s</var> <span class="wpmudevevents-date_format-start">from <var class="eab-date_format-time">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start), date_i18n(get_option('time_format'), $start)); } else { // Now, or in the future $start_string = $event->has_no_start_time($key) ? sprintf(__('Takes place on <span class="wpmudevevents-date_format-start"><var class="eab-date_format-date">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start)) : sprintf(__('Takes place on <var class="eab-date_format-date">%s</var> <span class="wpmudevevents-date_format-start">from <var class="eab-date_format-time">%s</var></span>', Eab_EventsHub::TEXT_DOMAIN), date_i18n(get_option('date_format'), $start), date_i18n(get_option('time_format'), $start)); } $end_string = $event->has_no_end_time($key) ? '' : sprintf(__('<span class="wpmudevevents-date_format-end">to %s</span><br />', Eab_EventsHub::TEXT_DOMAIN), '<span class="wpmudevevents-date_format-end_date"><var class="eab-date_format-date">' . $end_date_str . '</var></span> <span class="wpmudevevents-date_format-end_time"><var class="eab-date_format-time">' . date_i18n(get_option('time_format'), $end) . '</var></span>'); } // Why, thank you `date_i18n` for working so well with properly parsing 'O' argument when offsets are set in UTC values... >.< $gmt_offset = (double) get_option('gmt_offset'); $hour_tz = sprintf('%02d', abs((int) $gmt_offset)); $minute_offset = (abs($gmt_offset) - abs((int) $gmt_offset)) * 60; $min_tz = sprintf('%02d', $minute_offset); $timezone = ($gmt_offset > 0 ? '+' : '-') . $hour_tz . $min_tz; $time_date_start = esc_attr(date_i18n("Y-m-d\\TH:i:s", $start)) . $timezone; $time_date_end = esc_attr(date_i18n("Y-m-d\\TH:i:s", $end)) . $timezone; $content .= apply_filters('eab-events-event_date_string', "<time itemprop='startDate' datetime='{$time_date_start}'>{$start_string}</time> <time itemprop='endDate' datetime='{$time_date_end}'>{$end_string}</time>", $event->get_id(), $start, $end); /* $content .= apply_filters('eab-events-event_date_string', sprintf( __('On %s <span class="wpmudevevents-date_format-start">from %s</span> <span class="wpmudevevents-date_format-end">to %s</span><br />', Eab_EventsHub::TEXT_DOMAIN), '<span class="wpmudevevents-date_format-start_date">' . date_i18n(get_option('date_format'), $start) . '</span>', '<span class="wpmudevevents-date_format-start_time">' . date_i18n(get_option('time_format'), $start) . '</span>', '<span class="wpmudevevents-date_format-end_date">' . $end_date_str . '</span> <span class="wpmudevevents-date_format-end_time">' . date_i18n(get_option('time_format'), $end) . '</span>' ), $event->get_id(), $start, $end); */ } return $content; }
public function get_month_calendar($timestamp = false) { $date = $timestamp ? $timestamp : current_time('timestamp'); $this->_current_timestamp = $date; $year = date('Y', $date); $month = date('m', $date); $time = strtotime("{$year}-{$month}-01"); $days = (int) date('t', $time); $first = (int) date('w', strtotime(date('Y-m-01', $time))); $last = (int) date('w', strtotime(date('Y-m-' . $days, $time))); $post_info = array(); if (is_array($this->_events)) { foreach ($this->_events as $event) { $post_info[] = $this->_get_item_data($event); } } $tbl_id = $this->get_calendar_id(); $tbl_id = $tbl_id ? "id='{$tbl_id}'" : ''; $tbl_class = $this->get_calendar_class(); $tbl_class = $tbl_class ? "class='{$tbl_class}'" : ''; $ret = ''; $ret .= "<table width='100%' {$tbl_id} {$tbl_class}>"; $ret .= $this->_get_table_meta_row('thead'); $ret .= '<tbody>'; $ret .= $this->_get_first_row(); if ($first > $this->start_of_week) { $ret .= '<tr><td class="no-left-border" colspan="' . ($first - $this->start_of_week) . '"> </td>'; } else { if ($first < $this->start_of_week) { $ret .= '<tr><td class="no-left-border" colspan="' . (7 + $first - $this->start_of_week) . '"> </td>'; } else { $ret .= '<tr>'; } } $today_timestamp = date('Y-m-d', eab_current_time()); for ($i = 1; $i <= $days; $i++) { $date = date('Y-m-' . sprintf("%02d", $i), $time); $dow = (int) date('w', strtotime($date)); $current_day_start = strtotime("{$date} 00:00"); $current_day_end = strtotime("{$date} 23:59"); if ($this->start_of_week == $dow) { $ret .= '</tr><tr>'; } $this->reset_event_info_storage(); foreach ($post_info as $ipost) { for ($k = 0; $k < count($ipost['event_starts']); $k++) { $start = strtotime($ipost['event_starts'][$k]); $end = strtotime($ipost['event_ends'][$k]); if ($start < $current_day_end && $end > $current_day_start) { $this->set_event_info(array('start' => $start, 'end' => $end), array('start' => $current_day_start, 'end' => $current_day_end), $ipost); } } } $activity = $this->get_event_info_as_string($i); $class_names = array(); if ($activity) { $class_names[] = 'eab-has_events'; } else { $activity = "<p>{$i}</p>"; } if ($date == $today_timestamp) { $class_names[] = 'today'; } $class_attribute = !empty($class_names) ? 'class="' . esc_attr(join(' ', $class_names)) . '"' : ''; $ret .= "<td {$class_attribute}>{$activity}</td>"; } if ($last > $this->start_of_week) { $ret .= '<td class="no-right-border" colspan="' . (6 - $last + $this->start_of_week) . '"> </td></tr>'; } else { if ($last + 1 == $this->start_of_week) { $ret .= '</tr>'; } else { $ret .= '<td class="no-right-border" colspan="' . (6 + $last - $this->start_of_week) . '"> </td></tr>'; } } $ret .= $this->_get_last_row(); $ret .= '</tbody>'; $ret .= $this->_get_table_meta_row('tfoot'); $ret .= '</table>'; return $ret; }