/**
  * Fetches the JSON-LD data for this type of object
  *
  * @param  int|WP_Post|null $post The post/event
  * @param  array  $args
  * @return array
  */
 public function get_data($posts = null, $args = array())
 {
     $posts = $posts instanceof WP_Post ? array($posts) : (array) $posts;
     $return = array();
     foreach ($posts as $i => $post) {
         $data = parent::get_data($post, $args);
         // If we have an Empty data we just skip
         if (empty($data)) {
             continue;
         }
         // Fetch first key
         $post_id = key($data);
         // Fetch first Value
         $data = reset($data);
         $event_tz_string = get_post_meta($post_id, '_EventTimezone', true);
         $tz_mode = tribe_get_option('tribe_events_timezone_mode', 'event');
         $tz_string = $event_tz_string && $tz_mode === 'event' ? $event_tz_string : Tribe__Events__Timezones::wp_timezone_string();
         $data->startDate = Tribe__Events__Timezones::to_utc(tribe_get_start_date($post_id, true, Tribe__Date_Utils::DBDATETIMEFORMAT), $tz_string, 'c');
         $data->endDate = Tribe__Events__Timezones::to_utc(tribe_get_end_date($post_id, true, Tribe__Date_Utils::DBDATETIMEFORMAT), $tz_string, 'c');
         if (tribe_has_venue($post_id)) {
             $venue_id = tribe_get_venue_id($post_id);
             $venue_data = Tribe__Events__JSON_LD__Venue::instance()->get_data($venue_id);
             $data->location = reset($venue_data);
         }
         if (tribe_has_organizer($post_id)) {
             $organizer_id = tribe_get_organizer_id($post_id);
             $organizer_data = Tribe__Events__JSON_LD__Organizer::instance()->get_data($organizer_id);
             $data->organizer = reset($organizer_data);
         }
         $price = tribe_get_cost($post_id);
         $price = $this->normalize_price($price);
         if ('' !== $price) {
             // Manually Include the Price for non Event Tickets
             $data->offers = (object) array('@type' => 'Offer', 'price' => $price, 'url' => $data->url);
         }
         $return[$post_id] = $data;
     }
     return $return;
 }
Exemple #2
0
 /**
  * Organizer website link
  *
  * Returns the event Organizer Name with a link to their supplied website
  *
  * @param $post_id post ID for an event
  * @param $label   text for the link
  *
  * @return string
  **/
 function tribe_get_organizer_website_link($post_id = null, $label = null)
 {
     $post_id = tribe_get_organizer_id($post_id);
     $url = tribe_get_event_meta($post_id, '_OrganizerWebsite', true);
     if (!empty($url)) {
         $label = is_null($label) ? $url : $label;
         if (!empty($url)) {
             $parseUrl = parse_url($url);
             if (empty($parseUrl['scheme'])) {
                 $url = "http://{$url}";
             }
         }
         $html = sprintf('<a href="%s" target="%s">%s</a>', esc_url($url), apply_filters('tribe_get_organizer_website_link_target', '_self'), apply_filters('tribe_get_organizer_website_link_label', $label));
     } else {
         $html = '';
     }
     return apply_filters('tribe_get_organizer_website_link', $html);
 }
Exemple #3
0
 /**
  * Generates the iCal file
  *
  * @static
  *
  * @param int|null $post If you want the ical file for a single event
  */
 public static function generate_ical_feed($post = null)
 {
     $tec = Tribe__Events__Main::instance();
     $events = '';
     $blogHome = get_bloginfo('url');
     $blogName = get_bloginfo('name');
     if ($post) {
         $events_posts = is_array($post) ? $post : array($post);
     } else {
         if (tribe_is_month()) {
             $events_posts = self::get_month_view_events();
         } else {
             global $wp_query;
             $events_posts = $wp_query->posts;
         }
     }
     $event_ids = wp_list_pluck($events_posts, 'ID');
     foreach ($events_posts as $event_post) {
         // add fields to iCal output
         $item = array();
         $full_format = 'Ymd\\THis';
         $time = (object) array('start' => self::wp_strtotime($event_post->EventStartDate), 'end' => self::wp_strtotime($event_post->EventEndDate), 'modified' => self::wp_strtotime($event_post->post_modified), 'created' => self::wp_strtotime($event_post->post_date));
         if ('yes' == get_post_meta($event_post->ID, '_EventAllDay', true)) {
             $type = 'DATE';
             $format = 'Ymd';
         } else {
             $type = 'DATE-TIME';
             $format = $full_format;
         }
         $tzoned = (object) array('start' => date($format, $time->start), 'end' => date($format, $time->end), 'modified' => date($format, $time->modified), 'created' => date($format, $time->created));
         if ('DATE' === $type) {
             $item[] = "DTSTART;VALUE={$type}:" . $tzoned->start;
             $item[] = "DTEND;VALUE={$type}:" . $tzoned->end;
         } else {
             $tz = get_option('timezone_string');
             $item[] = 'DTSTART;TZID="' . $tz . '":' . $tzoned->start;
             $item[] = 'DTEND;TZID="' . $tz . '":' . $tzoned->end;
         }
         $item[] = 'DTSTAMP:' . date($full_format, time());
         $item[] = 'CREATED:' . $tzoned->created;
         $item[] = 'LAST-MODIFIED:' . $tzoned->modified;
         $item[] = 'UID:' . $event_post->ID . '-' . $time->start . '-' . $time->end . '@' . parse_url(home_url('/'), PHP_URL_HOST);
         $item[] = 'SUMMARY:' . str_replace(array(',', "\n", "\r", "\t"), array('\\,', '\\n', '', '\\t'), html_entity_decode(strip_tags($event_post->post_title), ENT_QUOTES));
         $item[] = 'DESCRIPTION:' . str_replace(array(',', "\n", "\r", "\t"), array('\\,', '\\n', '', '\\t'), html_entity_decode(strip_tags($event_post->post_content), ENT_QUOTES));
         $item[] = 'URL:' . get_permalink($event_post->ID);
         // add location if available
         $location = $tec->fullAddressString($event_post->ID);
         if (!empty($location)) {
             $str_location = str_replace(array(',', "\n"), array('\\,', '\\n'), html_entity_decode($location, ENT_QUOTES));
             $item[] = 'LOCATION:' . $str_location;
         }
         // add geo coordinates if available
         if (class_exists('Tribe__Events__Pro__Geo_Loc')) {
             $long = Tribe__Events__Pro__Geo_Loc::instance()->get_lng_for_event($event_post->ID);
             $lat = Tribe__Events__Pro__Geo_Loc::instance()->get_lat_for_event($event_post->ID);
             if (!empty($long) && !empty($lat)) {
                 $item[] = sprintf('GEO:%s;%s', $lat, $long);
                 $str_title = str_replace(array(',', "\n"), array('\\,', '\\n'), html_entity_decode(tribe_get_address($event_post->ID), ENT_QUOTES));
                 if (!empty($str_title) && !empty($str_location)) {
                     $item[] = 'X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS=' . str_replace('\\,', '', trim($str_location)) . ';' . 'X-APPLE-RADIUS=500;' . 'X-TITLE=' . trim($str_title) . ':geo:' . $long . ',' . $lat;
                 }
             }
         }
         // add categories if available
         $event_cats = (array) wp_get_object_terms($event_post->ID, Tribe__Events__Main::TAXONOMY, array('fields' => 'names'));
         if (!empty($event_cats)) {
             $item[] = 'CATEGORIES:' . html_entity_decode(join(',', $event_cats), ENT_QUOTES);
         }
         // add featured image if available
         if (has_post_thumbnail($event_post->ID)) {
             $thumbnail_id = get_post_thumbnail_id($event_post->ID);
             $thumbnail_url = wp_get_attachment_url($thumbnail_id);
             $thumbnail_mime_type = get_post_mime_type($thumbnail_id);
             $item[] = apply_filters('tribe_ical_feed_item_thumbnail', sprintf('ATTACH;FMTTYPE=%s:%s', $thumbnail_mime_type, $thumbnail_url), $event_post->ID);
         }
         // add organizer if available
         $organizer_email = tribe_get_organizer_email($event_post->ID);
         if ($organizer_email) {
             $organizer_id = tribe_get_organizer_id($event_post->ID);
             $organizer = get_post($organizer_id);
             if ($organizer_id) {
                 $item[] = sprintf('ORGANIZER;CN="%s":MAILTO:%s', rawurlencode($organizer->post_title), $organizer_email);
             } else {
                 $item[] = sprintf('ORGANIZER:MAILTO:%s', $organizer_email);
             }
         }
         $item = apply_filters('tribe_ical_feed_item', $item, $event_post);
         $events .= "BEGIN:VEVENT\r\n" . implode("\r\n", $item) . "\r\nEND:VEVENT\r\n";
     }
     header('Content-type: text/calendar; charset=UTF-8');
     header('Content-Disposition: attachment; filename="ical-event-' . implode($event_ids) . '.ics"');
     $content = "BEGIN:VCALENDAR\r\n";
     $content .= "VERSION:2.0\r\n";
     $content .= 'PRODID:-//' . $blogName . ' - ECPv' . Tribe__Events__Main::VERSION . "//NONSGML v1.0//EN\r\n";
     $content .= "CALSCALE:GREGORIAN\r\n";
     $content .= "METHOD:PUBLISH\r\n";
     $content .= 'X-WR-CALNAME:' . apply_filters('tribe_ical_feed_calname', $blogName) . "\r\n";
     $content .= 'X-ORIGINAL-URL:' . $blogHome . "\r\n";
     $content .= 'X-WR-CALDESC:Events for ' . $blogName . "\r\n";
     $content = apply_filters('tribe_ical_properties', $content);
     $content .= $events;
     $content .= 'END:VCALENDAR';
     echo $content;
     exit;
 }
Exemple #4
0
 /**
  * Generates and returns a set of classes for the current day
  *
  * @return string Classes
  **/
 public function event_classes($classes)
 {
     $day = self::get_current_day();
     if (!isset($day['events'])) {
         return $classes;
     }
     $post = $day['events']->post;
     // Get our wrapper classes (for event categories, organizer, venue, and defaults)
     $classes = array('hentry', 'vevent');
     $tribe_cat_slugs = tribe_get_event_cat_slugs($post->ID);
     foreach ($tribe_cat_slugs as $tribe_cat_slug) {
         $classes[] = 'tribe-events-category-' . $tribe_cat_slug;
     }
     $classes = array_merge($classes, get_post_class('', $post->ID));
     if ($venue_id = tribe_get_venue_id($post->ID)) {
         $classes[] = 'tribe-events-venue-' . $venue_id;
     }
     if ($organizer_id = tribe_get_organizer_id($post->ID)) {
         $classes[] = 'tribe-events-organizer-' . $organizer_id;
     }
     if ($day['events']->current_post + 1 == $day['events']->post_count) {
         $classes[] = 'tribe-events-last';
     }
     return $classes;
 }
 /**
  * Add classes to events on this view
  *
  * @return array
  * @author Jessica Yazbek
  * @since 3.0
  **/
 public function event_classes($classes)
 {
     global $post, $wp_query;
     $classes = array_merge($classes, array('hentry', 'vevent', 'type-tribe_events', 'post-' . $post->ID, 'tribe-clearfix'));
     $tribe_cat_slugs = tribe_get_event_cat_slugs($post->ID);
     foreach ($tribe_cat_slugs as $tribe_cat_slug) {
         $classes[] = 'tribe-events-category-' . $tribe_cat_slug;
     }
     if ($venue_id = tribe_get_venue_id($post->ID)) {
         $classes[] = 'tribe-events-venue-' . $venue_id;
     }
     if ($organizer_id = tribe_get_organizer_id($post->ID)) {
         $classes[] = 'tribe-events-organizer-' . $organizer_id;
     }
     // added first class for css
     if ($wp_query->current_post == 0 && !tribe_is_day()) {
         $classes[] = 'tribe-events-first';
     }
     // added last class for css
     if ($wp_query->current_post == $wp_query->post_count - 1) {
         $classes[] = 'tribe-events-last';
     }
     return $classes;
 }
Exemple #6
0
 /**
  * Prints out or returns classes on an event wrapper
  *
  * @category Events
  * @param $event |0 post id or object
  * @param $echo  |true
  *
  * @return void or string
  **/
 function tribe_events_event_classes($event = 0, $echo = true)
 {
     global $post, $wp_query;
     // May be called when the global $post object does not exist - ie during ajax loads of various views
     // ... creating a dummy object allows the method to proceed semi-gracefully (interim measure only)
     //If $post object doesn't exist and an $event_id wasn't specified, then use a dummy object
     if (is_a('WP_Post', $event)) {
         $event_id = $event->ID;
     } elseif ($event !== 0) {
         $event_id = $event;
     } else {
         $event_id = $post->ID;
     }
     if (!$event_id) {
         return '';
     }
     $classes = array('hentry', 'vevent', 'type-tribe_events', 'post-' . $event_id, 'tribe-clearfix');
     $tribe_cat_slugs = tribe_get_event_cat_slugs($event_id);
     foreach ($tribe_cat_slugs as $tribe_cat_slug) {
         if (!empty($tribe_cat_slug)) {
             $classes[] = 'tribe-events-category-' . $tribe_cat_slug;
         }
     }
     if ($venue_id = tribe_get_venue_id($event_id)) {
         $classes[] = 'tribe-events-venue-' . $venue_id;
     }
     if ($organizer_id = tribe_get_organizer_id($event_id)) {
         $classes[] = 'tribe-events-organizer-' . $organizer_id;
     }
     // added first class for css
     if ($wp_query->current_post == 0 && !tribe_is_day()) {
         $classes[] = 'tribe-events-first';
     }
     // added last class for css
     if ($wp_query->current_post == $wp_query->post_count - 1) {
         $classes[] = 'tribe-events-last';
     }
     $classes = apply_filters('tribe_events_event_classes', $classes);
     if ($echo) {
         echo implode(' ', $classes);
     } else {
         return implode(' ', $classes);
     }
 }
Exemple #7
0
 /**
  * css event wrapper classes used during loop
  *
  * @since  3.0
  * @author tim@imaginesimplicty.com
  * @return void
  */
 function event_classes()
 {
     if (self::$loop_type == 'allday') {
         $event = self::get_allday_event();
     } else {
         $event = self::get_hourly_event();
     }
     // Get our wrapper classes (for event categories, organizer, venue, and defaults)
     echo 'hentry vevent type-tribe_events post-' . $event->ID, ' tribe-clearfix ';
     // we need to adjust on behalf of weekly span scripts
     $day_span_length = $event->days_between + 1;
     if ($day_span_length > 0) {
         echo 'tribe-dayspan' . $day_span_length . ' ';
     }
     // if we have a venue add the class
     if ($venue_id = tribe_get_venue_id($event->ID)) {
         'tribe-events-venue-' . $venue_id . ' ';
     }
     // if we have an organizer add the class
     if ($organizer_id = tribe_get_organizer_id($event->ID)) {
         $classes[] = 'tribe-events-organizer-' . $organizer_id . ' ';
     }
     // add classes for all assigned categories
     $tribe_cat_slugs = tribe_get_event_cat_slugs($event->ID);
     foreach ($tribe_cat_slugs as $tribe_cat_slug) {
         echo 'tribe-events-category-' . $tribe_cat_slug . ' ';
     }
     if (self::$loop_type == 'hourly' && strtotime(self::$prior_event_date->EventStartDate) < strtotime($event->EventStartDate)) {
         echo 'tribe-event-overlap ';
     }
     self::$prior_event_date->EventStartDate = $event->EventStartDate;
 }
							</span>
							<?php 
        if ($canEdit) {
            echo TribeCommunityEvents::instance()->getEditButton($post, 'Edit', '<span class="edit wp-admin events-cal"> |', '</span> ');
        }
        if ($canDelete) {
            echo TribeCommunityEvents::instance()->getDeleteButton($post);
        }
        ?>
						</div><!-- .row-actions -->
						</td>

						<td>
						<?php 
        if (tribe_has_organizer($post->ID)) {
            $organizer_id = tribe_get_organizer_id($post->ID);
            if (current_user_can('edit_post', $organizer_id)) {
                echo '<a href="' . TribeCommunityEvents::instance()->getUrl('edit', $organizer_id, null, TribeEvents::ORGANIZER_POST_TYPE) . '">' . tribe_get_organizer($post->ID) . '</a>';
            } else {
                echo tribe_get_organizer($post->ID);
            }
        }
        ?>
						</td>

						<td>
						<?php 
        if (tribe_has_venue($post->ID)) {
            $venue_id = tribe_get_venue_id($post->ID);
            if (current_user_can('edit_post', $venue_id)) {
                echo '<a href="' . TribeCommunityEvents::instance()->getUrl('edit', $venue_id, null, TribeEvents::VENUE_POST_TYPE) . '">' . tribe_get_venue($post->ID) . '</a>';
    setup_postdata($post);
    ?>

	<p><?php 
    the_title();
    ?>
:  <?php 
    echo tribe_get_venue_id();
    ?>
</p>

	<?php 
}
$organizers = tribe_get_organizers();
?>
<h2>Organizers</h2>
<?php 
foreach ($organizers as $post) {
    setup_postdata($post);
    ?>

	<p><?php 
    the_title();
    ?>
:  <?php 
    echo tribe_get_organizer_id();
    ?>
</p>

	<?php 
}
/**
 * Return Organizer Description
 *
 * @param int|null $organizer_id (optional)
 * @return string
 * @author Peter Chester
 * @since 3.1
 */
function tribe_community_events_get_organizer_description($organizer_id = null)
{
    $organizer_id = tribe_get_organizer_id($organizer_id);
    $description = $organizer_id > 0 ? get_post($organizer_id)->post_content : null;
    return apply_filters('tribe_get_organizer_description', $description);
}
Exemple #11
0
 /**
  * Organizer Phone
  *
  * Returns the event Organizer's phone number
  *
  * @param int $postId Can supply either event id or organizer id, if none specified, current post is used
  * @return string Organizer's Phone Number
  * @since 2.0
  */
 function tribe_get_organizer_phone($postId = null)
 {
     $postId = TribeEvents::postIdHelper($postId);
     $output = esc_html(tribe_get_event_meta(tribe_get_organizer_id($postId), '_OrganizerPhone', true));
     return apply_filters('tribe_get_organizer_phone', $output);
 }
Exemple #12
0
			

							<?php 
if (get_field('class_dishes')) {
    echo '<div class="class-dishes vertically-ruled"><h4>Dishes We\'ll Cover</h4>' . get_field('class_dishes') . '</div>';
}
?>
			

							<?php 
if (have_posts()) {
    ?>
							

							<?php 
    $post_id = tribe_get_organizer_id();
    $queried_post = get_post($post_id);
    ?>
			      		
			      				<div class="vertically-ruled" itemprop="performer" itemscope itemtype="http://schema.org/Person">
									<h4>About the Instructor</h4>
											<p itemprop="description"><?php 
    echo $queried_post->post_content;
    wp_reset_query();
    ?>
</p>
								</div> <!-- /.sub-pod-mini -->
					
							<?php 
}
?>