# better-payment/0.0.1/includes/class-betterpayment-handler.php

Better Payment – Instant Payments, Donations, Fundraising with Subscriptions &amp; More, version 0.0.1. 529 lines.

- Page: https://pluginprobe.com/plugins/better-payment/0.0.1/code/includes/class-betterpayment-handler.php
- Raw: https://pluginprobe.com/plugins/better-payment/0.0.1/raw/includes/class-betterpayment-handler.php
- Modified: 2021-10-26T08:44:38+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/better-payment/0.0.1/code/includes/class-betterpayment-handler.php#L10-L20`.

```php
<?php
defined( 'ABSPATH' ) || exit();

class BetterPayment_Handler {

    public static function paypal_button( $widget_id = '' , $settings = [] ) {
        global $wp;
        $return_url = add_query_arg( $wp->query_vars, get_the_permalink() . '?betterpayment_paypal_status=success&betterpayment_widget_id=' . $widget_id );
        $cancel_url = add_query_arg( $wp->query_vars, get_the_permalink() . '?betterpayment_error_status=error&betterpayment_widget_id=' . $widget_id );
        ob_start();
        $error_info = [
             'business_email' => !empty($settings['betterpayment_paypal_business_email'])
        ];

        ?>
        <input type="hidden" name="return" value="<?php echo esc_url( $return_url ); ?>">
        <input type="hidden" name="action" value="paypal_form_handle">
        <input type="hidden" name="security" value="<?php echo wp_create_nonce( 'betterpayment-paypal' ); ?>">
        <input type="hidden" name="cancel_return" value="<?php echo esc_url( $cancel_url ); ?>">
        <button data-paypal-info = <?php echo esc_attr(json_encode( $error_info) ) ; ?> class="button1 betterpayment-paypal-bt"><?php _e( 'PayPal', 'better-payment' ); ?></button>
        <?php
        echo ob_get_clean();
    }

    public static function stripe_button() {
        ?>
        <button class="button1 betterpayment-stripe-bt"><?php _e( 'Stripe', 'better-payment' ); ?></button>
        <?php
    }

    public static function payment_create( $data ) {
        global $wpdb;
        $table = "{$wpdb->prefix}betterpayment";
        $wpdb->insert( $table, $data );
        if ( $wpdb->insert_id ) {
            return $wpdb->insert_id;
        } else {
            return false;
        }
    }

    public static function manage_response( $settings = [] ) {
        $status = false;

        if ( !empty( $_REQUEST[ 'betterpayment_error_status' ] ) ) {
            self::failed_message_template( $settings );
            return $status;
        }

        if ( !empty( $_REQUEST[ 'betterpayment_paypal_status' ] ) && $_REQUEST[ 'betterpayment_paypal_status' ] == 'success' ) {
            $status = self::paypal_payment_success( $settings );
        } elseif ( !empty( $_REQUEST[ 'betterpayment_stripe_status' ] ) && $_REQUEST[ 'betterpayment_stripe_status' ] == 'success' ) {
            $status = self::stripe_payment_success( $settings );
        }

        if ( $status ) {
            self::success_message_template( $settings, $status );
        }
        self::remove_arg();

        return $status;
    }

    public static function paypal_payment_success( $settings = [] ) {
        $data = $_REQUEST;
        
        if ( !empty( $data[ 'payment_status' ] ) && !empty( $data[ 'payer_id' ] ) && !empty( $data[ 'payer_status' ] ) ) {
            global $wpdb;
            $table   = "{$wpdb->prefix}betterpayment";
            $results = $wpdb->get_row(
                $wpdb->prepare( "SELECT id,form_fields_info,referer FROM $table WHERE order_id=%s and status is NULL limit 1", sanitize_text_field( $_REQUEST[ 'item_number' ] ) )
            );
            if ( !empty( $results->id ) ) {
                $updated = $wpdb->update(
                    $table,
                    array(
                        'transaction_id' => sanitize_text_field( $data[ 'txn_id' ] ),
                        'status'         => sanitize_text_field( $data[ 'payment_status' ] ),
                        'email'          => sanitize_email( $data[ 'payer_email' ] ),
                        'customer_info'  => maybe_serialize( $data ),
                    ),
                    array( 'ID' => $results->id )
                );
                if ( false !== $updated ) {
                    //Send email notification
                    if ( 
                        ( isset($settings[ 'betterpayment_form_email_enable' ]) && $settings[ 'betterpayment_form_email_enable' ] == 'yes' ) 
                        || ( $results->referer === 'elementor-form' )
                        ) {
                        self::better_email_notification(sanitize_text_field( $data[ 'txn_id' ] ), sanitize_email( $data[ 'payer_email' ] ), $settings, 'PayPal', $results->form_fields_info);
                    }

                    return sanitize_text_field( $data[ 'txn_id' ] );
                }
            }
        }else if($data['betterpayment_paypal_status'] === 'success'){
            return ( isset($data[ 'txn_id' ]) && !empty( sanitize_text_field( $data[ 'txn_id' ] ) ) ) ? sanitize_text_field( $data[ 'txn_id' ] ) : __('Payment under processing!', 'better-payment');
        }
        return false;
    }

    public static function stripe_payment_success( $settings = [] ) {

        $data = $_REQUEST;

        if ( !empty( $data[ 'betterpayment_stripe_id' ] ) ) {
            global $wpdb;
            $table   = "{$wpdb->prefix}betterpayment";
            $results = $wpdb->get_row(
                $wpdb->prepare( "SELECT id,obj_id,transaction_id,form_fields_info,referer FROM $table WHERE order_id=%s and status = 'unpaid' limit 1", sanitize_text_field( $data[ 'betterpayment_stripe_id' ] ) )
            );
            if ( !empty( $results->obj_id ) ) {

                $header = array(
                    'Authorization'  => 'Basic ' . base64_encode( 'sk_test_w3EkC2jHywBiypu6a3jYutgZ:' ),
                    'Stripe-Version' => '2019-05-16',
                );

                $request = [
                    'expand' => [
                        'subscription.latest_invoice.payment_intent',
                        'payment_intent'
                    ]
                ];

                $response = wp_safe_remote_post(
                    'https://api.stripe.com/v1/checkout/sessions/' . $results->obj_id,
                    array(
                        'method'  => 'GET',
                        'headers' => $header,
                        'timeout' => 70,
                        'body'    => $request
                    )
                );

                if ( is_wp_error( $response ) || empty( $response[ 'body' ] ) ) {
                    return new WP_Error( 'stripe_error', __( 'There was a problem connecting to the Stripe API endpoint.', 'better-payment' ) );
                }

                $response = json_decode( $response[ 'body' ] );

                $updated = $wpdb->update(
                    $table,
                    array(
                        'status'        => sanitize_text_field( $response->payment_status ),
                        'email'         => sanitize_email( current( $response->payment_intent->charges->data )->billing_details->email ),
                        'customer_info' => maybe_serialize( $response ),
                    ),
                    array( 'ID' => $results->id )
                );

                if ( false !== $updated ) {
                    //Send email notification
                    $better_customer_email = sanitize_email( current( $response->payment_intent->charges->data )->billing_details->email );
                    if ( 
                        (isset($settings[ 'betterpayment_form_email_enable' ]) && $settings[ 'betterpayment_form_email_enable' ] == 'yes' ) 
                        || ( $results->referer === 'elementor-form' )
                        ) {
                        self::better_email_notification($results->transaction_id, $better_customer_email, $settings, 'Stripe', $results->form_fields_info);                    
                    }

                    return $results->transaction_id;
                }
            }
        }
        return false;
    }

    public static function get_currency_symbols( $currency = 'USD' ) {
        $list = [
            'AUD' => "$",
            'CAD' => "$",
            'CZK' => "Kč",
            'DKK' => "kr",
            'EUR' => "€",
            'HKD' => "$",
            'HUF' => "ft",
            'ILS' => "₪",
            'JPY' => "¥",
            'MXN' => "$",
            'NOK' => "kr",
            'NZD' => "$",
            'PHP' => "₱",
            'PLN' => "zł",
            'GBP' => "£",
            'RUB' => "₽",
            'SGD' => "$",
            'SEK' => "kr",
            'CHF' => "CHF",
            'TWD' => "$",
            'THB' => "฿",
            'TRY' => "₺",
            'USD' => "$",
        ];
        return !empty( $list[ $currency ] ) ? $list[ $currency ] : '$';
    }

    public static function success_message_template( $settings = [], $tr_id = '' ) {
        if ( empty( $tr_id ) ) {
            return false;
        }
        $image_url = WPBP_PLUGIN_URL . 'asset/img/success.svg';
        $show_icon = 0;

        if ( !empty( $settings[ 'betterpayment_form_success_message_icon' ][ 'library' ] ) ) {
            if ( $settings[ 'betterpayment_form_success_message_icon' ][ 'library' ] == 'svg' ) {
                $image_url = $settings[ 'betterpayment_form_success_message_icon' ][ 'value' ][ 'url' ];
            } else {
                $show_icon = 1;
                $image_url = $settings[ 'betterpayment_form_success_message_icon' ][ 'value' ];
            }
        }
        ?>
        <div class="pt140 pb140 background__grey2">
            <div class="betterpayment-payment__report betterpayment-success-report">
                <div class="report__thumb">
                    <?php if($show_icon) : ?>
                        <i class="<?php echo esc_attr($image_url); ?>"></i>
                    <?php else : ?>    
                        <img src="<?php echo esc_url($image_url); ?>" alt="">
                    <?php endif; ?>
                </div>
                <div class="report__content">
                    <h3 class="transaction__success"><?php echo ( isset( $settings[ 'betterpayment_form_success_message_heading' ] ) ) ? esc_html( $settings[ 'betterpayment_form_success_message_heading' ] ) : __( 'Payment Complete', 'better-payment' ); ?> </h3>
                    <p class="transaction__number"><?php printf( "%s : %s", ( isset( $settings[ 'betterpayment_form_success_message_transaction' ] ) ) ? esc_html( $settings[ 'betterpayment_form_success_message_transaction' ] ) : __( 'Transaction Number', 'better-payment' ), $tr_id );; ?></p>
                    <p class="payment__greeting"><?php echo ( isset( $settings[ 'betterpayment_form_success_message_thanks' ] ) ) ? esc_html( $settings[ 'betterpayment_form_success_message_thanks' ] ) : __( 'Thank you for donation.', 'better-payment' ); ?></p>
                </div>
            </div>
        </div>
        <?php
    }


    public static function failed_message_template( $settings = [] ) {

        $image_url = WPBP_PLUGIN_URL . 'asset/img/fail.svg';
        $show_icon = 0;

        if ( !empty( $settings[ 'betterpayment_form_error_message_icon' ][ 'library' ] ) ) {
            if ( $settings[ 'betterpayment_form_error_message_icon' ][ 'library' ] == 'svg' ) {
                $image_url = $settings[ 'betterpayment_form_error_message_icon' ][ 'value' ][ 'url' ];
            } else {
                $show_icon = 1;
                $image_url = $settings[ 'betterpayment_form_error_message_icon' ][ 'value' ];
            }
        }
        ?>
        <div class="pb140 background__grey2">
            <div class="betterpayment-payment__report betterpayment-error-report">
                <div class="report__thumb">
                    <?php if($show_icon) : ?>
                        <i class="<?php echo esc_attr($image_url); ?>"></i>
                    <?php else : ?>    
                        <img src="<?php echo esc_url($image_url); ?>" alt="">
                    <?php endif; ?>
                </div>
                <div class="report__content">
                    <h3 class="transaction__failed"><?php echo ( isset( $settings[ 'betterpayment_form_error_message_heading' ] ) ) ? esc_html( $settings[ 'betterpayment_form_error_message_heading' ] ) : __( 'Payment Failed', 'better-payment' ); ?></h3>
                </div>
            </div>
        </div>
        <?php
    }

    public static function remove_arg() {
        ?>
        <script>

            const params = new URLSearchParams(location.search);
            if (params.has('betterpayment_paypal_status') || params.has('betterpayment_stripe_status')) {
                params.delete('betterpayment_paypal_status');
                params.delete('betterpayment_stripe_status');
                params.delete('betterpayment_widget_id');
                params.delete('betterpayment_stripe_id');
                window.history.replaceState({}, '', `${location.pathname}?${params}`);
            }
        </script>
        <?php
    }

    public static function better_email_notification($transaction_id, $customer_email, $settings, $referrer='Stripe', $form_fields_info=''){
        //Send Email: customer and admin
        $better_txn_id = sanitize_text_field( $transaction_id );
        $better_cus_email = sanitize_email( $customer_email );
        $betterpayment_global_settings = BetterPayment_DB::get_settings();

        $betterpayment_email_to = !empty($betterpayment_global_settings['betterpayment_settings_general_email_to']) ? $betterpayment_global_settings['betterpayment_settings_general_email_to'] : get_option( 'admin_email' );
        $betterpayment_email_subject = !empty($betterpayment_global_settings['betterpayment_settings_general_email_subject']) ? $betterpayment_global_settings['betterpayment_settings_general_email_subject'] :  __('BetterPayment Transaction', 'better-payment');
        $betterpayment_email_content = !empty($betterpayment_global_settings['betterpayment_settings_general_email_message_admin']) ? $betterpayment_global_settings['betterpayment_settings_general_email_message_admin'] : '';
        $betterpayment_email_from = !empty($betterpayment_global_settings['betterpayment_settings_general_email_from_email']) ? $betterpayment_global_settings['betterpayment_settings_general_email_from_email'] : '';
        $betterpayment_email_from_name = !empty($betterpayment_global_settings['betterpayment_settings_general_email_from_name']) ? $betterpayment_global_settings['betterpayment_settings_general_email_from_name'] : '';
        $betterpayment_email_reply_to = !empty($betterpayment_global_settings['betterpayment_settings_general_email_reply_to']) ? $betterpayment_global_settings['betterpayment_settings_general_email_reply_to'] : '';
        $betterpayment_email_cc = !empty($betterpayment_global_settings['betterpayment_settings_general_email_cc']) ? $betterpayment_global_settings['betterpayment_settings_general_email_cc'] : '';
        $betterpayment_email_bcc = !empty($betterpayment_global_settings['betterpayment_settings_general_email_bcc']) ? $betterpayment_global_settings['betterpayment_settings_general_email_bcc'] : '';
        $betterpayment_email_content_type = !empty($betterpayment_global_settings['betterpayment_settings_general_email_send_as']) ? $betterpayment_global_settings['betterpayment_settings_general_email_send_as'] : 'html';
        
        $betterpayment_email_subject_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_subject_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_subject_customer'] : __('BetterPayment Transaction', 'better-payment');
        $betterpayment_email_content_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_message_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_message_customer'] : '';
        $betterpayment_email_from_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_from_email_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_from_email_customer'] : '';
        $betterpayment_email_from_name_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_from_name_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_from_name_customer'] : '';
        $betterpayment_email_reply_to_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_reply_to_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_reply_to_customer'] : '';
        $betterpayment_email_cc_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_cc_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_cc_customer'] : '';
        $betterpayment_email_bcc_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_bcc_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_bcc_customer'] : '';
        $betterpayment_email_content_type_customer = !empty($betterpayment_global_settings['betterpayment_settings_general_email_send_as_customer']) ? $betterpayment_global_settings['betterpayment_settings_general_email_send_as_customer'] : 'html';

        if(isset($settings['betterpayment_email_to'])){
            $betterpayment_email_to = sanitize_email($settings['betterpayment_email_to']);
        }

        if(isset($settings['betterpayment_email_subject'])){
            $betterpayment_email_subject = sanitize_text_field($settings['betterpayment_email_subject']);
        }

        if(isset($settings['betterpayment_email_subject_customer'])){
            $betterpayment_email_subject_customer = sanitize_text_field($settings['betterpayment_email_subject_customer']);
        }

        if(isset($settings['betterpayment_email_content_type'])){
            $betterpayment_email_content_type = sanitize_text_field($settings['betterpayment_email_content_type']);
        }
        
        if(isset($settings['betterpayment_email_content_type_customer'])){
            $betterpayment_email_content_type_customer = sanitize_text_field($settings['betterpayment_email_content_type_customer']);
        }

		$line_break = $betterpayment_email_content_type == 'html' ? '<br>' : "\n";
		$line_break_customer = $betterpayment_email_content_type_customer == 'html' ? '<br>' : "\n";

        if(isset($settings['betterpayment_email_content'])){
            $betterpayment_email_content = sanitize_text_field($settings['betterpayment_email_content']);
            $betterpayment_email_content = self::better_render_email_body( $betterpayment_email_content, $form_fields_info, $line_break );
        } else if ( !empty($betterpayment_email_content) ){
            $betterpayment_email_content = self::better_render_email_body( $betterpayment_email_content, $form_fields_info, $line_break );
        }

        if(isset($settings['betterpayment_email_content_customer'])){
            $betterpayment_email_content_customer = sanitize_text_field($settings['betterpayment_email_content_customer']);
            $betterpayment_email_content_customer = self::better_render_email_body( $betterpayment_email_content_customer, $form_fields_info, $line_break_customer, 'customer' );
        } else if ( !empty($betterpayment_email_content_customer) ){
            $betterpayment_email_content_customer = self::better_render_email_body( $betterpayment_email_content_customer, $form_fields_info, $line_break, 'customer' ); //$line_break_customer not used : need to check type on parent method and add headers accordingly.
        }

        if(isset($settings['betterpayment_email_from'])){
            $betterpayment_email_from = sanitize_email($settings['betterpayment_email_from']);
        }

        if(isset($settings['betterpayment_email_from_name'])){
            $betterpayment_email_from_name = sanitize_text_field($settings['betterpayment_email_from_name']);
        }

        if(isset($settings['betterpayment_email_reply_to'])){
            $betterpayment_email_reply_to = sanitize_email($settings['betterpayment_email_reply_to']);
        }

        if(isset($settings['betterpayment_email_cc'])){
            $betterpayment_email_cc = sanitize_email($settings['betterpayment_email_cc']);
        }

        if(isset($settings['betterpayment_email_bcc'])){
            $betterpayment_email_bcc = sanitize_email($settings['betterpayment_email_bcc']);
        }

        //Customer Email
        if(isset($settings['betterpayment_email_from_customer'])){
            $betterpayment_email_from_customer = sanitize_email($settings['betterpayment_email_from_customer']);
        }

        if(isset($settings['betterpayment_email_from_name_customer'])){
            $betterpayment_email_from_name_customer = sanitize_text_field($settings['betterpayment_email_from_name_customer']);
        }

        if(isset($settings['betterpayment_email_reply_to_customer'])){
            $betterpayment_email_reply_to_customer = sanitize_email($settings['betterpayment_email_reply_to_customer']);
        }

        if(isset($settings['betterpayment_email_cc_customer'])){
            $betterpayment_email_cc_customer = sanitize_email($settings['betterpayment_email_cc_customer']);
        }

        if(isset($settings['betterpayment_email_bcc_customer'])){
            $betterpayment_email_bcc_customer = sanitize_email($settings['betterpayment_email_bcc_customer']);
        }

        if($betterpayment_email_content == ''){
            $betterpayment_email_content = __('New betterpayment transaction! ', 'better-payment');
        }

        if($betterpayment_email_content_customer == ''){
            $betterpayment_email_content_customer = __('New betterpayment transaction! ', 'better-payment');
        }

        $betterpayment_email_headers = [];
        $betterpayment_email_headers_customer = [];

        if($betterpayment_email_content_type == 'html'){
            $betterpayment_email_headers[] = 'Content-Type: text/html; charset=UTF-8';
            $betterpayment_email_headers_customer[] = 'Content-Type: text/html; charset=UTF-8';
        }

        if($betterpayment_email_from != ''){
            $betterpayment_email_headers[] = "From: $betterpayment_email_from_name <$betterpayment_email_from>";
        }

        if($betterpayment_email_cc != ''){
            $betterpayment_email_headers[] = "Cc: <$betterpayment_email_cc>";
        }

        if($betterpayment_email_bcc != ''){
            $betterpayment_email_headers[] = "BCc: $betterpayment_email_bcc";
        }

        if($betterpayment_email_reply_to != ''){
           $betterpayment_email_headers[] = "Reply-To: $betterpayment_email_reply_to";
        }

        //Customer Email
        if($betterpayment_email_from_customer != ''){
            $betterpayment_email_headers_customer[] = "From: $betterpayment_email_from_name_customer <$betterpayment_email_from_customer>";
        }

        if($betterpayment_email_cc_customer != ''){
            $betterpayment_email_headers_customer[] = "Cc: <$betterpayment_email_cc_customer>";
        }

        if($betterpayment_email_bcc_customer != ''){
            $betterpayment_email_headers_customer[] = "BCc: $betterpayment_email_bcc_customer";
        }

        if($betterpayment_email_reply_to_customer != ''){
           $betterpayment_email_headers_customer[] = "Reply-To: $betterpayment_email_reply_to_customer";
        }

        self::send_better_email($better_cus_email, $betterpayment_email_subject_customer, $betterpayment_email_content_customer, $betterpayment_email_headers_customer); //customer mail
        self::send_better_email($betterpayment_email_to, $betterpayment_email_subject, $betterpayment_email_content, $betterpayment_email_headers); //admin mail
    }

    /**
     * Sends an HTML email.
     *
     * @since  1.0.0
     *
     * @param string $to
     * @param string $subject
     * @param array  $message
     *
     * @return bool false indicates mail sending failed while true doesn't gurantee that mail sent.
     * true just indicate script processed successfully without any errors. 
     * Ref: https://developer.wordpress.org/reference/functions/wp_mail/
     */
    public static function send_better_email( $to, $subject, $message, $headers=[]) {
        $response = false;

        $mailValidated = filter_var($to, FILTER_VALIDATE_EMAIL);

        if ($mailValidated) {
            $response = wp_mail( $to, $subject, $message, $headers );
        }

        return $response;
    }

    public static function better_render_email_body( $email_body, $form_fields_info, $line_break, $type = 'admin' ) {
		$is_empty_email_body = empty($email_body);

        $email_body = do_shortcode( $email_body );
        $bp_form_fields_html_content = $email_body;
        
        $bp_all_fields_shortcode = 'bp-all-fields';
        $referer_content_page_link = '#';
		
        $field_text = __('Field', 'better-payment');
        $value_text = __('Field', 'better-payment');

        $bp_form_fields_html_header = '<table style="margin-bottom: 20px; font-size: 14px; border-collapse: collapse; width: 100%;">
        <tr style="background-color: #6E58F7; color: #fff;">
            <td style="padding: 10px; border-left: 1px solid #6E58F7; border-right: 1px solid rgba(161, 161, 161, 0.5);">
            '.$field_text.'
            </th>
            <td style="padding: 10px; border-left: 1px solid rgba(161, 161, 161, 0.5); border-right: 1px solid #6E58F7;">
            '.$value_text.'
            </th>
        </tr>';

        $bp_form_fields_html_footer = "</table>";

        if ( false !== strpos( $email_body, $bp_all_fields_shortcode ) ) {
			$content = ''. $line_break;
            $form_fields_info_arr = maybe_unserialize($form_fields_info);
			
            foreach ( $form_fields_info_arr as $key => $field ) {
                //Hide few fields
                if($key === 'referer_page_id' || $key === 'referer_widget_id' || $key === 'source' || $key === 'el_form_fields') {
                    if($key === 'referer_page_id'){
                        $referer_content_page_link = !empty($field) ? get_permalink( $field ) : $referer_content_page_link;
                    }

                    continue;
                }

                $key_formatted = self::better_title_case($key);
                $content .= "<tr>
                                <td style='padding: 7px; border: 1px solid rgba(161, 161, 161, 0.1);'> $key_formatted </td>
                                <td style='padding: 7px; border: 1px solid rgba(0, 0, 0, .1);'> $field </td>
                            </tr>";
			}

            $bp_form_fields_html_body = $content;
            $bp_form_fields_html_content = $bp_form_fields_html_header . $bp_form_fields_html_body . $bp_form_fields_html_footer ;

            //Replace shortcode with form fields info
			$email_body = str_replace( "[$bp_all_fields_shortcode]", $bp_form_fields_html_content, $email_body );
		}

        ob_start();
		include WPBP_ADMIN_VIEW_PATH . "template-email-notification.php";
        $email_body = ob_get_contents();
        ob_end_clean();

		return $email_body;
	}

    public static function better_title_case($string){
        $string = str_replace('_',' ', $string);
        $string = ucwords($string);
        return $string;
    }

}

```
