Advertisement
Beee

IDF author.php

Dec 30th, 2017
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.25 KB | None | 0 0
  1. <?php
  2.     /**
  3.      * The template for displaying member profiles.
  4.      *
  5.      * @package idf
  6.      */
  7.  
  8.     $templates                = array( 'pages/page--profile-public.twig' );
  9.     $context                  = Timber::get_context(); // get default context
  10.     $context[ 'posts' ]       = Timber::get_posts(); // add posts written by user to context['posts']
  11.     $member                   = get_queried_object();
  12.     $user_id                  = $member->ID;
  13.     $member_info              = get_userdata( $user_id );
  14.     $context[ 'member_id' ]   = $user_id;
  15.     $context[ 'title' ]       = $member_info->display_name;
  16.     $context[ 'first_name' ]  = $member_info->first_name;
  17.     $context[ 'last_name' ]   = $member_info->last_name;
  18.     $context[ 'nice_name' ]   = $member_info->user_nicename;
  19.     $context[ 'subpage' ]     = get_query_var( 'subpage' );
  20.     $context[ 'profile_url' ] = get_author_posts_url( $user_id );
  21.     $context[ 'type' ]        = 'profile';
  22.     $context[ 'post_count' ]  = count_user_posts( $user_id );
  23.  
  24.     if ( ! is_paged() ) {
  25.        
  26.         if ( false == $context[ 'subpage' ] ) {
  27.             $context[ 'profile' ] = true;
  28.         }
  29.        
  30.     }
  31.    
  32.     // get user's rankings per season and category
  33.     $context[ 'rankings' ] = get_user_meta( $user_id, 'race_rankings', true );
  34.  
  35.     // check if user has any event registrations
  36.     $EM_Person      = new EM_Person( $user_id );
  37.     $EM_Bookings    = $EM_Person->get_bookings();
  38.  
  39.     if ( $EM_Bookings ) {
  40.         $context[ 'past_events' ]   = [];
  41.         $context[ 'coming_events' ] = [];
  42.         $context[ 'user_events' ]   = [];
  43.         foreach( $EM_Bookings as $EM_Booking ) {
  44.  
  45.             // check if there is a confirmed booking
  46.             $booking_status = $EM_Booking->booking_status;
  47.  
  48.             if ( get_current_user_id() == 27 && ENV != 'LIVE' ) {
  49.                 $booking_status = 1;
  50.             }
  51.             if ( $booking_status == 1 ) {
  52.                 $past_event  = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]{is_past}#_EVENTPOSTID{/is_past}[/event]' );
  53.                 $location_id = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]#_LOCATIONPOSTID[/event]' );
  54.                 if ( $past_event ) {
  55.                     $context[ 'race_attendance' ] = true;
  56.                     $context[ 'past_events' ][] = $past_event;
  57.  
  58.                 }
  59.                 $coming_event = do_shortcode( '[event event="' . $EM_Booking->event_id . '"]{is_future}#_EVENTPOSTID{/is_future}[/event]' );
  60.                 if ( $coming_event ) {
  61.                     $context[ 'race_attendance' ] = true;
  62.                     $context[ 'coming_events' ][] = $coming_event;
  63.                 }
  64.             }
  65.         }
  66.     }
  67.    
  68.    
  69.     // check if members was tagged in any posts
  70.     $rows = $wpdb->get_results( $wpdb->prepare( "
  71.            SELECT *
  72.            FROM {$wpdb->prefix}postmeta
  73.            WHERE meta_key LIKE %s
  74.            AND meta_value = %s
  75.            ", 'idf_tagged_riders_%_member', // meta_name: $ParentName_$RowNumber_$ChildName
  76.         $user_id
  77.     ) );
  78.  
  79.     if ( $rows ) {
  80.  
  81.         // if there are posts, get all 'found' post_ids
  82.         $post_ids  = array();
  83.         foreach ( $rows as $row ) {
  84.             $post_ids[] = intval( $row->post_id );
  85.         }
  86.    
  87.         $ppp    = 14; // posts per page
  88.         $paged  = get_query_var( 'paged' ); // check if page is paged
  89.         $pages  = ( $paged ) ? $paged : 1;
  90.         $offset = ( $paged ) ? ( ( $paged - 1 ) * $ppp ) : false;
  91.        
  92.         $mentioned_args         = array(
  93.             'posts_per_page' => $ppp,
  94.             'post__in'       => $post_ids,
  95.             'orderby'        => 'date',
  96.             'order'          => 'DESC',
  97.         );
  98.    
  99.         $context[ 'mentioned' ] = get_posts( $mentioned_args ); // actual posts in which user got mentioned
  100.         $amount_posts           = count( $context[ 'mentioned' ] ); // count mentioned posts
  101.         $amount_pages           = intval( round( count( $post_ids ) / $ppp ) ); // calculate how many pages are needed
  102.        
  103.         if ( $amount_pages > 1 ) {
  104.             $context[ 'mentioned_paging' ] = true;
  105.    
  106.             $big          = 999999999; // need an unlikely integer
  107.             $args         = array(
  108.                 'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
  109.                 'format'    => '/page/%#%',
  110.                 'total'     => $amount_pages,
  111.                 'current'   => max( 1, get_query_var( 'paged' ) ),
  112.                 'show_all'  => false,
  113.                 'end_size'  => 3,
  114.                 'mid_size'  => 2,
  115.                 'prev_next' => true,
  116.                 'prev_text' => __( '&laquo; Previous' ),
  117.                 'next_text' => __( 'Next &raquo;' ),
  118.                 'type'      => 'list',
  119.             );
  120.             $context[ 'pagination' ] = sprintf( '<div class="paginator">%s</div>', paginate_links( $args ) );
  121.         }
  122.     }
  123.    
  124.     // user fields
  125.     $context[ 'idf_number' ]    = $user_id;
  126.     $context[ 'facebook' ]      = get_user_field( 's2_facebook', $user_id );
  127.     $context[ 'twitter' ]       = strtolower( get_user_field( 's2_twitter', $user_id ) );
  128.     $context[ 'instagram' ]     = strtolower( get_user_field( 's2_instagram', $user_id ) );
  129.     $context[ 'instagram_id' ]  = get_user_field( 'instagram_id', $user_id );
  130.     $context[ 'sex' ]           = get_user_field( 'sex', $user_id );
  131.     $context[ 'nationality' ]   = get_user_field( 'nationality', $user_id );
  132.     $context[ 'sponsors' ]      = get_user_field( 'sponsors', $user_id );
  133.     $context[ 'rider_bio' ]     = get_user_field( 'rider_bio', $user_id );
  134.     $context[ 'website' ]       = get_user_field( 'website', $user_id );
  135.     $context[ 'category' ]      = get_user_field( 'category', $user_id );
  136.     $context[ 'member_avatar' ] = get_avatar( $user_id, 150 );
  137.     $context[ 'age' ]           = get_member_age( $user_id );
  138.     $context[ 'age_3112' ]      = get_member_age_3112( $user_id );
  139.     $s2_access_label            = get_user_field( 's2member_access_label', $user_id );      // user s2labels: Paying member, priority members, board, board +
  140.     $s2_access_role             = get_user_field( 's2member_access_role', $user_id );       // user roles: names of s2member levels
  141.     $user_role                  = $member_info->roles[ 0 ];
  142.    
  143.     if ( in_array( $user_role, array( 'board', 'administrator' ) ) ) {
  144.         $context[ 'member_level' ]  = $s2_access_label;
  145.         $context[ 'member_status' ] = false;
  146.         $function = get_user_field( 'board_function', $user_id );
  147.         if ( $function ) {
  148.             $context[ 'member_level' ] = 'IDF ' . $function;
  149.         }
  150.     } elseif ( user_can( $user_id, 'manage_bookings' ) ) {
  151.         $context[ 'member_level' ]  = 'Race organiser';
  152.         if ( 'subscriber' != $s2_access_role ) {
  153.             $context[ 'member_status' ] = false;
  154.         } else {
  155.             $context[ 'member_status' ] = 'inactive';
  156.         }
  157.        
  158.         $user_event_args = array(
  159.             'post_type' => 'event',
  160.             'author'    => $user_id,
  161.             'orderby'   => 'date',
  162.             'order'     => 'ASC'
  163.         );
  164.         $events = get_posts( $user_event_args );
  165.         if ( $events ) {
  166.             $user_events = [];
  167.             foreach( $events as $event ) {
  168.                 $user_events[] = $event->ID;
  169.             }
  170.             $context['user_events'] = $user_events;
  171.         }
  172.  
  173.     } elseif ( in_array( $user_role, array('s2member_level1','s2member_level2' ) ) ) {
  174.         $context[ 'member_level' ]  = $s2_access_label;
  175.         $context[ 'member_status' ] = false;
  176.     } elseif ( 'subscriber' == $user_role ) {
  177.         $context[ 'member_level' ]  = false;
  178.         $context[ 'member_status' ] = 'inactive';
  179.     }
  180.    
  181.     if ( $context[ 'category' ] == 'Luge' ) {
  182.         $context[ 'category' ] = '<a href="' . get_home_url() . '/members/?s2-s=luge">' . $context[ 'category' ] . '</a>';
  183.     }
  184.    
  185.     // get track records
  186.     $all_fastest = get_field( 'idf_track_record_event', 'option' );
  187.    
  188.     if ( false != $all_fastest ) {
  189.         $track_records = false;
  190.         $user_results  = array();
  191.         foreach ( $all_fastest as $event ) {
  192.             foreach( $event[ 'records' ] as $category ) {
  193.                 if ( $user_id == $category[ 'member' ][ 'ID' ] ) {
  194.                     $user_results[] = array(
  195.                         'event' => $event[ 'event_selector' ][0],
  196.                         'category' => $category,
  197.                     );
  198.                 }
  199.             }
  200.         }
  201.        
  202.         if ( count( $user_results ) > 0 ) {
  203.             $track_records = array();
  204.             foreach( $user_results as $results ) {
  205.                 $track_records[] = array(
  206.                     'name'     => substr( get_the_title( $results[ 'event' ] ), 0, -5 ),
  207.                     'category' => $results[ 'category' ][ 'category' ],
  208.                     'time'     => $results[ 'category' ][ 'time' ],
  209.                     'set_in'   => $results[ 'category' ][ 'set_in' ],
  210.                 );
  211.             }
  212.             sort($track_records);
  213.             $context[ 'track_records' ] = $track_records;
  214.         }
  215.        
  216.        
  217.     }
  218.    
  219.     // get posts where author id is in idf_race_attendance
  220.     $attended_args = array(
  221.         'post_type'      => 'event',
  222.         'posts_per_page' => 99,
  223.         'meta_query'     => array(
  224.             array(
  225.                 'key'     => 'idf_race_attendance',
  226.                 'compare' => 'EXISTS'
  227.             ),
  228.             'date_clause' => array(
  229.                 'key'     => '_event_start_date',
  230.                 'value'   => [ '2013-01-01', '2016-03-01' ],
  231.                 'compare' => 'BETWEEN'
  232.             ),
  233.         ),
  234.         'orderby' => array( 'date_clause' => 'DESC' ),
  235.    
  236.     );
  237.     $attended_events = get_posts( $attended_args );
  238.    
  239.     if ( $attended_events ) {
  240.         $context[ 'race_attendance' ] = true;
  241.         $attended = [];
  242.         foreach( $attended_events as $event ) {
  243.             $riders_list = get_post_meta( $event->ID, 'idf_race_attendance', true );
  244.             if ( in_array( $member->ID, $riders_list ) ) {
  245.                 $attended[] = $event->ID;
  246.             }
  247.         }
  248.     }
  249.  
  250.     Timber::render( $templates, $context );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement