コード例 #1
0
 function to_object($events = array())
 {
     if (is_array($events) && !empty($events)) {
         //Save event data
         $this->event_id = intval($events[0]['event_id']);
         $this->post_id = intval($events[0]['post_id']);
         $this->start = new DateTIme($events[0]['StartDate'] . ' ' . $events[0]['StartTime'], eo_get_blog_timezone());
         $this->end = new DateTIme($events[0]['EndDate'] . ' ' . $events[0]['FinishTime'], eo_get_blog_timezone());
         if (function_exists('date_diff')) {
             $this->duration = date_diff($this->start, $this->end);
         }
         //Work around for PHP < 5.3
         $seconds = round(abs($this->start->format('U') - $this->end->format('U')));
         // 86400 = 60*60*24 seconds in a normal day
         $days = floor($seconds / 86400);
         $sec_diff = $seconds - $days * 86400;
         $this->duration_string = '+' . $days . 'days ' . $sec_diff . ' seconds';
         $this->schedule_start = new DateTime($events[0]['reoccurrence_start'], eo_get_blog_timezone());
         $this->schedule_end = new DateTime($events[0]['reoccurrence_end'], eo_get_blog_timezone());
         $this->allday = $events[0]['event_allday'] == 1 ? true : false;
         $this->venue = (int) eo_get_venue($this->post_id);
         $this->schedule = esc_html($events[0]['event_schedule']);
         if ($this->is_schedule('weekly')) {
             $this->meta = esc_html(implode(',', unserialize($events[0]['event_schedule_meta'])));
             $this->meta = explode(',', $this->meta);
         }
         if ($this->is_schedule('monthly')) {
             $meta = esc_attr($events[0]['event_schedule_meta']);
             $bymonthday = preg_match('/BYMONTHDAY=/', $meta);
             $byday = preg_match('/BYDAY=/', $meta);
             //Check for the old system first...;
             if ($meta == 'date') {
                 $this->meta = 'BYMONTHDAY=' . $this->start->format('d');
             } elseif (!($bymonthday || $byday)) {
                 $this->meta = 'BYDAY=' . $meta;
             } else {
                 $this->meta = $meta;
             }
         }
         $this->frequency = intval($events[0]['event_frequency']);
         $this->timezone = 'UTC';
         $this->exists = true;
         //Save event occurrences
         foreach ($events as $event) {
             //Occurrences, array of datetime objects (start date time) in UTC Timezone
             $this->occurrences[$event['event_occurrence']] = new DateTIme($event['StartDate'] . ' ' . $event['StartTime'], eo_get_blog_timezone());
         }
     }
 }
コード例 #2
0
function eventorganiser_event_fill_columns($column_name, $id)
{
    global $post;
    $series_id = empty($post->event_id) ? $id : '';
    $phpFormat = 'M, j Y';
    if (!eo_is_all_day($series_id)) {
        $phpFormat .= '\\<\\/\\b\\r\\>' . get_option('time_format');
    }
    switch ($column_name) {
        case 'venue':
            $venue_id = eo_get_venue($post->ID);
            $venue_slug = eo_get_venue_slug($post->ID);
            if ($venue_id) {
                echo '<a href="' . add_query_arg('event-venue', $venue_slug) . '">' . esc_html(eo_get_venue_name($venue_id)) . '</a>';
                echo '<input type="hidden" value="' . $venue_id . '"/>';
            }
            break;
        case 'datestart':
            eo_the_start($phpFormat, $series_id);
            break;
        case 'dateend':
            eo_the_end($phpFormat, $series_id);
            break;
        case 'reoccurence':
            eo_display_reoccurence($series_id);
            break;
        case 'eventcategories':
            $terms = get_the_terms($post->ID, 'event-category');
            if (!empty($terms)) {
                foreach ($terms as $term) {
                    $post_terms[] = '<a href="' . add_query_arg('event-category', $term->slug) . '">' . esc_html(sanitize_term_field('name', $term->name, $term->term_id, 'event-category', 'display')) . '</a>';
                }
                echo join(', ', $post_terms);
            }
            break;
        default:
            break;
    }
    // end switch
}
コード例 #3
0
/**
 * Saves the event data posted from the event metabox.
 * Hooked to the 'save_post' action
 * 
 * @since 1.0.0
 *
 * @param int $post_id the event post ID
 * @return int $post_id the event post ID
 */
function eventorganiser_details_save($post_id)
{
    //make sure data came from our meta box
    if (!isset($_POST['_eononce']) || !wp_verify_nonce($_POST['_eononce'], 'eventorganiser_event_update_' . $post_id . '_' . get_current_blog_id())) {
        return;
    }
    //verify this is not an auto save routine.
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    //authentication checks
    if (!current_user_can('edit_event', $post_id)) {
        return;
    }
    //Collect raw data
    $raw_data = isset($_POST['eo_input']) ? $_POST['eo_input'] : array();
    $raw_data = wp_parse_args($raw_data, array('StartDate' => '', 'EndDate' => '', 'StartTime' => '00:00', 'FinishTime' => '23:59', 'schedule' => 'once', 'event_frequency' => 1, 'schedule_end' => '', 'allday' => 0, 'schedule_meta' => '', 'days' => array(), 'include' => '', 'exclude' => ''));
    //Update venue
    $venue_id = !empty($raw_data['event-venue']) ? intval($raw_data['event-venue']) : null;
    //Maybe create a new venue
    if (empty($venue_id) && !empty($_POST['eo_venue']) && current_user_can('manage_venues')) {
        $venue = $_POST['eo_venue'];
        if (!empty($venue['name'])) {
            $new_venue = eo_insert_venue($venue['name'], $venue);
            if (!is_wp_error($new_venue)) {
                $venue_id = $new_venue['term_id'];
            } else {
                if ($new_venue->get_error_code() == 'term_exists') {
                    $venue_id = eo_get_venue($event_id);
                }
            }
        }
    }
    //Set venue
    $r = wp_set_post_terms($post_id, array($venue_id), 'event-venue', false);
    //If reocurring, but not editing occurrences, can abort here, but trigger hook.
    if (eo_reoccurs($post_id) && (!isset($raw_data['AlterRe']) || 'yes' != $raw_data['AlterRe'])) {
        /**
         * Triggered after an event has been updated.
         *
         * @param int $post_id The ID of the event
         */
        do_action('eventorganiser_save_event', $post_id);
        //Need this to update cache
        return;
    }
    //Check dates
    $date_format = eventorganiser_get_option('dateformat');
    $is24 = eventorganiser_blog_is_24();
    $time_format = $is24 ? 'H:i' : 'g:ia';
    $datetime_format = $date_format . ' ' . $time_format;
    //Set times for all day events
    $all_day = intval($raw_data['allday']);
    if ($all_day) {
        $raw_data['StartTime'] = $is24 ? '00:00' : '12:00am';
        $raw_data['FinishTime'] = $is24 ? '23:59' : '11:59pm';
    }
    $start = eo_check_datetime($datetime_format, trim($raw_data['StartDate']) . ' ' . trim($raw_data['StartTime']));
    $end = eo_check_datetime($datetime_format, trim($raw_data['EndDate']) . ' ' . trim($raw_data['FinishTime']));
    $until = eo_check_datetime($datetime_format, trim($raw_data['schedule_end']) . ' ' . trim($raw_data['StartTime']));
    //Collect schedule meta
    $schedule = $raw_data['schedule'];
    if ('weekly' == $schedule) {
        $schedule_meta = $raw_data['days'];
        $occurs_by = '';
    } elseif ('monthly' == $schedule) {
        $schedule_meta = $raw_data['schedule_meta'];
        $occurs_by = trim($schedule_meta, '=');
    } else {
        $schedule_meta = '';
        $occurs_by = '';
    }
    //Collect include/exclude
    $in_ex = array();
    $orig_schedule = eo_get_event_schedule($post_id);
    foreach (array('include', 'exclude') as $key) {
        $in_ex[$key] = array();
        $arr = explode(',', sanitize_text_field($raw_data[$key]));
        if (!empty($arr)) {
            foreach ($arr as $date) {
                if ($date_obj = eo_check_datetime('Y-m-d', trim($date))) {
                    $date_obj->setTime($start->format('H'), $start->format('i'));
                    $in_ex[$key][] = $date_obj;
                }
            }
            /* see https://github.com/stephenharris/Event-Organiser/issues/260
            			if( $orig = array_uintersect( $orig_schedule[$key], $in_ex[$key], '_eventorganiser_compare_dates' ) ){
            				$in_ex[$key] = array_merge( $orig, $in_ex[$key] );
            				$in_ex[$key] = _eventorganiser_remove_duplicates( $in_ex[$key] );
            			}*/
        }
    }
    $event_data = array('start' => $start, 'end' => $end, 'all_day' => $all_day, 'schedule' => $schedule, 'frequency' => (int) $raw_data['event_frequency'], 'until' => $until, 'schedule_meta' => $schedule_meta, 'occurs_by' => $occurs_by, 'include' => $in_ex['include'], 'exclude' => $in_ex['exclude']);
    $response = eo_update_event($post_id, $event_data);
    if (is_wp_error($response)) {
        global $EO_Errors;
        $code = $response->get_error_code();
        $message = $response->get_error_message($code);
        $errors[$post_id][] = __('Event dates were not saved.', 'eventorganiser');
        $errors[$post_id][] = $message;
        $EO_Errors->add('eo_error', $message);
        update_option('eo_notice', $errors);
    }
    return;
}
コード例 #4
0
/**
 *@ignore
 *@access private
 */
function eventorganiser_venue_dropdown($post_id = 0, $args)
{
    $venues = get_terms('event-venue', array('hide_empty' => false));
    $current = (int) eo_get_venue($post_id);
    $id = !empty($args['id']) ? 'id="' . esc_attr($args['id']) . '"' : '';
    $name = !empty($args['name']) ? 'name="' . esc_attr($args['name']) . '"' : '';
    ?>
	<select <?php 
    echo $id . ' ' . $name;
    ?>
>
		<option><?php 
    _e("Select a venue", 'eventorganiser');
    ?>
</option>
		<?php 
    foreach ($venues as $venue) {
        ?>
			<option <?php 
        selected($venue->term_id, $current);
        ?>
 value="<?php 
        echo $venue->term_id;
        ?>
"><?php 
        echo $venue->name;
        ?>
</option>
		<?php 
    }
    ?>
	</select><?php 
}
    /**
    * Creates an ICAL file of events in the database
    
    * @since 1.0.0
    *  @param string filename - the name of the file to be created
    *  @param string filetype - the type of the file ('text/calendar')
    */
    public function export_events($filename, $filetype)
    {
        //Collect output
        ob_start();
        // File header
        header('Content-Description: File Transfer');
        header('Content-Disposition: attachment; filename=' . $filename);
        header('Content-type: text/calendar');
        header("Pragma: 0");
        header("Expires: 0");
        ?>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//<?php 
        get_bloginfo('name');
        ?>
//NONSGML Events //EN
CALSCALE:GREGORIAN
X-WR-CALNAME:<?php 
        echo get_bloginfo('name');
        ?>
 - Events
X-ORIGINAL-URL:<?php 
        echo EO_Event::link_structure();
        ?>

X-WR-CALDESC:<?php 
        echo get_bloginfo('name');
        ?>
 - Events
<?php 
        // Query for events
        $events = eo_get_events(array('numberofposts' => -1, 'group_events_by' => 'series', 'showpastevents' => 1));
        // Loop through events
        if ($events) {
            global $post;
            foreach ($events as $post) {
                //If event has no corresponding row in events table then skip it
                if (!isset($post->event_id) || $post->event_id == -1) {
                    continue;
                }
                $now = new DateTime();
                $dtstamp = $now->format('Ymd\\THis\\Z');
                //Set up event data
                setup_postdata($post);
                $event = new EO_Event($post->ID);
                $start = clone $event->start;
                $end = clone $event->end;
                $created = new DateTime($post->post_date_gmt);
                $created_date = $created->format('Ymd\\THis\\Z');
                $modified = new DateTime($post->post_modified_gmt);
                $modified_date = $modified->format('Ymd\\THis\\Z');
                //Set up start and end date times
                if ($event->is_all_day()) {
                    $format = 'Ymd';
                    $start_date = $start->format($format);
                    $end->modify('+1 second');
                    $end_date = $end->format($format);
                } else {
                    $format = 'Ymd\\THis\\Z';
                    $UTC_tz = new DateTimeZone('UTC');
                    $start->setTimezone($UTC_tz);
                    $start_date = $start->format($format);
                    $end->setTimezone($UTC_tz);
                    $end_date = $end->format($format);
                }
                //Get the reoccurrence rule in ICS format
                $reoccurrence_rule = $event->ics_rrule();
                //Generate Event status
                if (get_post_status($post->ID) == 'publish') {
                    $status = 'CONFIRMED';
                } else {
                    $status = 'TENTATIVE';
                }
                //Generate a globally unique UID:
                $rand = '';
                $host = $_SERVER['SERVER_NAME'];
                $base = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPrRsStTuUvVxXuUvVwWzZ1234567890';
                $start = 0;
                $end = strlen($base) - 1;
                $length = 6;
                for ($p = 0; $p < $length; $p++) {
                    $rand .= $base[mt_rand($start, $end)];
                }
                $uid = $now->format('Ymd\\THiT') . microtime(true) . '-' . $rand . '-EO' . $post->ID . '@' . $host;
                //Output event
                ?>
BEGIN:VEVENT
UID:<?php 
                echo $uid;
                ?>

STATUS:<?php 
                echo $status;
                ?>

DTSTAMP:<?php 
                echo $dtstamp;
                ?>

CREATED:<?php 
                echo $created_date;
                ?>

LAST-MODIFIED:<?php 
                echo $modified_date;
                ?>

<?php 
                if ($event->is_all_day()) {
                    ?>
DTSTART;VALUE=DATE:<?php 
                    echo $start_date;
                    ?>

DTEND;VALUE=DATE:<?php 
                    echo $end_date;
                } else {
                    ?>
DTSTART:<?php 
                    echo $start_date;
                    ?>

DTEND:<?php 
                    echo $end_date;
                }
                ?>

<?php 
                if ($reoccurrence_rule) {
                    ?>
RRULE:<?php 
                    echo $reoccurrence_rule;
                    ?>

<?php 
                }
                ?>
SUMMARY:<?php 
                echo $this->escape_icalText(get_the_title());
                ?>

<?php 
                $excerpt = get_the_excerpt();
                $excerpt = apply_filters('the_excerpt_rss', $excerpt);
                if (!empty($excerpt)) {
                    ?>
DESCRIPTION:<?php 
                    echo html_entity_decode($this->escape_icalText($excerpt));
                    ?>

<?php 
                }
                if ($event->venue_set()) {
                    $venue = eo_get_venue_name(eo_get_venue());
                    ?>
LOCATION: <?php 
                    echo $this->escape_icalText($venue);
                    ?>

<?php 
                }
                $author = get_the_author();
                ?>
ORGANIZER: <?php 
                echo $this->escape_icalText($author);
                ?>

END:VEVENT
<?php 
            }
        }
        ?>
END:VCALENDAR
<?php 
        //Collect output and echo
        $eventsical = ob_get_contents();
        ob_end_clean();
        echo $eventsical;
        exit;
    }
コード例 #6
0
		<?php 
}
?>

		<?php 
do_action('eventorganiser_additional_event_meta');
?>

	</ul>

	<!-- Does the event have a venue? -->
	<?php 
if (eo_get_venue()) {
    ?>
		<!-- Display map -->
		<div class="eo-event-venue-map">
			<?php 
    echo eo_get_venue_map(eo_get_venue(), array('width' => '100%'));
    ?>
		</div>
	<?php 
}
?>


	<div style="clear:both"></div>

	<hr>

</div><!-- .entry-meta -->
 function parse_template($matches)
 {
     global $post;
     $replacement = '';
     $col = array('start' => array('date' => 'StartDate', 'time' => 'StartTime'), 'end' => array('date' => 'EndDate', 'time' => 'FinishTime'), 'schedule_start' => array('date' => 'reoccurrence_start', 'time' => 'StartTime'), 'schedule_end' => array('date' => 'reoccurrence_end', 'time' => 'FinishTime'));
     switch ($matches[1]) {
         case 'event_title':
             $replacement = get_the_title();
             break;
         case 'start':
         case 'end':
         case 'schedule_start':
         case 'schedule_end':
             switch (count($matches)) {
                 case 2:
                     $dateFormat = get_option('date_format');
                     $dateTime = get_option('time_format');
                     break;
                 case 3:
                     $dateFormat = self::eo_clean_input($matches[2]);
                     $dateTime = '';
                     break;
                 case 5:
                     $dateFormat = self::eo_clean_input($matches[3]);
                     $dateTime = self::eo_clean_input($matches[4]);
                     break;
             }
             if (eo_is_all_day(get_the_ID())) {
                 $replacement = eo_format_date($post->{$col}[$matches[1]]['date'] . ' ' . $post->{$col}[$matches[1]]['time'], $dateFormat);
             } else {
                 $replacement = eo_format_date($post->{$col}[$matches[1]]['date'] . ' ' . $post->{$col}[$matches[1]]['time'], $dateFormat . $dateTime);
             }
             break;
         case 'event_tags':
             $replacement = get_the_term_list(get_the_ID(), 'event-tag', '', ', ', '');
             break;
         case 'event_cats':
             $replacement = get_the_term_list(get_the_ID(), 'event-category', '', ', ', '');
             break;
         case 'event_venue':
             $replacement = eo_get_venue_name();
             break;
         case 'event_venue_map':
             if (eo_get_venue()) {
                 $class = isset($matches[2]) ? self::eo_clean_input($matches[2]) : '';
                 $class = !empty($class) ? 'class=' . $class : '';
                 $replacement = do_shortcode('[eo_venue_map ' . $class . ']');
             }
             break;
         case 'event_venue_url':
             $venue_link = eo_get_venue_link();
             $replacement = !is_wp_error($venue_link) ? $venue_link : '';
             break;
         case 'event_venue_address':
             $address = eo_get_venue_address();
             $replacement = $address['address'];
             break;
         case 'event_venue_postcode':
             $address = eo_get_venue_address();
             $replacement = $address['postcode'];
             break;
         case 'event_venue_country':
             $address = eo_get_venue_address();
             $replacement = $address['country'];
             break;
         case 'event_thumbnail':
             $size = isset($matches[2]) ? self::eo_clean_input($matches[2]) : '';
             $size = !empty($size) ? $size : 'thumbnail';
             $replacement = get_the_post_thumbnail(get_the_ID(), $size);
             break;
         case 'event_url':
             $replacement = get_permalink();
             break;
         case 'event_custom_field':
             $field = $matches[2];
             $meta = get_post_meta(get_the_ID(), $field);
             $replacement = implode($meta);
             break;
         case 'event_excerpt':
             //Using get_the_excerpt adds a link....
             if (post_password_required($post)) {
                 $output = __('There is no excerpt because this is a protected post.');
             } else {
                 $output = $post->post_excerpt;
             }
             $replacement = wp_trim_excerpt($output);
             break;
         case 'cat_color':
             $replacement = eo_event_color();
             break;
     }
     return $replacement;
 }
コード例 #8
0
ファイル: ical.php プロジェクト: blogfor/king
        $description = eventorganiser_escape_ical_text($description);
        if (!empty($description)) {
            echo eventorganiser_fold_ical_text("DESCRIPTION: {$description}") . "\r\n";
        }
        $description = wpautop(html_entity_decode(get_the_content(), ENT_COMPAT, 'UTF-8'));
        $description = str_replace("\r\n", '', $description);
        //Remove new lines
        $description = str_replace("\n", '', $description);
        $description = eventorganiser_escape_ical_text($description);
        echo eventorganiser_fold_ical_text("X-ALT-DESC;FMTTYPE=text/html: {$description}") . "\r\n";
        $cats = get_the_terms(get_the_ID(), 'event-category');
        if ($cats && !is_wp_error($cats)) {
            $cat_names = wp_list_pluck($cats, 'name');
            $cat_names = array_map('eventorganiser_escape_ical_text', $cat_names);
            echo 'CATEGORIES:' . implode(',', $cat_names) . "\r\n";
        }
        if (eo_get_venue()) {
            $venue = eo_get_venue_name(eo_get_venue());
            echo "LOCATION:" . eventorganiser_fold_ical_text(eventorganiser_escape_ical_text($venue)) . "\r\n";
            echo "GEO:" . implode(';', eo_get_venue_latlng($venue)) . "\r\n";
        }
        if (get_the_author_meta('ID')) {
            $author_name = eventorganiser_escape_ical_text(get_the_author());
            $author_email = eventorganiser_escape_ical_text(get_the_author_meta('user_email'));
            echo eventorganiser_fold_ical_text('ORGANIZER;CN="' . $author_name . '":MAILTO:' . $author_email) . "\r\n";
        }
        echo eventorganiser_fold_ical_text('URL;VALUE=URI:' . get_permalink()) . "\r\n";
        echo "END:VEVENT\r\n";
    }
}
echo "END:VCALENDAR\r\n";
コード例 #9
0
 static function parse_template($matches)
 {
     global $post;
     $replacement = '';
     switch ($matches[1]) {
         case 'event_title':
             $replacement = get_the_title();
             break;
         case 'start':
         case 'end':
         case 'schedule_start':
         case 'schedule_last':
         case 'schedule_end':
             switch (count($matches)) {
                 case 2:
                     $dateFormat = get_option('date_format');
                     $dateTime = get_option('time_format');
                     break;
                 case 3:
                     $dateFormat = self::eo_clean_input($matches[2]);
                     $dateTime = '';
                     break;
                 case 5:
                     $dateFormat = self::eo_clean_input($matches[3]);
                     $dateTime = self::eo_clean_input($matches[4]);
                     break;
             }
             $format = eo_is_all_day(get_the_ID()) ? $dateFormat : $dateFormat . $dateTime;
             switch ($matches[1]) {
                 case 'start':
                     $replacement = eo_get_the_start($format);
                     break;
                 case 'end':
                     $replacement = eo_get_the_end($format);
                     break;
                 case 'schedule_start':
                     $replacement = eo_get_schedule_start($format);
                     break;
                 case 'schedule_last':
                 case 'schedule_end':
                     $replacement = eo_get_schedule_end($format);
                     break;
             }
             break;
         case 'event_duration':
             $start = eo_get_the_start(DATETIMEOBJ);
             $end = clone eo_get_the_end(DATETIMEOBJ);
             if (eo_is_all_day()) {
                 $end->modify('+1 minute');
             }
             if (function_exists('date_diff')) {
                 $duration = date_diff($start, $end);
                 $replacement = $duration->format($matches[2]);
             } else {
                 $replacement = eo_date_interval($start, $end, $matches[2]);
             }
             $replacement = false;
             break;
         case 'event_tags':
             $replacement = get_the_term_list(get_the_ID(), 'event-tag', '', ', ', '');
             break;
         case 'event_cats':
             $replacement = get_the_term_list(get_the_ID(), 'event-category', '', ', ', '');
             break;
         case 'event_venue':
             $replacement = eo_get_venue_name();
             break;
         case 'event_venue_map':
             if (eo_get_venue()) {
                 $class = isset($matches[2]) ? self::eo_clean_input($matches[2]) : '';
                 $class = !empty($class) ? 'class=' . $class : '';
                 $replacement = eo_get_venue_map(eo_get_venue(), compact('class'));
             }
             break;
         case 'event_venue_url':
             $venue_link = eo_get_venue_link();
             $replacement = !is_wp_error($venue_link) ? $venue_link : '';
             break;
         case 'event_venue_address':
             $address = eo_get_venue_address();
             $replacement = $address['address'];
             break;
         case 'event_venue_postcode':
             $address = eo_get_venue_address();
             $replacement = $address['postcode'];
             break;
         case 'event_venue_city':
             $address = eo_get_venue_address();
             $replacement = $address['city'];
             break;
         case 'event_venue_country':
             $address = eo_get_venue_address();
             $replacement = $address['country'];
             break;
         case 'event_venue_state':
             $address = eo_get_venue_address();
             $replacement = $address['state'];
             break;
         case 'event_venue_city':
             $address = eo_get_venue_address();
             $replacement = $address['city'];
             break;
         case 'event_thumbnail':
             $size = isset($matches[2]) ? self::eo_clean_input($matches[2]) : '';
             $size = !empty($size) ? $size : 'thumbnail';
             $attr = isset($matches[3]) ? self::eo_clean_input($matches[3]) : '';
             //Decode HTML entities as shortcode encodes them
             $attr = html_entity_decode($attr);
             $replacement = get_the_post_thumbnail(get_the_ID(), $size, $attr);
             break;
         case 'event_url':
             $replacement = get_permalink();
             break;
         case 'event_custom_field':
             $field = $matches[2];
             $meta = get_post_meta(get_the_ID(), $field);
             $replacement = implode($meta);
             break;
         case 'event_excerpt':
             $length = isset($matches[2]) ? intval($matches[2]) : 55;
             //Using get_the_excerpt adds a link....
             if (post_password_required($post)) {
                 $output = __('There is no excerpt because this is a protected post.');
             } else {
                 $output = $post->post_excerpt;
             }
             $replacement = eventorganiser_trim_excerpt($output, $length);
             break;
         case 'event_content':
             $replacement = get_the_content();
             break;
         case 'cat_color':
             $replacement = eo_get_event_color();
             break;
         case 'event_title_attr':
             $replacement = get_the_title();
             break;
     }
     return $replacement;
 }
コード例 #10
0
ファイル: functions.php プロジェクト: sflebrun/rcumc-website
/**
 * Returns HTML mark-up for a list of event meta information.
 *
 * Uses microformat.
 * @since 1.7
 * @ignore
 * @param int $post_id The event (post) ID. Uses current event if not supplied
 * @return string|bool HTML mark-up. False if an invalid $post_is provided.
*/
function eo_get_event_meta_list_rcumc($event_id = 0)
{
    $event_id = (int) (empty($event_id) ? get_the_ID() : $event_id);
    if (empty($event_id)) {
        return false;
    }
    $html = '<ul class="eo-event-byline" style="margin:10px 0px;">';
    $venue = get_taxonomy('event-venue');
    if (($venue_id = eo_get_venue($event_id)) && $venue) {
        $html .= sprintf('<ul> <a href="%s">
				<span itemprop="location" itemscope itemtype="http://data-vocabulary.org/Organization">
					<span itemprop="name">%s</span>
					
				</span>
			</a></ul>', eo_get_venue_link($venue_id), eo_get_venue_name($venue_id));
    }
    $html .= '</ul>';
    /**
     * Filters mark-up for the event details list.
     *
     * The event details list is just a simple list containing details pertaining
     * to the event (venue, categories, tags) etc.
     *
     * @param array $html The generated mark-up
     * @param int $event_id Post ID of the event
     */
    $html = apply_filters('eventorganiser_event_meta_list', $html, $event_id);
    return $html;
}
コード例 #11
0
/**
 * Returns HTML mark-up for a list of event meta information.
 *
 * Uses microformat.
 * @since 1.7
 * @ignore
 * @param int $post_id The event (post) ID. Uses current event if not supplied
 * @return string|bool HTML mark-up. False if an invalid $post_is provided.
*/
function eo_get_event_meta_list($event_id = 0)
{
    $event_id = (int) (empty($event_id) ? get_the_ID() : $event_id);
    if (empty($event_id)) {
        return false;
    }
    $html = '<ul class="eo-event-meta" style="margin:10px 0px;">';
    $venue = get_taxonomy('event-venue');
    if (($venue_id = eo_get_venue($event_id)) && $venue) {
        $html .= sprintf('<li><strong>%s:</strong> <a href="%s">
				<span itemprop="location" itemscope itemtype="http://data-vocabulary.org/Organization">
					<span itemprop="name">%s</span>
					<span itemprop="geo" itemscope itemtype="http://data-vocabulary.org/Geo">
						<meta itemprop="latitude" content="%f" />
						<meta itemprop="longitude" content="%f" />
					</span>
				</span>
			</a></li>', $venue->labels->singular_name, eo_get_venue_link($venue_id), eo_get_venue_name($venue_id), eo_get_venue_lat($venue_id), eo_get_venue_lng($venue_id));
    }
    if (get_the_terms($event_id, 'event-category')) {
        $html .= sprintf('<li><strong>%s:</strong> %s</li>' . "\n", __('Categories', 'eventorganiser'), get_the_term_list($event_id, 'event-category', '', ', ', ''));
    }
    if (get_the_terms($event_id, 'event-tag') && !is_wp_error(get_the_terms($event_id, 'event-tag'))) {
        $html .= sprintf('<li><strong>%s:</strong> %s</li>' . "\n", __('Tags', 'eventorganiser'), get_the_term_list($event_id, 'event-tag', '', ', ', ''));
    }
    $html .= '</ul>';
    /**
     * Filters mark-up for the event details list.
     *
     * The event details list is just a simple list containig details pertaining
     * to the event (venue, categories, tags) etc.
     *
     * @param array $html The generated mark-up
     * @param int $event_id Post ID of the event
     */
    $html = apply_filters('eventorganiser_event_meta_list', $html, $event_id);
    return $html;
}
コード例 #12
0
			<h4><?php 
            eo_venue_name();
            ?>
</h4>
		</div>

	<?php 
        }
        ?>
	
	<?php 
        the_content();
        ?>
	
	<?php 
        if (eo_get_venue()) {
            $location = explode(',', eo_get_venue_name(), 2);
            echo do_shortcode("[google-map-sc width=100% height=300 zoom=15 type=ROADMAP address='" . $location[1] . "']");
        }
        ?>
	
	<?php 
        echo do_shortcode('[button url="http://www.buildinstitute.com/events/" arrow="left"]All Events[/button]');
        ?>

<?php 
    }
}
?>

</main>
コード例 #13
0
/**
 * Returns HTML mark-up for a list of event meta information.
 *
 * Uses microformat.
 * @since 1.7
 * @ignore
 * @param int $post_id The event (post) ID. Uses current event if not supplied
 * @return string|bool HTML mark-up. False if an invalid $post_is provided.
*/
function eo_get_event_meta_list($post_id = 0)
{
    $post_id = (int) (empty($post_id) ? get_the_ID() : $post_id);
    if (empty($post_id)) {
        return false;
    }
    $html = '<ul class="eo-event-meta" style="margin:10px 0px;">';
    if ($venue_id = eo_get_venue($post_id)) {
        $html .= sprintf('<li><strong>%s:</strong> <a href="%s">
								<span itemprop="location" itemscope itemtype="http://data-vocabulary.org/​Organization">
									<span itemprop="name">%s</span>
									<span itemprop="geo" itemscope itemtype="http://data-vocabulary.org/​Geo">
										<meta itemprop="latitude" content="%f" />
										<meta itemprop="longitude" content="%f" />
     									</span>
								</span></a></li>', __('Venue', 'eventorganiser'), eo_get_venue_link($venue_id), eo_get_venue_name($venue_id), eo_get_venue_lat($venue_id), eo_get_venue_lng($venue_id));
    }
    if (get_the_terms(get_the_ID(), 'event-category')) {
        $html .= sprintf('<li><strong>%s:</strong> %s</li>', __('Categories', 'eventorganiser'), get_the_term_list(get_the_ID(), 'event-category', '', ', ', ''));
    }
    if (get_the_terms(get_the_ID(), 'event-tag') && !is_wp_error(get_the_terms(get_the_ID(), 'event-tag'))) {
        $html .= sprintf('<li><strong>%s:</strong> %s</li>', __('Tags', 'eventorganiser'), get_the_term_list(get_the_ID(), 'event-tag', '', ', ', ''));
    }
    $html .= '</ul>';
    return apply_filters('eventorganiser_event_meta_list', $html, $post_id);
}
コード例 #14
0
/**
* Sets up the event data metabox
* This allows user to enter date / time, reoccurrence and venue data for the event
* @ignore
* @since 1.0.0
*/
function _eventorganiser_details_metabox($post)
{
    global $wp_locale;
    //Sets the format as php understands it, and textual.
    $phpFormat = eventorganiser_get_option('dateformat');
    if ('d-m-Y' == $phpFormat) {
        $format = 'dd-mm-yyyy';
        //Human form
    } elseif ('Y-m-d' == $phpFormat) {
        $format = 'yyyy-mm-dd';
        //Human form
    } else {
        $format = 'mm-dd-yyyy';
        //Human form
    }
    $is24 = eventorganiser_blog_is_24();
    $time_format = $is24 ? 'H:i' : 'g:ia';
    //Get the starting day of the week
    $start_day = intval(get_option('start_of_week'));
    $ical_days = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
    //Retrieve event details
    extract(eo_get_event_schedule($post->ID));
    $venues = eo_get_venues();
    $venue_id = (int) eo_get_venue($post->ID);
    //$sche_once is used to disable date editing unless the user specifically requests it.
    //But a new event might be recurring (via filter), and we don't want to 'lock' new events.
    //See http://wordpress.org/support/topic/wrong-default-in-input-element
    $sche_once = $schedule == 'once' || !empty(get_current_screen()->action);
    if (!$sche_once) {
        $notices = '<strong>' . __('This is a reoccurring event', 'eventorganiser') . '</strong>. ' . __('Check to edit this event and its reoccurrences', 'eventorganiser') . ' <input type="checkbox" id="HWSEvent_rec" name="eo_input[AlterRe]" value="yes">';
    } else {
        $notices = '';
    }
    //Start of meta box
    if ($notices = apply_filters('eventorganiser_event_metabox_notice', $notices, $post)) {
        echo '<div class="updated below-h2"><p>' . $notices . '</p></div>';
    }
    ?>
	<div class="<?php 
    echo $sche_once ? 'onetime' : 'reoccurence';
    ?>
">
		<p><?php 
    printf(__('Ensure dates are entered in %1$s format and times in %2$s (24 hour) format', 'eventorganiser'), '<strong>' . $format . '</strong>', ' <strong>hh:mm</strong>');
    ?>
 </p>

		<table id="eventorganiser_event_detail" class="form-table">
				<tr valign="top"  class="event-date">
					<td class="eo-label"><?php 
    echo __('Start Date/Time', 'eventorganiser') . ':';
    ?>
 </td>
					<td> 
						<input class="ui-widget-content ui-corner-all" name="eo_input[StartDate]" size="10" maxlength="10" id="from_date" <?php 
    disabled(!$sche_once);
    ?>
 value="<?php 
    echo $start->format($phpFormat);
    ?>
"/>
						<?php 
    printf('<input name="eo_input[StartTime]" class="eo_time ui-widget-content ui-corner-all" size="6" maxlength="8" id="HWSEvent_time" %s value="%s"/>', disabled(!$sche_once || $all_day, true, false), eo_format_datetime($start, $time_format));
    ?>
						

					</td>
				</tr>

				<tr valign="top"  class="event-date">
					<td class="eo-label"><?php 
    echo __('End Date/Time', 'eventorganiser') . ':';
    ?>
 </td>
					<td> 
						<input class="ui-widget-content ui-corner-all" name="eo_input[EndDate]" size="10" maxlength="10" id="to_date" <?php 
    disabled(!$sche_once);
    ?>
  value="<?php 
    echo $end->format($phpFormat);
    ?>
"/>
					
						<?php 
    printf('<input name="eo_input[FinishTime]" class="eo_time ui-widget-content ui-corner-all" size="6" maxlength="8" id="HWSEvent_time2" %s value="%s"/>', disabled(!$sche_once || $all_day, true, false), eo_format_datetime($end, $time_format));
    ?>
	

					<label>
					<input type="checkbox" id="eo_allday"  <?php 
    checked($all_day);
    ?>
 name="eo_input[allday]"  <?php 
    disabled(!$sche_once);
    ?>
 value="1"/>
						<?php 
    _e('All day', 'eventorganiser');
    ?>
					 </label>
			
					</td>
				</tr>

				<tr class="event-date">
					<td class="eo-label"><?php 
    _e('Reoccurence:', 'eventorganiser');
    ?>
 </td>
					<td> 
					<?php 
    $reoccurrence_schedules = array('once' => __('once', 'eventorganiser'), 'daily' => __('daily', 'eventorganiser'), 'weekly' => __('weekly', 'eventorganiser'), 'monthly' => __('monthly', 'eventorganiser'), 'yearly' => __('yearly', 'eventorganiser'), 'custom' => __('custom', 'eventorganiser'));
    ?>

					<select id="HWSEventInput_Req" name="eo_input[schedule]">
						<?php 
    foreach ($reoccurrence_schedules as $index => $val) {
        ?>
							<option value="<?php 
        echo $index;
        ?>
" <?php 
        selected($schedule, $index);
        ?>
><?php 
        echo $val;
        ?>
</option>
						<?php 
    }
    //End foreach $allowed_reoccurs
    ?>
					</select>
					</td>
				</tr>

				<tr valign="top"  class="event-date reocurrence_row">
					<td></td>
					<td>
						<p><?php 
    _e('Repeat every', 'eventorganiser');
    ?>
 
						<input <?php 
    disabled(!$sche_once || $all_day);
    ?>
 class="ui-widget-content ui-corner-all" name="eo_input[event_frequency]" id="HWSEvent_freq" type="number" min="1" max="365" maxlength="4" size="4" disabled="disabled" value="<?php 
    echo $frequency;
    ?>
" /> 
						<span id="recpan" >  </span>				
						</p>

						<p id="dayofweekrepeat">
						<?php 
    _e('on', 'eventorganiser');
    ?>
	
						<?php 
    for ($i = 0; $i <= 6; $i++) {
        $d = ($start_day + $i) % 7;
        $ical_d = $ical_days[$d];
        $day = $wp_locale->weekday_abbrev[$wp_locale->weekday[$d]];
        $schedule_days = is_array($schedule_meta) ? $schedule_meta : array();
        ?>
							<input type="checkbox" id="day-<?php 
        echo $day;
        ?>
"  <?php 
        checked(in_array($ical_d, $schedule_days), true);
        ?>
  value="<?php 
        echo esc_attr($ical_d);
        ?>
" class="daysofweek" name="eo_input[days][]" disabled="disabled" />
							<label for="day-<?php 
        echo $day;
        ?>
" > <?php 
        echo $day;
        ?>
</label>
						<?php 
    }
    ?>
						</p>

						<p id="dayofmonthrepeat">
						<label for="bymonthday" >	
							<input type="radio" id="bymonthday" disabled="disabled" name="eo_input[schedule_meta]" <?php 
    checked($occurs_by, 'BYMONTHDAY');
    ?>
 value="BYMONTHDAY=" /> 
							<?php 
    _e('day of month', 'eventorganiser');
    ?>
						</label>
						<label for="byday" >
							<input type="radio" id="byday" disabled="disabled" name="eo_input[schedule_meta]"  <?php 
    checked($occurs_by != 'BYMONTHDAY', true);
    ?>
 value="BYDAY=" /> 
							<?php 
    _e('day of week', 'eventorganiser');
    ?>
						</label>
						</p>

						<p class="reoccurrence_label">
						<?php 
    _e('until', 'eventorganiser');
    ?>
 
						<input <?php 
    disabled(!$sche_once || $all_day);
    ?>
 class="ui-widget-content ui-corner-all" name="eo_input[schedule_end]" id="recend" size="10" maxlength="10" disabled="disabled" value="<?php 
    echo $schedule_last->format($phpFormat);
    ?>
"/>
						</p>

						<p id="event_summary"> </p>
					</td>
				</tr>

				<tr valign="top" id="eo_occurrence_picker_row" class="event-date">
					<td class="eo-label">	
						<?php 
    esc_html_e('Include/Exclude occurrences', 'eventorganiser');
    ?>
					</td>
					<td>
						<?php 
    submit_button(__('Show dates', 'eventorganiser'), 'hide-if-no-js eo_occurrence_toggle button small', 'eo_date_toggle', false);
    ?>
						
						<div id="eo_occurrence_datepicker"></div>
						<?php 
    //var_dump($include);
    if (!empty($include)) {
        $include_str = array_map('eo_format_datetime', $include, array_fill(0, count($include), 'Y-m-d'));
        $include_str = esc_textarea(sanitize_text_field(implode(',', $include_str)));
    } else {
        $include_str = '';
    }
    ?>
						<textarea style="display:none;" name="eo_input[include]" id="eo_occurrence_includes"><?php 
    echo $include_str;
    ?>
</textarea>

						<?php 
    if (!empty($exclude)) {
        $exclude_str = array_map('eo_format_datetime', $exclude, array_fill(0, count($exclude), 'Y-m-d'));
        $exclude_str = esc_textarea(sanitize_text_field(implode(',', $exclude_str)));
    } else {
        $exclude_str = '';
    }
    ?>
						<textarea style="display:none;" name="eo_input[exclude]" id="eo_occurrence_excludes"><?php 
    echo $exclude_str;
    ?>
</textarea>

					</td>
				</tr>
				<tr valign="top" class="eo-venue-combobox-select">
					<td class="eo-label"> <?php 
    _e('Venue', 'eventorganiser');
    ?>
: </td>
					<td> 	
						<select size="50" id="venue_select" name="eo_input[event-venue]">
							<option><?php 
    _e('Select a venue', 'eventorganiser');
    ?>
</option>
							<?php 
    foreach ($venues as $venue) {
        ?>
								<option <?php 
        selected($venue->term_id, $venue_id);
        ?>
 value="<?php 
        echo intval($venue->term_id);
        ?>
"><?php 
        echo esc_html($venue->name);
        ?>
</option>
							<?php 
    }
    ?>
						</select>
					</td>
				</tr>
		
				<!-- Add New Venue --> 
				<tr valign="top" class="eo-add-new-venue">
					<td class="eo-label"><label><?php 
    _e('Venue Name', 'eventorganiser');
    ?>
:</label></td>
					<td><input type="text" name="eo_venue[name]" id="eo_venue_name"  value=""/></td>
				</tr>
			<?php 
    $address_fields = _eventorganiser_get_venue_address_fields();
    foreach ($address_fields as $key => $label) {
        printf('<tr valign="top" class="eo-add-new-venue">
								<td class="eo-label"><label>%1$s:</label></td>
								<td><input type="text" name="eo_venue[%2$s]" class="eo_addressInput" id="eo_venue_add"  value=""/></td>
							</tr>', $label, esc_attr(trim($key, '_')));
    }
    ?>
				<tr valign="top" class="eo-add-new-venue" >
					<td class="eo-label"></td>
					<td>
						<a class="button eo-add-new-venue-cancel" href="#"><?php 
    esc_html_e('Cancel', 'eventorganiser');
    ?>
 </a>
					</td>
				</tr>

				<!-- Venue Map --> 
				<tr valign="top"  class="venue_row <?php 
    if (!$venue_id) {
        echo 'novenue';
    }
    ?>
" >
					<td class="eo-label"></td>
					<td>
						<div id="eventorganiser_venue_meta" style="display:none;">
							<input type="hidden" id="eo_venue_Lat" name="eo_venue[latitude]" value="<?php 
    eo_venue_lat($venue_id);
    ?>
" />
							<input type="hidden" id="eo_venue_Lng" name="eo_venue[longtitude]" value="<?php 
    eo_venue_lng($venue_id);
    ?>
" />
						</div>
						<div id="venuemap" class="ui-widget-content ui-corner-all gmap3"></div>
						<div class="clear"></div>
					</td>
				</tr>
			</table>
		</div>
	<?php 
    // create a custom nonce for submit verification later
    wp_nonce_field('eventorganiser_event_update_' . get_the_ID(), '_eononce');
}
コード例 #15
0
function eventorganiser_posterboard_ajax_response()
{
    $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
    $query = empty($_GET['query']) ? array() : $_GET['query'];
    foreach (array('category', 'tag', 'venue') as $tax) {
        if (isset($query['event_' . $tax])) {
            $query['event-' . $tax] = $query['event_' . $tax];
            unset($query['event_' . $tax]);
        }
    }
    if (isset($query['event-venue']) && '%this%' == $query['event-venue']) {
        if (eo_get_venue_slug()) {
            $query['event-venue'] = eo_get_venue_slug();
        } else {
            unset($query['event-venue']);
        }
    }
    if (isset($query['users_events']) && 'true' == strtolower($query['users_events'])) {
        $query['bookee_id'] = get_current_user_id();
    }
    $query = array_merge(array('event_start_after' => 'today', 'posts_per_page' => 10), $query, array('post_type' => 'event', 'paged' => $page, 'post_status' => array('publish', 'private'), 'perm' => 'readable', 'supress_filters' => false));
    $event_query = new WP_Query($query);
    $response = array();
    if ($event_query->have_posts()) {
        global $post;
        while ($event_query->have_posts()) {
            $event_query->the_post();
            $start_format = get_option('time_format');
            if (eo_get_the_start('Y-m-d') == eo_get_the_end('Y-m-d')) {
                $end_format = get_option('time_format');
            } else {
                $end_format = 'j M ' . get_option('time_format');
            }
            $venue_id = eo_get_venue();
            $categories = get_the_terms(get_the_ID(), 'event-category');
            $colour = eo_get_event_color() ? eo_get_event_color() : '#1e8cbe';
            $address = eo_get_venue_address($venue_id);
            $event = array('event_id' => get_the_ID(), 'occurrence_id' => $post->occurrence_id, 'event_title' => get_the_title(), 'event_color' => $colour, 'event_color_light' => eo_color_luminance($colour, 0.3), 'event_start_day' => eo_get_the_start('j'), 'event_start_month' => eo_get_the_start('M'), 'event_content' => get_the_content(), 'event_excerpt' => get_the_excerpt(), 'event_thumbnail' => get_the_post_thumbnail(get_the_ID(), array('200', '200'), array('class' => 'aligncenter')), 'event_permalink' => get_permalink(), 'event_categories' => get_the_term_list(get_the_ID(), 'event-category', '#', ', #', ''), 'event_venue' => $venue_id ? eo_get_venue_name($venue_id) : false, 'event_venue_id' => $venue_id, 'event_venue_city' => $venue_id ? $address['city'] : false, 'event_venue_state' => $venue_id ? $address['state'] : false, 'event_venue_country' => $venue_id ? $address['country'] : false, 'event_venue_url' => $venue_id ? eo_get_venue_link($venue_id) : false, 'event_is_all_day' => eo_is_all_day(), 'event_cat_ids' => $categories ? array_values(wp_list_pluck($categories, 'term_id')) : array(0), 'event_range' => eo_get_the_start($start_format) . ' - ' . eo_get_the_end($end_format));
            $event = apply_filters('eventorganiser_posterboard_item', $event, $event['event_id'], $event['occurrence_id']);
            $response[] = $event;
        }
    }
    wp_reset_postdata();
    echo json_encode($response);
    exit;
}
コード例 #16
0
/**
* Sets up the event data metabox
* This allows user to enter date / time, reoccurrence and venue data for the event
*
* @since 1.0.0
*/
function eventorganiser_details_metabox($post)
{
    global $wp_locale;
    //Sets the format as php understands it, and textual.
    $eo_settings_array = get_option('eventorganiser_options');
    if ($eo_settings_array['dateformat'] == 'dd-mm') {
        $phpFormat = 'd-m-Y';
        $format = 'dd-mm-yyyy';
    } else {
        $phpFormat = 'm-d-Y';
        $format = 'mm-dd-yyyy';
    }
    //Get the starting day of the week
    $start_day = intval(get_option('start_of_week'));
    //Retrieve event details (if they exist)
    $event = new EO_Event(get_the_ID());
    //Start of meta box
    ?>
	
		<p>
			<?php 
    if ($event->is_reoccurring()) {
        ?>
				<strong><?php 
        _e('This is a reoccurring event', 'eventorganiser');
        ?>
</strong>. 
				<input type="checkbox" id="HWSEvent_rec" name="eo_input[AlterRe]" value="yes" /> 
				<?php 
        _e('Check to edit this event and its reoccurrences', 'eventorganiser');
        ?>
.
			<?php 
    }
    ?>
		</p>

		<div class="<?php 
    if ($event->is_reoccurring()) {
        echo 'reoccurence';
    } else {
        echo 'onetime';
    }
    ?>
">
			<p><?php 
    sprintf(__('Ensure dates are entered in %1$s format and times in %2$s (24 hour) format', 'eventorganiser'), '<strong>' . $format . '</strong>', ' <strong>hh:mm</strong>');
    ?>
 </p>
			<table>
			<tr class="event-date">
			<td><?php 
    echo __("Start Date/Time", 'eventorganiser') . ':';
    ?>
 </td>
			<td> 
			<input class="ui-widget-content ui-corner-all" name="eo_input[StartDate]" size="10" maxlength="10" id="from_date" <?php 
    disabled($event->is_reoccurring());
    ?>
 value="<?php 
    $event->the_start($phpFormat);
    ?>
"/>
			<input name="eo_input[StartTime]" class="eo_time ui-widget-content ui-corner-all" size="4" maxlength="5" id="HWSEvent_time" <?php 
    disabled($event->is_reoccurring() || $event->is_allday());
    ?>
 value="<?php 
    $event->the_start('H:i');
    ?>
"/>
			</td>
			</tr>
			<tr class="event-date">
			<td><?php 
    echo __("End Date/Time", 'eventorganiser') . ':';
    ?>
 </td>
			<td> 
			<input class="ui-widget-content ui-corner-all" name="eo_input[EndDate]" size="10" maxlength="10" id="to_date" <?php 
    disabled($event->is_reoccurring());
    ?>
  value="<?php 
    $event->the_end($phpFormat);
    ?>
"/>
			<input name="eo_input[FinishTime]" class="eo_time ui-widget-content ui-corner-all " size="4" maxlength="5" id="HWSEvent_time2" <?php 
    disabled($event->is_reoccurring() || $event->is_allday());
    ?>
 value="<?php 
    $event->the_end('H:i');
    ?>
""/>
			<label>
				<input type="checkbox" id="eo_allday"  <?php 
    checked($event->is_allday());
    ?>
 name="eo_input[allday]"<?php 
    disabled($event->is_reoccurring());
    ?>
 value="1"/>
				<?php 
    _e("All day", 'eventorganiser');
    ?>
			 </label>
			</td>
			</tr>

			<tr class="event-date">
			<td><?php 
    _e("Reoccurence:", 'eventorganiser');
    ?>
 </td>
			<td> 
			<?php 
    $reoccurrence_schedules = array('once' => __('once', 'eventorganiser'), 'daily' => __('daily', 'eventorganiser'), 'weekly' => __('weekly', 'eventorganiser'), 'monthly' => __('monthly', 'eventorganiser'), 'yearly' => __('yearly', 'eventorganiser'));
    ?>
			<select id="HWSEventInput_Req" name="eo_input[schedule]" <?php 
    disabled($event->is_reoccurring());
    ?>
>
					<?php 
    foreach ($reoccurrence_schedules as $index => $val) {
        ?>
						<option value="<?php 
        echo $index;
        ?>
" <?php 
        selected($event->is_schedule($index));
        ?>
><?php 
        echo $val;
        ?>
</option>
					<?php 
    }
    //End foreach $allowed_reoccurs
    ?>
			</select>
			</td>
			</tr>

			<tr class="event-date reocurrence_row">
			<td></td><td>
			<p>
				<?php 
    _e("Repeat every ", 'eventorganiser');
    ?>
				<input <?php 
    disabled($event->is_reoccurring());
    ?>
 class="ui-widget-content ui-corner-all" name="eo_input[event_frequency]" id="HWSEvent_freq" type="number" min="1" max="365" maxlength="4" size="4" disabled="disabled" value="<?php 
    echo $event->frequency;
    ?>
" /> 
				<span id="recpan" >  </span>				
			</p>

			<p id="dayofweekrepeat">
			<?php 
    _e("on", 'eventorganiser');
    ?>
	
                                <?php 
    $days_meta = is_array($event->meta) ? $event->meta : array();
    ?>
				<?php 
    for ($i = 0; $i <= 6; $i++) {
        $d = ($start_day + $i) % 7;
        $ical_days = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
        $ical_d = $ical_days[$d];
        $day = $wp_locale->weekday_abbrev[$wp_locale->weekday[$d]];
        ?>
					<input type="checkbox" id="day-<?php 
        echo $day;
        ?>
"  <?php 
        checked(in_array($ical_d, $days_meta), true);
        ?>
  value="<?php 
        echo esc_attr($ical_d);
        ?>
" class="daysofweek" name="eo_input[days][]" disabled="disabled" />
					<label for="day-<?php 
        echo $day;
        ?>
" > <?php 
        echo $day;
        ?>
</label>
				<?php 
    }
    ?>
			</p>

			<p id="dayofmonthrepeat">
				<input type="radio" id="bymonthday" disabled="disabled" name="eo_input[schedule_meta]" <?php 
    checked($event->occursBy(), 'BYMONTHDAY');
    ?>
 value="BYMONTHDAY=" /> 
				<label for="bymonthday" >	<?php 
    _e("day of month", 'eventorganiser');
    ?>
	</label>
				<input type="radio" id="byday" disabled="disabled" name="eo_input[schedule_meta]"  <?php 
    checked($event->occursBy() == 'BYMONTHDAY', false);
    ?>
 value="BYDAY=" /> 
				<label for="byday" >	<?php 
    _e("day of week", 'eventorganiser');
    ?>
</label>
			</p>

			<p class="reoccurrence_label">
			<?php 
    _e("until", 'eventorganiser');
    ?>
 
				<input <?php 
    disabled($event->is_reoccurring());
    ?>
 class="ui-widget-content ui-corner-all" name="eo_input[schedule_end]" id="recend" size="10" maxlength="10" disabled="disabled" value="<?php 
    $event->the_schedule_end($phpFormat);
    ?>
"/>
			</p>

			<p id="event_summary"> </p>

			</td>
			</tr>

			<tr>	
			<td class="label"> <?php 
    _e("Venue", 'eventorganiser');
    ?>
 : </td>
			<td> 
			<?php 
    $venues = get_terms('event-venue', array('hide_empty' => false));
    $current_id = (int) eo_get_venue(get_the_ID());
    ?>

			<!-- If javascript is disabed, a simple drop down menu box is displayed to choose venue.
			Otherwise, the user is able to search the venues by typing in the input box.-->		
				<select size="50" id="venue_select" name="eo_input[event-venue]">
					<option><?php 
    _e("Select a venue", 'eventorganiser');
    ?>
</option>
				<?php 
    foreach ($venues as $venue) {
        ?>
					<option <?php 
        selected($venue->term_id, $current_id);
        ?>
 value="<?php 
        echo $venue->term_id;
        ?>
"><?php 
        echo $venue->name;
        ?>
</option>
				<?php 
    }
    ?>
				</select>
			<span style="font-size:0.8em;line-height:0.8em;"> <?php 
    _e("Search for a venue. To add a venues go to the venue page.", 'eventorganiser');
    ?>
</span>
			</td>
			</tr>
			<tr class="venue_row <?php 
    if (!$current_id) {
        echo 'novenue';
    }
    ?>
" >
			<td></td>
			<td>

			<div id="eventorganiser_venue_meta" style="display:none;">
				<input type="hidden" id="eo_venue_Lat" value="<?php 
    eo_venue_lat($current_id);
    ?>
" />
				<input type="hidden" id="eo_venue_Lng" value="<?php 
    eo_venue_lng($current_id);
    ?>
" />
			</div>
			
			<div id="venuemap" class="ui-widget-content ui-corner-all gmap3"></div>
			<div class="clear"></div>
			</td>
			</tr>

			</table>
		</div>
	<?php 
    // create a custom nonce for submit verification later
    wp_nonce_field('eventorganiser_event_update_' . get_the_ID(), '_eononce');
}
コード例 #17
0
/**
 * Ajax response for the admin full calendar. 
 *
 * This gets events and generates summaries for events to be displayed.
 * in the admin 'calendar view'. 
 * Applies 'eventorganiser_admin_cal_summary' to event summary
 * Applies eventorganiser_admin_calendar to the event array
 *
 *@since 1.0
 *@access private
 *@ignore
*/
function eventorganiser_admin_calendar()
{
    //request
    $request = array('event_end_after' => $_GET['start'], 'event_start_before' => $_GET['end']);
    //Presets
    $presets = array('posts_per_page' => -1, 'post_type' => 'event', 'group_events_by' => '', 'perm' => 'readable');
    $calendar = get_transient('eo_full_calendar_admin');
    $key = $_GET['start'] . '--' . $_GET['end'] . 'u=' . get_current_user_id();
    if ((!defined('WP_DEBUG') || !WP_DEBUG) && $calendar && is_array($calendar) && isset($calendar[$key])) {
        echo json_encode($calendar[$key]);
        exit;
    }
    //Create query
    $query_array = array_merge($presets, $request);
    $query = new WP_Query($query_array);
    //Retrieve events
    $query->get_posts();
    $eventsarray = array();
    //Blog timezone
    $tz = eo_get_blog_timezone();
    //Loop through events
    global $post;
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $event = array();
            $colour = '';
            //Get title, append status if applicable
            $title = get_the_title();
            if (!empty($post->post_password)) {
                $title .= ' - ' . __('Protected');
            } elseif ($post->post_status == 'private') {
                $title .= ' - ' . __('Private');
            } elseif ($post->post_status == 'draft') {
                $title .= ' - ' . __('Draft');
            }
            $event['title'] = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
            $event['event_id'] = $post->ID;
            $event['occurrence_id'] = $post->occurrence_id;
            $schedule = eo_get_event_schedule($post->ID);
            //Check if all day, set format accordingly
            if ($schedule['all_day']) {
                $event['allDay'] = true;
                $format = get_option('date_format');
            } else {
                $event['allDay'] = false;
                $format = get_option('date_format') . '  ' . get_option('time_format');
            }
            //Get author (or organiser)
            $organiser = get_userdata($post->post_author)->display_name;
            //Get Event Start and End date, set timezone to the blog's timzone
            $event_start = new DateTime($post->StartDate . ' ' . $post->StartTime, $tz);
            $event_end = new DateTime($post->EndDate . ' ' . $post->FinishTime, $tz);
            $event['start'] = $event_start->format('Y-m-d\\TH:i:s\\Z');
            $event['end'] = $event_end->format('Y-m-d\\TH:i:s\\Z');
            //Produce summary of event
            $summary = "<table class='form-table' >" . "<tr><th> " . __('Start', 'eventorganiser') . ": </th><td> " . eo_format_datetime($event_start, $format) . "</td></tr>" . "<tr><th> " . __('End', 'eventorganiser') . ": </th><td> " . eo_format_datetime($event_end, $format) . "</td></tr>";
            if (eo_is_multi_event_organiser()) {
                $summary .= "<tr><th> " . __('Organiser', 'eventorganiser') . ": </th><td>" . $organiser . "</td></tr>";
            }
            $event['className'] = array('event');
            $now = new DateTime(null, $tz);
            if ($event_start <= $now) {
                $event['className'][] = 'past-event';
            }
            //Include venue if this is set
            $venue = eo_get_venue($post->ID);
            if ($venue && !is_wp_error($venue)) {
                $summary .= "<tr><th>" . __('Where', 'eventorganiser') . ": </th><td>" . eo_get_venue_name($venue) . "</td></tr>";
                $event['className'][] = 'venue-' . eo_get_venue_slug($post->ID);
                $event['venue'] = $venue;
            }
            /**
             * Filters the summary of the event as it appears in the admin 
             * calendar's modal.
             *
             * **Note:** As the calendar is cached, changes made using this filter
             * will not take effect immediately. You can clear the cache by
             * updating an event.
             *
             * @package admin-calendar
             * @param string  $summary       The event (admin) summary,
             * @param int     $event_id      The event's post ID.
             * @param int     $occurrence_id The event's occurrence ID.
             * @param WP_Post $post          The event (post) object.
             */
            $summary = apply_filters('eventorganiser_admin_cal_summary', $summary, $post->ID, $post->occurrence_id, $post);
            $summary .= "</table><p>";
            //Include schedule summary if event reoccurrs
            if ($schedule['schedule'] != 'once') {
                $summary .= '<em>' . __('This event reoccurs', 'eventorganiser') . ' ' . eo_get_schedule_summary() . '</em>';
            }
            $summary .= '</p>';
            //Include edit link in summary if user has permission
            if (current_user_can('edit_event', $post->ID)) {
                $edit_link = get_edit_post_link($post->ID, '');
                $summary .= "<span class='edit'><a title='Edit this item' href='" . $edit_link . "'> " . __('Edit Event', 'eventorganiser') . "</a></span>";
                $event['url'] = $edit_link;
            }
            //Include a delete occurrence link in summary if user has permission
            if (current_user_can('delete_event', $post->ID)) {
                $admin_url = admin_url('edit.php');
                $delete_url = add_query_arg(array('post_type' => 'event', 'page' => 'calendar', 'series' => $post->ID, 'event' => $post->occurrence_id, 'action' => 'delete_occurrence'), $admin_url);
                $delete_url = wp_nonce_url($delete_url, 'eventorganiser_delete_occurrence_' . $post->occurrence_id);
                $summary .= sprintf('<span class="delete"><a class="submitdelete" style="color:red;float:right" title="%1$s" href="%2$s">%1$s</a></span>', esc_attr__('Delete this occurrence', 'eventorganiser'), $delete_url);
                if ($schedule['schedule'] != 'once') {
                    $break_url = add_query_arg(array('post_type' => 'event', 'page' => 'calendar', 'series' => $post->ID, 'event' => $post->occurrence_id, 'action' => 'break_series'), $admin_url);
                    $break_url = wp_nonce_url($break_url, 'eventorganiser_break_series_' . $post->occurrence_id);
                    $summary .= sprintf('<span class="break"><a class="submitbreak" style="color:red;float:right;padding-right:2em;" title="%1$s" href="%2$s">%1$s</a></span>', esc_attr__('Break this series', 'eventorganiser'), $break_url);
                }
            }
            //Event categories
            $terms = get_the_terms($post->ID, 'event-category');
            $event['category'] = array();
            if ($terms) {
                foreach ($terms as $term) {
                    $event['category'][] = $term->slug;
                    $event['className'][] = 'category-' . $term->slug;
                }
            }
            //Event colour
            $event['textColor'] = '#ffffff';
            //default text colour
            if (eo_get_event_color()) {
                $event['color'] = eo_get_event_color();
                $event['textColor'] = eo_get_event_textcolor($event['color']) ? eo_get_event_textcolor($event['color']) : '#ffffff';
            }
            //Event summary
            $event['summary'] = '<div id="eo-cal-meta">' . $summary . '</div>';
            //Filter the event array
            /**
             * @ignore
             */
            $event = apply_filters('eventorganiser_admin_calendar', $event, $post);
            /**
             * Filters the event before its sent to the admin calendar.
             *
             * **Note:** As the calendar is cached, changes made using this filter
             * will not take effect immediately. You can clear the cache by
             * updating an event.
             * 
             * @package admin-calendar
             * @param array $event         The event array.
             * @param int   $event_id      The event's post ID.
             * @param int   $occurrence_id The event's occurrence ID.
             */
            $event = apply_filters('eventorganiser_admin_fullcalendar_event', $event, $post->ID, $post->occurrence_id);
            //Add event to array
            $eventsarray[] = $event;
        }
    }
    if (!$calendar || !is_array($calendar)) {
        $calendar = array();
    }
    $calendar[$key] = $eventsarray;
    set_transient('eo_full_calendar_admin', $calendar, 60 * 60 * 24);
    //Echo result and exit
    echo json_encode($eventsarray);
    exit;
}
コード例 #18
0
 /**
  * Prepare a CiviEvent with data from an EO Event
  *
  * @since 0.1
  *
  * @param object $post The WordPress post object
  * @return array $civi_event The basic CiviEvent data
  */
 public function prepare_civi_event($post)
 {
     // init CiviEvent array
     $civi_event = array('version' => 3);
     // add items that are common to all CiviEvents
     $civi_event['title'] = $post->post_title;
     $civi_event['description'] = $post->post_content;
     $civi_event['summary'] = strip_tags($post->post_excerpt);
     $civi_event['created_date'] = $post->post_date;
     $civi_event['is_public'] = 1;
     $civi_event['is_active'] = 1;
     $civi_event['participant_listing_id'] = NULL;
     // get venue for this event
     $venue_id = eo_get_venue($post->ID);
     // get CiviEvent location
     $location_id = $this->plugin->eo_venue->get_civi_location($venue_id);
     // did we get one?
     if (is_numeric($location_id)) {
         // add to our params
         $civi_event['loc_block_id'] = $location_id;
         // set CiviCRM to add map
         $civi_event['is_map'] = 1;
     }
     // online registration off by default
     $civi_event['is_online_registration'] = 0;
     // get CiviEvent online registration value
     $is_reg = $this->plugin->eo->get_event_registration($post->ID);
     // did we get one?
     if (is_numeric($is_reg) and $is_reg != 0) {
         // add to our params
         $civi_event['is_online_registration'] = 1;
     }
     // participant_role default
     $civi_event['default_role_id'] = 0;
     // get existing role ID
     $existing_id = $this->get_participant_role($post);
     // did we get one?
     if ($existing_id !== false and is_numeric($existing_id) and $existing_id != 0) {
         // add to our params
         $civi_event['default_role_id'] = $existing_id;
     }
     // get event type pseudo-ID (or value), because it is required in CiviCRM
     $type_value = $this->get_default_event_type_value($post);
     // well?
     if ($type_value === false) {
         // error
         wp_die(__('You must have some CiviCRM event types defined', 'civicrm-event-organiser'));
     }
     // assign event type value
     $civi_event['event_type_id'] = $type_value;
     // --<
     return $civi_event;
 }
コード例 #19
0
/**
 * For this to work you need to add the following to the custom field exceptions on the ThreeWP settings page:
 *
 * _eventorganiser_event_schedule
 * _eventorganiser_schedule_start_start
 * _eventorganiser_schedule_start_finish
 *_eventorganiser_schedule_last_start
 *_eventorganiser_schedule_last_finish
 *
 * @access private
 * @ignore
 *
*/
function eventorganiser_threeWP($activity)
{
    if (isset($activity['activity_id']) && $activity['activity_id'] == '3broadcast_broadcasted' && 'event' == get_post_type(get_the_ID())) {
        $details = $activity['activity_details'];
        $current_blog_id = get_current_blog_id();
        $original_id = get_the_ID();
        $original_cats = get_the_terms($original_id, 'event-category');
        $original_venue_id = eo_get_venue($original_id);
        //Venue Meta &Thumbnail
        $venue_meta = eo_get_venue_meta($original_venue_id, '', false);
        if ($original_venue_id && ($venue_thumbnail_id = eo_get_venue_meta($original_venue_id, '_eventorganiser_thumbnail_id', true))) {
            $original_upload_dir = wp_upload_dir();
            $metadata = wp_get_attachment_metadata($venue_thumbnail_id);
            $data = get_post($venue_thumbnail_id);
            $file = $metadata['file'];
            $guid = $data->guid;
            $post_title = $data->post_title;
            $menu_order = $data->menu_order;
            $post_excerpt = $data->post_excerpt;
            $filename_base = basename($metadata['file']);
            $filename_path = $original_upload_dir['basedir'] . '/' . $metadata['file'];
            $venue_thumbnail = compact('filename_path', 'file', 'filename_base', 'post_title', 'guid', 'menu_order', 'post_excerpt');
            unset($venue_meta['_eventorganiser_thumbnail_id']);
        }
        foreach ($details as $broadcast) {
            $blog_id = $broadcast['blog_id'];
            $post_id = $broadcast['post_id'];
            switch_to_blog($blog_id);
            $event_data = array('force_regenerate_dates' => true);
            eo_update_event($post_id, $event_data);
            $venue_id = eo_get_venue($post_id);
            //Delete old venue meta
            if ($old_meta = eo_get_venue_meta($venue_id, '', false)) {
                $old_meta_keys = array_keys($old_meta);
                foreach ($old_meta_keys as $key) {
                    eo_delete_venue_meta($venue_id, $key);
                }
            }
            //Add new venue  meta
            foreach ($venue_meta as $key => $values) {
                foreach ($values as $value) {
                    eo_add_venue_meta($venue_id, $key, $value);
                }
            }
            //Sync cat colours
            $cats = get_the_terms($post_id, 'event-category');
            foreach ($cats as $cat) {
                //Find original cat
                foreach ($original_cats as $original_cat) {
                    if ($original_cat->slug == $cat->slug) {
                        $re = update_option("eo-event-category_{$cat->term_id}", array('colour' => $original_cat->color));
                        break;
                    }
                }
            }
            //Sync venue thumbnails
            $upload_dir = wp_upload_dir();
            if (file_exists($venue_thumbnail['filename_path'])) {
                $file_path = $upload_dir['path'] . '/' . $venue_thumbnail['filename_base'];
                // Copy the file to the blog's upload directory
                copy($venue_thumbnail['filename_path'], $file_path);
                if (false == ($attachment_id = eventorganiser_file_to_attachment($venue_thumbnail['file']))) {
                    // And now create the attachment stuff.
                    // This is taken almost directly from http://codex.wordpress.org/Function_Reference/wp_insert_attachment
                    $wp_filetype = wp_check_filetype($venue_thumbnail['filename_base'], null);
                    $attachment = array('guid' => $upload_dir['url'] . '/' . $venue_thumbnail['filename_base'], 'menu_order' => $venue_thumbnail['menu_order'], 'post_excerpt' => $venue_thumbnail['post_excerpt'], 'post_mime_type' => $wp_filetype['type'], 'post_title' => $venue_thumbnail['post_title'], 'post_status' => 'inherit');
                    $attachment_id = wp_insert_attachment($attachment, $file_path, 0);
                    // Now to handle the metadata.
                    require_once ABSPATH . "wp-admin" . '/includes/image.php';
                    $attach_data = wp_generate_attachment_metadata($attachment_id, $file_path);
                    wp_update_attachment_metadata($attachment_id, $attach_data);
                }
                //If attachment post doesn't exist
                eo_update_venue_meta($venue_id, '_eventorganiser_thumbnail_id', $attachment_id);
            }
            //If original file exists
        }
        //Foreach blog
        switch_to_blog($current_blog_id);
    }
    //If broadcasting
}
コード例 #20
0
function eventorganiser_admin_calendar()
{
    //request
    $request = array('event_end_after' => $_GET['start'], 'event_start_before' => $_GET['end']);
    //Presets
    $presets = array('posts_per_page' => -1, 'post_type' => 'event', 'group_events_by' => '', 'perm' => 'readable');
    //Create query
    $query_array = array_merge($presets, $request);
    $query = new WP_Query($query_array);
    //Retrieve events
    $query->get_posts();
    $eventsarray = array();
    //Blog timezone
    $tz = eo_get_blog_timezone();
    //Loop through events
    global $post;
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $event = array();
            $colour = '';
            //Get title, append status if applicable
            $title = get_the_title();
            if (!empty($post->post_password)) {
                $title .= ' - ' . __('Protected');
            } elseif ($post->post_status == 'private') {
                $title .= ' - ' . __('Private');
            } elseif ($post->post_status == 'draft') {
                $title .= ' - ' . __('Draft');
            }
            $event['title'] = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
            //Check if all day, set format accordingly
            if (eo_is_all_day()) {
                $event['allDay'] = true;
                $format = get_option('date_format');
            } else {
                $event['allDay'] = false;
                $format = get_option('date_format') . '  ' . get_option('time_format');
            }
            //Get author (or organiser)
            $organiser = get_userdata($post->post_author)->display_name;
            //Get Event Start and End date, set timezone to the blog's timzone
            $event_start = new DateTime($post->StartDate . ' ' . $post->StartTime, $tz);
            $event_end = new DateTime($post->EndDate . ' ' . $post->FinishTime, $tz);
            $event['start'] = $event_start->format('Y-m-d\\TH:i:s\\Z');
            $event['end'] = $event_end->format('Y-m-d\\TH:i:s\\Z');
            //Produce summary of event
            $summary = "<table>" . "<tr><th> " . __('Start', 'eventorganiser') . ": </th><td> " . eo_format_datetime($event_start, $format) . "</td></tr>" . "<tr><th> " . __('End', 'eventorganiser') . ": </th><td> " . eo_format_datetime($event_end, $format) . "</td></tr>" . "<tr><th> " . __('Organiser', 'eventorganiser') . ": </th><td>" . $organiser . "</td></tr>";
            $event['className'] = array('event');
            $now = new DateTIme(null, $tz);
            if ($event_start <= $now) {
                $event['className'][] = 'past-event';
            }
            //Include venue if this is set
            $venue = eo_get_venue($post->ID);
            if ($venue && !is_wp_error($venue)) {
                $summary .= "<tr><th>" . __('Where', 'eventorganiser') . ": </th><td>" . eo_get_venue_name($venue) . "</td></tr>";
                $event['className'][] = 'venue-' . eo_get_venue_slug($post->ID);
                $event['venue'] = $venue;
            }
            $summary = apply_filters('eventorganiser_admin_cal_summary', $summary, $post->ID, $post->event_id, $post);
            $summary .= "</table><p>";
            //Include schedule summary if event reoccurrs
            if ($post->event_schedule != 'once') {
                $summary .= '<em>' . __('This event reoccurs', 'eventorganiser') . ' ' . eo_get_schedule_summary() . '</em>';
            }
            $summary .= '</p>';
            //Include edit link in summary if user has permission
            if (current_user_can('edit_event', $post->ID)) {
                $edit_link = get_edit_post_link($post->ID, '');
                $summary .= "<span class='edit'><a title='Edit this item' href='" . $edit_link . "'> " . __('Edit Event', 'eventorganiser') . "</a></span>";
                $event['url'] = $edit_link;
            }
            //Include a delete occurrence link in summary if user has permission
            if (current_user_can('delete_event', $post->ID)) {
                $admin_url = admin_url('edit.php');
                $delete_url = add_query_arg(array('post_type' => 'event', 'page' => 'calendar', 'series' => $post->ID, 'event' => $post->event_id, 'action' => 'delete_occurrence'), $admin_url);
                $delete_url = wp_nonce_url($delete_url, 'eventorganiser_delete_occurrence_' . $post->event_id);
                $summary .= "<span class='delete'>\n\t\t\t\t\t<a class='submitdelete' style='color:red;float:right' title='" . __('Delete this occurrence', 'eventorganiser') . "' href='" . $delete_url . "'> " . __('Delete this occurrence', 'eventorganiser') . "</a>\n\t\t\t\t\t</span>";
                if ($post->event_schedule != 'once') {
                    $break_url = add_query_arg(array('post_type' => 'event', 'page' => 'calendar', 'series' => $post->ID, 'event' => $post->event_id, 'action' => 'break_series'), $admin_url);
                    $break_url = wp_nonce_url($break_url, 'eventorganiser_break_series_' . $post->event_id);
                    $summary .= "<span class='break'>\n\t\t\t\t\t\t<a class='submitbreak' style='color:red;float:right;padding-right: 2em;' title='" . __('Break this series', 'eventorganiser') . "' href='" . $break_url . "'> " . __('Break this series', 'eventorganiser') . "</a>\n\t\t\t\t\t\t</span>";
                }
            }
            $terms = get_the_terms($post->ID, 'event-category');
            $event['category'] = array();
            if ($terms) {
                foreach ($terms as $term) {
                    $event['category'][] = $term->slug;
                    if (empty($event['color'])) {
                        $event['color'] = isset($term->color) ? $term->color : '';
                    }
                    $event['className'][] = 'category-' . $term->slug;
                }
            }
            $event['summary'] = $summary;
            //Add event to array
            $eventsarray[] = $event;
        }
    }
    //Echo result and exit
    echo json_encode($eventsarray);
    exit;
}