get_var( $wpdb->prepare( "SELECT id FROM $wpdb->pmpro_discount_codes WHERE code = %s LIMIT 1", $discount_code ) ); } else { $discount_code = ""; $discount_code_id = ""; } if ( ! empty( $_REQUEST['pmpro_level'] ) ) { $level_str = sanitize_text_field( $_REQUEST['pmpro_level'] ); $level_str = str_replace( ' ', '+', $level_str ); // If val passed via URL, + would be converted to space. $level_ids = array_map( 'intval', explode( '+', $level_str ) ); } else { $level_ids = null; } if(!empty($_REQUEST['msgfield'])) $msgfield = preg_replace("/[^A-Za-z0-9\_\-]/", "", sanitize_text_field( $_REQUEST['msgfield'] ) ); else $msgfield = NULL; //check that the code is valid $codecheck = pmpro_checkDiscountCode($discount_code, $level_ids, true); if( $codecheck[0] == false ) { //uh oh. show code error echo esc_html( $codecheck[1] ); ?> pmpro_discount_codes_levels cl LEFT JOIN $wpdb->pmpro_membership_levels l ON cl.level_id = l.id LEFT JOIN $wpdb->pmpro_discount_codes dc ON dc.id = cl.code_id WHERE dc.code = '" . esc_sql( $discount_code ) . "' AND cl.level_id IN (" . implode( ',', array_map( 'intval', $level_ids ) ) . ")"; $code_levels = $wpdb->get_results($sqlQuery); // ... and then get prices for the remaining levels. $levels_found = array(); foreach( $code_levels as $code_level ) { $levels_found[] = intval( $code_level->level_id ); } if ( ! empty( array_diff( $level_ids, $levels_found ) ) ) { $sqlQuery = "SELECT * FROM $wpdb->pmpro_membership_levels WHERE id IN (" . implode( ',', array_map( 'intval', array_diff( $level_ids, $levels_found ) ) ) . ")"; $code_levels = array_merge( $code_levels, $wpdb->get_results($sqlQuery) ); } //filter adjustments to the level if ( count( $code_levels ) <= 1 ) { // Should return just a single level object or null. $code_levels = array( apply_filters("pmpro_discount_code_level", empty( $code_levels ) ? null : $code_levels[0], $discount_code_id) ); } else { // Should return an array of levels objects. $code_levels = apply_filters("pmpro_discount_code_level", $code_levels, $discount_code_id); } printf( esc_html__( 'The %s code has been applied to your order.', 'paid-memberships-pro' ), '' . esc_html( $discount_code ) . '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $combined_level = null; foreach ( $code_levels as $code_level ) { if ( empty( $combined_level ) ) { $combined_level = clone $code_level; } else { $combined_level->initial_payment = $combined_level->initial_payment + $code_level->initial_payment; $combined_level->billing_amount = $combined_level->billing_amount + $code_level->billing_amount; } } ?>