[buddypress-trac] [BuddyPress Trac] #8332: Token {{recipient.name}} is not processed by BuddyPress

buddypress-trac noreply at wordpress.org
Thu Jul 16 13:34:37 UTC 2020


#8332: Token {{recipient.name}} is not processed by BuddyPress
-------------------------------+------------------------------
 Reporter:  connorwexc         |       Owner:  imath
     Type:  defect (bug)       |      Status:  assigned
 Priority:  normal             |   Milestone:  Awaiting Review
Component:  Emails             |     Version:  6.1.0
 Severity:  normal             |  Resolution:
 Keywords:  reporter-feedback  |
-------------------------------+------------------------------

Comment (by connorwexc):

 Hey there, thanks for getting back so fast!

 It is on a regular site config. The theme is WPLMS, https://wplms.io/,
 which is a big bundled theme by Vibe Themes for Learning Management. I'll
 attach a screenshot of the BuddyPress Site Health info.

 It comes with:
 - BadgeOS (https://wordpress.org/plugins/badgeos/)
 - BadgeOS Community Add-On (https://wordpress.org/plugins/badgeos-
 community-add-on/)
 - bbPress (https://wordpress.org/plugins/bbpress/)
 - BP Groups Import Users (https://wordpress.org/plugins/bp-groups-import-
 users/)
 - BuddyDrive (https://wordpress.org/plugins/buddydrive/)
 - Co-Authors Plus (https://wordpress.org/plugins/co-authors-plus/)
 - Elementor & Pro (https://wordpress.org/plugins/elementor/)
 - GTranslate (https://wordpress.org/plugins/gtranslate/)
 - H5P (https://wordpress.org/plugins/h5p/)
 - HubSpot All-In-One Marketing (https://wordpress.org/plugins/leadin/)
 - Import and export users and customers (https://wordpress.org/plugins
 /import-users-from-csv-with-meta/)
 - MonsterInsightsPro (https://www.monsterinsights.com/)
 - myCred (https://wordpress.org/plugins/mycred/)
 - Wordfence Security (https://wordpress.org/plugins/wordfence/) this one
 was installed after the bug had been discovered

 Then there are some custom plugins that the theme creators have made that
 I can reach out to them about. They involve integrating plugins other than
 BuddyPress; CoAuthors, H5p, MyCred. It seems like my client has added a
 lot of plugins without reaching out to us. I'll see if I can get any info
 from them about why/when they added those plugins. My suspicion is that
 this list can be whittled down.

 The theme creators added extra code to the {{{ bp-custom.php }}} file,
 though none of it seems related to the functions. I'll paste it in
 anyways:

 {{{#!php
 <?php

 if ( !defined( 'ABSPATH' ) ) exit;

 add_action( 'bp_setup_nav', 'vibe_bp_hide_tabs', 15 );
 function vibe_bp_hide_tabs(){

    $flag=1;
    $hide=vibe_get_option('activity_tab');
    if(isset($hide)){
       $flag=0;
       switch($hide){
          case 1:
             if(is_user_logged_in()) $flag=1;
          break;
          case 2:
             if(current_user_can('edit_posts')) $flag=1;
          break;
          case 3:
             if(current_user_can('manage_options')) $flag=1;
          break;
          case 0: $flag=1;
          break;
       }
    }
    if(!$flag && bp_is_active( 'activity' ) && !bp_is_my_profile()){
       bp_core_remove_nav_item('activity');
    }

    $flag=1;
    $hide=vibe_get_option('groups_tab');
    if(isset($hide)){
       $flag=0;
       switch($hide){
          case 1:
             if(is_user_logged_in()) $flag=1;
          break;
          case 2:
             if(current_user_can('edit_posts')) $flag=1;
          break;
          case 3:
             if(current_user_can('manage_options')) $flag=1;
          break;
          case 0: $flag=1;
          break;
       }
    }
    if(!$flag && bp_is_active( 'groups' ) && !bp_is_my_profile()){
       bp_core_remove_nav_item('groups');
    }

    $flag=1;
    $hide=vibe_get_option('forums_tab');
    if(isset($hide)){
       $flag=0;
       switch($hide){
          case 1:
             if(is_user_logged_in()) $flag=1;
          break;
          case 2:
             if(current_user_can('edit_posts')) $flag=1;
          break;
          case 3:
             if(current_user_can('manage_options')) $flag=1;
          break;
          case 0: $flag=1;
          break;
       }
    }
    if(!$flag && !bp_is_my_profile()){
       bp_core_remove_nav_item('forums');
    }
 }

 add_action('bp_before_profile_content','wplms_show_instructor_courses',11);
 function wplms_show_instructor_courses(){
   global $bp;
   $user_id=bp_displayed_user_id();
   if(function_exists('bp_current_action') && bp_current_action() !==
 'public')
     return;

   if(!user_can($user_id,'edit_posts')){
     return;
   }

   $block_style = vibe_get_option('default_course_block_style');
   $n = vibe_get_option('loop_number');
   if($n<4){$n=4;}
   if ( function_exists('get_coauthors')) {
     $user = get_user_by('ID',$user_id);
     $args = array(
       'post_type' => 'course',
       'posts_per_page' => $n,
       'post_status' => 'publish',
       'author_name' => $user->user_nicename,
     );
   }else{
     $args = array(
     'post_type'=>'course',
     'post_status'=>'publish',
     'posts_per_page' => $n,
     'author'=> $user_id,
     );
   }

   $args = apply_filters('wplms_show_instructor_courses',$args);

   $query = new WP_Query($args);
   if($query->have_posts()){

 $instructing_courses=apply_filters('wplms_instructing_courses_endpoint
 ','instructing-courses');

       echo '<div class="instructor_courses">
       <h3 class="heading"><span>'._x('Courses by Instructor','courses by
 instructor title in profile','vibe').'</span><a
 href="'.get_author_posts_url($user_id).$instructing_courses.'/"
 class="tip" title="'.sprintf(_x('Check all Courses created by %s','link
 help text in instructor
 profile','vibe'),bp_core_get_user_displayname($user_id)).'"><i class
 ="icon-plus-1"></i></a></h3>
       </div>';


     echo '<div class="vibe_carousel flexslider" data-controlnav="1" data-
 block-width="240" data-block-max="4" data-block-min="1"><ul
 class="slides">';
     $block_style = vibe_get_option('default_course_block_style');
     if(empty($block_style)){$block_style = 'course';}
     while($query->have_posts()){
         $query->the_post();
         global $post;
         echo '<li>';
         echo thumbnail_generator($post,$block_style,4,0);
         echo '</li>';
     }
     wp_reset_postdata();
     echo '</ul></div><br><hr>';
   }

 }
 add_action('bp_before_profile_content','wplms_show_profile_snapshot');

 function wplms_show_profile_snapshot(){
    global $bp;

   $user_id=bp_displayed_user_id();

   if(function_exists('bp_current_action') && bp_current_action() !==
 'public')
     return;

     if(function_exists('bp_course_get_user_badges')){
         $bids=bp_course_get_user_badges($user_id);
     }else{
         $bids=vibe_sanitize(get_user_meta($user_id,'badges',false));
     }

   if(isset($bids) && is_Array($bids) && count($bids)){
       $badges_html = array();

         foreach($bids as $bid){
             $b='';
             if(function_exists('bp_get_course_badge')){
                 $b=bp_get_course_badge($bid);
                 if(!empty($b)){
                     if(is_numeric($b)){
                         if(function_exists('bp_course_get_badge')){
                             $badges_html[]= bp_course_get_badge($b,$bid);
                         }else{
                             $badge=wp_get_attachment_info($b);
 $badge_url=wp_get_attachment_image_src($b,'full');
                             $badges_html[]='<a class="tip ajax-badge"
 data-course="'.get_the_title($bid).'"
 title="'.get_post_meta($bid,'vibe_course_badge_title',true).'"><img
 src="'.$badge_url[0].'" title="'.$badge['title'].'"/></a>';
                         }
                     }
                 }
             }
         }

         if(!empty($badges_html)){
             echo '<div class="badges"><h6>'.__('Badges','vibe').'</h6>';
             echo '<ul>';
             foreach($badges_html as $b_html){
                 echo '<li>';
                 echo vibe_sanitizer($b_html);
                 echo '</li>';
             }
             echo '</ul>';
             echo '</div>';
         }
    }


    $certis=vibe_sanitize(get_user_meta($user_id,'certificates',false));

      if(isset($certis) && is_Array($certis) && count($certis)){
           echo '<div
 class="certifications"><h6>'.__('Certifications','vibe').'</h6><ul
 class="slides">';
           if(isset($certis) && is_Array($certis))
            foreach($certis as $certi){
               if(function_exists('bp_get_course_certificate')){

                 if(!empty($certi) && get_post_type($certi) == 'course'){

                   $url =
 bp_get_course_certificate('user_id='.$user_id.'&course_id='.$certi);
                   $class = '';
                   $class =
 apply_filters('bp_course_certificate_class','',array('course_id'=>$certi,'user_id'=>$user_id));
                   if(isset($_GET['regenerate_certificate']) ||
 (strpos($url, 'jpeg') === false) ) {
                     $class .=' regenerate_certificate';
                   }

                   echo '<li><a href="'.$url.'" class="ajax-certificate
 '.$class.'" data-user="'.$user_id.'" data-course="'.$certi.'" data-
 security="'.wp_create_nonce($user_id).'"><i class="icon-certificate-
 file"></i><span>'.get_the_title($certi).'</span></a></li>';
                 }
               }
            }
          echo '</ul></div>';
       }

 }

 add_action('bp_group_options_nav','vibe_course_group_link',1,1);

 function vibe_course_group_link(){
    global $bp,$wpdb;
    $course_query= $wpdb->get_results( $wpdb->prepare("SELECT post_id from
 {$wpdb->postmeta} WHERE meta_key='vibe_group' AND
 meta_value='%d'",$bp->groups->current_group->id));
    if(is_array($course_query) && isset($course_query[0]->post_id))
       echo '<li id="course-li"><a id="admin"
 href="'.get_permalink($course_query[0]->post_id).'"
 title="'.get_the_title($course_query[0]->post_id).'">'.__('Course
 ','vibe').'</a></li>';
 }

 function bp_dtheme_setup() {
    if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
       // Group buttons
       if ( bp_is_active( 'groups' ) ) {
          $groups_check = vibe_get_option('enable_groups_join_button');

          if(isset($groups_check) && $groups_check)
           add_action( 'bp_directory_groups_actions',
 'bp_group_join_button' );
       }

    }
 }

 add_action( 'after_setup_theme', 'bp_dtheme_setup' );


 /* === Course Specific ===== */

 class WPLMS_BP_Cover_Image{

    function __construct(){
       add_action( 'bp_after_setup_theme',array($this,'cover_image'));
       add_action('wp_enqueue_scripts',array($this,'display_cover_image'));
    }

    function cover_image() {
       if(function_exists('bp_set_theme_compat_feature')){
        bp_set_theme_compat_feature( 'legacy', array(
           'name'     => 'cover_image',
           'settings' => array(
              'components'   => array( 'xprofile','groups' ),
              'width'        => 1300,
              'height'       => 500,
              'callback'     => array($this,'record_cover_image'), // See
 line 845
              'theme_handle' => 'bp-default-main',
           ),
        ) );
      }
    }
    function record_cover_image( $params = array() ) {
      if ( empty( $params ) ) {
         return;
      }

      // avatar height - padding - 1/2 avatar height
      $avatar_offset = $params['height'] - 5 - round( (int)
 bp_core_avatar_full_height() / 2 );

      // header content offset + spacing
      $top_offset  = bp_core_avatar_full_height() - 10;
      $left_offset = bp_core_avatar_full_width() + 20;

      $this->cover_image = $params['cover_image'];
    }

    function display_cover_image(){
       global $bp;

       if(bp_is_user() || bp_is_group()){
          if(!empty($this->cover_image)){
             echo '<style>
               #item-header{background:url("'.$this->cover_image.'")
 !important;}
               #buddypress div#item-header.light div#item-header-content,
               #buddypress div#item-header.light #latest-update h6,
               #buddypress div#item-header.light div#item-header-content a,
               #buddypress div#item-header.light div#item-header-content h3
 a
               {
                  color:#FFF !important;
               }
               #buddypress div#item-header.dark div#item-header-content,
               #buddypress div#item-header.dark #latest-update h6,
               #buddypress div#item-header.dark div#item-header-content a,
               #buddypress div#item-header.dark div#item-header-content h3
 a
               {
                  color:#222 !important;
               }
             </style>';
          }
       }
    }
 }

 new WPLMS_BP_Cover_Image;
 }}}

 For now that is all the info I have. Once the client get's back to me with
 the info on those other plugins, I will post that as well.

-- 
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/8332#comment:4>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac


More information about the buddypress-trac mailing list