/**
  * Returns a singleton of this class
  *
  * @return Tribe__Events__Linked_Posts
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Beispiel #2
0
 /**
  * Used by createEvent and updateEvent - saves all the various event meta
  *
  * @param int   $event_id The event ID we are modifying meta for.
  * @param array $data     The meta fields we want saved.
  * @param       WP_Post   The event itself.
  *
  */
 public static function saveEventMeta($event_id, $data, $event = null)
 {
     $tec = Tribe__Events__Main::instance();
     $data = self::prepare_event_date_meta($event_id, $data);
     if (empty($data['EventHideFromUpcoming'])) {
         delete_metadata('post', $event_id, '_EventHideFromUpcoming');
     }
     update_metadata('post', $event_id, '_EventShowMapLink', isset($data['venue']['EventShowMapLink']));
     update_metadata('post', $event_id, '_EventShowMap', isset($data['venue']['EventShowMap']));
     if (isset($data['post_status'])) {
         $post_status = $data['post_status'];
     } else {
         $post_status = get_post_status($event_id);
     }
     // Handle the submission of linked post type posts (like venue and organizer)
     Tribe__Events__Linked_Posts::instance()->handle_submission($event_id, $data);
     // Ordinarily there is a single cost value for each event, but addons (ie, ticketing plugins) may need
     // to record a number of different pricepoints for the same event
     $event_cost = isset($data['EventCost']) ? (array) $data['EventCost'] : array();
     $data['EventCost'] = (array) apply_filters('tribe_events_event_costs', $event_cost, $event_id);
     if (isset($data['FeaturedImage']) && !empty($data['FeaturedImage'])) {
         update_metadata('post', $event_id, '_thumbnail_id', $data['FeaturedImage']);
         unset($data['FeaturedImage']);
     }
     do_action('tribe_events_event_save', $event_id);
     //update meta fields
     foreach ($tec->metaTags as $tag) {
         $htmlElement = ltrim($tag, '_');
         if (isset($data[$htmlElement]) && $tag != Tribe__Events__Main::EVENTSERROROPT) {
             if (is_string($data[$htmlElement])) {
                 $data[$htmlElement] = filter_var($data[$htmlElement], FILTER_SANITIZE_STRING);
             }
             // Fields with multiple values per key
             if (is_array($data[$htmlElement])) {
                 delete_metadata('post', $event_id, $tag);
                 foreach ($data[$htmlElement] as $value) {
                     add_metadata('post', $event_id, $tag, $value);
                 }
             } else {
                 update_metadata('post', $event_id, $tag, $data[$htmlElement]);
             }
         }
     }
     // Set sticky state for calendar view.
     if ($event instanceof WP_Post) {
         if (isset($data['EventShowInCalendar']) && $data['EventShowInCalendar'] == 'yes' && $event->menu_order != '-1') {
             $update_event = array('ID' => $event_id, 'menu_order' => '-1');
             wp_update_post($update_event);
         } elseif ((!isset($data['EventShowInCalendar']) || $data['EventShowInCalendar'] != 'yes') && $event->menu_order == '-1') {
             $update_event = array('ID' => $event_id, 'menu_order' => '0');
             wp_update_post($update_event);
         }
     }
     do_action('tribe_events_update_meta', $event_id, $data);
 }
 /**
  * @param $current_linked_posts
  *
  * @return mixed
  */
 private function maybe_parse_candidate_linked_posts(array $current_linked_posts = array())
 {
     $linked_post_type_container = $this->linked_posts->get_post_type_container($this->post_type);
     // filter out any non-truthy values
     $current_linked_posts = array_filter($current_linked_posts);
     $has_no_current_linked_posts = empty($current_linked_posts);
     $submitted_data_contains_candidate_linked_posts = !empty($_POST[$linked_post_type_container]);
     if ($has_no_current_linked_posts && $submitted_data_contains_candidate_linked_posts) {
         $candidate_linked_posts = $_POST[$linked_post_type_container];
         $linked_post_type_id_field = $this->linked_posts->get_post_type_id_field_index($this->post_type);
         if (!empty($candidate_linked_posts[$linked_post_type_id_field])) {
             $candidate_linked_posts = $candidate_linked_posts[$linked_post_type_id_field];
             return $candidate_linked_posts;
         }
         return $current_linked_posts;
     }
     return $current_linked_posts;
 }
 /**
  * Returns the post type's name field
  *
  * @since 4.2
  *
  * @param string $linked_post_type Linked post type
  *
  * @return string
  */
 function tribe_get_linked_post_name_field_index($post_type)
 {
     return Tribe__Events__Linked_Posts::instance()->get_post_type_name_field_index($post_type);
 }
Beispiel #5
0
 /**
  * helper function for displaying the saved organizer dropdown
  * Used to be a PRO only feature, but as of 3.0, it is part of Core.
  *
  * @deprecated 4.2
  *
  * @param mixed  $current the current saved venue
  * @param string $name    the name value for the field
  */
 public function saved_organizers_dropdown($current = null, $name = 'organizer[OrganizerID]')
 {
     _deprecated_function(__METHOD__, '4.2', 'Tribe__Events__Linked_Posts::saved_linked_post_dropdown');
     Tribe__Events__Linked_Posts::instance()->saved_linked_post_dropdown(Tribe__Events__Organizer::POSTTYPE, $current);
 }
/**
 * Fires after the event end date field in The Events Calendar meta box
 * HTML outputted here should be wrapped in a table row (<tr>) that contains 2 cells (<td>s)
 *
 * @param int $event->ID the event currently being edited, will be 0 if creating a new event
 * @param boolean
 */
do_action('tribe_events_date_display', $event->ID, true);
?>
				</table>
			</td>
		</tr>
	</table>

	<?php 
Tribe__Events__Linked_Posts::instance()->render_meta_box_sections($event);
?>

	<table id="event_url" class="eventtable">
		<tr>
			<td colspan="2" class="tribe_sectionheader">
				<h4><?php 
printf(esc_html__('%s Website', 'the-events-calendar'), $events_label_singular);
?>
</h4></td>
		</tr>
		<tr>
			<td style="width:172px;"><?php 
esc_html_e('URL:', 'the-events-calendar');
?>
</td>