function ikit_event_external_add_meta_box_integration($post) { $external_source_display_name = get_post_meta($post->ID, IKIT_CUSTOM_FIELD_GENERIC_EXTERNAL_SOURCE_DISPLAY_NAME, true); $event_meta = ikit_event_external_get_meta($post->ID); ?> <div class="wp-box"> <div class="inner"> <table class="widefat"> <tr> <td> External Source </td> <td> <?php echo $external_source_display_name; ?> </td> </tr> <tr> <td> Start Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->start_date) . ' ' . $event_meta->start_time; ?> </td> </tr> <tr> <td> End Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->end_date) . ' ' . $event_meta->end_time; ?> </td> </tr> </table> <?php }
function ikit_event_add_meta_box_integration($post) { $event_service = get_post_meta($post->ID, IKIT_CUSTOM_FIELD_IKIT_EVENT_SERVICE, true); if ($event_service == IKIT_EVENT_SERVICE_EVENTBRITE) { $event_meta = ikit_event_eventbrite_get_meta($post->ID); $eventbrite_id = get_post_meta($post->ID, IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_ID, true); $eventbrite_sync_data = unserialize(get_post_meta($post->ID, IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_SYNC_DATA, true)); $eventbrite_sync_enabled = get_post_meta($post->ID, IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_SYNC_ENABLED, true); // Sync validation if ($eventbrite_sync_enabled) { if ($eventbrite_sync_data) { // Do nothing, correctly synced } else { ?> <div class="error"><p><strong>Automated member tickets are incorrectly configured with Eventbrite, if you would still like to automate tickets, please verify the following before saving:</strong><ul><li>- The event start date is not in the past</li><li>- There are no tickets currently existing on the event</li></ul></p></div> <?php } } ?> <div class="wp-box"> <div class="inner"> <table class="widefat"> <tr> <td> Service </td> <td> Eventbrite </td> </tr> <tr> <td> Automate member tickets <div class="note">Automatically creates tickets for each member type on Eventbrite. Login will be required for all member type tickets. If you would like to manually create your tickets do not check this box.</div> </td> <td> <input type="checkbox" name="<?php echo IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_SYNC_ENABLED; ?> " <?php if ($eventbrite_sync_enabled) { echo 'checked'; } ?> /> </td> </tr> <tr> <td> Status </td> <td> <?php echo $event_meta->status; ?> </td> </tr> <tr> <td> Start Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->start_date) . ' ' . $event_meta->start_time; ?> </td> </tr> <tr> <td> End Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->end_date) . ' ' . $event_meta->end_time; ?> </td> </tr> </table> </div> </div> <?php } else { if ($event_service == IKIT_EVENT_SERVICE_ETOUCHES) { $event_meta = ikit_event_get_meta($post->ID); ?> <div class="wp-box"> <div class="inner"> <table class="widefat"> <tr> <td> Service </td> <td> etouches </td> </tr> <tr> <td> Status </td> <td> <?php echo $event_meta->status; ?> </td> </tr> <tr> <td> Start Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->start_date) . ' ' . $event_meta->start_time; ?> </td> </tr> <tr> <td> End Datetime </td> <td> <?php echo ikit_date_without_time($event_meta->end_date) . ' ' . $event_meta->end_time; ?> </td> </tr> </table> </div> </div> <?php } } }
function ikit_event_eventbrite_remote_fetch_save($events) { global $wpdb; $event_eventbrite_table_name = $wpdb->prefix . IKIT_EVENT_EVENTBRITE_TABLE_NAME; foreach ($events as $event) { $event = $event->event; $event_id = (string) $event->id; $event_start_date = ikit_date_without_time($event->start_date); $event_end_date = ikit_date_without_time($event->end_date); $event_start_time = ikit_time_without_date($event->start_date); $event_end_time = ikit_time_without_date($event->end_date); $event_data = array('id' => $event_id, 'url' => $event->url, 'start_date' => $event_start_date, 'end_date' => $event_end_date, 'description' => $event->description, 'status' => $event->status, 'title' => $event->title, 'venue_name' => $event->venue->name, 'venue_address' => $event->venue->address, 'venue_address2' => $event->venue->address2, 'venue_city' => $event->venue->city, 'venue_region' => $event->venue->region, 'venue_postal_code' => $event->venue->postal_code, 'venue_country' => $event->venue->country, 'venue_country_code' => $event->venue->country_code, 'venue_longitude' => $event->venue->longitude, 'venue_latitude' => $event->venue->latitude, 'logo' => $event->logo, 'service' => IKIT_EVENT_SERVICE_EVENTBRITE, 'start_time' => $event_start_time, 'end_time' => $event_end_time); $rows_affected = $wpdb->query("select id from {$event_eventbrite_table_name} where id = {$event_id}"); if ($rows_affected == 0) { $rows_affected = $wpdb->insert($event_eventbrite_table_name, $event_data); } else { $rows_affected = $wpdb->update($event_eventbrite_table_name, $event_data, array('id' => $event_id)); } $post_status = 'publish'; if ($event->status != 'Live' && $event->status != 'Completed' && $event->status != 'Started') { $post_status = 'draft'; } // Each event has an associated WordPress post to aid with custom fields // searching and an auto-generated admin interface for the event $yesterday_gmt = date("Y-m-d H:i:s", time() - 60 * 60 * 24); $yesterday_local = date("Y-m-d H:i:s", time() - 60 * 60 * 24 + get_option('gmt_offset') * 3600); $associated_post = array('post_title' => (string) $event->title, 'post_type' => IKIT_POST_TYPE_IKIT_EVENT, 'post_status' => $post_status, 'post_content' => (string) $event->description, 'post_date_gmt' => $yesterday_gmt, 'post_date' => $yesterday_local, 'edit_date' => true); $event_end_date = ikit_date_without_time($event->end_date); $event_start_date = ikit_date_without_time($event->start_date); $existing_associated_post = ikit_get_post_by_meta(IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_ID, $event_id, IKIT_POST_TYPE_IKIT_EVENT); if ($existing_associated_post == null) { $new_associated_post_id = wp_insert_post($associated_post); if ($new_associated_post_id > 0) { // Add the event id to link this post with the event add_post_meta($new_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_EVENTBRITE_ID, $event_id, true); add_post_meta($new_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_SERVICE, IKIT_EVENT_SERVICE_EVENTBRITE, true); add_post_meta($new_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_STATUS, (string) $event->status, true); add_post_meta($new_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_END_DATE, $event_end_date, true); add_post_meta($new_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_START_DATE, $event_start_date, true); } } else { $associated_post['ID'] = $existing_associated_post->ID; $updated_associated_post_id = wp_update_post($associated_post); if ($updated_associated_post_id > 0) { ikit_add_or_update_post_meta($updated_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_SERVICE, IKIT_EVENT_SERVICE_EVENTBRITE, true); ikit_add_or_update_post_meta($updated_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_STATUS, (string) $event->status, true); ikit_add_or_update_post_meta($updated_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_END_DATE, $event_end_date, true); ikit_add_or_update_post_meta($updated_associated_post_id, IKIT_CUSTOM_FIELD_IKIT_EVENT_START_DATE, $event_start_date, true); } } } }
/** * Currently takes no parameters, just returns list of upcoming events */ function ikit_api_v1_ikit_event_search() { global $g_options; $imus_chapter = $g_options[IKIT_PLUGIN_OPTION_FILTER_IKIT_IMUS_CHAPTER]; $results = array(); $args = array(); $args['posts_per_page'] = 20; $args['post_type'] = IKIT_POST_TYPE_IKIT_EVENT; $args['order'] = 'ASC'; $args['orderby'] = 'meta_value_num'; $args['meta_key'] = IKIT_CUSTOM_FIELD_GENERIC_ORDERING_DISPLAY_PRIORITY; $args['meta_query'] = array(array('key' => IKIT_CUSTOM_FIELD_IKIT_EVENT_END_DATE, 'value' => date_i18n("Y-m-d"), 'compare' => '>=', 'type' => 'DATE'), array('key' => IKIT_CUSTOM_FIELD_IKIT_EVENT_STATUS, 'value' => 'Closed', 'compare' => '!=', 'type' => 'CHAR')); query_posts($args); ?> <result> <site> <code><?php echo $imus_chapter; ?> </code> <title><![CDATA[<?php echo ikit_get_blog_title(); ?> ]]></title> <linkUrl><![CDATA[<?php echo get_bloginfo('url'); ?> ]]></linkUrl> </site> <events> <?php while (have_posts()) { the_post(); global $id; $ikit_event_meta = ikit_event_get_meta($id); if ($ikit_event_meta->folder_id != IKIT_EVENT_FOLDER_ID_NATIONAL && $ikit_event_meta->folder_id != IKIT_EVENT_FOLDER_ID_NATIONAL_REGISTRATION_TYPE_DISABLED) { // Note may not return the full count, because exludes national events $event_image_url = ikit_event_get_image_url($id, $ikit_event_meta, null); $event_title = null; $event_location = null; if ($ikit_event_meta->service == IKIT_EVENT_SERVICE_EVENTBRITE) { $event_title = $ikit_event_meta->title; $event_location = $ikit_event_meta->venue_city; } else { if ($ikit_event_meta->service == IKIT_EVENT_SERVICE_ETOUCHES) { $event_title = $ikit_event_meta->name; $event_location = $ikit_event_meta->location_city; } } ?> <event> <id><?php echo $id; ?> </id> <title><![CDATA[<?php echo $event_title; ?> ]]></title> <startDate><?php echo ikit_date_without_time($ikit_event_meta->start_date); ?> </startDate> <endDate><?php echo ikit_date_without_time($ikit_event_meta->end_date); ?> </endDate> <startTime><?php echo $ikit_event_meta->start_time; ?> </startTime> <endTime><?php echo $ikit_event_meta->end_time; ?> </endTime> <imageUrl><![CDATA[<?php echo $event_image_url; ?> ]]></imageUrl> <description><![CDATA[<?php echo $ikit_event_meta->description; ?> ]]></description> <linkUrl><![CDATA[<?php the_permalink(); ?> ]]></linkUrl> <location><![CDATA[<?php echo $event_location; ?> ]]></location> </event> <?php } } ?> </events> </result> <?php die; }