/** * Handles import data before queuing * * Ensures the import record source name is accurate, checks for errors, and limits import items * based on selection * * @param array $data Import data * * @return array|WP_Error */ public function prep_import_data($data = array()) { if (empty($this->meta['finalized'])) { return tribe_error('core:aggregator:record-not-finalized'); } // if $data is an object already, don't attempt to manipulate it into an importer object if (is_object($data)) { return $data; } // if $data is empty, grab the data from meta if (empty($data)) { $data = $this->meta; } $record = Tribe__Events__Aggregator__Records::instance()->get_by_import_id($data['import_id']); if (empty($data['column_map'])) { return tribe_error('core:aggregator:missing-csv-column-map'); } $content_type = $this->get_csv_content_type(); update_option('tribe_events_import_column_mapping_' . $content_type, $data['column_map']); try { $importer = $this->get_importer(); } catch (RuntimeException $e) { return tribe_error('core:aggregator:missing-csv-file'); } if (!empty($data['category'])) { $importer = $this->maybe_set_default_category($importer); } if (!empty($data['post_status'])) { $importer = $this->maybe_set_default_post_status($importer); } $required_fields = $importer->get_required_fields(); $missing = array_diff($required_fields, $data['column_map']); if (!empty($missing)) { $mapper = new Tribe__Events__Importer__Column_Mapper($content_type); /** * @todo allow to overwrite the default message */ $message = '<p>' . esc_html__('The following fields are required for a successful import:', 'the-events-calendar') . '</p>'; $message .= '<ul style="list-style-type: disc; margin-left: 1.5em;">'; foreach ($missing as $key) { $message .= '<li>' . $mapper->get_column_label($key) . '</li>'; } $message .= '</ul>'; return new WP_Error('csv-invalid-column-mapping', $message); } update_option('tribe_events_import_column_mapping_' . $content_type, $data['column_map']); return $importer; }
?> " data-depends="#tribe-ea-field-facebook_import_type" data-condition="schedule" data-width-rule="all-triggers" ></span> <p class="tribe-timezone-message"> <?php echo sprintf(esc_html__('Events will be imported with the timezone defined by the source. If no time zone is specified, events will be assigned your site\'s default timezone (see %1$sSettings > General%2$s).', 'the-events-calendar'), '<a href="' . esc_url(Tribe__Settings::instance()->get_url()) . '#tribe-field-tribe_events_timezone_mode">', '</a>'); ?> </p> </div> <?php echo Tribe__Events__Aggregator__Tabs__New::instance()->maybe_display_aggregator_upsell(); $csv_record = Tribe__Events__Aggregator__Records::instance()->get_by_origin('csv'); $post_types = $csv_record->get_import_post_types(); foreach ($post_types as $post_type) { $type = str_replace('tribe_', '', $post_type->name); ?> <script id="tribe-csv-column-map-<?php echo esc_attr($type); ?> " type="text/html"> <?php $mapper = new Tribe__Events__Importer__Column_Mapper($type); echo $mapper->make_select_box(''); ?> </script> <?php }
private function handle_column_mapping() { // Deconstruct mapping. if (empty($_POST['column_map'])) { return false; } $column_mapping = $_POST['column_map']; try { $importer = $this->get_importer(); } catch (RuntimeException $e) { $this->errors[] = esc_html__('The file went away. Please try again.', 'the-events-calendar'); return false; } $required_fields = $importer->get_required_fields(); $missing = array_diff($required_fields, $column_mapping); if (!empty($missing)) { $mapper = new Tribe__Events__Importer__Column_Mapper(get_option('tribe_events_import_type')); $message = '<p>' . esc_html__('The following fields are required for a successful import:', 'the-events-calendar') . '</p>'; $message .= '<ul style="list-style-type: disc; margin-left: 1.5em;">'; foreach ($missing as $key) { $message .= '<li>' . $mapper->get_column_label($key) . '</li>'; } $message .= '</ul>'; $this->errors[] = $message; return false; } update_option('tribe_events_import_column_mapping', $column_mapping); return true; }
<?php /** * @var string[] $messages * @var string $import_type * @var string[] $header */ // Don't load directly if (!defined('ABSPATH')) { die('-1'); } $mapper = new Tribe__Events__Importer__Column_Mapper($import_type); if (isset($_POST['column_map'])) { $mapper->set_defaults($_POST['column_map']); } else { $mapper->set_defaults(get_option('tribe_events_import_column_mapping_' . $import_type, array())); } require_once 'header.php'; ?> <h2><?php printf(esc_html__('Column Mapping: %s', 'the-events-calendar'), $import_type_title); ?> </h2> <?php if (!empty($messages)) { ?> <div class="error"><?php echo implode('', $messages); ?> </div>