/** * 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); }
/** * 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); }
/** * Supply previously submitted organizer field values to the events-admin.js * script in order to provide them with sticky qualities. * * This *must* run later than the action:priority used to enqueue * events-admin.js. */ public function sticky_form_data() { $submitted_data = array(); $linked_posts = Tribe__Events__Linked_Posts::instance(); $container = $linked_posts->get_post_type_container($this->post_type); if (empty($_POST[$container]) || !is_array($_POST[$container])) { return; } foreach ($_POST[$container] as $field => $set_of_values) { if (!is_array($set_of_values)) { continue; } foreach ($set_of_values as $index => $value) { if (!isset($submitted_data[$index])) { $submitted_data[$index] = array(); } $submitted_data[$index][$field] = esc_attr($value); } } wp_localize_script('tribe-events-admin', 'tribe_sticky_' . $this->post_type . '_fields', $submitted_data); }
/** * 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>