Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
?>
"
		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 
}
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
<?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>