Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * The template for displaying member profiles.
- *
- * @package idf
- */
- $templates = array( 'pages/page--profile-public.twig' );
- $context = Timber::get_context(); // get default context
- $context[ 'posts' ] = Timber::get_posts(); // add posts written by user to context['posts']
- $member = get_queried_object();
- $user_id = $member->ID;
- $member_info = get_userdata( $user_id );
- $context[ 'member_id' ] = $user_id;
- $context[ 'title' ] = $member_info->display_name;
- $context[ 'first_name' ] = $member_info->first_name;
- $context[ 'last_name' ] = $member_info->last_name;
- $context[ 'nice_name' ] = $member_info->user_nicename;
- $context[ 'subpage' ] = get_query_var( 'subpage' );
- $context[ 'profile_url' ] = get_author_posts_url( $user_id );
- $context[ 'type' ] = 'profile';
- $context[ 'post_count' ] = count_user_posts( $user_id );
- if ( ! is_paged() ) {
- if ( false == $context[ 'subpage' ] ) {
- $context[ 'profile' ] = true;
- }
- }
- // get user's rankings per season and category
- $context[ 'rankings' ] = get_user_meta( $user_id, 'race_rankings', true );
- // check if user has any event registrations
- $EM_Person = new EM_Person( $user_id );
- $EM_Bookings = $EM_Person->get_bookings();
- if ( $EM_Bookings ) {
- $context[ 'past_events' ] = [];
- $context[ 'coming_events' ] = [];
- $context[ 'user_events' ] = [];
- foreach( $EM_Bookings as $EM_Booking ) {
- // check if there is a confirmed booking
- $booking_status = $EM_Booking->booking_status;
- if ( get_current_user_id() == 27 && ENV != 'LIVE' ) {
- $booking_status = 1;
- }
- if ( $booking_status == 1 ) {
- $past_event = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]{is_past}#_EVENTPOSTID{/is_past}[/event]' );
- $location_id = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]#_LOCATIONPOSTID[/event]' );
- if ( $past_event ) {
- $context[ 'race_attendance' ] = true;
- $context[ 'past_events' ][] = $past_event;
- }
- $coming_event = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]{is_future}#_EVENTPOSTID{/is_future}[/event]' );
- if ( $coming_event ) {
- $context[ 'race_attendance' ] = true;
- $context[ 'coming_events' ][] = $coming_event;
- }
- }
- }
- }
- // check if members was tagged in any posts
- $rows = $wpdb->get_results( $wpdb->prepare( "
- SELECT *
- FROM {$wpdb->prefix}postmeta
- WHERE meta_key LIKE %s
- AND meta_value = %s
- ", 'idf_tagged_riders_%_member', // meta_name: $ParentName_$RowNumber_$ChildName
- $user_id
- ) );
- if ( $rows ) {
- // if there are posts, get all 'found' post_ids
- $post_ids = array();
- foreach ( $rows as $row ) {
- $post_ids[] = intval( $row->post_id );
- }
- $ppp = 14; // posts per page
- $paged = get_query_var( 'paged' ); // check if page is paged
- $pages = ( $paged ) ? $paged : 1;
- $offset = ( $paged ) ? ( ( $paged - 1 ) * $ppp ) : false;
- $mentioned_args = array(
- 'posts_per_page' => $ppp,
- 'post__in' => $post_ids,
- 'orderby' => 'date',
- 'order' => 'DESC',
- );
- $context[ 'mentioned' ] = get_posts( $mentioned_args ); // actual posts in which user got mentioned
- $amount_posts = count( $context[ 'mentioned' ] ); // count mentioned posts
- $amount_pages = intval( round( count( $post_ids ) / $ppp ) ); // calculate how many pages are needed
- if ( $amount_pages > 1 ) {
- $context[ 'mentioned_paging' ] = true;
- $big = 999999999; // need an unlikely integer
- $args = array(
- 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
- 'format' => '/page/%#%',
- 'total' => $amount_pages,
- 'current' => max( 1, get_query_var( 'paged' ) ),
- 'show_all' => false,
- 'end_size' => 3,
- 'mid_size' => 2,
- 'prev_next' => true,
- 'prev_text' => __( '« Previous' ),
- 'next_text' => __( 'Next »' ),
- 'type' => 'list',
- );
- $context[ 'pagination' ] = sprintf( '<div class="paginator">%s</div>', paginate_links( $args ) );
- }
- }
- // user fields
- $context[ 'idf_number' ] = $user_id;
- $context[ 'facebook' ] = get_user_field( 's2_facebook', $user_id );
- $context[ 'twitter' ] = strtolower( get_user_field( 's2_twitter', $user_id ) );
- $context[ 'instagram' ] = strtolower( get_user_field( 's2_instagram', $user_id ) );
- $context[ 'instagram_id' ] = get_user_field( 'instagram_id', $user_id );
- $context[ 'sex' ] = get_user_field( 'sex', $user_id );
- $context[ 'nationality' ] = get_user_field( 'nationality', $user_id );
- $context[ 'sponsors' ] = get_user_field( 'sponsors', $user_id );
- $context[ 'rider_bio' ] = get_user_field( 'rider_bio', $user_id );
- $context[ 'website' ] = get_user_field( 'website', $user_id );
- $context[ 'category' ] = get_user_field( 'category', $user_id );
- $context[ 'member_avatar' ] = get_avatar( $user_id, 150 );
- $context[ 'age' ] = get_member_age( $user_id );
- $context[ 'age_3112' ] = get_member_age_3112( $user_id );
- $s2_access_label = get_user_field( 's2member_access_label', $user_id ); // user s2labels: Paying member, priority members, board, board +
- $s2_access_role = get_user_field( 's2member_access_role', $user_id ); // user roles: names of s2member levels
- $user_role = $member_info->roles[ 0 ];
- if ( in_array( $user_role, array( 'board', 'administrator' ) ) ) {
- $context[ 'member_level' ] = $s2_access_label;
- $context[ 'member_status' ] = false;
- $function = get_user_field( 'board_function', $user_id );
- if ( $function ) {
- $context[ 'member_level' ] = 'IDF ' . $function;
- }
- } elseif ( user_can( $user_id, 'manage_bookings' ) ) {
- $context[ 'member_level' ] = 'Race organiser';
- if ( 'subscriber' != $s2_access_role ) {
- $context[ 'member_status' ] = false;
- } else {
- $context[ 'member_status' ] = 'inactive';
- }
- $user_event_args = array(
- 'post_type' => 'event',
- 'author' => $user_id,
- 'orderby' => 'date',
- 'order' => 'ASC'
- );
- $events = get_posts( $user_event_args );
- if ( $events ) {
- $user_events = [];
- foreach( $events as $event ) {
- $user_events[] = $event->ID;
- }
- $context['user_events'] = $user_events;
- }
- } elseif ( in_array( $user_role, array('s2member_level1','s2member_level2' ) ) ) {
- $context[ 'member_level' ] = $s2_access_label;
- $context[ 'member_status' ] = false;
- } elseif ( 'subscriber' == $user_role ) {
- $context[ 'member_level' ] = false;
- $context[ 'member_status' ] = 'inactive';
- }
- if ( $context[ 'category' ] == 'Luge' ) {
- $context[ 'category' ] = '<a href="' . get_home_url() . '/members/?s2-s=luge">' . $context[ 'category' ] . '</a>';
- }
- // get track records
- $all_fastest = get_field( 'idf_track_record_event', 'option' );
- if ( false != $all_fastest ) {
- $track_records = false;
- $user_results = array();
- foreach ( $all_fastest as $event ) {
- foreach( $event[ 'records' ] as $category ) {
- if ( $user_id == $category[ 'member' ][ 'ID' ] ) {
- $user_results[] = array(
- 'event' => $event[ 'event_selector' ][0],
- 'category' => $category,
- );
- }
- }
- }
- if ( count( $user_results ) > 0 ) {
- $track_records = array();
- foreach( $user_results as $results ) {
- $track_records[] = array(
- 'name' => substr( get_the_title( $results[ 'event' ] ), 0, -5 ),
- 'category' => $results[ 'category' ][ 'category' ],
- 'time' => $results[ 'category' ][ 'time' ],
- 'set_in' => $results[ 'category' ][ 'set_in' ],
- );
- }
- sort($track_records);
- $context[ 'track_records' ] = $track_records;
- }
- }
- // get posts where author id is in idf_race_attendance
- $attended_args = array(
- 'post_type' => 'event',
- 'posts_per_page' => 99,
- 'meta_query' => array(
- array(
- 'key' => 'idf_race_attendance',
- 'compare' => 'EXISTS'
- ),
- 'date_clause' => array(
- 'key' => '_event_start_date',
- 'value' => [ '2013-01-01', '2016-03-01' ],
- 'compare' => 'BETWEEN'
- ),
- ),
- 'orderby' => array( 'date_clause' => 'DESC' ),
- );
- $attended_events = get_posts( $attended_args );
- if ( $attended_events ) {
- $context[ 'race_attendance' ] = true;
- $attended = [];
- foreach( $attended_events as $event ) {
- $riders_list = get_post_meta( $event->ID, 'idf_race_attendance', true );
- if ( in_array( $member->ID, $riders_list ) ) {
- $attended[] = $event->ID;
- }
- }
- }
- Timber::render( $templates, $context );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement