Skip to content

Commit d6a3711

Browse files
authored
UR-4695 Fix - Show upgrade prompt for Plus-gated membership group toggles on lower plans (#1357)
* UR-4695: show upgrade prompt for Plus-gated membership group toggles on lower plans * Fix PHP warnings on null post_content in membership list table and group services
1 parent ab72f51 commit d6a3711

4 files changed

Lines changed: 57 additions & 20 deletions

File tree

includes/functions-ur-core.php

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -439,17 +439,22 @@ function ur_help_tip( $tip, $allow_html = false, $classname = 'user-registration
439439
}
440440

441441
function ur_render_premium_feature_gate_template( $args = array() ) {
442-
if ( UR_PRO_ACTIVE ) {
443-
return;
444-
}
445-
446442
$args = wp_parse_args(
447443
$args,
448444
array(
449445
'template_id' => 'ur-pro-feature',
450446
'utm_source' => 'ur-membership-create',
447+
'plan_gated' => false,
448+
'title' => esc_html__( 'You have run into a premium feature, please upgrade to URM Pro', 'user-registration' ),
449+
'button_text' => esc_html__( 'Upgrade to Pro', 'user-registration' ),
451450
)
452451
);
452+
453+
// Render for free installs, or when a higher plan is required even though Pro is active.
454+
if ( UR_PRO_ACTIVE && empty( $args['plan_gated'] ) ) {
455+
return;
456+
}
457+
453458
if ( empty( $args['upgrade_url'] ) ) {
454459
$args['upgrade_url'] = 'https://wpuserregistration.com/upgrade/?utm_source=' . esc_attr( $args['utm_source'] ) . '&utm_medium=upgrade-link&utm-campaign=lite-version';
455460
}
@@ -463,30 +468,35 @@ function ur_render_premium_feature_gate_template( $args = array() ) {
463468
<template id="<?php echo esc_attr( $args['template_id'] ); ?>">
464469
<div class="ur-feature">
465470
<div class="ur-feature__title">
466-
<?php esc_html_e( 'You have run into a premium feature, please upgrade to URM Pro', 'user-registration' ); ?>
471+
<?php echo esc_html( $args['title'] ); ?>
467472
</div>
468473
<a class="ur-feature__btn" target="_blank" href="<?php echo esc_url( $args['upgrade_url'] ); ?>">
469474
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z"></path><path d="M5 21h14"></path></svg>
470-
<?php esc_html_e( 'Upgrade to Pro', 'user-registration' ); ?>
475+
<?php echo esc_html( $args['button_text'] ); ?>
471476
</a>
472477
</div>
473478
</template>
474479
<?php
475480
}
476481

477482
function ur_render_premium_feature_gate( $args = array() ) {
478-
if ( UR_PRO_ACTIVE ) {
479-
return;
480-
}
481-
482-
$args = wp_parse_args(
483+
$args = wp_parse_args(
483484
$args,
484485
array(
485486
'template_id' => 'ur-pro-feature',
486487
'utm_source' => 'ur-membership-create',
487488
'render_template' => true,
489+
'plan_gated' => false,
490+
'title' => esc_html__( 'You have run into a premium feature, please upgrade to URM Pro', 'user-registration' ),
491+
'button_text' => esc_html__( 'Upgrade to Pro', 'user-registration' ),
488492
)
489493
);
494+
495+
// Render for free installs, or when a higher plan is required even though Pro is active.
496+
if ( UR_PRO_ACTIVE && empty( $args['plan_gated'] ) ) {
497+
return;
498+
}
499+
490500
$args['upgrade_url'] = 'https://wpuserregistration.com/upgrade/?utm_source=' . esc_attr( $args['utm_source'] ) . '&utm_medium=upgrade-link&utm-campaign=lite-version';
491501

492502
if ( ! empty( $args['render_template'] ) ) {

modules/membership/includes/Admin/Membership/ListTable.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public function column_membership_price( $membership ) {
154154
*/
155155
public function column_status( $membership ) {
156156
$membership_content = json_decode( $membership->post_content, true );
157-
$enabled = $membership_content['status'] == 'true';
157+
$enabled = isset( $membership_content['status'] ) && 'true' == $membership_content['status'];
158158
$actions = '<div class="ur-status-toggle ur-d-flex ur-align-items-center visible" style="gap: 5px">';
159159
$actions .= '<div class="ur-toggle-section">';
160160
$actions .= '<span class="user-registration-toggle-form">';
@@ -180,9 +180,10 @@ class="ur-membership-change-status user-registration-switch__control hide-show-c
180180
*/
181181
public function column_membership_type( $membership ) {
182182
$data = json_decode( wp_unslash( $membership->post_content ), true );
183-
$status_class = ( 'free' == $data['type'] ? 'user-registration-badge user-registration-badge--success-subtle' : ( 'paid' == $data['type'] ? 'user-registration-badge user-registration-badge--secondary-subtle' : 'user-registration-badge user-registration-badge--danger-subtle' ) );
183+
$type = isset( $data['type'] ) ? $data['type'] : '';
184+
$status_class = ( 'free' == $type ? 'user-registration-badge user-registration-badge--success-subtle' : ( 'paid' == $type ? 'user-registration-badge user-registration-badge--secondary-subtle' : 'user-registration-badge user-registration-badge--danger-subtle' ) );
184185

185-
return sprintf( '<span class="%s">%s</span>', $status_class, esc_html( $data['type'] ) );
186+
return sprintf( '<span class="%s">%s</span>', $status_class, esc_html( $type ) );
186187
}
187188

188189
/**

modules/membership/includes/Admin/Services/MembershipService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ public function prepare_membership_data( $memberships ) {
272272
foreach ( $memberships as $key => $membership ) {
273273
$membership_post_content = json_decode( wp_unslash( $membership['post_content'] ), true );
274274

275-
if ( ! $membership_post_content['status'] ) {
275+
if ( empty( $membership_post_content ) || empty( $membership_post_content['status'] ) ) {
276276
unset( $memberships[ $key ] );
277277
continue;
278278
}

modules/membership/includes/Admin/Views/membership-groups-create.php

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class="ur-membership-tab-contents-wrapper ur-registered-from ur-align-items-cent
8787
<div id="ur-membership-group-create-form" class="user-registration-card">
8888
<div class="user-registration-card__body">
8989
<div id="ur-membership-main-fields">
90-
<!-- membership group name-->
90+
<!--membership group name-->
9191
<div class="ur-membership-input-container ur-d-flex ur-p-1" style="gap:20px;">
9292
<div class="ur-label" style="width: 62%">
9393
<label
@@ -165,7 +165,7 @@ class="user-membership-group-enhanced-select2 urmg-input"
165165
</div>
166166
</div>
167167
</div>
168-
<div class="ur-membership-input-container ur-d-flex ur-p-1 ur-mt-3 <?php echo ! UR_PRO_ACTIVE ? 'upgradable-type' : ''; ?>" style="gap:20px" >
168+
<div class="ur-membership-input-container ur-d-flex ur-p-1 ur-mt-3 <?php echo ( ! UR_PRO_ACTIVE || ! urm_check_if_plus_and_above_plan() ) ? 'upgradable-type' : ''; ?>" style="gap:20px" >
169169
<div class="ur-label" style="width: 62%;">
170170
<label class="ur-membership-group-enable-multiple-memberships"
171171
for="ur-membership-group-multiple-memberships">
@@ -186,15 +186,28 @@ class="user-registration-switch__control hide-show-check enabled urmg-input"
186186
<?php echo UR_PRO_ACTIVE && urm_check_if_plus_and_above_plan() ? '' : 'disabled'; ?>
187187
>
188188
<span class="slider round"></span>
189-
<?php ur_render_premium_feature_gate();?>
189+
<?php
190+
if ( ! UR_PRO_ACTIVE ) {
191+
ur_render_premium_feature_gate();
192+
} elseif ( ! urm_check_if_plus_and_above_plan() ) {
193+
ur_render_premium_feature_gate(
194+
array(
195+
'plan_gated' => true,
196+
'template_id' => 'ur-plan-feature-plus',
197+
'title' => esc_html__( 'This feature is available on the Plus plan and above. Upgrade your plan to unlock it.', 'user-registration' ),
198+
'button_text' => esc_html__( 'Upgrade Plan', 'user-registration' ),
199+
)
200+
);
201+
}
202+
?>
190203
</span>
191204
</div>
192205
</div>
193206
<?php
194207
$upgrade_style = ( ! isset( $membership_group['mode'] ) || ( isset( $membership_group['mode'] ) && ( empty( $membership_group['mode'] ) || 'upgrade' === $membership_group['mode'] ) ) ) ? '' : 'display:none;';
195208
?>
196209
<div class="ur-membership-enable-upgrade-container" style="<?php echo esc_attr( $upgrade_style ); ?>">
197-
<div class="ur-membership-input-container ur-d-flex ur-p-1 ur-mt-3 <?php echo ! UR_PRO_ACTIVE ? 'upgradable-type' : ''; ?>" style="gap:20px">
210+
<div class="ur-membership-input-container ur-d-flex ur-p-1 ur-mt-3 <?php echo ( ! UR_PRO_ACTIVE || ! urm_check_if_plus_and_above_plan() ) ? 'upgradable-type' : ''; ?>" style="gap:20px">
198211
<div class="ur-label" style="width: 62%;">
199212
<label class="ur-membership-group-enable-upgrade"
200213
for="ur-membership-group-upgrade"><?php esc_html_e( 'Upgrade action', 'user-registration' ); ?>
@@ -214,7 +227,20 @@ class="user-registration-switch__control hide-show-check enabled urmg-input"
214227
<?php echo UR_PRO_ACTIVE && urm_check_if_plus_and_above_plan() ? '' : 'disabled'; ?>
215228
>
216229
<span class="slider round"></span>
217-
<?php ur_render_premium_feature_gate(); ?>
230+
<?php
231+
if ( ! UR_PRO_ACTIVE ) {
232+
ur_render_premium_feature_gate();
233+
} elseif ( ! urm_check_if_plus_and_above_plan() ) {
234+
ur_render_premium_feature_gate(
235+
array(
236+
'plan_gated' => true,
237+
'template_id' => 'ur-plan-feature-plus',
238+
'title' => esc_html__( 'This feature is available on the Plus plan and above. Upgrade your plan to unlock it.', 'user-registration' ),
239+
'button_text' => esc_html__( 'Upgrade Plan', 'user-registration' ),
240+
)
241+
);
242+
}
243+
?>
218244
</span>
219245
</div>
220246
</div>

0 commit comments

Comments
 (0)