-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix/setup wizard enhancements #3454 #2467
Changes from 7 commits
8ae1621
8764185
803288f
2fbfec3
2660b74
d67d6f7
e35a0c3
ea8cc75
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,7 @@ | |
class SetupWizard { | ||
|
||
/** @var string Currenct Step */ | ||
protected $step = ''; | ||
protected string $current_step = ''; | ||
|
||
/** @var array Steps for the setup wizard */ | ||
protected $steps = []; | ||
|
@@ -266,10 +266,10 @@ public function setup_wizard() { | |
unset( $this->steps['recommended'] ); | ||
} | ||
|
||
$this->step = current( array_keys( $this->steps ) ); | ||
$this->current_step = current( array_keys( $this->steps ) ); | ||
// get step from url | ||
if ( isset( $_GET['_admin_sw_nonce'], $_GET['step'] ) && wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_admin_sw_nonce'] ) ), 'dokan_admin_setup_wizard_nonce' ) ) { | ||
$this->step = sanitize_key( wp_unslash( $_GET['step'] ) ); | ||
$this->current_step = sanitize_key( wp_unslash( $_GET['step'] ) ); | ||
} | ||
|
||
$this->enqueue_scripts(); | ||
|
@@ -278,8 +278,8 @@ public function setup_wizard() { | |
isset( $_POST['_wpnonce'], $_POST['save_step'] ) | ||
&& wp_verify_nonce( sanitize_key( wp_unslash( $_POST['_wpnonce'] ) ), 'dokan-setup' ) | ||
&& ! empty( $_POST['save_step'] ) | ||
&& isset( $this->steps[ $this->step ]['handler'] ) ) { | ||
call_user_func_array( $this->steps[ $this->step ]['handler'], [ $this ] ); | ||
&& isset( $this->steps[ $this->current_step ]['handler'] ) ) { | ||
call_user_func_array( $this->steps[ $this->current_step ]['handler'], [ $this ] ); | ||
} | ||
|
||
ob_start(); | ||
|
@@ -292,7 +292,7 @@ public function get_next_step_link() { | |
|
||
return add_query_arg( | ||
[ | ||
'step' => $keys[ array_search( $this->step, array_keys( $this->steps ), true ) + 1 ], | ||
'step' => $keys[ array_search( $this->current_step, array_keys( $this->steps ), true ) + 1 ], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ensure Array Index Exists When Navigating Steps In the Apply this diff to fix the issue: $keys = array_keys( $this->steps );
$current_index = array_search( $this->current_step, $keys, true );
+ if ( false !== $current_index && isset( $keys[ $current_index + 1 ] ) ) {
$next_step = $keys[ $current_index + 1 ];
+ } else {
+ $next_step = '';
+ }
return add_query_arg(
[
'step' => $next_step,
'_admin_sw_nonce' => wp_create_nonce( 'dokan_admin_setup_wizard_nonce' ),
]
);
|
||
'_admin_sw_nonce' => wp_create_nonce( 'dokan_admin_setup_wizard_nonce' ), | ||
] | ||
); | ||
|
@@ -328,7 +328,7 @@ public function setup_wizard_header() { | |
*/ | ||
public function setup_wizard_footer() { | ||
?> | ||
<?php if ( 'next_steps' === $this->step ) : ?> | ||
<?php if ( 'next_steps' === $this->current_step ) : ?> | ||
<a class="wc-return-to-dashboard" href="<?php echo esc_url( admin_url() ); ?>"><?php esc_html_e( 'Return to the WordPress Dashboard', 'dokan-lite' ); ?></a> | ||
<?php endif; ?> | ||
</body> | ||
|
@@ -347,9 +347,9 @@ public function setup_wizard_steps() { | |
<?php foreach ( $ouput_steps as $step_key => $step ) : ?> | ||
<li class=" | ||
<?php | ||
if ( $step_key === $this->step ) { | ||
if ( $step_key === $this->current_step ) { | ||
echo 'active'; | ||
} elseif ( array_search( $this->step, array_keys( $this->steps ), true ) > array_search( $step_key, array_keys( $this->steps ), true ) ) { | ||
} elseif ( array_search( $this->current_step, array_keys( $this->steps ), true ) > array_search( $step_key, array_keys( $this->steps ), true ) ) { | ||
echo 'done'; | ||
} | ||
?> | ||
|
@@ -363,13 +363,13 @@ public function setup_wizard_steps() { | |
* Output the content for the current step. | ||
*/ | ||
public function setup_wizard_content() { | ||
if ( empty( $this->steps[ $this->step ]['view'] ) ) { | ||
if ( empty( $this->steps[ $this->current_step ]['view'] ) ) { | ||
wp_safe_redirect( esc_url_raw( add_query_arg( 'step', 'introduction' ) ) ); | ||
exit; | ||
} | ||
|
||
echo '<div class="wc-setup-content">'; | ||
call_user_func( $this->steps[ $this->step ]['view'] ); | ||
call_user_func( $this->steps[ $this->current_step ]['view'] ); | ||
echo '</div>'; | ||
} | ||
|
||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -9,8 +9,8 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Seller setup wizard class | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class SetupWizard extends DokanSetupWizard { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** @var string Currenct Step */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protected $step = ''; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** @var string Current Step */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protected string $current_step = ''; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Confirm PHP Version Compatibility for Typed Properties The use of typed properties ( |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** @var array Steps for the setup wizard */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protected $steps = []; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -36,7 +36,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// define the woocommerce_registration_redirect callback | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public function filter_woocommerce_registration_redirect( $var ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check warning on line 39 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check warning on line 39 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$url = $var; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$user = wp_get_current_user(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -73,39 +73,25 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->store_id = dokan_get_current_user_id(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->store_info = dokan_get_store_info( $this->store_id ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$steps = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'introduction' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Introduction', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_introduction' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => '', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'store' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Store', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_store' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => [ $this, 'dokan_setup_store_save' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'payment' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Payment', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_payment' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => [ $this, 'dokan_setup_payment_save' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'next_steps' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Ready!', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_ready' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => '', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Setup wizard steps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->set_steps(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->steps = apply_filters( 'dokan_seller_wizard_steps', $steps ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->step = current( array_keys( $this->steps ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// If payment step is accessed but no active methods exist, redirect to next step | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( isset( $_GET['step'] ) && 'payment' === $_GET['step'] ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$active_methods = dokan_withdraw_get_active_methods(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( empty( $active_methods ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
wp_safe_redirect( esc_url_raw( $this->get_next_step_link() ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
exit; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// get step from url | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( isset( $_GET['_admin_sw_nonce'], $_GET['step'] ) && wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_admin_sw_nonce'] ) ), 'dokan_admin_setup_wizard_nonce' ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->step = sanitize_key( wp_unslash( $_GET['step'] ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->current_step = sanitize_key( wp_unslash( $_GET['step'] ) ) ?? current( array_keys( $this->steps ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->step ]['handler'] ) ) { // WPCS: CSRF ok. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
call_user_func( $this->steps[ $this->step ]['handler'] ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->current_step ]['handler'] ) ) { // WPCS: CSRF ok. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
call_user_func( $this->steps[ $this->current_step ]['handler'] ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->enqueue_scripts(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -166,7 +152,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public function setup_wizard_footer() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php if ( 'next_steps' === $this->step ) : ?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php if ( 'next_steps' === $this->current_step ) : ?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<a class="wc-return-to-dashboard" href="<?php echo esc_url( site_url() ); ?>"><?php esc_attr_e( 'Return to the Marketplace', 'dokan-lite' ); ?></a> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php endif; ?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</body> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -179,7 +165,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public function dokan_setup_introduction() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$dashboard_url = dokan_get_navigation_url(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$default_message = wp_kses_post( __( '<p>Thank you for choosing The Marketplace to power your online store! This quick setup wizard will help you configure the basic settings. <strong>It’s completely optional and shouldn’t take longer than two minutes.</strong></p>', 'dokan-lite' ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check warning on line 168 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check warning on line 168 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check warning on line 168 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$setup_wizard_message = dokan_get_option( 'setup_wizard_message', 'dokan_general', $default_message ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<h1><?php esc_attr_e( 'Welcome to the Marketplace!', 'dokan-lite' ); ?></h1> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -230,7 +216,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input type="text" id="address[street_1]" name="address[street_1]" value="<?php echo esc_attr( $address_street1 ); ?>"/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[street_1]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 219 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 219 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -247,7 +233,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input type="text" id="address[street_2]" name="address[street_2]" value="<?php echo esc_attr( $address_street2 ); ?>"/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[street_2]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 236 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 236 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -265,7 +251,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input type="text" id="address[city]" name="address[city]" value="<?php echo esc_attr( $address_city ); ?>"/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[city]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 254 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 254 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -282,7 +268,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input type="text" id="address[zip]" name="address[zip]" value="<?php echo esc_attr( $address_zip ); ?>"/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[zip]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 271 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 271 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -301,7 +287,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</select> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[country]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 290 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 290 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -319,7 +305,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<input type="text" id="calc_shipping_state" name="address[state]" value="<?php echo esc_attr( $address_state ); ?>" / placeholder="<?php esc_attr_e( 'State Name', 'dokan-lite' ); ?>"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<span class="error-container"> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $_POST['error_address[state]'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 308 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 308 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo '<span class="required">' . __( 'This is required', 'dokan-lite' ) . '</span>'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -520,12 +506,9 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( empty( $dokan_settings['address']['country'] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$is_valid_form = false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$_POST['error_address[country]'] = 'error'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ( isset( $states[ $dokan_settings['address']['country'] ] ) && count( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) || ( ! isset( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) ) ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} elseif ( ( isset( $states[ $dokan_settings['address']['country'] ] ) && count( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) || ( ! isset( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) ) ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check failure on line 509 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
Check failure on line 509 in includes/Vendor/SetupWizard.php GitHub Actions / Run PHPCS inspection
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarify Boolean Expression with Parentheses The condition on line 509 mixes Apply this diff to fix the issue: - } elseif ( ( isset( $states[ $dokan_settings['address']['country'] ] ) && count( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) || ( ! isset( $states[ $dokan_settings['address']['country'] ] ) && empty( $dokan_settings['address']['state'] ) ) ) ) {
+ } elseif (
+ (
+ isset( $states[ $dokan_settings['address']['country'] ] )
+ && count( $states[ $dokan_settings['address']['country'] ] )
+ && empty( $dokan_settings['address']['state'] )
+ )
+ || (
+ ! isset( $states[ $dokan_settings['address']['country'] ] )
+ && empty( $dokan_settings['address']['state'] )
+ )
+ ) { 📝 Committable suggestion
Suggested change
🧰 Tools🪛 GitHub Check: Run PHPCS inspection[failure] 509-509: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$is_valid_form = false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$_POST['error_address[state]'] = 'error'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! $is_valid_form ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -607,12 +590,16 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'swift' => $bank['swift'], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$user_bank_data = array_filter( $dokan_settings['payment']['bank'], function( $item ) { return ! empty( $item ); } ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$user_bank_data = array_filter( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$dokan_settings['payment']['bank'], function ( $item ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return ! empty( $item ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$require_fields = array_keys( dokan_bank_payment_required_fields() ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$has_bank_information = true; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
foreach ( $require_fields as $require_field ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if( empty( $user_bank_data[ $require_field ] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( empty( $user_bank_data[ $require_field ] ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$_POST[ 'error_' . $require_field ] = 'error'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$has_bank_information = false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -666,4 +653,83 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<?php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Gets the URL for the next step in the wizard | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Handles special logic to skip the payment step if no withdrawal methods | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* are active, preventing users from accessing an empty payment step | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @since 2.9.27 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @return string The URL for the next step | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public function get_next_step_link(): string { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$keys = array_keys( $this->steps ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$step = array_search( $this->current_step, $keys, true ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
++$step; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// If next step is payment but there are no active methods, skip to the following step | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( 'payment' === $keys[ $step ] && empty( dokan_withdraw_get_active_methods() ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
++$step; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$next_step = $keys[ $step ] ?? ''; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return add_query_arg( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'step' => apply_filters( 'dokan_seller_wizard_next_step', $next_step, $this->current_step, $this->steps ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'_admin_sw_nonce' => wp_create_nonce( 'dokan_admin_setup_wizard_nonce' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+676
to
+692
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Prevent Potential Undefined Index in Step Navigation In the Apply this diff to fix the issue: $keys = array_keys( $this->steps );
$step = array_search( $this->current_step, $keys, true );
++$step;
+ if ( ! isset( $keys[ $step ] ) ) {
+ $next_step = '';
+ } else {
+ // If next step is payment but there are no active methods, skip to the following step
+ if ( 'payment' === $keys[ $step ] && empty( dokan_withdraw_get_active_methods() ) ) {
+ ++$step;
+ }
+ $next_step = $keys[ $step ] ?? '';
+ } 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Sets up the wizard steps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Defines the steps for the setup wizard, conditionally including | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* the payment step only if active withdrawal methods exist | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @since 2.9.27 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @return void | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protected function set_steps() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$steps = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'introduction' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Introduction', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_introduction' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => '', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'store' => [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Store', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_store' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => [ $this, 'dokan_setup_store_save' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Only add payment step if there are active withdrawal methods | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$active_methods = dokan_withdraw_get_active_methods(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ( ! empty( $active_methods ) ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$steps['payment'] = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Payment', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_payment' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => [ $this, 'dokan_setup_payment_save' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$steps['next_steps'] = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'name' => __( 'Ready!', 'dokan-lite' ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'view' => [ $this, 'dokan_setup_ready' ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'handler' => '', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Filter the seller wizard steps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @since 2.9.27 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @param array $steps Array of wizard steps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->steps = apply_filters( 'dokan_seller_wizard_steps', $steps ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->current_step = current( array_keys( $this->steps ) ); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confirm PHP Version Compatibility for Typed Properties
The use of typed properties (
protected string $current_step
) requires PHP 7.4 or higher. Please ensure that the project's minimum PHP version is set to 7.4 or higher to maintain compatibility.