Making WordPress.org


Ignore:
Timestamp:
11/01/2016 08:58:43 PM (8 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/common.php

    r3015 r4316  
    66defined( 'WPINC' ) or die();
    77
    8 add_filter( 'camptix_menu_tools_tabs',   __NAMESPACE__ . '\add_badges_tab'     );
    9 add_action( 'camptix_menu_tools_badges', __NAMESPACE__ . '\render_badges_page' );
    10 add_action( 'admin_print_styles',        __NAMESPACE__ . '\print_admin_styles' );
     8if ( is_admin() ) {
     9    add_filter( 'camptix_menu_tools_tabs',   __NAMESPACE__ . '\add_badges_tab'     );
     10    add_action( 'camptix_menu_tools_badges', __NAMESPACE__ . '\render_badges_page' );
     11    add_action( 'admin_print_styles',        __NAMESPACE__ . '\print_admin_styles' );
     12}
     13
     14add_filter( 'get_post_metadata', __NAMESPACE__ . '\add_dynamic_post_meta', 10, 3 );
    1115
    1216/**
     
    5862    <?php
    5963}
     64
     65/**
     66 * Get the attendees
     67 *
     68 * @return array
     69 */
     70function get_attendees() {
     71    $attendees = get_posts( array(
     72        'post_type'      => 'tix_attendee',
     73        'posts_per_page' => 12000,
     74        'orderby'        => 'title',
     75    ) );
     76
     77    return $attendees;
     78}
     79
     80/**
     81 * Add dynamically-generated "post meta" to `\WP_Post` objects
     82 *
     83 * This makes it possible to access dynamic data related to a post object by simply referencing `$post->foo`.
     84 * That keeps the calling code much cleaner than if it were to have to do something like
     85 * `$foo = some_custom_logic( get_post_meta( $post->ID, 'bar', true ) ); echo esc_html( $foo )`.
     86 *
     87 * @param mixed  $value
     88 * @param int    $post_id
     89 * @param string $meta_key
     90 *
     91 * @return mixed
     92 *      `null` to instruct `get_metadata()` to pull the value from the database
     93 *      Any non-null value will be returned as if it were pulled from the database
     94 */
     95function add_dynamic_post_meta( $value, $post_id, $meta_key ) {
     96    /** @global \CampTix_Plugin $camptix */
     97    global $camptix;
     98
     99    $attendee = get_post( $post_id );
     100
     101    if ( 'tix_attendee' != $attendee->post_type ) {
     102        return $value;
     103    }
     104
     105    switch ( $meta_key ) {
     106        case 'avatar_url':
     107            $value = get_avatar_url( $attendee->tix_email, array( 'size' => 600 ) );
     108            break;
     109
     110        case 'coupon':
     111            if ( $attendee->tix_coupon_id ) {
     112                $coupon = get_post( $attendee->tix_coupon_id );
     113                $value  = $coupon->post_name;
     114            }
     115            break;
     116
     117        case 'css_classes':
     118            $value = get_css_classes( $attendee );
     119            break;
     120
     121        case 'formatted_name':
     122            $value = $camptix->format_name_string(
     123                '<span class="first-name">%first%</span>
     124                 <span class="last-name">%last%</span>',
     125                $attendee->tix_first_name,
     126                $attendee->tix_last_name
     127            );
     128            break;
     129
     130        case 'ticket':
     131            $ticket = get_post( $attendee->tix_ticket_id );
     132            $value  = $ticket->post_name;
     133            break;
     134    }
     135
     136    return $value;
     137}
     138
     139/**
     140 * Get the CSS classes for an attendee element
     141 *
     142 * @param \WP_Post $attendee
     143 *
     144 * @return string
     145 */
     146function get_css_classes( $attendee ) {
     147    $classes = array(
     148        'attendee-' . $attendee->post_name,
     149        'ticket-'   . $attendee->ticket
     150    );
     151
     152    if ( $attendee->coupon ) {
     153        $classes[] = 'coupon-' . $attendee->coupon;
     154    }
     155
     156    return implode( ' ', $classes );
     157}
Note: See TracChangeset for help on using the changeset viewer.