Exemplo n.º 1
0
 public function testPartDayForeignWeeklyEvent()
 {
     //A Monday 10pm event in New York would be a Tuesday event in UTC
     //This shouldn't be fixed here - but in eo_insert/update_event
     $ical = new EO_ICAL_Parser();
     $ical->parse(EO_DIR_TESTDATA . '/ical/foreignPartDayWeeklyEvent.ics');
     //Check the number of events have imported correctly
     //$this->assertEquals( array( 'TU' ), $ical->events[0]['schedule_meta'] );
 }
 /**
  * Reads in an ICAL file into an array, then parses the array and inserts events into database
  * @since 1.1.0
  * @param string $cal_file - the file to import
  */
 function import_file($ical_file)
 {
     global $EO_Errors;
     if (!current_user_can('manage_options') || !current_user_can('edit_events')) {
         wp_die(__('You do not have sufficient permissions to import events.', 'eventorganiser'));
     }
     $ical = new EO_ICAL_Parser();
     $ical->parse($ical_file);
     $import_venues = isset($_POST['eo_import_venue']) ? true : false;
     $import_cats = isset($_POST['eo_import_cat']) ? true : false;
     $events_imported = 0;
     $events_updated = 0;
     $venues_imported = 0;
     $categories_imported = 0;
     if ($import_venues && $ical->venues) {
         foreach ($ical->venues as $venue) {
             if (!eo_get_venue_by('name', $venue)) {
                 $args = array();
                 //If lat/lng meta data is set, include that
                 if (isset($ical->venue_meta[$venue]['latitude']) && isset($ical->venue_meta[$venue]['longtitude'])) {
                     $args['latitude'] = $ical->venue_meta[$venue]['latitude'];
                     $args['longtitude'] = $ical->venue_meta[$venue]['longtitude'];
                 }
                 $new_venue = eo_insert_venue($venue, $args);
                 if (!is_wp_error($new_venue) && $new_venue) {
                     $venues_imported++;
                 }
             }
         }
     }
     if ($import_cats && $ical->categories) {
         foreach ($ical->categories as $category) {
             if (!get_term_by('name', $category, 'event-category')) {
                 $new_cat = wp_insert_term($category, 'event-category', array());
                 if (!is_wp_error($new_cat) && $new_cat) {
                     $categories_imported++;
                 }
             }
         }
     }
     foreach ($ical->events as $event) {
         //TODO refactor eo_insert_event & eo_update_event...
         $uid = !empty($event['uid']) ? $event['uid'] : false;
         //TODO Check if event already exists
         //$found_event = eo_get_event_by_uid( $uid );
         //Create event
         if (!empty($event['event-venue'])) {
             $venue = eo_get_venue_by('name', $event['event-venue']);
             if ($venue) {
                 $event['tax_input']['event-venue'][] = intval($venue->term_id);
             }
         }
         if (!empty($event['event-category'])) {
             $event['tax_input']['event-category'] = array();
             foreach ($event['event-category'] as $category) {
                 $cat = get_term_by('name', $category, 'event-category');
                 if ($cat) {
                     $event['tax_input']['event-category'][] = intval($cat->term_id);
                 }
             }
         }
         $event_id = eo_insert_event($event);
         if (is_wp_error($event_id)) {
             $ical->errors[] = $event_id;
         } else {
             $events_updated++;
         }
     }
     if ($events_updated == 0) {
         $EO_Errors->add('eo_error', __("No events were imported.", 'eventorganiser'));
     }
     if (count($ical->errors) > 0) {
         foreach ($ical->errors as $error) {
             $codes = $error->get_error_codes();
             foreach ($codes as $code) {
                 $error_messages = $error->get_error_messages();
                 foreach ($error_messages as $error_message) {
                     $EO_Errors->add('eo_error', '<strong>' . __('Error:', 'eventorganiser') . '</strong> ' . $error_message);
                 }
             }
         }
     }
     $message = array();
     if ($ical->warnings) {
         foreach ($ical->warnings as $warning) {
             $message[] = '<strong>' . __('Warning:', 'eventorganiser') . '</strong> ' . $warning->get_error_message();
         }
     }
     if (count($ical->events) == 1) {
         $message[] = __("1 event was successfully imported", 'eventorganiser');
     } elseif (count($ical->events) > 1) {
         $message[] = sprintf(__("%d events were successfully imported", 'eventorganiser'), count($ical->events)) . ".";
     }
     if ($venues_imported == 1) {
         $message[] = __("1 venue was created", 'eventorganiser');
     } elseif ($venues_imported > 1) {
         $message[] = sprintf(__("%d venues were created", 'eventorganiser'), $venues_imported);
     }
     if ($categories_imported == 1) {
         $message[] = __("1 category was created", 'eventorganiser');
     } elseif ($categories_imported > 1) {
         $message[] = sprintf(__("%d categories were created", 'eventorganiser'), $categories_imported);
     }
     $EO_Errors->add('eo_notice', implode('<br/>', $message));
 }