From 05d1f27238a8f898b0441448b56c6beb83ef8160 Mon Sep 17 00:00:00 2001 From: David Stone Date: Tue, 9 Dec 2025 23:06:24 -0700 Subject: [PATCH 1/2] Add compatibility for legacy filter `wu_create_site_meta` from wp ultimo v1 --- .../class-checkout-form-edit-admin-page.php | 2 + inc/checkout/class-checkout.php | 4 +- .../class-signup-field-checkbox.php | 11 ----- .../class-signup-field-color.php | 11 ----- .../class-signup-field-hidden.php | 11 ----- .../class-signup-field-select.php | 10 ----- .../class-signup-field-shortcode.php | 2 +- .../class-signup-field-submit-button.php | 10 ----- .../signup-fields/class-signup-field-text.php | 11 ----- inc/models/class-checkout-form.php | 10 ++--- inc/models/class-site.php | 43 +++++++++++++++---- 11 files changed, 43 insertions(+), 82 deletions(-) diff --git a/inc/admin-pages/class-checkout-form-edit-admin-page.php b/inc/admin-pages/class-checkout-form-edit-admin-page.php index 2333ad150..fcb5e1e15 100644 --- a/inc/admin-pages/class-checkout-form-edit-admin-page.php +++ b/inc/admin-pages/class-checkout-form-edit-admin-page.php @@ -12,6 +12,7 @@ // Exit if accessed directly defined('ABSPATH') || exit; +use WP_Ultimo\Checkout\Signup_Fields\Base_Signup_Field; use WP_Ultimo\Managers\Signup_Fields_Manager; /** @@ -337,6 +338,7 @@ public function field_types(): array { $fields = array_map( function ($class_name) { + /** @var Base_Signup_Field $field */ $field = new $class_name(); /* diff --git a/inc/checkout/class-checkout.php b/inc/checkout/class-checkout.php index b353e515e..5ea55dcf5 100644 --- a/inc/checkout/class-checkout.php +++ b/inc/checkout/class-checkout.php @@ -1420,9 +1420,7 @@ protected function maybe_create_site() { 'type' => Site_Type::CUSTOMER_OWNED, ]; - $pending_site = $this->membership->create_pending_site($site_data); - - return $pending_site; + return $this->membership->create_pending_site($site_data); } /** diff --git a/inc/checkout/signup-fields/class-signup-field-checkbox.php b/inc/checkout/signup-fields/class-signup-field-checkbox.php index b6b4a8339..dbccb18c4 100644 --- a/inc/checkout/signup-fields/class-signup-field-checkbox.php +++ b/inc/checkout/signup-fields/class-signup-field-checkbox.php @@ -144,17 +144,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } - /** * Returns the list of additional fields specific to this type. * diff --git a/inc/checkout/signup-fields/class-signup-field-color.php b/inc/checkout/signup-fields/class-signup-field-color.php index 8a4270016..76ffa92f1 100644 --- a/inc/checkout/signup-fields/class-signup-field-color.php +++ b/inc/checkout/signup-fields/class-signup-field-color.php @@ -131,17 +131,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } - /** * Returns the list of additional fields specific to this type. * diff --git a/inc/checkout/signup-fields/class-signup-field-hidden.php b/inc/checkout/signup-fields/class-signup-field-hidden.php index 0c18a5a67..639872827 100644 --- a/inc/checkout/signup-fields/class-signup-field-hidden.php +++ b/inc/checkout/signup-fields/class-signup-field-hidden.php @@ -127,17 +127,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } - /** * Returns the list of additional fields specific to this type. * diff --git a/inc/checkout/signup-fields/class-signup-field-select.php b/inc/checkout/signup-fields/class-signup-field-select.php index 3187870c6..6ad033718 100644 --- a/inc/checkout/signup-fields/class-signup-field-select.php +++ b/inc/checkout/signup-fields/class-signup-field-select.php @@ -132,16 +132,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } /** * Returns the list of additional fields specific to this type. diff --git a/inc/checkout/signup-fields/class-signup-field-shortcode.php b/inc/checkout/signup-fields/class-signup-field-shortcode.php index 31060c065..caf55c629 100644 --- a/inc/checkout/signup-fields/class-signup-field-shortcode.php +++ b/inc/checkout/signup-fields/class-signup-field-shortcode.php @@ -15,7 +15,7 @@ defined('ABSPATH') || exit; /** - * Creates an cart with the parameters of the purchase being placed. + * Creates a cart with the parameters of the purchase being placed. * * @package WP_Ultimo * @subpackage Checkout diff --git a/inc/checkout/signup-fields/class-signup-field-submit-button.php b/inc/checkout/signup-fields/class-signup-field-submit-button.php index 4a2d38dcc..d65a3ce16 100644 --- a/inc/checkout/signup-fields/class-signup-field-submit-button.php +++ b/inc/checkout/signup-fields/class-signup-field-submit-button.php @@ -128,16 +128,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } /** * Returns the list of additional fields specific to this type. diff --git a/inc/checkout/signup-fields/class-signup-field-text.php b/inc/checkout/signup-fields/class-signup-field-text.php index c70997429..00d490b8c 100644 --- a/inc/checkout/signup-fields/class-signup-field-text.php +++ b/inc/checkout/signup-fields/class-signup-field-text.php @@ -132,17 +132,6 @@ public function default_fields() { ]; } - /** - * If you want to force a particular attribute to a value, declare it here. - * - * @since 2.0.0 - * @return array - */ - public function force_attributes() { - - return []; - } - /** * Returns the list of additional fields specific to this type. * diff --git a/inc/models/class-checkout-form.php b/inc/models/class-checkout-form.php index 75317f177..51b54987d 100644 --- a/inc/models/class-checkout-form.php +++ b/inc/models/class-checkout-form.php @@ -263,12 +263,10 @@ public function get_settings() { */ public function set_settings($settings): void { - if (is_string($settings)) { // @phpstan-ignore-line - + if (is_string($settings)) { try { $settings = maybe_unserialize(stripslashes($settings)); - } catch (\Throwable $exception) { - + } catch (\Throwable $exception) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Silence is golden. } } @@ -380,7 +378,7 @@ public function get_steps_to_show() { * * @param string $step_name Name of the step. E.g. 'account'. * @param string $field_name Name of the field. E.g. 'username'. - * @return mixed[]|false + * @return array|false */ public function get_field($step_name, $field_name) { @@ -430,7 +428,7 @@ public function get_all_fields_by_type($type) { $types = (array) $type; - return Array_Search::find( + return (array) Array_Search::find( $all_fields, [ 'where' => [ diff --git a/inc/models/class-site.php b/inc/models/class-site.php index c8b8649c9..76ecdf284 100644 --- a/inc/models/class-site.php +++ b/inc/models/class-site.php @@ -1440,7 +1440,7 @@ public function delete() { * * @since 2.0.0 * - * @param \WP_Ultimo\Models\Base_Model $this The object instance. + * @param Base_Model $this The object instance. */ do_action("wu_{$this->model}_pre_delete", $this); // @phpstan-ignore-line @@ -1602,11 +1602,12 @@ public function save() { /** * Fires after a site is created for the first time. + * Does not fire if duplicated from a template. * * @since 2.0.0 * - * @param array $data The object data that will be stored. - * @param \WP_Ultimo\Models\Base_Model $site The object instance. + * @param array $data The object data that will be stored. + * @param Site $site The object instance. */ do_action('wu_site_created', $data, $this); } @@ -1696,8 +1697,8 @@ public function save() { * @param array $model The model slug. * @param array $data The object data that will be stored, serialized. * @param array $data_unserialized The object data that will be stored. - * @param \WP_Ultimo\Models\Base_Model $this The object instance. - * @param array $new If this object is a new one. + * @param Base_Model $model_object The object instance. + * @param bool $is_new If this object is a new one. */ do_action('wu_model_post_save', $this->model, $data, $data_unserialized, $this, $new); // @phpstan-ignore-line @@ -1707,10 +1708,36 @@ public function save() { * @since 2.0.0 * * @param array $data The object data that will be stored. - * @param \WP_Ultimo\Models\Base_Model $this The object instance. - * @param array $new If this object is a new one. + * @param Base_Model $model_obeject The object instance. + * @param bool $is_new If this object is a new one. */ - do_action("wu_{$this->model}_post_save", $data, $this, $new); // @phpstan-ignore-line + do_action("wu_{$this->model}_post_save", $data, $this, $new); + + // Only compute extra hook parameters if the deprecated hook is actually in use. + if ($new && has_filter('wu_create_site_meta')) { + $signup_options = $this->get_signup_options(); + /** + * Fires immediately after a new site is created. + * + * @deprecated 2.0.0 Use {@see 'wu_site_post_save'} instead. + * + * @param array $meta Meta data. Used to set initial site options. + * @param array $transient Form data. Used to set initial site options. + */ + $meta = apply_filters_deprecated( + 'wu_create_site_meta', + [$signup_options, $this->get_transient()], + '2.0.0', + 'wu_site_post_save' + ); + if ($this->get_signup_options() !== $meta) { + foreach ($meta as $key => $value) { + if (! isset($signup_options[ $key ]) || $value !== $signup_options[ $key ]) { + update_blog_option($this->blog_id, $key, $value); + } + } + } + } if (isset($session)) { $session->destroy(); From 3edb5bc93859d1f71830112caaadc546e94ce378 Mon Sep 17 00:00:00 2001 From: David Stone Date: Tue, 9 Dec 2025 23:40:55 -0700 Subject: [PATCH 2/2] reuse var --- inc/models/class-site.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/models/class-site.php b/inc/models/class-site.php index 76ecdf284..670efb31f 100644 --- a/inc/models/class-site.php +++ b/inc/models/class-site.php @@ -1730,7 +1730,7 @@ public function save() { '2.0.0', 'wu_site_post_save' ); - if ($this->get_signup_options() !== $meta) { + if ($signup_options !== $meta) { foreach ($meta as $key => $value) { if (! isset($signup_options[ $key ]) || $value !== $signup_options[ $key ]) { update_blog_option($this->blog_id, $key, $value);