Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
bf03eed
Fix: skip password strength validation when meter element is missing
superdav42 Feb 19, 2026
185cfce
Use correct return type for pages
superdav42 Feb 19, 2026
f74a02f
Fix some wc url with %2F being striped
superdav42 Feb 24, 2026
455abdf
Show errors when they occur
superdav42 Feb 24, 2026
2a67991
Add fill button to checkout form
superdav42 Feb 24, 2026
0b2e350
remove obsolute doc
superdav42 Feb 24, 2026
281133f
Improve integration wizard
superdav42 Feb 24, 2026
86cb7a2
Improve payments
superdav42 Feb 25, 2026
27c5b03
Add addon setting to top admin nav
superdav42 Feb 25, 2026
5183b9f
work with independent billing cycles
superdav42 Feb 25, 2026
03b0f6d
work with independent billing cycles
superdav42 Feb 25, 2026
6f6ecfb
Add types to functions
superdav42 Feb 25, 2026
fa4b928
Fix stripe creating subscriptions
superdav42 Feb 25, 2026
3d24d37
fix validation
superdav42 Feb 25, 2026
50cd575
fix network install with some plugins
superdav42 Feb 25, 2026
a777472
Add required actions for domain seller
superdav42 Feb 25, 2026
bb0a587
Send email when sub renew fails
superdav42 Feb 25, 2026
2f26901
fix warnings with new psr
superdav42 Feb 25, 2026
fdb9c74
Add meta data for domains
superdav42 Feb 25, 2026
8ab52ec
Add new element
superdav42 Feb 25, 2026
acde7d2
add new email for sub expire/failed
superdav42 Feb 25, 2026
af00716
more tests
superdav42 Feb 25, 2026
ebbb08c
preserve order
superdav42 Feb 25, 2026
05c4956
Update
superdav42 Feb 25, 2026
af91d3c
Add view for payment methods
superdav42 Feb 25, 2026
d6d8d9f
actually we don't want a dedicated addon page
superdav42 Feb 25, 2026
baa6b4c
Fix CI test failures for Update_Check_Test
superdav42 Feb 25, 2026
5a2305a
Update inc/helpers/validation-rules/class-exists.php
superdav42 Feb 26, 2026
85530e2
Use correct name
superdav42 Feb 26, 2026
25e683d
Fix underscore warning
superdav42 Feb 26, 2026
f51f401
Be more protective
superdav42 Feb 26, 2026
b465129
We don't want trials possible if we are downgrading
superdav42 Feb 26, 2026
67dbf71
Update 2.4.12 changelog with all PR #346 changes
superdav42 Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ jobs:
run: |
rm -rf /tmp/wordpress-tests-lib /tmp/wordpress/
bash bin/install-wp-tests.sh wordpress_test root root mysql latest
ln -s "$GITHUB_WORKSPACE" /tmp/wordpress/wp-content/plugins/ultimate-multisite

- name: Run PHPUnit Tests
if: matrix.php-version != '8.3'
Expand Down
5 changes: 5 additions & 0 deletions .phpcs.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
<exclude-pattern>/dependencies/</exclude-pattern>
<exclude-pattern>/../wordpress/</exclude-pattern>

<!-- Test files use PHPUnit naming conventions (PascalCase), not WordPress file naming. -->
<rule ref="WordPress.Files.FileName">
<exclude-pattern>/tests/</exclude-pattern>
</rule>

<!-- How to scan -->
<!-- Usage instructions: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage -->
<!-- Annotated ruleset: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
Expand Down
29 changes: 0 additions & 29 deletions .wiki/how-can-i-cancel-my-subscription.md

This file was deleted.

7 changes: 7 additions & 0 deletions assets/js/checkout.js
Original file line number Diff line number Diff line change
Expand Up @@ -786,6 +786,13 @@

} // end if;

// If the strength meter element doesn't exist, skip validation
if (! jQuery('#pass-strength-result').length) {

return;

} // end if;

// Use the shared WU_PasswordStrength utility
if (typeof window.WU_PasswordStrength !== 'undefined') {

Expand Down
2 changes: 1 addition & 1 deletion assets/js/checkout.min.js

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions assets/js/integration-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
mounted: function() {
var that = this;
this.loading = true;

setTimeout(() => {
$.ajax({
url: ajaxurl,
Expand All @@ -20,14 +20,18 @@
integration: wu_integration_test_data.integration_id,
},
success: function(response) {
console.log(response);
that.loading = false;
that.success = response.success;
that.results = response.data;
},
error: function() {
that.loading = false;
that.success = false;
that.results = wu_integration_test_data.error_message || 'Connection test failed. Please try again.';
}
});
}, 1000);
},
});
});
})(jQuery);
})(jQuery);
2 changes: 1 addition & 1 deletion assets/js/integration-test.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@
],
"jasny/sso": [
"patches/jasny-sso-src-broker-cookies-php.patch"
],
"mpdf/psr-log-aware-trait": [
"patches/mpdf-psr-log-aware-trait-void-return.patch"
]
},
"installer-paths": {
Expand Down
2 changes: 1 addition & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions inc/admin-pages/class-checkout-form-edit-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -1530,7 +1530,7 @@ public function handle_save() {
*/
ob_start();

parent::handle_save();
$result = parent::handle_save();

$object = $this->get_object();

Expand All @@ -1547,7 +1547,7 @@ public function handle_save() {
}

wp_ob_end_flush_all();
return true;
return $result;
}

/**
Expand Down
8 changes: 4 additions & 4 deletions inc/admin-pages/class-customer-edit-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -1159,10 +1159,10 @@ public function has_title(): bool {
/**
* Should implement the processes necessary to save the changes made to the object.
*
* @return void
* @return bool
* @since 2.0.0
*/
public function handle_save(): void {
public function handle_save(): bool {

// Nonce handled in calling method.
// phpcs:disable WordPress.Security.NonceVerification
Expand Down Expand Up @@ -1199,7 +1199,7 @@ public function handle_save(): void {

WP_Ultimo()->notices->add($errors, 'error', 'network-admin');

return;
return false;
}

$object->set_billing_address($billing_address);
Expand Down Expand Up @@ -1245,7 +1245,7 @@ public function handle_save(): void {
unset($_POST['new_meta_fields']);
// phpcs:enable

parent::handle_save();
return parent::handle_save();
}

/**
Expand Down
6 changes: 3 additions & 3 deletions inc/admin-pages/class-discount-code-edit-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -844,9 +844,9 @@ public function has_title(): bool {
* Should implement the processes necessary to save the changes made to the object.
*
* @since 2.0.0
* @return void
* @return bool
*/
public function handle_save(): void {
public function handle_save(): bool {
/*
* Set the recurring value to zero if the toggle is disabled.
*/
Expand Down Expand Up @@ -897,6 +897,6 @@ public function handle_save(): void {

$_POST['code'] = trim((string) wu_request('code'));

parent::handle_save();
return parent::handle_save();
}
}
6 changes: 3 additions & 3 deletions inc/admin-pages/class-domain-edit-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -572,9 +572,9 @@ public function has_title(): bool {
* Should implement the processes necessary to save the changes made to the object.
*
* @since 2.0.0
* @return void
* @return bool
*/
public function handle_save(): void {
public function handle_save(): bool {

// phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verification happens in parent::handle_save()
if ( ! wu_request('primary_domain')) {
Expand All @@ -593,6 +593,6 @@ public function handle_save(): void {

wu_enqueue_async_action('wu_async_process_domain_stage', ['domain_id' => $this->get_object()->get_id()], 'domain');

parent::handle_save();
return parent::handle_save();
}
}
6 changes: 3 additions & 3 deletions inc/admin-pages/class-email-edit-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -475,17 +475,17 @@ public function query_filter($args) {
* Handles the toggles.
*
* @since 2.0.0
* @return void
* @return bool
*/
public function handle_save(): void {
public function handle_save(): bool {

$_POST['schedule'] = wu_request('schedule');

$_POST['send_copy_to_admin'] = wu_request('send_copy_to_admin');

$_POST['custom_sender'] = wu_request('custom_sender');

parent::handle_save();
return parent::handle_save();
}

/**
Expand Down
30 changes: 11 additions & 19 deletions inc/admin-pages/class-hosting-integration-wizard-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -388,24 +388,6 @@ public function section_test(): void {

wp_enqueue_script('wu-vue');

wu_get_template(
'wizards/host-integrations/test',
[
'screen' => get_current_screen(),
'page' => $this,
'integration' => $this->integration,
]
);
}

/**
* Register the script for the test page.
*
* @return void
*/
public function register_scripts() {
parent::register_scripts();

wp_enqueue_script(
'wu-integration-test',
wu_get_asset('integration-test.js', 'js'),
Expand All @@ -420,9 +402,19 @@ public function register_scripts() {
'wu-integration-test',
'var wu_integration_test_data = {
integration_id: "' . esc_js($this->integration->get_id()) . '",
waiting_message: "' . esc_js(__('Waiting for results...', 'ultimate-multisite')) . '"
waiting_message: "' . esc_js(__('Waiting for results...', 'ultimate-multisite')) . '",
error_message: "' . esc_js(__('Connection test failed. Please try again.', 'ultimate-multisite')) . '"
};',
'before'
);

wu_get_template(
'wizards/host-integrations/test',
[
'screen' => get_current_screen(),
'page' => $this,
'integration' => $this->integration,
]
);
}
}
Loading
Loading