Making WordPress.org


Ignore:
Timestamp:
11/01/2016 08:58:43 PM (7 years ago)
Author:
iandunn
Message:

CampTix Badge Generator: Move attendee data functionality to common.php

This makes it accessible by both the HTML module and the InDesign module.

See #262

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/camptix-badge-generator/includes/html-badges.php

    r4315 r4316  
    1212add_action( 'wp_enqueue_scripts',    __NAMESPACE__ . '\enqueue_previewer_scripts',   999 );  // after remove_all_previewer_styles()
    1313add_filter( 'template_include',      __NAMESPACE__ . '\use_badges_template'              );
    14 add_filter( 'get_post_metadata',     __NAMESPACE__ . '\add_dynamic_post_meta', 10, 3     );
    1514
    1615/**
     
    215214    );
    216215
    217     $attendees = get_posts( array(
    218         'post_type'      => 'tix_attendee',
    219         'posts_per_page' => -1,
    220         'orderby'        => 'title',
    221     ) );
     216    $attendees = Badge_Generator\get_attendees();
    222217
    223218    require( dirname( __DIR__ ) . '/views/html-badges/template-badges.php' );
    224 }
    225 
    226 /**
    227  * Add dynamically-generated "post meta" to `\WP_Post` objects
    228  *
    229  * This makes it possible to access dynamic data related to a post object by simply referencing `$post->foo`.
    230  * That keeps the calling code much cleaner than if it were to have to do something like
    231  * `$foo = some_custom_logic( get_post_meta( $post->ID, 'bar', true ) ); echo esc_html( $foo )`.
    232  *
    233  * @param mixed  $value
    234  * @param int    $post_id
    235  * @param string $meta_key
    236  *
    237  * @return mixed
    238  *      `null` to instruct `get_metadata()` to pull the value from the database
    239  *      Any non-null value will be returned as if it were pulled from the database
    240  */
    241 function add_dynamic_post_meta( $value, $post_id, $meta_key ) {
    242     /** @global \CampTix_Plugin $camptix */
    243     global $camptix;
    244 
    245     $attendee = get_post( $post_id );
    246 
    247     if ( 'tix_attendee' != $attendee->post_type ) {
    248         return $value;
    249     }
    250 
    251     switch ( $meta_key ) {
    252         case 'avatar_url':
    253             $value = get_avatar_url( $attendee->tix_email, array( 'size' => 600 ) );
    254             break;
    255 
    256         case 'css_classes':
    257             $value = get_css_classes( $attendee );
    258             break;
    259 
    260         case 'formatted_name':
    261             $value = $camptix->format_name_string(
    262                 '<span class="first-name">%first%</span>
    263                  <span class="last-name">%last%</span>',
    264                 $attendee->tix_first_name,
    265                 $attendee->tix_last_name
    266             );
    267             break;
    268     }
    269 
    270     return $value;
    271 }
    272 
    273 /**
    274  * Get the CSS classes for an attendee element
    275  *
    276  * @param \WP_Post $attendee
    277  *
    278  * @return string
    279  */
    280 function get_css_classes( $attendee ) {
    281     // Name
    282     $classes = array( 'attendee-' . $attendee->post_name );
    283 
    284     // Ticket
    285     $ticket    = get_post( $attendee->tix_ticket_id );
    286     $classes[] = 'ticket-' . $ticket->post_name;
    287 
    288     // Coupon
    289     if ( $attendee->tix_coupon_id ) {
    290         $coupon    = get_post( $attendee->tix_coupon_id );
    291         $classes[] = 'coupon-' . $coupon->post_name;
    292     }
    293 
    294     return implode( ' ', $classes );
    295219}
    296220
Note: See TracChangeset for help on using the changeset viewer.