From f901d5969b8b4216c01ef30da4340220ca1d1bb0 Mon Sep 17 00:00:00 2001 From: Franky Van Liedekerke Date: Tue, 20 Aug 2024 12:06:15 +0200 Subject: [PATCH] identical payment method selection for fs and others --- eme-events.php | 44 +++++++++++++++++++++----------------------- eme-functions.php | 1 + eme-members.php | 36 ++++++++++++++++-------------------- eme-payments.php | 40 ++++++++++++++++++---------------------- eme-rsvp.php | 8 +++++--- 5 files changed, 61 insertions(+), 68 deletions(-) diff --git a/eme-events.php b/eme-events.php index d0ef06b2..18e22866 100644 --- a/eme-events.php +++ b/eme-events.php @@ -143,14 +143,20 @@ function eme_init_event_props( $props = [] ) { $props['rsvp_password'] = ''; } - $payment_gateways = eme_payment_gateways(); - foreach ( array_keys($payment_gateways) as $pg ) { - // the properties for payment gateways alsways have "use_" in front of them, so add it - if ( ! isset( $props[ 'use_' . $pg ] ) ) { - $props[ 'use_' . $pg ] = 0; - } else { - $props[ 'use_' . $pg ] = intval( $props[ 'use_' . $pg ] ); + $payment_gateways = eme_get_configured_pgs(); + if (isset($props['payment_gateways'])) { + $props['payment_gateways'] = array_intersect($props['payment_gateways'],$payment_gateways); + } else { + $props['payment_gateways'] = []; + foreach ( $payment_gateways as $pg ) { + if ( ! empty( $props[ 'use_' . $pg ] ) ) + $props['payment_gateways'][] = $pg; + // remove old-style pg + if ( isset( $props[ 'use_' . $pg ] )) + unset( $props[ 'use_' . $pg ]); } + if ($new_event && count($payment_gateways) == 1 ) + $props['payment_gateways'] = [$payment_gateways[0]]; } if ( ! isset( $props['cancel_rsvp_days'] ) ) { @@ -8570,22 +8576,14 @@ function eme_meta_box_div_event_payment_methods( $event, $is_new_event ) { ?>

- '; - } - if ( empty( $configured_pgs ) ) { - esc_html_e( 'No payment methods configured yet. Go in the EME payment settings and configure some.', 'events-made-easy' ); - } - ?> +


diff --git a/eme-functions.php b/eme-functions.php index 34d8660d..1854fc46 100644 --- a/eme-functions.php +++ b/eme-functions.php @@ -4025,6 +4025,7 @@ function eme_get_configured_captchas() { return $captchas; } +// easy function that allows transition from old use_* properties for captcha to newer function eme_get_selected_captcha($properties) { $selected_captcha = ''; if (isset($properties['selected_captcha'])) diff --git a/eme-members.php b/eme-members.php index 3811fb2f..69f54c01 100644 --- a/eme-members.php +++ b/eme-members.php @@ -184,14 +184,20 @@ function eme_init_membership_props( $props = [] ) { $props[$opt]=intval($props[$opt]); } - $payment_gateways = eme_payment_gateways(); - foreach ( array_keys($payment_gateways) as $pg ) { - // the properties for payment gateways alsways have "use_" in front of them, so add it - if ( ! isset( $props[ 'use_' . $pg ] ) ) { - $props[ 'use_' . $pg ] = 0; - } else { - $props[ 'use_' . $pg ] = intval( $props[ 'use_' . $pg ] ); - } + $payment_gateways = eme_get_configured_pgs(); + if (isset($props['payment_gateways'])) { + $props['payment_gateways'] = array_intersect($props['payment_gateways'],$payment_gateways); + } else { + $props['payment_gateways'] = []; + foreach ( $payment_gateways as $pg ) { + if ( ! empty( $props[ 'use_' . $pg ] ) ) + $props['payment_gateways'][] = $pg; + // remove old-style pg + if ( isset( $props[ 'use_' . $pg ] )) + unset( $props[ 'use_' . $pg ]); + } + if ($new_membership && count($payment_gateways) == 1 ) + $props['payment_gateways'] = [$payment_gateways[0]]; } if ( ! isset( $props['new_subject_format'] ) ) { @@ -2159,22 +2165,12 @@ function eme_meta_box_div_membershipdetails( $membership, $is_new_membership ) { '; - $configured_pgs = eme_get_configured_pgs(); - $count_configured_pgs = count( $configured_pgs ); - $pg_descriptions = eme_payment_gateways(); - foreach ( $configured_pgs as $pg ) { - // if it is a new membership and there's only one pg configured, select it by default - if ( $is_new_membership && $count_configured_pgs == 1 ) { - $membership['properties'][ 'use_' . $pg ] = 1; - } - echo eme_ui_checkbox_binary( $membership['properties'][ 'use_' . $pg ], 'properties[use_' . $pg . ']', $pg_descriptions[$pg] ); - echo '
'; - } + echo eme_ui_multiselect( $membership['properties']['payment_gateways'], eme_get_field_name('properties','payment_gateways'), eme_configured_pgs_descriptions(), 5, '', 0, 'eme_select2_width50_class' ); + $configured_pgs = eme_get_configured_pgs(); if ( empty( $configured_pgs ) ) { esc_html_e( 'No payment methods configured yet. Go in the EME payment settings and configure some.', 'events-made-easy' ); } - ?>

diff --git a/eme-payments.php b/eme-payments.php index 90dc989e..bbbc48e9 100644 --- a/eme-payments.php +++ b/eme-payments.php @@ -221,9 +221,9 @@ function eme_event_payment_form( $payment_id, $resultcode = 0, $standalone = 0 ) } $ret_string .= "
"; - $pgs = eme_payment_gateways(); + $pgs = eme_configured_pgs_descriptions(); foreach ( $pgs as $pg => $value ) { - if ( $event['event_properties'][ 'use_' . $pg ] ) { + if ( isset($event['event_properties']['payment_gateways']) && in_array($pg, $event['event_properties']['payment_gateways']) ) { if ( eme_is_offline_pg( $pg ) ) { $eme_offline_format = get_option( 'eme_offline_payment' ); $result = eme_replace_booking_placeholders( $eme_offline_format, $event, $booking, $is_multi ); @@ -352,9 +352,9 @@ function eme_member_payment_form( $payment_id, $resultcode = 0, $standalone = 0 } $ret_string .= "
"; $is_multi = 0; - $pgs = eme_payment_gateways(); + $pgs = eme_configured_pgs_descriptions(); foreach ( $pgs as $pg => $value ) { - if ( $membership['properties'][ 'use_' . $pg ] ) { + if ( isset($membership['properties']['payment_gateways']) && in_array($pg, $membership['properties']['payment_gateways']) ) { if ( eme_is_offline_pg( $pg ) ) { if ( ! eme_is_empty_string( $membership['properties']['offline_payment_text'] ) ) { $eme_offline_format = $membership['properties']['offline_payment_text']; @@ -469,7 +469,7 @@ function eme_fs_event_payment_form( $payment_id, $resultcode = 0, $standalone = } $ret_string .= "
"; $is_multi = 0; - $pgs = eme_payment_gateways(); + $pgs = eme_configured_pgs_descriptions(); foreach ( $pgs as $pg => $value ) { if ( isset($eme_fs_options['payment_gateways']) && in_array($pg, $eme_fs_options['payment_gateways']) ) { if ( eme_is_offline_pg( $pg ) ) { @@ -3270,11 +3270,8 @@ function eme_event_can_pay_online( $event ) { return eme_event_has_pgs_configured( $event ); } function eme_event_has_pgs_configured( $event ) { - $pgs = eme_get_configured_pgs(); - foreach ( $pgs as $pg ) { - if ( $event['event_properties'][ 'use_' . $pg ] ) { - return 1; - } + if ( !empty($event['event_properties']['payment_gateways'] )) { + return 1; } return 0; } @@ -3282,24 +3279,21 @@ function eme_membership_can_pay_online( $membership ) { return eme_membership_has_pgs_configured( $membership ); } function eme_membership_has_pgs_configured( $membership ) { - $pgs = eme_get_configured_pgs(); - foreach ( $pgs as $pg ) { - if ( $membership['properties'][ 'use_' . $pg ] ) { - return 1; - } + if ( !empty($membership['properties']['payment_gateways'] )) { + return 1; } return 0; } function eme_event_count_pgs( $event ) { // count the payment gateways active for this event + if (empty($event['event_properties']['payment_gateways']) || !is_array($event['event_properties']['payment_gateways'])) + return 0; $pgs = eme_get_configured_pgs(); $pg_count = 0; foreach ( $pgs as $pg ) { - if ( $event['event_properties'][ 'use_' . $pg ] ) { - //if ($pg != "offline") { + if ( in_array($pg, $event['event_properties']['payment_gateways']) ) { ++$pg_count; - //} } } return $pg_count; @@ -3307,10 +3301,12 @@ function eme_event_count_pgs( $event ) { function eme_membership_count_pgs( $membership ) { // count the payment gateways active for this event + if (empty($membership['properties']['payment_gateways']) || !is_array($membership['properties']['payment_gateways'])) + return 0; $pgs = eme_get_configured_pgs(); $pg_count = 0; foreach ( $pgs as $pg ) { - if ( $membership['properties'][ 'use_' . $pg ] ) { + if ( in_array($pg, $membership['properties']['payment_gateways']) ) { ++$pg_count; } } @@ -3332,7 +3328,7 @@ function eme_fs_event_count_pgs( ) { function eme_event_get_first_pg( $event ) { $pgs = eme_get_configured_pgs(); foreach ( $pgs as $pg ) { - if ( $event['event_properties'][ 'use_' . $pg ] ) { + if ( !empty($event['event_properties']['payment_gateways']) && in_array($pg, $event['event_properties']['payment_gateways']) ) { return $pg; } } @@ -3342,7 +3338,7 @@ function eme_event_get_first_pg( $event ) { function eme_membership_get_first_pg( $membership ) { $pgs = eme_get_configured_pgs(); foreach ( $pgs as $pg => $value ) { - if ( $membership['properties'][ 'use_' . $pg ] ) { + if ( !empty($membership['properties']['payment_gateways']) && in_array($pg, $membership['properties']['payment_gateways']) ) { return $pg; } } @@ -3353,7 +3349,7 @@ function eme_fs_event_get_first_pg( ) { $eme_fs_options = get_option('eme_fs'); $pgs = eme_get_configured_pgs(); foreach ( $pgs as $pg => $value ) { - if ( isset($eme_fs_options['payment_gateways']) && in_array($pg, $eme_fs_options['payment_gateways']) ) { + if ( !empty($eme_fs_options['payment_gateways']) && in_array($pg, $eme_fs_options['payment_gateways']) ) { return $pg; } } diff --git a/eme-rsvp.php b/eme-rsvp.php index 509eedc4..718d4c61 100644 --- a/eme-rsvp.php +++ b/eme-rsvp.php @@ -955,7 +955,7 @@ function eme_add_bookings_ajax() { // let's decide for the first event wether or not payment is needed if ( $payment_id && eme_event_has_pgs_configured( $event ) && ! $event['event_properties']['skippaymentoptions'] && ! $event['event_properties']['require_user_confirmation'] ) { - if ( $event['event_properties']['use_captcha'] ) { + if ( $event['event_properties']['selected_captcha'] == "captcha" ) { eme_captcha_remove( $captcha_res ); } $total_price = eme_get_payment_price( $payment_id ); @@ -1049,7 +1049,7 @@ function eme_add_bookings_ajax() { } } } elseif ( $payment_id ) { - if ( $event['event_properties']['use_captcha'] ) { + if ( $event['event_properties']['selected_captcha'] == "captcha" ) { eme_captcha_remove( $captcha_res ); } // the booking is done, so if wanted let's indicate we want to show the form again @@ -1192,7 +1192,9 @@ function eme_cancel_bookings_ajax() { } else { $form_html = __( 'There are no bookings associated to this name and email', 'events-made-easy' ); } - eme_captcha_remove ( $captcha_res ); + if ( $event['event_properties']['selected_captcha'] == "captcha" ) { + eme_captcha_remove ( $captcha_res ); + } echo wp_json_encode( [ 'Result' => 'OK',