/** * 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; }
/** * 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); }
/** * 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>