├── README.md ├── eventbrite-api-overview.png ├── eventbrite-api.php ├── inc ├── class-eventbrite-api.php ├── class-eventbrite-event.php ├── class-eventbrite-manager.php ├── class-eventbrite-query.php ├── class-eventbrite-requirements.php ├── class-eventbrite-templates.php └── functions.php ├── readme.txt ├── tmpl ├── compat │ ├── twentyeleven │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css │ ├── twentyfifteen │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css │ ├── twentyfourteen │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css │ ├── twentyten │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css │ ├── twentythirteen │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css │ └── twentytwelve │ │ ├── eventbrite-index.php │ │ ├── eventbrite-single.php │ │ └── eventbrite-style.css ├── eventbrite-index.php └── eventbrite-single.php └── uninstall.php /README.md: -------------------------------------------------------------------------------- 1 | **Note: This plugin is not maintained, and relies on an Eventbrite endpoint that will cease to operate on February 20, 2020. See [this issue](https://github.com/Automattic/eventbrite-api/issues/83) for details and other options.** 2 | 3 | # Eventbrite API WordPress Plugin 4 | 5 | The Eventbrite API plugin brings the power of Eventbrite to WordPress, for both users and developers. 6 | 7 | ## Overview 8 | 9 | #### Users 10 | 11 | By connecting to your [Eventbrite account](http://eventbrite.com/), events can be displayed directly on your WordPress.org website, complete with event details and ticket information. Events will blend in with the design of any theme, and events can be filtered by organizer or venue, just like post archives. 12 | 13 | #### Developers 14 | 15 | As a developer, you get simple-to-use tools for integrating Eventbrite into your themes or plugins. Use the helper functions to remove the complexity and heavy-lifting of API calls, and take advantage of assorted template tags for displaying various event information. 16 | 17 | ## Requirements 18 | 19 | #### Keyring 20 | 21 | [Keyring](https://wordpress.org/plugins/keyring/) is required for the Eventbrite API plugin to work. Once it's installed with an active connection to Eventbrite, the Eventbrite API plugin will be able to display events. 22 | 23 | If needed, admin notices will give helpful links and prompting to get Keyring and the Eventbrite API plugin up and running. These notices will appear on the Dashboard, PLugins, Tools, and Settings admin pages until issues are resolved. 24 | 25 | ## Classes 26 | 27 | ![Eventbrite API Classes Overview](https://raw.githubusercontent.com/Automattic/eventbrite-api/master/eventbrite-api-overview.png) 28 | 29 | 30 | **`Eventbrite_API`** 31 | 32 | * makes calls to the API 33 | * handles option for the token 34 | * defines supported endpoints 35 | 36 | 37 | **`Eventbrite_Requirements`** 38 | 39 | * ensures Keyring is installed, activated 40 | * ensures an active Eventbrite connection 41 | * provides admin notification prompts 42 | 43 | 44 | **`Eventbrite_Manager`** 45 | 46 | * uses `Eventbrite_API` to make API calls 47 | * validates all query args and values to ensure no wasted API calls 48 | * handles storing and returning transients 49 | * prepares API results into the format needed by `Eventbrite_Event` 50 | 51 | 52 | **`Eventbrite_Query`** 53 | 54 | * like `WP_Query` for Eventbrite events (it extends `WP_Query`) 55 | * creates a secondary loop 56 | * supported arguments, passed as an array 57 | * `display_private`: (*boolean*) Include user events marked as Private. Default is `false`. Note that this changes the endpoint called from `event_search` to `user_owned_events`. See the [Eventbrite API docs](https://www.eventbrite.com/developer/v3/) for details. 58 | * `limit`: (*integer*) Return a maximum number of results. 59 | * `organizer_id`: (*integer*) Return only events for a certain organizer. 60 | * `p`: (*integer*) Get a single event. 61 | * `post__not_in`: (*array*) Remove certain events by ID from the results. 62 | * `venue_id`: (*integer*) Return only events for a certain venue. 63 | * `category_id`: (*integer*) Return only events for a certain category. 64 | * `subcategory_id`: (*integer*) Return only events for a certain subcategory. 65 | * `format_id`: (*integer*) Return only events for a certain format. 66 | 67 | 68 | **`Eventbrite_Event`** 69 | 70 | * like `WP_Post` for Eventbrite events 71 | * does not extend `WP_Post`, as that class is marked `final` 72 | * object properties 73 | * `ID` (*integer*) 74 | * `post_title` (*string*) 75 | * `post_content` (*string*) 76 | * `post_date` (*string*) 77 | * `post_date_gmt` (*string*) 78 | * `url` (*string*) 79 | * `logo_url` (*string*) 80 | * `start` (*object*) 81 | * `end` (*object*) 82 | * `organizer` (*object*) 83 | * `venue` (*object*) 84 | * `public` (*boolean*) 85 | * `tickets` (*object*) 86 | 87 | **`Eventbrite_Templates`** 88 | 89 | * extends the Template Hierarchy for handling Eventbrite templates 90 | * adds rewrite rules for templates 91 | 92 | ## Functions 93 | 94 | #### Helper Functions 95 | 96 | **`eventbrite_get_events( $params, $force )`** 97 | 98 | * Get user-owned events (both public and private are returned by default). 99 | * `$params`: (*array, optional*) [Accepted parameters and values](http://developer.eventbrite.com/docs/user-owned-events/) 100 | * `$force`: (*boolean, optional*) Force a fresh API call, ignoring any available transient. Default is `false`. 101 | 102 | **`eventbrite_get_event( $id, $force )`** 103 | 104 | * Retrieve a single user-owned event. 105 | * `$id`: (*integer, required*) Eventbrite event id 106 | * `$force`: (*boolean, optional*) Force a fresh API call, ignoring any available transient. Default is `false`. 107 | 108 | **`eventbrite_search( $params, $force )`** 109 | 110 | * Search all public Eventbrite events. 111 | * `$params`: (*array, optional*) [Accepted parameters and values](http://developer.eventbrite.com/docs/event-search/). Note that not passing any parameters, while technically valid, will usually result in timeout errors. Limiting the search to user-owned events can be done by passing `user.id => Eventbrite_API::$instance->get_token()->get_meta( 'user_id' )`. 112 | * `$force`: (*boolean, optional*) Force a fresh API call, ignoring any available transient. Default is `false`. 113 | 114 | #### Template Tags 115 | 116 | **`eventbrite_is_single( $query )`** 117 | 118 | * Determine if we on an Eventbrite single view. 119 | * `$query`: (*object, optional*) Accepts an `Eventbrite_Query` object. 120 | * Returns: (*boolean*) `true` if the passed or current query is for an event single view, `false` otherwise. 121 | 122 | **`eventbrite_is_event( $post )`** 123 | 124 | * Check if a given or current post is an Eventbrite event. 125 | * `$post`: (*object or integer, optional*) Accepts a post/event object, or an ID. 126 | * Returns: (*boolean*) `true` if it's an Eventbrite_Event object or the ID of a valid event, `false` otherwise. 127 | 128 | **`eventbrite_paging_nav( $events )`** 129 | 130 | * Output pagination HTML for the index views. 131 | * Based on `wp_paginate_links()`. 132 | * `$events`: (*object, required*) Requires a valid `Eventbrite_Query` object. This avoids having to mess with the `$wp_query` object. 133 | 134 | **`eventbrite_event_meta()`** 135 | 136 | * Outputs meta information for an event: event time, venue, organizer, and a Details link to the event single view. 137 | * On the single view, the Details link goes to the event's page on eventbrite.com. 138 | 139 | **`eventbrite_event_time()`** 140 | 141 | * Output an event's local time, with date, starting, and end time. 142 | * Example: `December 8 2014, 7:00 PM - 10:00 PM` 143 | 144 | **`eventbrite_event_venue()`** 145 | 146 | * Access the current event's venue properties: `address`, `resource_uri`, `id`, `name`, `latitude`, `longitude` 147 | 148 | **`eventbrite_event_organizer()`** 149 | 150 | * Access the current event's organizer properties: `description`, `logo`, `resource_uri`, `id`, `name`, `url`, `num_past_events`, `num_future_events` 151 | 152 | **`eventbrite_event_category()`** 153 | 154 | * Access the current event's category properties: `resource_uri`, `id`, `name`, `name_localized`, `short_name`, `short_name_localized` 155 | 156 | **`eventbrite_event_subcategory()`** 157 | 158 | * Access the current event's subcategory properties: `resource_uri`, `id`, `name`, `name_localized`, `short_name`, `short_name_localized` 159 | 160 | **`eventbrite_event_format()`** 161 | 162 | * Access the current event's format properties: `resource_uri`, `id`, `name`, `name_localized`, `short_name`, `short_name_localized` 163 | 164 | **`eventbrite_event_start()`** 165 | 166 | * Access the current event's start time properties: `timezone`, `local`, `utc` 167 | 168 | **`eventbrite_event_end()`** 169 | 170 | * Access the current event's end time properties: `timezone`, `local`, `utc` 171 | 172 | **`eventbrite_ticket_form_widget()`** 173 | 174 | * Output ticket information by `', 412 | esc_url( $src ), 413 | esc_attr( eventbrite_get_ticket_form_widget_height() ) 414 | ); 415 | 416 | // Output the markup. 417 | echo apply_filters( 'eventbrite_ticket_form_widget', $ticket_html, $src ); 418 | } 419 | endif; 420 | 421 | if ( ! function_exists( 'eventbrite_get_ticket_form_widget_height' ) ) : 422 | /** 423 | * Calculate the height of the ticket form widget iframe. Not perfect, but avoids having to do it with JS. 424 | * 425 | * @return int Height of iframe 426 | */ 427 | function eventbrite_get_ticket_form_widget_height() { 428 | $sales_open = false; 429 | 430 | // Set the starting height: includes the header (50), dates/sales (39+23), and call-to-action (75). 431 | $height = 190; 432 | 433 | // Get tickets for the current event. 434 | $tickets = get_post()->tickets; 435 | 436 | if ( is_array( $tickets ) ) { 437 | $tickets_height = 0; 438 | $sales_end = array(); 439 | 440 | foreach ( $tickets as $ticket ) { 441 | // Add height for each ticket type. 442 | $tickets_height += 85; 443 | // Note if any ticket types are still available. 444 | if ( 'AVAILABLE' === $ticket->on_sale_status ) { 445 | $sales_open = true; 446 | $sales_end[] = $ticket->sales_end; 447 | } 448 | } 449 | 450 | // Adjust for no active ticket sales. 451 | if ( ! $sales_open ) { 452 | // Remove Sales End date. 453 | $height -= 22; 454 | // Add Sales Ended graphic. 455 | $height += 190; 456 | // Remove call-to-action section. 457 | $height -= 75; 458 | } else { 459 | // At least one ticket type is available, so add the ticket heights (accounting for same sales end times or not). 460 | $sales_end = array_unique( $sales_end ); 461 | if ( 2 <= count( $sales_end ) ) { 462 | $tickets_height += count( $tickets ) * 18; 463 | $height -= 23; 464 | } 465 | $height += $tickets_height; 466 | } 467 | } else { 468 | // No ticket info to go by, we'll return a safe assumption of two ticket types with the same sales end time. 469 | $height += ( 2 * 85 ); 470 | } 471 | 472 | return (int) apply_filters( 'eventbrite_ticket_form_widget_height', $height ); 473 | } 474 | endif; 475 | 476 | /** 477 | * Check if everything we need is working: Keyring is installed, activated, and has a valid user connection to Eventbrite. 478 | * 479 | * @return bool True if a valid user token exists, false otherwise. 480 | */ 481 | function eventbrite_has_active_connection() { 482 | return ( Eventbrite_Requirements::has_active_connection() ); 483 | } 484 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Eventbrite API === 2 | Contributors: jkudish, kwight 3 | Tags: eventbrite, events, api, WordPress.com 4 | Requires at least: 4.4 5 | Tested up to: 4.9.5 6 | Stable tag: 1.0.12 7 | License: GPLv2 or later 8 | License URI: http://www.gnu.org/licenses/gpl-2.0.html 9 | 10 | Display Eventbrite events right in your WordPress site. Developers get easy-to-use tools for creating powerful, in-depth Eventbrite integrations. 11 | 12 | == Description == 13 | 14 | The Eventbrite API plugin brings the power of Eventbrite to WordPress, for both users and developers. [Docs available here](http://automattic.github.io/eventbrite-api/). 15 | 16 | By connecting to your [Eventbrite account](http://eventbrite.com/), events can be displayed directly on your WordPress.org website, complete with event details and ticket information. Events will blend in with the design of any theme, and events can be filtered by organizer or venue, just like post archives. 17 | 18 | As a theme or plugin developer, you get simple-to-use tools for making any theme or plugin Eventbrite-compatible. Use the helper functions to remove the complexity and heavy-lifting of API calls, and take advantage of assorted template tags for displaying various event information. 19 | 20 | *Eventbrite logo used by permission. Banner photo by [Daniel Robert Dinu](http://www.concertphotography.ro/), licensed under [CC0](http://creativecommons.org/choose/zero/).* 21 | 22 | == Installation == 23 | 24 | The Eventbrite API plugin also requires the [Keyring plugin](https://wordpress.org/plugins/keyring/), which is used for managing the user's connection to eventbrite.com. Keyring needs to be installed, activated, and using a connection to eventbrite.com for any events to display on the website. 25 | 26 | If the eventbrite API plugin is installed but missing Keyring or an eventbrite.com connection, admin notices will prompt the user with helpful links. 27 | 28 | 1. Upload `eventbrite-api.zip` or search for it from the Plugins > Add New admin page. 29 | 2. Activate the plugin through the Plugins menu. 30 | 3. Repeat these steps for the [Keyring plugin](https://wordpress.org/plugins/keyring/). 31 | 4. Log in to your Eventbrite account, create an app, and authorize Keyring. 32 | 5. [Assign](http://codex.wordpress.org/Page_Templates#Selecting_a_Page_Template) the Eventbrite Events page template to a page. This will be the page that shows your Eventbrite events. 33 | 34 | For more detailed instructions, see the Eventbrite API [user assistance page](http://automattic.github.io/eventbrite-api/users.html). 35 | 36 | == Frequently Asked Questions == 37 | 38 | = Are there more detailed instructions for Keyring and getting connected to Eventbrite? = 39 | 40 | Yes! Check out the [user assistance page](http://automattic.github.io/eventbrite-api/users.html) on the [Eventbrite API website](http://automattic.github.io/eventbrite-api/), and [post to the forums](https://wordpress.org/support/plugin/eventbrite-api/) if you need any further help. 41 | 42 | = Events don't quite look like the rest of the theme – how can I fix it? = 43 | 44 | While a theme doesn't need to know about the plugin to display events, it's always best if the theme developer optimizes their theme for Eventbrite. You can post on the [theme's forum](https://wordpress.org/support/) and send them [this link](https://github.com/Automattic/eventbrite-api). You can also send an email to themes@wordpress.com and we'll see what we can do to help. The following themes have already been optimized: 45 | 46 | * Twenty Fifteen 47 | * Twenty Fourteen 48 | * Twenty Thirteen 49 | * Twenty Twelve 50 | * Twenty Eleven 51 | * Twenty Ten 52 | * [Bosco](https://wordpress.org/themes/bosco/) 53 | * [Chunk](https://wordpress.org/themes/chunk/) 54 | * [Coraline](https://wordpress.org/themes/coraline/) 55 | * [Edin](https://wordpress.org/themes/edin/) 56 | * [Fictive](https://wordpress.org/themes/fictive/) 57 | * [Goran](https://wordpress.org/themes/goran/) 58 | * [Ryu](https://wordpress.org/themes/ryu/) 59 | * [Sketch](https://wordpress.org/themes/sketch/) 60 | * [Sidekick](https://wordpress.org/themes/sidekick/) 61 | * [Singl](https://wordpress.org/themes/singl/) 62 | * [Superhero](https://wordpress.org/themes/superhero/) 63 | * [Sorbet](https://wordpress.org/themes/sorbet/) 64 | * [Tonal](https://wordpress.org/themes/tonal/) 65 | * [Writr](https://wordpress.org/themes/writr/) 66 | 67 | = I'm a theme developer; how can I make my theme Eventbrite-optimized? = 68 | 69 | Assuming your theme is based on [Underscores](http://underscores.me/), most of the work is already done for you. Just load the theme, and compare your markup to that of the plugin's [included templates](https://github.com/Automattic/eventbrite-api/tree/master/tmpl). Make your own copies, adjusting the markup as needed, and then assign your templates in an `add_theme_support` call. Most themes can be done in under ten minutes. More details can be found at the [Eventbrite API GitHub repo](https://github.com/Automattic/eventbrite-api/). 70 | 71 | = What Eventbrite endpoints are supported? = 72 | 73 | The following endpoints are currently supported, with more on the way. Open an issue on GitHub to request support for others. 74 | 75 | * `user_owned_events`: [Eventbrite documentation](http://developer.eventbrite.com/docs/user-owned-events/). 76 | * `event_details`: [Eventbrite documentation](http://developer.eventbrite.com/docs/event-details/). 77 | * `event_search`: [Eventbrite documentation](http://developer.eventbrite.com/docs/event-search/). 78 | 79 | = Where can I get detailed documentation for working with the plugin? = 80 | 81 | All development for Eventbrite API plugin is done through the [GitHub repo](https://github.com/Automattic/eventbrite-api/), and detailed documentation can be found on the repo's [GitHub page](http://automattic.github.io/eventbrite-api/developers.html). 82 | 83 | = Who made this plugin? = 84 | 85 | This plugin was developed by [Automattic](http://automattic.com/), in direct partnership with [Eventbrite](http://eventbrite.com). The Eventbrite name and logo are used by permission. 86 | 87 | = Known issues = 88 | 89 | The Eventbrite page template needs to be a parent page; it will not function properly as a subpage, giving 404 errors. 90 | 91 | Caching for the Eventbrite API and the plugin itself will cause events to take up to ten minutes to show on the Eventbrite page. Disconnecting and reconnecting can force the events to refresh more quickly. For more detailed instructions, see the Eventbrite API [user assistance page](http://automattic.github.io/eventbrite-api/users.html). 92 | 93 | == Changelog == 94 | 95 | = 1.0.12 - December 12, 2016 = 96 | * Fix display of Eventbrite ticket iframes. 97 | * Improve page template handling. 98 | * Make the full uploaded logo available in the event object. 99 | 100 | = 1.0.11 - May 30, 2016 = 101 | * Support the `status` parameter in Eventbrite_Query when displaying private events. 102 | * Have date formats reflect the admin settings. 103 | * Improve the URL format to avoid occasional issues with the Eventbrite API. 104 | 105 | = 1.0.10 - October 7, 2015 = 106 | * Fix bug from when `Eventbrite_Query` args conflict with the loading URL. 107 | * Fix bugs involving organizer events not owned by the user. 108 | * Add filters for transient names and API responses. 109 | * Fix PHP warnings when certain ticket information is not available. 110 | 111 | = 1.0.9 - October 4, 2015 = 112 | * Increase timeout for Eventbrite API calls. 113 | * Add a filter for expansions. 114 | 115 | = 1.0.8 - August 18, 2015 = 116 | * Fix bug where Eventbrite would not load for logged-in users, other than the user that created the Eventbrite connection. 117 | 118 | = 1.0.7 - August 9, 2015 = 119 | * Add support for the `nopaging` query parameter (props @otterly). 120 | * Add support for the `category_id`, `subcategory_id`, and `format_id` query parameters (props @moust). 121 | 122 | = 1.0.6 - August 2, 2015 = 123 | * Avoid caching and filtering on invalid API responses. 124 | * Improve rewrite rules flushing on page saves and template changes. 125 | 126 | = 1.0.5 - April 23, 2015 = 127 | * Add expansions, to handle breaking changes to the API planned for May 13, 2015. 128 | 129 | = 1.0.4 - April 2, 2015 = 130 | * Update to logo handling; Eventbrite announced a sudden breaking change to happen April 7th, 2015. 131 | * Fix bug affecting detection of logos in events. 132 | 133 | = 1.0.3 - January 31, 2015 = 134 | * Display Edit link only if user is logged in with appropriate capabilities. 135 | * Only output event logo markup if one exists. Corrects broken image icon in Firefox. 136 | 137 | = 1.0.2 - January 21, 2015 = 138 | * Add filter for transient expiry. 139 | 140 | = 1.0.1 - December 12, 2014 = 141 | * Add an anonymous referral code to OAuth connections so Eventbrite can gauge adoption on WordPress. 142 | 143 | = 1.0 - December 1, 2014 = 144 | * Initial release. 145 | -------------------------------------------------------------------------------- /tmpl/compat/twentyeleven/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | 15 | 16 | false, // boolean 20 | // 'nopaging' => false, // boolean 21 | // 'limit' => null, // integer 22 | // 'organizer_id' => null, // integer 23 | // 'p' => null, // integer 24 | // 'post__not_in' => null, // array of integers 25 | // 'venue_id' => null, // integer 26 | // 'category_id' => null, // integer 27 | // 'subcategory_id' => null, // integer 28 | // 'format_id' => null, // integer 29 | ) ) ); 30 | 31 | if ( $events->have_posts() ) : 32 | while ( $events->have_posts() ) : $events->the_post(); ?> 33 | 34 | 51 | 52 | 66 | 67 |
68 |
69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /tmpl/compat/twentyeleven/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 |

20 | 21 | 24 |
25 | 26 |
27 | 28 | 29 | 30 |
31 | 32 |
33 | ', '' ); ?> 34 |
35 |
36 | 37 | 48 |
49 |
50 | 51 | 52 | -------------------------------------------------------------------------------- /tmpl/compat/twentyeleven/eventbrite-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eventbrite styles for Twenty Eleven. 3 | * 4 | * @package Eventbrite_API 5 | */ 6 | 7 | .single-event .screen-reader-text, 8 | .archive-eventbrite .screen-reader-text { 9 | clip: rect(1px, 1px, 1px, 1px); 10 | height: 1px; 11 | overflow: hidden; 12 | position: absolute !important; 13 | width: 1px; 14 | } 15 | 16 | .archive-eventbrite .nav-links { 17 | text-align: center; 18 | } 19 | 20 | .archive-eventbrite .nav-links .current { 21 | color: #666; 22 | font-size: 12px; 23 | font-weight: bold; 24 | line-height: 2.2em; 25 | } 26 | 27 | .archive-eventbrite .nav-links .page-numbers { 28 | padding: 0 7px; 29 | } -------------------------------------------------------------------------------- /tmpl/compat/twentyfifteen/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | 15 | 16 | false, // boolean 20 | // 'nopaging' => false, // boolean 21 | // 'limit' => null, // integer 22 | // 'organizer_id' => null, // integer 23 | // 'p' => null, // integer 24 | // 'post__not_in' => null, // array of integers 25 | // 'venue_id' => null, // integer 26 | // 'category_id' => null, // integer 27 | // 'subcategory_id' => null, // integer 28 | // 'format_id' => null, // integer 29 | ) ) ); 30 | 31 | if ( $events->have_posts() ) : 32 | while ( $events->have_posts() ) : $events->the_post(); ?> 33 | 34 | 54 | 55 | 69 | 70 |
71 |
72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /tmpl/compat/twentyfifteen/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 | 20 |
21 | 22 |
23 | 24 |

25 | 26 | 29 |
30 | 31 |
32 | 33 | 34 | 35 |
36 | 37 |
38 | ', '' ); ?> 39 |
40 |
41 | 42 | 53 |
54 |
55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /tmpl/compat/twentyfifteen/eventbrite-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eventbrite styles for Twenty Fifteen. 3 | * 4 | * @package Eventbrite_API 5 | */ 6 | 7 | .eventbrite-event .entry-title { 8 | margin-bottom: 0.25em; 9 | } 10 | 11 | .eventbrite-event .entry-meta, 12 | .eventbrite-event .entry-meta a { 13 | color: #707070; 14 | color: rgba(51, 51, 51, 0.7); 15 | font-family: "Noto Sans", sans-serif; 16 | font-size: 12px; 17 | font-size: 1.2rem; 18 | line-height: 1.5; 19 | margin-bottom: 2em; 20 | } 21 | 22 | .eventbrite-event .entry-meta a:hover, 23 | .eventbrite-event .entry-meta a:focus { 24 | color: #333; 25 | } 26 | 27 | .eventbrite-event .event-time:before, 28 | .eventbrite-event .event-organizer-text:before, 29 | .eventbrite-event .event-venue-text:before, 30 | .eventbrite-event .event-details-text:before { 31 | -moz-osx-font-smoothing: grayscale; 32 | -webkit-font-smoothing: antialiased; 33 | display: inline-block; 34 | font-family: "Genericons"; 35 | font-size: 16px; 36 | font-style: normal; 37 | font-weight: normal; 38 | font-variant: normal; 39 | line-height: 1; 40 | margin-right: 2px; 41 | position: relative; 42 | speak: none; 43 | text-align: center; 44 | text-decoration: inherit; 45 | text-transform: none; 46 | vertical-align: top; 47 | } 48 | 49 | .eventbrite-event .event-time:before { 50 | content: "\f307"; 51 | } 52 | 53 | .eventbrite-event .event-organizer-text:before { 54 | content: "\f304"; 55 | } 56 | 57 | .eventbrite-event .event-venue-text:before { 58 | content: "\f417"; 59 | } 60 | 61 | .eventbrite-event .event-details-text:before { 62 | content: "\f455"; 63 | } 64 | 65 | .eventbrite-event .sep { 66 | display: none; 67 | } 68 | 69 | .eventbrite-event .event-time, 70 | .eventbrite-event .event-organizer, 71 | .eventbrite-event .event-venue, 72 | .eventbrite-event .event-details { 73 | margin-right: 1em; 74 | } 75 | 76 | @media screen and (min-width: 46.25em) { 77 | .eventbrite-event .entry-meta, 78 | .eventbrite-event .entry-meta a { 79 | font-size: 14px; 80 | font-size: 1.4rem; 81 | } 82 | 83 | .eventbrite-event .event-time:before, 84 | .eventbrite-event .event-organizer-text:before, 85 | .eventbrite-event .event-venue-text:before, 86 | .eventbrite-event .event-details-text:before { 87 | top: 3px; 88 | } 89 | } 90 | 91 | @media screen and (min-width: 55em) { 92 | .eventbrite-event .entry-meta, 93 | .eventbrite-event .entry-meta a { 94 | font-size: 16px; 95 | font-size: 1.6rem; 96 | } 97 | 98 | .eventbrite-event .event-time:before, 99 | .eventbrite-event .event-organizer-text:before, 100 | .eventbrite-event .event-venue-text:before, 101 | .eventbrite-event .event-details-text:before { 102 | top: 4px; 103 | } 104 | } 105 | 106 | @media screen and (min-width: 59.6875em) { 107 | .eventbrite-event .entry-meta, 108 | .eventbrite-event .entry-meta a { 109 | font-size: 12px; 110 | font-size: 1.2rem; 111 | } 112 | 113 | .eventbrite-event .event-time:before, 114 | .eventbrite-event .event-organizer-text:before, 115 | .eventbrite-event .event-venue-text:before, 116 | .eventbrite-event .event-details-text:before { 117 | top: 0; 118 | } 119 | } 120 | 121 | @media screen and (min-width: 68.75em) { 122 | .eventbrite-event .entry-meta, 123 | .eventbrite-event .entry-meta a { 124 | font-size: 14px; 125 | font-size: 1.4rem; 126 | } 127 | 128 | .eventbrite-event .event-time:before, 129 | .eventbrite-event .event-organizer-text:before, 130 | .eventbrite-event .event-venue-text:before, 131 | .eventbrite-event .event-details-text:before { 132 | top: 3px; 133 | } 134 | } 135 | 136 | @media screen and (min-width: 77.5em) { 137 | .eventbrite-event .entry-meta, 138 | .eventbrite-event .entry-meta a { 139 | font-size: 16px; 140 | font-size: 1.6rem; 141 | } 142 | 143 | .eventbrite-event .event-time:before, 144 | .eventbrite-event .event-organizer-text:before, 145 | .eventbrite-event .event-venue-text:before, 146 | .eventbrite-event .event-details-text:before { 147 | top: 4px; 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /tmpl/compat/twentyfourteen/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 |
11 | 16 | 17 | false, // boolean 21 | // 'nopaging' => false, // boolean 22 | // 'limit' => null, // integer 23 | // 'organizer_id' => null, // integer 24 | // 'p' => null, // integer 25 | // 'post__not_in' => null, // array of integers 26 | // 'venue_id' => null, // integer 27 | // 'category_id' => null, // integer 28 | // 'subcategory_id' => null, // integer 29 | // 'format_id' => null, // integer 30 | ) ) ); 31 | 32 | if ( $events->have_posts() ) : 33 | while ( $events->have_posts() ) : $events->the_post(); ?> 34 | 35 | 53 | 54 | 68 | 69 |
70 |
71 | 72 |
73 | 74 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 | 20 |
21 | 22 |
23 | 24 |

25 | 26 | 31 |
32 | 33 |
34 | 35 | 36 | 37 |
38 |
39 | 40 | 51 |
52 |
53 | 54 | 7 | 8 |
9 |
10 |

11 | 12 |

13 | 14 | false, // boolean 18 | // 'nopaging' => false, // boolean 19 | // 'limit' => null, // integer 20 | // 'organizer_id' => null, // integer 21 | // 'p' => null, // integer 22 | // 'post__not_in' => null, // array of integers 23 | // 'venue_id' => null, // integer 24 | // 'category_id' => null, // integer 25 | // 'subcategory_id' => null, // integer 26 | // 'format_id' => null, // integer 27 | ) ) ); 28 | 29 | if ( $events->have_posts() ) : 30 | while ( $events->have_posts() ) : $events->the_post(); ?> 31 | 32 |
> 33 | ', esc_url( get_permalink() ) ), '' ); ?> 34 | 35 | 38 | 39 |
40 | 41 |
42 | 43 |
44 | ', '' ); ?> 45 |
46 |
47 | 48 | 62 |
63 |
64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /tmpl/compat/twentyten/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |

19 | 20 | 23 | 24 |
25 | 26 | 27 | 28 |
29 | 30 |
31 | ', '' ); ?> 32 |
33 |
34 | 35 | 46 |
47 |
48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tmpl/compat/twentyten/eventbrite-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eventbrite styles for Twenty Ten. 3 | * 4 | * @package Eventbrite_API 5 | */ 6 | 7 | .eventbrite-event .sep { 8 | display: none; 9 | } 10 | .eventbrite-event .event-venue:before, 11 | .eventbrite-event .event-organizer:before, 12 | .eventbrite-event .event-details:before { 13 | content: ' | '; 14 | } 15 | .archive-eventbrite .nav-links { 16 | text-align: center; 17 | } 18 | .archive-eventbrite .nav-links .page-numbers { 19 | display: inline-block; 20 | padding: 8px 12px; 21 | } 22 | .archive-eventbrite .nav-links a:hover { 23 | background-color: #f1f1f1; 24 | } 25 | .archive-eventbrite .nav-links .page-numbers.current { 26 | background-color: #f1f1f1; 27 | color: #000; 28 | font-weight: bold; 29 | } -------------------------------------------------------------------------------- /tmpl/compat/twentythirteen/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 |
11 |

12 | 13 |

14 |
15 | 16 | false, // boolean 20 | // 'nopaging' => false, // boolean 21 | // 'limit' => null, // integer 22 | // 'organizer_id' => null, // integer 23 | // 'p' => null, // integer 24 | // 'post__not_in' => null, // array of integers 25 | // 'venue_id' => null, // integer 26 | // 'category_id' => null, // integer 27 | // 'subcategory_id' => null, // integer 28 | // 'format_id' => null, // integer 29 | ) ) ); 30 | 31 | if ( $events->have_posts() ) : 32 | while ( $events->have_posts() ) : $events->the_post(); ?> 33 | 34 | 53 | 54 | 68 | 69 |
70 |
71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /tmpl/compat/twentythirteen/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 |
20 | 21 |
22 | 23 |

24 | 25 | 30 |
31 | 32 |
33 | 34 | 35 | 36 |
37 |
38 | 39 | 50 |
51 |
52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tmpl/compat/twentythirteen/eventbrite-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eventbrite styles for Twenty Thirteen. 3 | * 4 | * @package Eventbrite_API 5 | */ 6 | 7 | .eventbrite-event .event-time:before, 8 | .eventbrite-event .event-organizer-text:before, 9 | .eventbrite-event .event-venue-text:before, 10 | .eventbrite-event .event-details-text:before { 11 | -webkit-font-smoothing: antialiased; 12 | display: inline-block; 13 | font: normal 16px/1 Genericons; 14 | text-decoration: inherit; 15 | vertical-align: text-bottom; 16 | } 17 | 18 | .eventbrite-event .event-time:before { 19 | content: "\f303"; 20 | } 21 | 22 | .eventbrite-event .event-organizer-text:before { 23 | content: "\f304"; 24 | } 25 | 26 | .eventbrite-event .event-venue-text:before { 27 | content: "\f417"; 28 | } 29 | 30 | .eventbrite-event .event-details-text:before { 31 | content: "\f455"; 32 | } 33 | 34 | .eventbrite-event .sep { 35 | display: none; 36 | } -------------------------------------------------------------------------------- /tmpl/compat/twentytwelve/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 |
11 |

12 | 13 |

14 |
15 | 16 | false, // boolean 20 | // 'nopaging' => false, // boolean 21 | // 'limit' => null, // integer 22 | // 'organizer_id' => null, // integer 23 | // 'p' => null, // integer 24 | // 'post__not_in' => null, // array of integers 25 | // 'venue_id' => null, // integer 26 | // 'category_id' => null, // integer 27 | // 'subcategory_id' => null, // integer 28 | // 'format_id' => null, // integer 29 | ) ) ); 30 | 31 | if ( $events->have_posts() ) : 32 | while ( $events->have_posts() ) : $events->the_post(); ?> 33 | 34 | 51 | 52 | 66 | 67 |
68 |
69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /tmpl/compat/twentytwelve/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 | 20 | 21 |

22 | 23 | 28 |
29 | 30 |
31 | 32 | 33 | 34 |
35 |
36 | 37 | 48 |
49 |
50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /tmpl/compat/twentytwelve/eventbrite-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eventbrite styles for Twenty Twelve. 3 | * 4 | * @package Eventbrite_API 5 | */ 6 | 7 | .eventbrite-event .entry-meta { 8 | margin-top: 24px; 9 | margin-top: 1.714285714rem; 10 | font-size: 13px; 11 | font-size: 0.928571429rem; 12 | line-height: 1.846153846; 13 | color: #757575; 14 | } 15 | 16 | .eventbrite-event .entry-meta a { 17 | color: #757575; 18 | } 19 | 20 | .eventbrite-event iframe { 21 | margin-bottom: 0; 22 | } -------------------------------------------------------------------------------- /tmpl/eventbrite-index.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | 15 | 16 | false, // boolean 20 | // 'status' => 'live', // string (only available for display_private true) 21 | // 'nopaging' => false, // boolean 22 | // 'limit' => null, // integer 23 | // 'organizer_id' => null, // integer 24 | // 'p' => null, // integer 25 | // 'post__not_in' => null, // array of integers 26 | // 'venue_id' => null, // integer 27 | // 'category_id' => null, // integer 28 | // 'subcategory_id' => null, // integer 29 | // 'format_id' => null, // integer 30 | ) ) ); 31 | 32 | if ( $events->have_posts() ) : 33 | while ( $events->have_posts() ) : $events->the_post(); ?> 34 | 35 | 54 | 55 | 69 | 70 |
71 |
72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /tmpl/eventbrite-single.php: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |
10 | get_query_var( 'eventbrite_id' ) ) ); 13 | 14 | if ( $event->have_posts() ) : 15 | while ( $event->have_posts() ) : $event->the_post(); ?> 16 | 17 |
> 18 |
19 | 20 | 21 |

22 | 23 | 26 |
27 | 28 |
29 | 30 | 31 | 32 |
33 | 34 |
35 | ', '' ); ?> 36 |
37 |
38 | 39 | 50 |
51 |
52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /uninstall.php: -------------------------------------------------------------------------------- 1 |