BP_Email_Tokens
Represents an email tokens that will be sent in emails.
Description
Source
File: bp-core/classes/class-bp-email-tokens.php
class BP_Email_Tokens { /** * message sender id * * @since BuddyBoss 1.0.0 */ protected $_message_sender_id = false; /** * Constructor. * * @since BuddyBoss 1.0.0 */ public function __construct() { // set new email tokens added in BuddyBoss 1.0.0 add_filter( 'bp_email_set_tokens', array( $this, 'set_tokens' ), 10, 3 ); //tokens for email after a new message is received, does not contain usable info about sender user //we need to acquire this info before we process tokens for that email //priority 9 is importent add_action( 'messages_message_sent', array( $this, 'messages_message_sent' ), 9 ); } /** * Set email tokens * * @param array $formatted_tokens * @param array $tokens * @param \BP_Email $bp_email * * @return array */ function set_tokens( $formatted_tokens, $tokens, $bp_email ) { if ( 'html' == $bp_email->get_content_type() ) { $email_content = $bp_email->get_content_html(); $all_tokens = $this->get_tokens(); if ( ! empty( $all_tokens ) ) { foreach ( $all_tokens as $token_key => $token_details ) { if ( strpos( $email_content, $token_key ) !== false ) { $token_output = call_user_func( $token_details['function'], $bp_email, $formatted_tokens, $tokens ); $formatted_tokens[ sanitize_text_field( $token_key ) ] = $token_output; } } } } return $formatted_tokens; } /** * Get email tokens * * @since BuddyBoss 1.0.0 * * @return array */ public function get_tokens() { $tokens = array( 'group.small_card' => array( 'function' => array( $this, 'token__group_card_small' ), 'description' => __( 'Display the group card with minimal group details.', 'buddyboss' ), ), 'group.card' => array( 'function' => array( $this, 'token__group_card' ), 'description' => __( 'Display the group card with more details like group cover photo etc.', 'buddyboss' ), ), 'group.description' => array( 'function' => array( $this, 'token__group_description' ), 'description' => __( 'Display the group description.', 'buddyboss' ), ), 'group.invite_message' => array( 'function' => array( $this, 'token__group_invite_message' ), 'description' => __( 'Display the invite message.', 'buddyboss' ), ), 'message' => array( 'function' => array( $this, 'token__message' ), 'description' => __( 'Display the sent message, along with sender\'s photo and name.', 'buddyboss' ), ), 'sender.url' => array( 'function' => array( $this, 'token__sender_url' ), 'description' => __( 'Display the link to the member profile who sent the message. Only works in email that is sent to a member when someone sends him/her a message.', 'buddyboss' ), ), 'member.card' => array( 'function' => array( $this, 'token__member_card_small' ), 'description' => __( 'Display the member card with minimal member details.', 'buddyboss' ), ), 'status_update' => array( 'function' => array( $this, 'token__status_update' ), 'description' => __( 'Display the status update, along with member\'s photo and name.', 'buddyboss' ), ), 'activity_reply' => array( 'function' => array( $this, 'token__activity_reply' ), 'description' => __( 'Display the reply to update, along with member\'s photo and name.', 'buddyboss' ), ), 'poster.url' => array( 'function' => array( $this, 'token__poster_url' ), 'description' => __( 'Display the link to the member profile who posted the update.', 'buddyboss' ), ), 'discussion.content' => array( 'function' => array( $this, 'token__discussion_content' ), 'description' => __( 'Display the discussion content.', 'buddyboss' ), ), 'reply.content' => array( 'function' => array( $this, 'token__reply_content' ), 'description' => __( 'Display the reply content.', 'buddyboss' ), ), ); return $tokens; } /** * Generate the output for token group.small_card * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__group_card_small( $bp_email, $formatted_tokens, $tokens ) { $output = ''; $settings = bp_email_get_appearance_settings(); $group = isset( $tokens['group'] ) ? $tokens['group'] : false; if ( empty( $group ) ) { $group_id = isset( $tokens['group.id'] ) ? $tokens['group.id'] : false; if ( empty( $group_id ) ) { return $output; } $group = groups_get_group( $group_id ); } if ( empty( $group ) ) { return $output; } ob_start(); ?> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['body_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="16px" style="font-size: 16px; line-height: 16px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="94%" style="width: 94%;"> <tbody> <tr> <td> <table cellpadding="0" cellspacing="0" border="0"> <tbody> <tr> <td width="20%" class="mobile-block-full"> <a class="group-avatar-wrap mobile-center" href="<?php echo bp_get_group_permalink( $group ); ?>" style="border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; display: block; border-radius: 3px; width: 104px;"> <?php $group_avatar = bp_core_fetch_avatar( array( 'item_id' => $group->id, 'avatar_dir' => 'group-avatars', 'type' => 'full', 'object' => 'group', 'width' => 200, 'height' => 200, 'html' => false ) ); ?> <img alt="" src="<?php echo $group_avatar; ?>" width="100" height="100" border="0" style="margin: 2px; padding:0; box-sizing: border-box; border-radius: 3px; border: 3px solid <?php echo esc_attr( $settings['body_bg'] ); ?>; display:block;" /> </a> </td> <td width="4%" class="mobile-hide"> </td> <td width="76%" class="mobile-block-padding-full"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td class="mobile-text-center"> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"><?php echo $group->name; ?></div> <div class="spacer" style="font-size: 3px; line-height: 3px; height: 3px;"> </div> <p style="opacity: 0.7; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 0.8125 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; margin: 0;"><?php echo ucfirst( $group->status ) . " " . __( 'Group', 'buddyboss' ); ?></p> </td> </tr> <tr> <td height="16px" style="font-size: 16px; line-height: 16px;"> </td> </tr> <tr> <td> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td> <table cellpadding="0" cellspacing="0" border="0" width="47%" style="width: 47%;" align="left" class="responsive-table mobile-text-center"> <tbody> <tr> <td height="34px" style="vertical-align: middle;"> <?php $group_members_count = bp_get_group_total_members( $group ); $member_text = ( $group_members_count > 1 ) ? __('members', 'buddyboss') : __('member', 'buddyboss'); ?> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 0.8125 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_text_color'] ); ?>;"> <span style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; opacity: 0.85;"><?php echo $group_members_count; ?></span> <?php echo $member_text; ?> </div> </td> </tr> </tbody> </table> <table cellpadding="0" cellspacing="0" border="0" width="47%" style="width: 47%;" align="right" class="responsive-table"> <tbody> <tr> <td height="34px" align="right" style="vertical-align: middle;" class="mobile-padding-bottom"> <a class="mobile-button-center" href="<?php echo bp_get_group_permalink( $group ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 0.875 ) . 'px' ) ?>;text-decoration: none;display: block;border: 1px solid <?php echo $settings['highlight_color']; ?>;border-radius: 100px;text-align: center; height: 32px;line-height: 32px;background: <?php echo $settings['highlight_color']; ?>;color: #fff !important;width: 130px;"><?php _e( 'Visit Group', 'buddyboss' ); ?></a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="16px" style="font-size: 16px; line-height: 16px;"> </td> </tr> </tbody> </table> <div class="spacer" style="font-size: 10px; line-height: 10px; height: 10px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token group.card * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__group_card( $bp_email, $formatted_tokens, $tokens ) { $output = ''; $group = isset( $tokens['group'] ) ? $tokens['group'] : false; if ( empty( $group ) ) { $group_id = isset( $tokens['group.id'] ) ? $tokens['group.id'] : false; if ( empty( $group_id ) ) { return $output; } $group = groups_get_group( $group_id ); } if ( empty( $group ) ) { return $output; } ob_start(); ?> <div class="card_wrapper card_group card_group_small" style="border-radius: 5px; padding: 10px;"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <?php if ( bp_is_active( 'groups', 'cover_image' ) && ! bp_disable_cover_image_uploads() && bp_attachments_is_wp_version_supported() ) { $cover_image = bp_attachments_get_attachment( 'url', array( 'object_dir' => 'groups', 'item_id' => $group_id, ) ); echo "<tr><td colspan='100%'><img src='{$cover_image}'></td></tr>"; } ?> <tr> <td> <a href="<?php echo bp_get_group_permalink( $group ); ?>" style="border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; display: block; border-radius: 3px; width: 100px;"> <img alt="" src="<?php echo bp_core_fetch_avatar( array( 'item_id' => $group->id, 'avatar_dir' => 'group-avatars', 'object' => 'group', 'type' => 'full', 'width' => 200, 'height' => 200, 'html' => false ) ); ?>" width="100" height="100" style="margin:0; padding:0; box-sizing: border-box; border-radius: 3px; border:3px solid <?php echo esc_attr( $settings['body_bg'] ); ?>; display:block;" border="0"/> </a> </td> <td> <h3><?php echo $group->name; ?></h3> <div class="spacer" style="font-size: 7px; line-height: 7px; height: 7px;"> </div> <?php echo ucfirst( $group->status ) . " " . __( 'Group', 'buddyboss' ); ?><br> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="left"> <?php if ( bp_is_active( 'activity' ) ) { global $wpdb; $activity_table = buddypress()->activity->table_name; $sql = array( 'select' => "SELECT user_id, max( date_recorded ) as date_recorded FROM {$activity_table}", 'where' => array(), 'groupby' => 'GROUP BY user_id', 'orderby' => 'ORDER BY date_recorded', 'order' => 'DESC', ); $sql['where'] = array( 'item_id = ' . absint( $group->id ), $wpdb->prepare( "component = %s", buddypress()->groups->id ), ); $sql['where'] = 'WHERE ' . implode( ' AND ', $sql['where'] ); $sql['limit'] = 'LIMIT 4'; $group_user_ids = $wpdb->get_results( "{$sql[ 'select' ]} {$sql[ 'where' ]} {$sql[ 'groupby' ]} {$sql[ 'orderby' ]} {$sql[ 'order' ]} {$sql[ 'limit' ]}" ); $group_user_ids = wp_list_pluck( $group_user_ids, 'user_id' ); $output = "<span class='bs-group-members'>"; foreach ( $group_user_ids as $user_id ) { $avatar = bp_core_fetch_avatar( array( 'item_id' => $user_id, 'avatar_dir' => 'avatars', 'object' => 'user', 'type' => 'full', 'html' => false ) ); if ( ! empty( $avatar ) ) { $output .= sprintf( "<img src='%s' alt='%s'>", $avatar, bp_core_get_user_displayname( $user_id ) ); } } $output .= "</span>"; $output .= "<span class='members'>" . groups_get_total_member_count( $group->id ) . " " . __( 'Members', 'buddyboss' ) . "</span>"; echo $output; } ?> </td> <td align="right"> <a class="button-primary" href="<?php echo bp_get_group_permalink( $group ); ?>"> <?php $joined_status = 'unknown'; $recepients = $bp_email->get_to(); if ( ! empty( $recepients ) && count( $recepients ) === 1 ) { // BP_Email_Recipient $recepient = reset( $recepients ); $user = $recepient->get_user(); if ( ! empty( $user ) ) { if ( groups_is_user_member( $user->ID, $group->id ) ) { $joined_status = 'joined'; } else { $joined_status = 'not-joined'; } } } switch ( $joined_status ) { case 'joined': _e( 'Leave Group', 'buddyboss' ); break; case 'not-joined': _e( 'Join Group', 'buddyboss' ); break; default: _e( 'Visit Group', 'buddyboss' ); break; } ?> </a> </td> </tr> </table> </td> </tr> </table> <div class="spacer" style="font-size: 10px; line-height: 10px; height: 10px;"> </div> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token status_update * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__status_update( $bp_email, $formatted_tokens, $tokens ) { $output = ''; $settings = bp_email_get_appearance_settings(); $activity = isset( $tokens['activity'] ) ? $tokens['activity'] : false; if ( empty( $activity ) ) { return $output; } ob_start(); ?> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( $activity->user_id ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => $activity->user_id, 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" border="0"> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"><?php echo bp_core_get_user_displayname( $activity->user_id ); ?></div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo apply_filters_ref_array( 'bp_get_activity_content_body', array( $activity->content, &$activity ) ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <a href="<?php echo esc_attr( $tokens['mentioned.url'] ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; color: <?php echo $settings['highlight_color']; ?>; text-decoration: none; display: block; border: 1px solid <?php echo $settings['highlight_color']; ?>; border-radius: 100px; width: 84px; text-align: center; height: 32px; line-height: 32px;"><?php _e( 'Reply', 'buddyboss' ); ?></a> </td> </tr> </table> <div class="spacer" style="font-size: 20px; line-height: 20px; height: 20px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token activity_reply * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__activity_reply( $bp_email, $formatted_tokens, $tokens ) { $output = ''; $settings = bp_email_get_appearance_settings(); $comment_id = isset( $tokens['comment.id'] ) ? $tokens['comment.id'] : false; $activity_comment = new BP_Activity_Activity( $comment_id ); if ( empty( $activity_comment ) || empty( $activity_comment->secondary_item_id ) ) { return $output; } $activity_original_id = ! empty( $activity_comment->item_id ) ? $activity_comment->item_id : $activity_comment->secondary_item_id; $activity_original = new BP_Activity_Activity( $activity_original_id ); if ( empty( $activity_original ) ) { return $output; } ob_start(); ?> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( $activity_comment->user_id ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => $activity_comment->user_id, 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" border="0" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" /> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"><?php echo bp_core_get_user_displayname( $activity_comment->user_id ); ?></div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div class="bb-content-body" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo apply_filters_ref_array( 'bp_get_activity_content_body', array( $activity_comment->content, &$activity_comment ) ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td><a href="<?php echo esc_attr( $tokens['thread.url'] ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; color: <?php echo $settings['highlight_color']; ?>; text-decoration: none; display: block; border: 1px solid <?php echo $settings['highlight_color']; ?>; border-radius: 100px; width: 84px; text-align: center; height: 32px; line-height: 32px;"><?php _e( 'Reply', 'buddyboss' ); ?></a> </td> </tr> </table> <div class="spacer" style="font-size: 10px; line-height: 10px; height: 10px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * set message sender id * * @since BuddyBoss 1.0.0 * * @param \BP_Messages_Message $message */ public function messages_message_sent( $message ) { $this->_message_sender_id = $message->sender_id; } /** * Generate the output for token message * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__message( $bp_email, $formatted_tokens, $tokens ) { $output = ''; if ( 'messages-unread' != $bp_email->get( 'type' ) ) return $output; $settings = bp_email_get_appearance_settings(); $media_ids = false; $total_media_ids = 0; if ( bp_is_active( 'media' ) && bp_is_messages_media_support_enabled() && ! empty( $tokens['message_id'] ) ) { $media_ids = bp_messages_get_meta( $tokens['message_id'], 'bp_media_ids', true ); if ( ! empty( $media_ids ) ) { $media_ids = explode( ',', $media_ids ); $total_media_ids = count( $media_ids ); $media_ids = implode( ',', array_slice( $media_ids, 0, 5 ) ); } } $gif_data = false; if ( bp_is_active( 'media' ) && bp_is_messages_gif_support_enabled() && ! empty( $tokens['message_id'] ) ) { $gif_data = bp_messages_get_meta( $tokens['message_id'], '_gif_data', true ); } ob_start(); ?> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <?php if ( $this->_message_sender_id ): ?> <tr> <td> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( $this->_message_sender_id ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => $this->_message_sender_id, 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" border="0" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" /> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"> <a href="<?php echo esc_attr( bp_core_get_user_domain( $this->_message_sender_id ) ); ?>" target="_blank" rel="nofollow" style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?> !important;"> <?php echo $tokens['sender.name']; ?> </a> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <?php endif; ?> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="25px" style="font-size: 25px; line-height: 25px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="86%" style="width: 86%;"> <tbody> <tr> <td> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo nl2br( $tokens['usermessage'] ); ?> </div> <?php if ( ! empty( $media_ids ) && bp_has_media( array( 'include' => $media_ids, 'order_by' => 'menu_order', 'sort' => 'ASC' ) ) ) : ?> <div class="bb-activity-media-wrap" style="padding: 10px 0;"> <?php while ( bp_media() ) { bp_the_media(); ?> <div class="bb-activity-media-elem" style="display: inline-block; max-width: 120px; vertical-align: top; max-height: 120px; overflow: hidden; padding: 4px 0;"> <a href="<?php echo esc_attr( $tokens['message.url'] ); ?>"> <img src="<?php echo esc_attr( wp_get_attachment_image_url( bp_get_media_attachment_id() ) ); ?>" alt="<?php echo esc_attr( bp_get_media_title() ); ?>"/> </a> </div> <?php } ?> <?php if ( $total_media_ids > 5 ) : ?> <a href="<?php echo esc_attr( $tokens['message.url'] ); ?>"><?php sprintf( __( 'and %d more', 'buddyboss' ), $total_media_ids - 5 ); ?></a> <?php endif; ?> </div> <?php endif; ?> <?php if ( ! empty( $gif_data ) ) : ?> <div class="activity-attached-gif-container"> <div class="gif-image-container"> <a href="<?php echo esc_attr( $tokens['message.url'] ); ?>" class="gif-play-button"> <span class="dashicons dashicons-video-alt3"></span> <img src="<?php echo esc_url( wp_get_attachment_url( $gif_data['still'] ) ); ?>" /> </a> <span class="gif-icon"></span> </div> </div> <?php endif; ?> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="25px" style="font-size: 25px; line-height: 25px;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <a href="<?php echo esc_attr( $tokens['message.url'] ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; color: <?php echo $settings['highlight_color']; ?>; text-decoration: none; display: block; border: 1px solid <?php echo $settings['highlight_color']; ?>; border-radius: 100px; width: 84px; text-align: center; height: 32px; line-height: 32px;"><?php _e( 'Reply', 'buddyboss' ); ?></a> </td> </tr> </table> <div class="spacer" style="font-size: 10px; line-height: 10px; height: 10px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token member.card * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__member_card_small( $bp_email, $formatted_tokens, $tokens ) { $output = ''; $settings = bp_email_get_appearance_settings(); $email_type = $bp_email->get( 'type' ); switch ( $email_type ) { case 'friends-request-accepted': $member_id = isset( $tokens['friend.id'] ) ? $tokens['friend.id'] : false; break; case 'groups-membership-request': $member_id = isset( $tokens['requesting-user.id'] ) ? $tokens['requesting-user.id'] : false; break; case 'friends-request': $member_id = isset( $tokens['initiator.id'] ) ? $tokens['initiator.id'] : false; break; case 'groups-invitation': $member_id = isset( $tokens['inviter.id'] ) ? $tokens['inviter.id'] : false; break; } //maybe search for some other token if ( empty( $member_id ) ) { return $output; } ob_start(); ?> <table class="member-details" cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['body_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100%;"> <tr> <td> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="20%" class="mobile-block-full"> <a class="avatar-wrap mobile-center" href="<?php echo bp_core_get_user_domain( $member_id ); ?>" style="display: block; border-radius: 3px; width: 140px;"> <img alt="" src="<?php echo bp_core_fetch_avatar( array( 'item_id' => $member_id, 'width' => 280, 'height' => 280, 'type' => 'full', 'html' => false ) ); ?>" width="140" height="140" style="margin:0; padding:0; border:none; display:block;" border="0"/> </a> </td> <td width="4%" class="mobile-hide"> </td> <td width="72%" class="mobile-block-padding-full"> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100%;"> <tr> <td height="10px" style="font-size: 10px; line-height: 10px;"> </td> </tr> <tr> <td class="mobile-text-center"> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.25 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.75 ) . 'px' ) ?>;"><?php echo bp_core_get_user_displayname( $member_id ); ?></div> <div class="spacer" style="font-size: 2px; line-height: 2px; height: 2px;"> </div> <p style="opacity: 0.7; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( floor( $settings[ 'body_text_size' ] * 0.8125 ) . 'px' ) ?>; color : <?php echo esc_attr( $settings[ 'body_text_color' ] ); ?>; margin: 0;"> @<?php echo bp_activity_get_user_mentionname( $member_id ); ?> </p> </td> </tr> <tr> <td class="responsive-set-height"> <div class="spacer responsive-set-height" style="font-size: 30px; line-height: 30px; height: 30px;"> </div> </td> </tr> <tr> <td> <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100%;"> <tr> <td> <table cellpadding="0" cellspacing="0" border="0" width="47%" style="width: 47%;" align="left" class="no-responsive-table"> <tr> <td height="34px" style="vertical-align: middle;"> <?php $friend_count = friends_get_total_friend_count( $member_id ); $connection_text = ( $friend_count > 1 ) ? __('connections', 'buddyboss') : __('connection', 'buddyboss'); ?> <div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: <?php echo esc_attr( floor( $settings[ 'body_text_size' ] * 0.8125 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_text_color'] ); ?>;"> <span style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; opacity: 0.85;"><?php echo $friend_count; ?></span> <?php echo $connection_text; ?> </div> </td> </tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="47%" style="width: 47%;" align="right" class="no-responsive-table mobile-padding-bottom"> <tr> <td height="34px" align="right" style="vertical-align: middle;" class=""> <a href="<?php echo bp_core_get_user_domain( $member_id ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: <?php echo esc_attr( floor( $settings[ 'body_text_size' ] * 0.875 ) . 'px' ) ?>;text-decoration: none;display: block;height: <?php echo esc_attr( floor( $settings[ 'body_text_size' ] * 2.125 ) . 'px' ) ?>;line-height: <?php echo esc_attr( floor( $settings[ 'body_text_size' ] * 2 ) . 'px' ) ?>;"><?php _e( 'View Profile', 'buddyboss' ); ?></a> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </td> <td width="4%" class="mobile-hide"> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> <div class="spacer" style="font-size: 10px; line-height: 10px; height: 10px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token poster.url * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__poster_url( $bp_email, $formatted_tokens, $tokens ) { $activity = isset( $tokens['activity'] ) ? $tokens['activity'] : false; if ( empty( $activity ) ) { $user_id = isset( $tokens['commenter.id'] ) ? $tokens['commenter.id'] : false; } else { $user_id = $activity->user_id; } if ( empty( $user_id ) ) { return ""; } return bp_core_get_user_domain( $user_id ); } /** * Generate the output for token sender.url * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__sender_url( $bp_email, $formatted_tokens, $tokens ) { if ( empty( $this->_message_sender_id ) ) { return ''; } return bp_core_get_user_domain( $this->_message_sender_id ); } /** * Generate the output for token group.description * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__group_description( $bp_email, $formatted_tokens, $tokens ) { $group_id = false; $output = ''; if ( ! bp_is_active( 'groups' ) ) { return ''; } $group = isset( $tokens['group'] ) ? $tokens['group'] : false; if ( empty( $group ) ) { $group_id = isset( $tokens['group.id'] ) ? $tokens['group.id'] : false; if ( empty( $group_id ) ) { return $output; } $group = groups_get_group( $group_id ); } $group_excerpt = bp_get_group_description_excerpt( $group ); if ( empty( $group ) || empty( $group_excerpt ) ) { return $output; } $settings = bp_email_get_appearance_settings(); ob_start(); ?> <div class="spacer" style="font-size: 5px; line-height: 5px; height: 5px;"> </div> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo wpautop( $group_excerpt ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> <div class="spacer" style="font-size: 30px; line-height: 30px; height: 30px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token group.invite_message * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__group_invite_message( $bp_email, $formatted_tokens, $tokens ) { $output = ''; if ( ! bp_is_active( 'groups' ) ) { return ''; } if ( empty( $formatted_tokens['invites.message'] ) ) { return $output; } $settings = bp_email_get_appearance_settings(); ob_start(); ?> <div class="spacer" style="font-size: 5px; line-height: 5px; height: 5px;"> </div> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo wpautop( $formatted_tokens['invites.message'] ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> <div class="spacer" style="font-size: 30px; line-height: 30px; height: 30px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token reply_content * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__reply_content( $bp_email, $formatted_tokens, $tokens ) { $output = ''; if ( empty( $formatted_tokens['reply.content'] ) || empty( $formatted_tokens['reply.id'] ) ) { return $output; } $settings = bp_email_get_appearance_settings(); ob_start(); ?> <div class="spacer" style="font-size: 5px; line-height: 5px; height: 5px;"> </div> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( bbp_get_reply_author_id( $formatted_tokens['reply.id'] ) ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => bbp_get_reply_author_id( $formatted_tokens['reply.id'] ), 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" border="0" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" /> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"><?php echo bbp_get_reply_author_display_name( $formatted_tokens['reply.id'] ); ?></div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo wpautop( $formatted_tokens['reply.content'] ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> </td> </tr> </table> <div class="spacer" style="font-size: 30px; line-height: 30px; height: 30px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } /** * Generate the output for token discussion.content * * @since BuddyBoss 1.0.0 * * @param \BP_Email $bp_email * @param array $formatted_tokens * @param array $tokens * * @return string html for the output */ public function token__discussion_content( $bp_email, $formatted_tokens, $tokens ) { $output = ''; if ( empty( $formatted_tokens['discussion.content'] ) || empty( $formatted_tokens['discussion.id'] ) ) { return $output; } $settings = bp_email_get_appearance_settings(); ob_start(); ?> <div class="spacer" style="font-size: 5px; line-height: 5px; height: 5px;"> </div> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( bbp_get_topic_author_id( $formatted_tokens['discussion.id'] ) ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => bbp_get_topic_author_id( $formatted_tokens['discussion.id'] ), 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" border="0" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" /> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"><?php echo bbp_get_topic_author_display_name( $formatted_tokens['discussion.id'] ); ?></div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo wpautop( $formatted_tokens['discussion.content'] ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> </td> </tr> </table> <div class="spacer" style="font-size: 30px; line-height: 30px; height: 30px;"> </div> <?php $output = str_replace( array( "\r", "\n" ), '', ob_get_clean() ); return $output; } }
Changelog
Version | Description |
---|---|
BuddyBoss 1.0.0 | Introduced. |
Methods
- __construct — Constructor.
- get_tokens — Get email tokens
- messages_message_sent — set message sender id
- set_tokens — Set email tokens
- token__activity_reply — Generate the output for token activity_reply
- token__discussion_content — Generate the output for token discussion.content
- token__group_card — Generate the output for token group.card
- token__group_card_small — Generate the output for token group.small_card
- token__group_description — Generate the output for token group.description
- token__group_invite_message — Generate the output for token group.invite_message
- token__member_card_small — Generate the output for token member.card
- token__message — Generate the output for token message
- token__poster_url — Generate the output for token poster.url
- token__reply_content — Generate the output for token reply_content
- token__sender_url — Generate the output for token sender.url
- token__status_update — Generate the output for token status_update
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.