Prep Plugin for release on WordPress.org (#23)

* Update translation text domain
* Escape everything that should be escaped.
* Add nonce checks where needed.
* Sanitize all inputs.
* Apply Code style changes across the codebase.
* Correct many deprecation notices.
* Optimize load order of many filters.
* Add Proper Build script
* Use emojii flags
* Fix i18n deprecation  notice for translating too early
* Put all scripts in footer and load async
This commit is contained in:
David Stone
2025-04-14 11:36:46 -06:00
committed by GitHub
parent a31cfcb565
commit d88e50df38
1087 changed files with 12586 additions and 18535 deletions

View File

@ -108,6 +108,8 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
wp_enqueue_style('wu-flags');
wp_enqueue_script_module('wu-flags-polyfill');
wp_enqueue_editor();
wp_enqueue_media();
@ -159,16 +161,16 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$fields = [
'confirm' => [
'type' => 'toggle',
'title' => __('Confirm Transfer', 'wp-ultimo'),
'desc' => __('This will start the transfer of assets from one user to another.', 'wp-ultimo'),
'title' => __('Confirm Transfer', 'wp-multisite-waas'),
'desc' => __('This will start the transfer of assets from one user to another.', 'wp-multisite-waas'),
'html_attr' => [
'v-model' => 'confirmed',
],
],
'submit_button' => [
'type' => 'submit',
'title' => __('Start Transfer', 'wp-ultimo'),
'placeholder' => __('Start Transfer', 'wp-ultimo'),
'title' => __('Start Transfer', 'wp-multisite-waas'),
'placeholder' => __('Start Transfer', 'wp-multisite-waas'),
'value' => 'save',
'classes' => 'button button-primary wu-w-full',
'wrapper_classes' => 'wu-items-end',
@ -221,11 +223,11 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$target_user = get_user_by('id', wu_request('target_user_id'));
if ( ! $customer) {
wp_send_json_error(new \WP_Error('not-found', __('Customer not found.', 'wp-ultimo')));
wp_send_json_error(new \WP_Error('not-found', __('Customer not found.', 'wp-multisite-waas')));
}
if ( ! $target_user) {
wp_send_json_error(new \WP_Error('not-found', __('User not found.', 'wp-ultimo')));
wp_send_json_error(new \WP_Error('not-found', __('User not found.', 'wp-multisite-waas')));
}
$customer->set_user_id($target_user->ID);
@ -261,8 +263,8 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$custom_fields = [
'delete_all' => [
'type' => 'toggle',
'title' => __('Delete everything', 'wp-ultimo'),
'desc' => __('Sites, payments and memberships.', 'wp-ultimo'),
'title' => __('Delete everything', 'wp-multisite-waas'),
'desc' => __('Sites, payments and memberships.', 'wp-multisite-waas'),
'html_attr' => [
'v-bind:value' => 'delete_all_confirmed',
'v-model' => 'delete_all_confirmed',
@ -270,8 +272,8 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
're_assignment_customer_id' => [
'type' => 'model',
'title' => __('Re-assignment to customer', 'wp-ultimo'),
'placeholder' => __('Select Customer...', 'wp-ultimo'),
'title' => __('Re-assignment to customer', 'wp-multisite-waas'),
'placeholder' => __('Select Customer...', 'wp-multisite-waas'),
'html_attr' => [
'data-model' => 'customer',
'data-value-field' => 'id',
@ -411,7 +413,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$field_location_breadcrumbs = [
__(
'orphan field - the original form no longer exists',
'wp-ultimo'
'wp-multisite-waas'
),
];
@ -427,7 +429,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$location = sprintf(
'<small><strong>%s</strong> %s</small>',
__('Location:', 'wp-ultimo'),
__('Location:', 'wp-multisite-waas'),
implode(' &rarr; ', array_filter($field_location_breadcrumbs))
);
@ -475,10 +477,10 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
if ($meta_fields_unset) {
$collapsible_header['display_unset_fields'] = [
'title' => __('Display unset fields', 'wp-ultimo'),
'title' => __('Display unset fields', 'wp-multisite-waas'),
'desc' => __(
'If fields were added after the customer creation or onto a different form, they will not have a set value for this customer. You can manually set those here.',
'wp-ultimo'
'wp-multisite-waas'
),
'type' => 'toggle',
'wrapper_classes' => 'wu-bg-gray-100',
@ -493,14 +495,14 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
if (empty($final_fields)) {
$final_fields['empty'] = [
'type' => 'note',
'desc' => __('No custom meta data collected and no custom fields found.', 'wp-ultimo'),
'desc' => __('No custom meta data collected and no custom fields found.', 'wp-multisite-waas'),
'classes' => 'wu-text-center',
];
}
$final_fields['display_new_meta_repeater'] = [
'title' => __('Manually add custom meta fields', 'wp-ultimo'),
'desc' => __('Add new custom meta fields to this customer.', 'wp-ultimo'),
'title' => __('Manually add custom meta fields', 'wp-multisite-waas'),
'desc' => __('Add new custom meta fields to this customer.', 'wp-multisite-waas'),
'type' => 'toggle',
'wrapper_classes' => 'wu-bg-gray-100',
'html_attr' => [
@ -509,7 +511,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
];
$default_meta_value = fn(string $type, $value = '', bool $is_default = false) => [
'title' => __('Value', 'wp-ultimo'),
'title' => __('Value', 'wp-multisite-waas'),
'type' => $type,
'value' => $value,
'wrapper_classes' => 'wu-w-1/4 wu-ml-2',
@ -534,12 +536,12 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'type' => 'note',
'desc' => sprintf(
'<a title="%s" class="wu-no-underline wu-inline-block wu-text-gray-600" href="#" @click.prevent="() => new_meta_fields.splice(index, 1)"><span class="dashicons-wu-squared-cross"></span></a>',
__('Remove', 'wp-ultimo')
__('Remove', 'wp-multisite-waas')
),
'wrapper_classes' => 'wu-absolute wu-top-0 wu-right-0',
],
'new_meta_slug' => [
'title' => __('Slug', 'wp-ultimo'),
'title' => __('Slug', 'wp-multisite-waas'),
'type' => 'text',
'value' => '',
'wrapper_classes' => 'wu-w-1/4',
@ -550,7 +552,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
],
'new_meta_title' => [
'title' => __('Title', 'wp-ultimo'),
'title' => __('Title', 'wp-multisite-waas'),
'type' => 'text',
'value' => '',
'wrapper_classes' => 'wu-w-1/4 wu-ml-2',
@ -559,14 +561,14 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
],
'new_meta_type' => [
'title' => __('Type', 'wp-ultimo'),
'title' => __('Type', 'wp-multisite-waas'),
'type' => 'select',
'options' => [
'text' => __('Text', 'wp-ultimo'),
'textarea' => __('Textarea', 'wp-ultimo'),
'checkbox' => __('Checkbox', 'wp-ultimo'),
'color' => __('Color', 'wp-ultimo'),
'image' => __('Image', 'wp-ultimo'),
'text' => __('Text', 'wp-multisite-waas'),
'textarea' => __('Textarea', 'wp-multisite-waas'),
'checkbox' => __('Checkbox', 'wp-multisite-waas'),
'color' => __('Color', 'wp-multisite-waas'),
'image' => __('Image', 'wp-multisite-waas'),
],
'wrapper_classes' => 'wu-w-1/4 wu-ml-2',
'html_attr' => [
@ -589,7 +591,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
'repeat_option' => [
'type' => 'submit',
'title' => __('+ Add meta field', 'wp-ultimo'),
'title' => __('+ Add meta field', 'wp-multisite-waas'),
'classes' => 'button wu-self-end',
'wrapper_classes' => 'wu-bg-whiten wu-items-end',
'html_attr' => [
@ -628,7 +630,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_fields_widget(
'at_a_glance',
[
'title' => __('At a Glance', 'wp-ultimo'),
'title' => __('At a Glance', 'wp-multisite-waas'),
'position' => 'normal',
'classes' => 'wu-overflow-hidden wu-m-0 wu--mt-1 wu--mx-3 wu--mb-3',
'field_wrapper_classes' => 'wu-w-1/3 wu-box-border wu-items-center wu-flex wu-justify-between wu-p-4 wu-m-0 wu-border-t-0 wu-border-l-0 wu-border-r wu-border-b-0 wu-border-gray-300 wu-border-solid wu-float-left wu-relative',
@ -639,23 +641,23 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'id' => [
'type' => 'text-display',
'copy' => true,
'title' => __('Customer ID', 'wp-ultimo'),
'title' => __('Customer ID', 'wp-multisite-waas'),
'display_value' => $this->get_object()->get_id(),
'tooltip' => '',
],
'last_login' => [
'edit' => false,
'title' => __('Last Login', 'wp-ultimo'),
'title' => __('Last Login', 'wp-multisite-waas'),
'type' => 'text-edit',
'value' => $this->edit ? $this->get_object()->get_last_login(false) : __(
'No date',
'wp-ultimo'
'wp-multisite-waas'
),
'display_value' => $this->edit ? $this->get_object()->get_last_login(false) : false,
],
'total_grossed' => [
'type' => 'text-display',
'title' => __('Total Grossed', 'wp-ultimo'),
'title' => __('Total Grossed', 'wp-multisite-waas'),
'display_value' => wu_format_currency($this->get_object()->get_total_grossed()),
'tooltip' => '',
],
@ -666,7 +668,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_list_table_widget(
'memberships',
[
'title' => __('Memberships', 'wp-ultimo'),
'title' => __('Memberships', 'wp-multisite-waas'),
'table' => new \WP_Ultimo\List_Tables\Customers_Membership_List_Table(),
'query_filter' => [$this, 'memberships_query_filter'],
]
@ -675,34 +677,34 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_tabs_widget(
'options',
[
'title' => __('Customer Options', 'wp-ultimo'),
'title' => __('Customer Options', 'wp-multisite-waas'),
'position' => 'normal',
'sections' => apply_filters(
'wu_customer_options_sections',
[
'general' => [
'title' => __('General', 'wp-ultimo'),
'desc' => __('General options for the customer.', 'wp-ultimo'),
'title' => __('General', 'wp-multisite-waas'),
'desc' => __('General options for the customer.', 'wp-multisite-waas'),
'icon' => 'dashicons-wu-globe',
'fields' => [
'vip' => [
'type' => 'toggle',
'title' => __('VIP', 'wp-ultimo'),
'desc' => __('Set this customer as a VIP.', 'wp-ultimo'),
'title' => __('VIP', 'wp-multisite-waas'),
'desc' => __('Set this customer as a VIP.', 'wp-multisite-waas'),
'tooltip' => '',
'value' => $this->get_object()->is_vip(),
],
],
],
'billing_info' => [
'title' => __('Billing Info', 'wp-ultimo'),
'desc' => __('Billing information for this particular customer', 'wp-ultimo'),
'title' => __('Billing Info', 'wp-multisite-waas'),
'desc' => __('Billing information for this particular customer', 'wp-multisite-waas'),
'icon' => 'dashicons-wu-address',
'fields' => $this->get_object()->get_billing_address()->get_fields(),
],
'custom_meta' => [
'title' => __('Custom Meta', 'wp-ultimo'),
'desc' => __('Custom data collected via WP Multisite WaaS forms.', 'wp-ultimo'),
'title' => __('Custom Meta', 'wp-multisite-waas'),
'desc' => __('Custom data collected via WP Multisite WaaS forms.', 'wp-multisite-waas'),
'icon' => 'dashicons-wu-database wu-pt-px',
'fields' => $this->generate_customer_meta_fields(),
'state' => [
@ -719,8 +721,8 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
// @todo: bring these back
// phpcs:disable
// 'payment_methods' => array(
// 'title' => __('Payment Methods', 'wp-ultimo'),
// 'desc' => __('Add extra information to this customer.', 'wp-ultimo'),
// 'title' => __('Payment Methods', 'wp-multisite-waas'),
// 'desc' => __('Add extra information to this customer.', 'wp-multisite-waas'),
// 'icon' => 'dashicons-wu-credit-card',
// 'fields' => apply_filters('wu_customer_payment_methods', array(), $this->get_object(), $this),
// ),
@ -734,7 +736,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_list_table_widget(
'payments',
[
'title' => __('Payments', 'wp-ultimo'),
'title' => __('Payments', 'wp-multisite-waas'),
'table' => new \WP_Ultimo\List_Tables\Customers_Payment_List_Table(),
'query_filter' => [$this, 'memberships_query_filter'],
]
@ -743,7 +745,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_list_table_widget(
'sites',
[
'title' => __('Sites', 'wp-ultimo'),
'title' => __('Sites', 'wp-multisite-waas'),
'table' => new \WP_Ultimo\List_Tables\Customers_Site_List_Table(),
'query_filter' => [$this, 'sites_query_filter'],
]
@ -752,7 +754,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_list_table_widget(
'events',
[
'title' => __('Events', 'wp-ultimo'),
'title' => __('Events', 'wp-multisite-waas'),
'table' => new \WP_Ultimo\List_Tables\Inside_Events_List_Table(),
'query_filter' => [$this, 'events_query_filter'],
]
@ -763,7 +765,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
[
'html_attr' => [
'data-wu-app' => 'customer_save',
'data-state' => json_encode(
'data-state' => wp_json_encode(
[
'original_user_id' => $this->get_object()->get_user_id(),
'user_id' => $this->get_object()->get_user_id(),
@ -782,9 +784,9 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'fields' => [
'user_id' => [
'type' => 'model',
'title' => __('User', 'wp-ultimo'),
'placeholder' => __('Search WordPress user...', 'wp-ultimo'),
'desc' => __('The WordPress user associated to this customer.', 'wp-ultimo'),
'title' => __('User', 'wp-multisite-waas'),
'placeholder' => __('Search WordPress user...', 'wp-multisite-waas'),
'desc' => __('The WordPress user associated to this customer.', 'wp-multisite-waas'),
'value' => $this->get_object()->get_user_id(),
'tooltip' => '',
'min' => 1,
@ -795,7 +797,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'data-label-field' => 'display_name',
'data-search-field' => 'display_name',
'data-max-items' => 1,
'data-selected' => json_encode($this->get_object()->get_user()->data),
'data-selected' => wp_json_encode($this->get_object()->get_user()->data),
],
'wrapper_html_attr' => [
'v-cloak' => '1',
@ -805,7 +807,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'type' => 'note',
'desc' => __(
'Changing the user will transfer the customer and all its assets to the new user.',
'wp-ultimo'
'wp-multisite-waas'
),
'classes' => 'wu-p-2 wu-bg-red-100 wu-text-red-600 wu-rounded wu-w-full',
'wrapper_html_attr' => [
@ -815,16 +817,16 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
'email_verification' => [
'type' => 'select',
'title' => __('Email Verification', 'wp-ultimo'),
'placeholder' => __('Select Status', 'wp-ultimo'),
'title' => __('Email Verification', 'wp-multisite-waas'),
'placeholder' => __('Select Status', 'wp-multisite-waas'),
'desc' => __(
'The email verification status. This gets automatically switched to Verified when the customer verifies their email address.',
'wp-ultimo'
'wp-multisite-waas'
),
'options' => [
'none' => __('None', 'wp-ultimo'),
'pending' => __('Pending', 'wp-ultimo'),
'verified' => __('Verified', 'wp-ultimo'),
'none' => __('None', 'wp-multisite-waas'),
'pending' => __('Pending', 'wp-multisite-waas'),
'verified' => __('Verified', 'wp-multisite-waas'),
],
'value' => $this->get_object()->get_email_verification(),
'tooltip' => '',
@ -837,10 +839,10 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
'confirm_membership' => [
'type' => 'toggle',
'title' => __('Activate Memberships', 'wp-ultimo'),
'title' => __('Activate Memberships', 'wp-multisite-waas'),
'desc' => __(
'If you toggle this option, this change in status will also activate the related pending memberships. If any sites are pending, they are also going to be published automatically.',
'wp-ultimo'
'wp-multisite-waas'
),
'value' => 0,
'wrapper_html_attr' => [
@ -850,7 +852,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
'send_verification' => [
'type' => 'submit',
'title' => __('Re-send Verification Email &rarr;', 'wp-ultimo'),
'title' => __('Re-send Verification Email &rarr;', 'wp-multisite-waas'),
'value' => 'send_verification',
'classes' => 'button wu-w-full',
'wrapper_html_attr' => [
@ -871,7 +873,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
'transfer' => [
'type' => 'link',
'display_value' => __('Transfer Customer', 'wp-ultimo'),
'display_value' => __('Transfer Customer', 'wp-multisite-waas'),
'wrapper_classes' => 'wu-bg-gray-200',
'classes' => 'button wubox wu-w-full wu-text-center',
'wrapper_html_attr' => [
@ -886,7 +888,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
'target_user_id' => '',
]
) . "=' + user_id",
'title' => __('Transfer Customer', 'wp-ultimo'),
'title' => __('Transfer Customer', 'wp-multisite-waas'),
],
],
],
@ -896,16 +898,16 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$this->add_fields_widget(
'last-login',
[
'title' => __('Last Login & IPs', 'wp-ultimo'),
'title' => __('Last Login & IPs', 'wp-multisite-waas'),
'fields' => [
'last_login' => [
'edit' => true,
'title' => __('Last Login', 'wp-ultimo'),
'title' => __('Last Login', 'wp-multisite-waas'),
'type' => 'text-edit',
'date' => true,
'value' => $this->edit ? $this->get_object()->get_last_login(false) : __(
'No date',
'wp-ultimo'
'wp-multisite-waas'
),
'display_value' => $this->edit ? $this->get_object()->get_last_login(false) : false,
'placeholder' => '2020-04-04 12:00:00',
@ -916,12 +918,12 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
],
],
'ips' => [
'title' => __('IP Address', 'wp-ultimo'),
'title' => __('IP Address', 'wp-multisite-waas'),
'type' => 'text-edit',
'display_value' => $this->get_object()->get_last_ip(),
],
'country' => [
'title' => __('IP Address Country', 'wp-ultimo'),
'title' => __('IP Address Country', 'wp-multisite-waas'),
'type' => 'text-edit',
'display_value' => [$this, 'render_country'],
],
@ -944,10 +946,10 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
if ($country_code) {
$html = sprintf(
'<span>%s</span><span class="wu-flag-icon wu-flag-icon-%s wu-w-5 wu-ml-1" %s></span>',
'<span>%s</span><span class="wu-flag-icon wu-w-5 wu-ml-1" %s>%s</span>',
$country_name,
strtolower((string) $country_code),
wu_tooltip_text($country_name)
wu_tooltip_text($country_name),
wu_get_flag_emoji((string) $country_code)
);
} else {
$html = $country_name;
@ -964,7 +966,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
*/
public function get_title() {
return $this->edit ? __('Edit Customer', 'wp-ultimo') : __('Add new Customer', 'wp-ultimo');
return $this->edit ? __('Edit Customer', 'wp-multisite-waas') : __('Add new Customer', 'wp-multisite-waas');
}
/**
@ -975,7 +977,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
*/
public function get_menu_title() {
return __('Edit Customer', 'wp-ultimo');
return __('Edit Customer', 'wp-multisite-waas');
}
/**
@ -998,15 +1000,15 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
public function get_labels() {
return [
'edit_label' => __('Edit Customer', 'wp-ultimo'),
'add_new_label' => __('Add new Customer', 'wp-ultimo'),
'updated_message' => __('Customer updated with success!', 'wp-ultimo'),
'title_placeholder' => __('Enter Customer', 'wp-ultimo'),
'edit_label' => __('Edit Customer', 'wp-multisite-waas'),
'add_new_label' => __('Add new Customer', 'wp-multisite-waas'),
'updated_message' => __('Customer updated with success!', 'wp-multisite-waas'),
'title_placeholder' => __('Enter Customer', 'wp-multisite-waas'),
'title_description' => '',
'save_button_label' => __('Save Customer', 'wp-ultimo'),
'save_button_label' => __('Save Customer', 'wp-multisite-waas'),
'save_description' => '',
'delete_button_label' => __('Delete Customer', 'wp-ultimo'),
'delete_description' => __('Be careful. This action is irreversible.', 'wp-ultimo'),
'delete_button_label' => __('Delete Customer', 'wp-multisite-waas'),
'delete_description' => __('Be careful. This action is irreversible.', 'wp-multisite-waas'),
];
}
@ -1080,7 +1082,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
$item = wu_get_customer($item_id);
if ( ! $item || $item->get_type() !== 'customer') {
wp_redirect(wu_network_admin_url('wp-ultimo-customers'));
wp_safe_redirect(wu_network_admin_url('wp-ultimo-customers'));
exit;
}
@ -1121,7 +1123,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
]
);
wp_redirect($redirect_url);
wp_safe_redirect($redirect_url);
exit;
}
@ -1222,7 +1224,7 @@ class Customer_Edit_Admin_Page extends Edit_Admin_Page {
if (isset($_GET['notice_verification_sent'])) : ?>
<div id="message" class="updated notice wu-admin-notice notice-success is-dismissible below-h2">
<p><?php esc_html_e('Verification email sent!', 'wp-ultimo'); ?></p>
<p><?php esc_html_e('Verification email sent!', 'wp-multisite-waas'); ?></p>
</div>
<?php