From 1455d81b3b4ac1c7a29ae6c8d77d141057720386 Mon Sep 17 00:00:00 2001 From: gcch Date: Sat, 2 May 2026 10:31:24 +0200 Subject: [PATCH] =?UTF-8?q?corv=C3=A9e(formatage)=20m=C3=A0j=20de=20la=20c?= =?UTF-8?q?onfiguration=20Mago?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .php-cs-fixer.dist.php | 328 +-- mago-schema.json | 1755 ++++++++++------- mago.toml | 1 + scripts/remove-scaled-images.php | 10 +- web/app/themes/haiku-atelier-2024/404.php | 4 +- .../haiku-atelier-2024/archive-product.php | 10 +- .../themes/haiku-atelier-2024/front-page.php | 6 +- .../themes/haiku-atelier-2024/functions.php | 70 +- web/app/themes/haiku-atelier-2024/index.php | 2 +- .../themes/haiku-atelier-2024/page-about.php | 6 +- .../themes/haiku-atelier-2024/page-cart.php | 56 +- .../haiku-atelier-2024/page-checkout.php | 38 +- .../haiku-atelier-2024/page-contact.php | 4 +- .../haiku-atelier-2024/page-failed-order.php | 4 +- .../page-successful-order.php | 26 +- .../page-terms-and-conditions.php | 4 +- .../haiku-atelier-2024/single-product.php | 22 +- .../haiku-atelier-2024/src/StarterSite.php | 45 +- .../src/inc/ChampsPersonnalises.php | 6 +- .../src/inc/ControlesPersonnalises.php | 8 +- .../src/inc/Data/Attribute.php | 4 +- .../src/inc/Data/AttributeOption.php | 4 +- .../haiku-atelier-2024/src/inc/Data/Cart.php | 4 +- .../src/inc/Data/Product.php | 75 +- .../src/inc/Data/ProductVariation.php | 6 +- .../src/inc/Fonctionnalites.php | 2 +- .../src/inc/FonctionnalitesWooCommerce.php | 8 +- .../haiku-atelier-2024/src/inc/Taxonomies.php | 30 +- .../src/inc/WP/Resource.php | 29 +- .../taxonomy-product_cat.php | 20 +- .../emails/customer-completed-order.php | 4 +- .../woocommerce/emails/customer-invoice.php | 33 +- .../emails/customer-processing-order.php | 20 +- 33 files changed, 1453 insertions(+), 1191 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 4ea5c4c8..5245c50e 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -18,156 +18,162 @@ $finder = new Finder()->in(__DIR__)->exclude([ return new Config() ->setRiskyAllowed(true) ->setRules([ - 'array_syntax' => ['syntax' => 'short'], - 'assign_null_coalescing_to_coalesce_equal' => true, - 'attribute_empty_parentheses' => ['use_parentheses' => true], - 'blank_line_after_namespace' => true, - 'blank_lines_before_namespace' => ['min_line_breaks' => 1, 'max_line_breaks' => 2], - 'cast_spaces' => true, - 'class_attributes_separation' => [ - 'elements' => [ - 'case' => 'none', - 'const' => 'none', - 'method' => 'one', - 'property' => 'one', - 'trait_import' => 'none', - ], + 'array_syntax' => ['syntax' => 'short'], + 'assign_null_coalescing_to_coalesce_equal' => true, + 'attribute_empty_parentheses' => ['use_parentheses' => true], + 'blank_line_after_namespace' => true, + 'blank_lines_before_namespace' => ['min_line_breaks' => 1, 'max_line_breaks' => 2], + 'cast_spaces' => true, + 'class_attributes_separation' => ['elements' => [ + 'case' => 'none', + 'const' => 'none', + 'method' => 'one', + 'property' => 'one', + 'trait_import' => 'none', + ]], + 'class_reference_name_casing' => true, + 'clean_namespace' => true, + 'combine_consecutive_issets' => true, + 'combine_consecutive_unsets' => true, + 'combine_nested_dirname' => true, + 'comment_to_phpdoc' => true, + 'constant_case' => true, + 'date_time_immutable' => true, + 'declare_equal_normalize' => true, + 'declare_parentheses' => true, + 'declare_strict_types' => true, + 'dir_constant' => true, + 'echo_tag_syntax' => true, + 'encoding' => true, + 'ereg_to_preg' => true, + 'error_suppression' => true, + 'explicit_indirect_variable' => true, + 'explicit_string_variable' => true, + 'final_class' => true, + 'final_internal_class' => true, + 'full_opening_tag' => true, + 'fully_qualified_strict_types' => ['import_symbols' => true], + 'function_to_constant' => true, + 'global_namespace_import' => [ + 'import_classes' => true, + 'import_constants' => true, + 'import_functions' => true, ], - 'class_reference_name_casing' => true, - 'clean_namespace' => true, - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'combine_nested_dirname' => true, - 'comment_to_phpdoc' => true, - 'constant_case' => true, - 'date_time_immutable' => true, - 'declare_equal_normalize' => true, - 'declare_parentheses' => true, - 'declare_strict_types' => true, - 'dir_constant' => true, - 'echo_tag_syntax' => true, - 'encoding' => true, - 'ereg_to_preg' => true, - 'error_suppression' => true, - 'explicit_indirect_variable' => true, - 'explicit_string_variable' => true, - 'final_class' => true, - 'final_internal_class' => true, - 'full_opening_tag' => true, - 'fully_qualified_strict_types' => ['import_symbols' => true], - 'function_to_constant' => true, - 'global_namespace_import' => ['import_classes' => true, 'import_constants' => true, 'import_functions' => true], - 'heredoc_to_nowdoc' => true, - 'integer_literal_case' => true, - 'lambda_not_used_import' => true, - 'list_syntax' => true, - 'logical_operators' => true, - 'long_to_shorthand_operator' => true, - 'lowercase_cast' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'mb_str_functions' => true, - 'modernize_strpos' => ['modernize_stripos' => true], - 'modernize_types_casting' => true, - 'modifier_keywords' => true, - 'multiline_comment_opening_closing' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'namespaced', 'strict' => true], - 'native_type_declaration_casing' => true, - 'new_expression_parentheses' => true, - 'no_alias_functions' => ['sets' => ['@all']], - 'no_alias_language_construct_call' => true, - 'no_alternative_syntax' => true, - 'no_binary_string' => true, - 'no_closing_tag' => true, - 'no_empty_comment' => true, - 'no_homoglyph_names' => true, - 'no_leading_import_slash' => true, - 'no_mixed_echo_print' => ['use' => 'echo'], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_multiple_statements_per_line' => true, - 'no_null_property_initialization' => true, - 'no_php4_constructor' => true, - 'no_short_bool_cast' => true, - 'no_trailing_comma_in_singleline' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_unneeded_braces' => ['namespaces' => true], - 'no_unneeded_control_parentheses' => [ - 'statements' => [ - 'break', - 'clone', - 'continue', - 'echo_print', - 'negative_instanceof', - 'others', - 'return', - 'switch_case', - 'yield', - 'yield_from', - ], + 'heredoc_to_nowdoc' => true, + 'integer_literal_case' => true, + 'lambda_not_used_import' => true, + 'list_syntax' => true, + 'logical_operators' => true, + 'long_to_shorthand_operator' => true, + 'lowercase_cast' => true, + 'lowercase_keywords' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'mb_str_functions' => true, + 'modernize_strpos' => ['modernize_stripos' => true], + 'modernize_types_casting' => true, + 'modifier_keywords' => true, + 'multiline_comment_opening_closing' => true, + 'native_constant_invocation' => true, + 'native_function_casing' => true, + 'native_function_invocation' => [ + 'include' => ['@compiler_optimized'], + 'scope' => 'namespaced', + 'strict' => true, ], - 'no_unneeded_final_method' => true, - 'no_unneeded_import_alias' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_cast' => true, - 'no_unset_on_property' => true, - 'no_unused_imports' => true, - 'no_useless_concat_operator' => true, - 'no_useless_nullsafe_operator' => true, - 'no_useless_printf' => true, - 'no_useless_return' => true, - 'no_useless_sprintf' => true, - 'no_whitespace_before_comma_in_array' => ['after_heredoc' => true], - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'nullable_type_declaration' => ['syntax' => 'union'], + 'native_type_declaration_casing' => true, + 'new_expression_parentheses' => true, + 'no_alias_functions' => ['sets' => ['@all']], + 'no_alias_language_construct_call' => true, + 'no_alternative_syntax' => true, + 'no_binary_string' => true, + 'no_closing_tag' => true, + 'no_empty_comment' => true, + 'no_homoglyph_names' => true, + 'no_leading_import_slash' => true, + 'no_mixed_echo_print' => ['use' => 'echo'], + 'no_multiline_whitespace_around_double_arrow' => true, + 'no_multiple_statements_per_line' => true, + 'no_null_property_initialization' => true, + 'no_php4_constructor' => true, + 'no_short_bool_cast' => true, + 'no_trailing_comma_in_singleline' => true, + 'no_trailing_whitespace_in_comment' => true, + 'no_unneeded_braces' => ['namespaces' => true], + 'no_unneeded_control_parentheses' => ['statements' => [ + 'break', + 'clone', + 'continue', + 'echo_print', + 'negative_instanceof', + 'others', + 'return', + 'switch_case', + 'yield', + 'yield_from', + ]], + 'no_unneeded_final_method' => true, + 'no_unneeded_import_alias' => true, + 'no_unreachable_default_argument_value' => true, + 'no_unset_cast' => true, + 'no_unset_on_property' => true, + 'no_unused_imports' => true, + 'no_useless_concat_operator' => true, + 'no_useless_nullsafe_operator' => true, + 'no_useless_printf' => true, + 'no_useless_return' => true, + 'no_useless_sprintf' => true, + 'no_whitespace_before_comma_in_array' => ['after_heredoc' => true], + 'non_printable_character' => true, + 'normalize_index_brace' => true, + 'nullable_type_declaration' => ['syntax' => 'union'], 'nullable_type_declaration_for_default_null_value' => true, - 'numeric_literal_separator' => ['override_existing' => true, 'strategy' => 'use_separator'], - 'ordered_attributes' => true, - 'ordered_class_elements' => ['case_sensitive' => false, 'sort_algorithm' => 'alpha'], - 'ordered_imports' => ['case_sensitive' => true], - 'ordered_interfaces' => true, - 'ordered_traits' => true, - 'ordered_types' => ['null_adjustment' => 'always_last'], - 'phpdoc_readonly_class_comment_to_keyword' => true, - 'phpdoc_to_param_type' => true, - 'phpdoc_to_property_type' => true, - 'phpdoc_to_return_type' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'psr_autoloading' => true, - 'random_api_migration' => [ - 'replacements' => ['getrandmax' => 'mt_getrandmax', 'rand' => 'mt_rand', 'srand' => 'mt_srand'], - ], - 'return_assignment' => true, - 'self_accessor' => true, - 'self_static_accessor' => true, - 'set_type_to_cast' => true, - 'short_scalar_cast' => true, - 'simple_to_complex_string_variable' => true, - 'simplified_null_return' => true, - 'single_class_element_per_statement' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_line_comment_spacing' => true, - 'single_line_comment_style' => true, - 'single_line_empty_body' => true, - 'single_trait_insert_per_statement' => true, - 'standardize_not_equals' => true, - 'static_lambda' => true, - 'strict_comparison' => true, - 'strict_param' => true, - 'string_implicit_backslashes' => true, - 'string_length_to_empty' => true, - 'switch_continue_to_break' => true, - 'ternary_to_null_coalescing' => true, - 'trim_array_spaces' => true, - 'use_arrow_functions' => true, - 'void_return' => true, - 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], + 'numeric_literal_separator' => ['override_existing' => true, 'strategy' => 'use_separator'], + 'ordered_attributes' => true, + 'ordered_class_elements' => ['case_sensitive' => false, 'sort_algorithm' => 'alpha'], + 'ordered_imports' => ['case_sensitive' => true], + 'ordered_interfaces' => true, + 'ordered_traits' => true, + 'ordered_types' => ['null_adjustment' => 'always_last'], + 'phpdoc_readonly_class_comment_to_keyword' => true, + 'phpdoc_to_param_type' => true, + 'phpdoc_to_property_type' => true, + 'phpdoc_to_return_type' => true, + 'pow_to_exponentiation' => true, + 'protected_to_private' => true, + 'psr_autoloading' => true, + 'random_api_migration' => ['replacements' => [ + 'getrandmax' => 'mt_getrandmax', + 'rand' => 'mt_rand', + 'srand' => 'mt_srand', + ]], + 'return_assignment' => true, + 'self_accessor' => true, + 'self_static_accessor' => true, + 'set_type_to_cast' => true, + 'short_scalar_cast' => true, + 'simple_to_complex_string_variable' => true, + 'simplified_null_return' => true, + 'single_class_element_per_statement' => true, + 'single_import_per_statement' => true, + 'single_line_after_imports' => true, + 'single_line_comment_spacing' => true, + 'single_line_comment_style' => true, + 'single_line_empty_body' => true, + 'single_trait_insert_per_statement' => true, + 'standardize_not_equals' => true, + 'static_lambda' => true, + 'strict_comparison' => true, + 'strict_param' => true, + 'string_implicit_backslashes' => true, + 'string_length_to_empty' => true, + 'switch_continue_to_break' => true, + 'ternary_to_null_coalescing' => true, + 'trim_array_spaces' => true, + 'use_arrow_functions' => true, + 'void_return' => true, + 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], // --- // Each line of multi-line DocComments must have an asterisk [PSR-5] and must be aligned with the first one. 'align_multiline_comment' => ['comment_type' => 'all_multiline'], @@ -178,7 +184,7 @@ return new Config() // Removes @param, @return and @var tags that don't provide any useful information. 'no_superfluous_phpdoc_tags' => [ 'allow_hidden_params' => false, - 'allow_mixed' => false, + 'allow_mixed' => false, 'allow_unused_params' => false, ], // PHPDoc should contain @param for all params. @@ -216,22 +222,20 @@ return new Config() // The type of @return annotations of methods returning a reference to itself must the configured one. 'phpdoc_return_self_reference' => true, // Scalar types should always be written in the same form. int not integer, bool not boolean, float not real or double. - 'phpdoc_scalar' => [ - 'types' => [ - 'boolean', - 'callback', - 'double', - 'integer', - 'never-return', - 'never-returns', - 'no-return', - 'real', - 'str', - ], - ], + 'phpdoc_scalar' => ['types' => [ + 'boolean', + 'callback', + 'double', + 'integer', + 'never-return', + 'never-returns', + 'no-return', + 'real', + 'str', + ]], // Annotations in PHPDoc should be grouped together so that annotations of the same type immediately follow each other. Annotations of a different type are separated by a single blank line. 'phpdoc_separation' => [ - 'groups' => [ + 'groups' => [ ['Annotation', 'NamedArgumentConstructor', 'Target'], ['author', 'copyright', 'license'], ['category', 'package', 'subpackage'], diff --git a/mago-schema.json b/mago-schema.json index e162e461..1cb5d367 100644 --- a/mago-schema.json +++ b/mago-schema.json @@ -4,6 +4,11 @@ "additionalProperties": false, "description": "Configuration options for the static analyzer.", "properties": { + "allow-implicit-pipe-callable-types": { + "default": false, + "description": "Skip missing-type-hint checks for closures and arrow functions used\nas the right-hand side of the pipe operator (`|>`).\n\nWhen `true`, an inline pipe callable like\n`$x |> fn($p) => strtoupper($p)` will not warn about missing parameter\nor return types, even when the closure / arrow-function checks are\notherwise enabled. The pipe operand's type is enough to derive the\nparameter type, so the hint is mostly noise.\n\nDefaults to `false`.", + "type": "boolean" + }, "allow-possibly-undefined-array-keys": { "default": true, "description": "Allow accessing array keys that may not be defined without reporting an issue.", @@ -1220,6 +1225,10 @@ "enabled": true, "level": "Error" }, + "no-dead-store": { + "enabled": false, + "level": "Warning" + }, "no-debug-symbols": { "enabled": true, "level": "Note" @@ -1326,6 +1335,10 @@ "enabled": true, "level": "Warning" }, + "no-negated-ternary": { + "enabled": false, + "level": "Help" + }, "no-nested-ternary": { "enabled": true, "level": "Warning" @@ -1366,6 +1379,10 @@ "enabled": true, "level": "Help" }, + "no-redundant-else": { + "enabled": false, + "level": "Help" + }, "no-redundant-file": { "enabled": true, "level": "Help" @@ -1414,6 +1431,10 @@ "enabled": true, "level": "Warning" }, + "no-redundant-variable": { + "enabled": false, + "level": "Warning" + }, "no-redundant-write-visibility": { "enabled": true, "level": "Help" @@ -1500,6 +1521,18 @@ "enabled": true, "level": "Error" }, + "no-unused-closure-capture": { + "enabled": false, + "level": "Warning" + }, + "no-unused-global": { + "enabled": false, + "level": "Warning" + }, + "no-unused-static": { + "enabled": false, + "level": "Warning" + }, "no-variable-variable": { "enabled": true, "level": "Warning" @@ -1984,14 +2017,6 @@ "RuleSettings100": { "additionalProperties": false, "properties": { - "camel": { - "default": false, - "type": "boolean" - }, - "either": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -2004,7 +2029,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -2064,7 +2089,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -2086,11 +2111,9 @@ "$ref": "#/$defs/Level", "default": "Help" }, - "max_allowed_statements": { - "default": 0, - "format": "uint", - "minimum": 0, - "type": "integer" + "psr": { + "default": false, + "type": "boolean" } }, "type": "object" @@ -2118,6 +2141,38 @@ "RuleSettings106": { "additionalProperties": false, "properties": { + "check-functions": { + "default": false, + "type": "boolean" + }, + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings107": { + "additionalProperties": false, + "properties": { + "camel": { + "default": false, + "type": "boolean" + }, + "either": { + "default": false, + "type": "boolean" + }, "enabled": { "default": true, "type": "boolean" @@ -2135,26 +2190,6 @@ }, "type": "object" }, - "RuleSettings107": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings108": { "additionalProperties": false, "properties": { @@ -2170,7 +2205,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -2190,7 +2225,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Warning" } }, "type": "object" @@ -2234,7 +2269,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -2254,7 +2289,13 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" + }, + "max_allowed_statements": { + "default": 0, + "format": "uint", + "minimum": 0, + "type": "integer" } }, "type": "object" @@ -2274,7 +2315,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" @@ -2294,7 +2335,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -2303,7 +2344,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -2314,7 +2355,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2334,7 +2375,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -2354,7 +2395,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" @@ -2462,10 +2503,6 @@ "RuleSettings121": { "additionalProperties": false, "properties": { - "allow-loose-behavior": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -2478,7 +2515,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -2486,10 +2523,6 @@ "RuleSettings122": { "additionalProperties": false, "properties": { - "allow-disabling": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -2548,6 +2581,174 @@ "type": "object" }, "RuleSettings125": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings126": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings127": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings128": { + "additionalProperties": false, + "properties": { + "allow-loose-behavior": { + "default": false, + "type": "boolean" + }, + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings129": { + "additionalProperties": false, + "properties": { + "allow-disabling": { + "default": false, + "type": "boolean" + }, + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings13": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings130": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings131": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings132": { "additionalProperties": false, "properties": { "enabled": { @@ -2574,7 +2775,7 @@ }, "type": "object" }, - "RuleSettings126": { + "RuleSettings133": { "additionalProperties": false, "properties": { "count-hooks": { @@ -2609,7 +2810,7 @@ }, "type": "object" }, - "RuleSettings127": { + "RuleSettings134": { "additionalProperties": false, "properties": { "enabled": { @@ -2636,7 +2837,7 @@ }, "type": "object" }, - "RuleSettings128": { + "RuleSettings135": { "additionalProperties": false, "properties": { "enabled": { @@ -2660,7 +2861,7 @@ }, "type": "object" }, - "RuleSettings129": { + "RuleSettings136": { "additionalProperties": false, "properties": { "enabled": { @@ -2680,27 +2881,7 @@ }, "type": "object" }, - "RuleSettings13": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Help" - } - }, - "type": "object" - }, - "RuleSettings130": { + "RuleSettings137": { "additionalProperties": false, "properties": { "camel": { @@ -2732,7 +2913,7 @@ }, "type": "object" }, - "RuleSettings131": { + "RuleSettings138": { "additionalProperties": false, "properties": { "enabled": { @@ -2752,166 +2933,11 @@ }, "type": "object" }, - "RuleSettings132": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings133": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings134": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings135": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Error" - } - }, - "type": "object" - }, - "RuleSettings136": { - "additionalProperties": false, - "properties": { - "allow-class-alias": { - "default": true, - "description": "When true, top-level `class_alias(...)` calls are allowed alongside\ndeclarations.", - "type": "boolean" - }, - "allow-class-exists": { - "default": true, - "description": "When true, top-level `class_exists(...)` calls are allowed alongside\ndeclarations. This is commonly used to trigger autoloading/preloading.", - "type": "boolean" - }, - "allow-conditional-declarations": { - "default": true, - "description": "When true, conditional declarations (`if (...) { class Foo {} }`)\nare allowed alongside declarations. This covers the common pattern\nof polyfilling a class depending on an extension or PHP version.", - "type": "boolean" - }, - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings137": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Error" - } - }, - "type": "object" - }, - "RuleSettings138": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Error" - } - }, - "type": "object" - }, "RuleSettings139": { "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -2920,19 +2946,9 @@ }, "type": "array" }, - "known-sink-functions": { - "default": [ - "printf" - ], - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2988,7 +3004,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2996,14 +3012,6 @@ "RuleSettings141": { "additionalProperties": false, "properties": { - "camel": { - "default": true, - "type": "boolean" - }, - "either": { - "default": false, - "type": "boolean" - }, "enabled": { "default": false, "type": "boolean" @@ -3016,7 +3024,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -3025,7 +3033,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3044,8 +3052,23 @@ "RuleSettings143": { "additionalProperties": false, "properties": { - "enabled": { + "allow-class-alias": { "default": true, + "description": "When true, top-level `class_alias(...)` calls are allowed alongside\ndeclarations.", + "type": "boolean" + }, + "allow-class-exists": { + "default": true, + "description": "When true, top-level `class_exists(...)` calls are allowed alongside\ndeclarations. This is commonly used to trigger autoloading/preloading.", + "type": "boolean" + }, + "allow-conditional-declarations": { + "default": true, + "description": "When true, conditional declarations (`if (...) { class Foo {} }`)\nare allowed alongside declarations. This covers the common pattern\nof polyfilling a class depending on an extension or PHP version.", + "type": "boolean" + }, + "enabled": { + "default": false, "type": "boolean" }, "exclude": { @@ -3076,7 +3099,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -3096,12 +3119,204 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" }, "RuleSettings146": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "known-sink-functions": { + "default": [ + "printf" + ], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings147": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings148": { + "additionalProperties": false, + "properties": { + "camel": { + "default": true, + "type": "boolean" + }, + "either": { + "default": false, + "type": "boolean" + }, + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings149": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings15": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "extensions": { + "default": [], + "items": { + "$ref": "#/$defs/DisallowedEntry" + }, + "type": "array" + }, + "functions": { + "default": [], + "items": { + "$ref": "#/$defs/DisallowedEntry" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings150": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings151": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings152": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings153": { "additionalProperties": false, "properties": { "allowed-methods": { @@ -3160,184 +3375,6 @@ }, "type": "object" }, - "RuleSettings147": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings148": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Help" - } - }, - "type": "object" - }, - "RuleSettings149": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings15": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "extensions": { - "default": [], - "items": { - "$ref": "#/$defs/DisallowedEntry" - }, - "type": "array" - }, - "functions": { - "default": [], - "items": { - "$ref": "#/$defs/DisallowedEntry" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings150": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, - "RuleSettings151": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Help" - } - }, - "type": "object" - }, - "RuleSettings152": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Note" - }, - "style": { - "$ref": "#/$defs/StringStyleOption", - "default": "interpolation" - } - }, - "type": "object" - }, - "RuleSettings153": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings154": { "additionalProperties": false, "properties": { @@ -3354,13 +3391,6 @@ "level": { "$ref": "#/$defs/Level", "default": "Warning" - }, - "min-digits": { - "default": 5, - "description": "Minimum number of digits before suggesting separators.", - "format": "uint", - "minimum": 0, - "type": "integer" } }, "type": "object" @@ -3369,7 +3399,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3389,7 +3419,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3400,7 +3430,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -3460,7 +3490,11 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" + }, + "style": { + "$ref": "#/$defs/StringStyleOption", + "default": "interpolation" } }, "type": "object" @@ -3496,7 +3530,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3513,6 +3547,33 @@ "type": "object" }, "RuleSettings161": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + }, + "min-digits": { + "default": 5, + "description": "Minimum number of digits before suggesting separators.", + "format": "uint", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuleSettings162": { "additionalProperties": false, "properties": { "enabled": { @@ -3532,31 +3593,11 @@ }, "type": "object" }, - "RuleSettings162": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings163": { "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3567,7 +3608,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -3576,7 +3617,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3587,7 +3628,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -3596,7 +3637,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3607,12 +3648,72 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Help" } }, "type": "object" }, "RuleSettings166": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings167": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings168": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings169": { "additionalProperties": false, "properties": { "enabled": { @@ -3632,7 +3733,107 @@ }, "type": "object" }, - "RuleSettings167": { + "RuleSettings17": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings170": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings171": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings172": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings173": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings174": { "additionalProperties": false, "properties": { "classes": { @@ -3692,7 +3893,7 @@ }, "type": "object" }, - "RuleSettings168": { + "RuleSettings175": { "additionalProperties": false, "properties": { "enabled": { @@ -3712,26 +3913,6 @@ }, "type": "object" }, - "RuleSettings17": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Help" - } - }, - "type": "object" - }, "RuleSettings18": { "additionalProperties": false, "properties": { @@ -4679,7 +4860,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4710,7 +4891,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4730,7 +4911,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4763,7 +4944,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4783,7 +4964,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4794,7 +4975,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4803,7 +4984,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4814,7 +4995,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Warning" } }, "type": "object" @@ -4823,7 +5004,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4834,7 +5015,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4843,7 +5024,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4854,7 +5035,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -4874,7 +5055,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4914,7 +5095,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4934,7 +5115,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" @@ -4954,7 +5135,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4994,7 +5175,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Error" } }, "type": "object" @@ -5014,7 +5195,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -5023,7 +5204,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5034,7 +5215,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Help" } }, "type": "object" @@ -5054,7 +5235,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -5074,7 +5255,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -5094,7 +5275,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -5103,7 +5284,27 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings77": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, "type": "boolean" }, "exclude": { @@ -5119,33 +5320,9 @@ }, "type": "object" }, - "RuleSettings77": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings78": { "additionalProperties": false, "properties": { - "allow-array-checks": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -5158,7 +5335,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -5178,7 +5355,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Error" } }, "type": "object" @@ -5222,11 +5399,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" - }, - "preserve-single-line-comments": { - "default": false, - "type": "boolean" + "default": "Error" } }, "type": "object" @@ -5246,7 +5419,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -5266,7 +5439,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Error" } }, "type": "object" @@ -5275,7 +5448,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5286,7 +5459,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" } }, "type": "object" @@ -5295,7 +5468,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5304,19 +5477,9 @@ }, "type": "array" }, - "exclude-constructors": { - "default": true, - "description": "When enabled, constructors are exempt from this rule.", - "type": "boolean" - }, - "exclude-setters": { - "default": false, - "description": "When enabled, methods whose name starts with `set` are exempt from this rule.", - "type": "boolean" - }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -5324,10 +5487,14 @@ "RuleSettings85": { "additionalProperties": false, "properties": { - "enabled": { + "allow-array-checks": { "default": false, "type": "boolean" }, + "enabled": { + "default": true, + "type": "boolean" + }, "exclude": { "items": { "type": "string" @@ -5356,7 +5523,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" @@ -5365,7 +5532,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -5376,7 +5543,11 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" + }, + "preserve-single-line-comments": { + "default": false, + "type": "boolean" } }, "type": "object" @@ -5385,7 +5556,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -5396,7 +5567,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -5405,7 +5576,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -5456,7 +5627,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" } }, "type": "object" @@ -5474,6 +5645,16 @@ }, "type": "array" }, + "exclude-constructors": { + "default": true, + "description": "When enabled, constructors are exempt from this rule.", + "type": "boolean" + }, + "exclude-setters": { + "default": false, + "description": "When enabled, methods whose name starts with `set` are exempt from this rule.", + "type": "boolean" + }, "level": { "$ref": "#/$defs/Level", "default": "Help" @@ -5485,7 +5666,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5525,7 +5706,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5536,7 +5717,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -5545,7 +5726,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5556,7 +5737,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -5565,7 +5746,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5576,7 +5757,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -5596,11 +5777,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" - }, - "psr": { - "default": false, - "type": "boolean" + "default": "Note" } }, "type": "object" @@ -5620,7 +5797,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" } }, "type": "object" @@ -5628,10 +5805,6 @@ "RuleSettings99": { "additionalProperties": false, "properties": { - "check-functions": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -5719,7 +5892,7 @@ } }, "constant-condition": { - "$ref": "#/$defs/RuleSettings131", + "$ref": "#/$defs/RuleSettings138", "default": { "enabled": true, "level": "Help" @@ -5805,21 +5978,21 @@ } }, "explicit-nullable-param": { - "$ref": "#/$defs/RuleSettings101", + "$ref": "#/$defs/RuleSettings108", "default": { "enabled": true, "level": "Warning" } }, "explicit-octal": { - "$ref": "#/$defs/RuleSettings102", + "$ref": "#/$defs/RuleSettings109", "default": { "enabled": true, "level": "Warning" } }, "file-name": { - "$ref": "#/$defs/RuleSettings99", + "$ref": "#/$defs/RuleSettings106", "default": { "check-functions": false, "enabled": true, @@ -5834,7 +6007,7 @@ } }, "function-name": { - "$ref": "#/$defs/RuleSettings100", + "$ref": "#/$defs/RuleSettings107", "default": { "camel": false, "either": false, @@ -5853,42 +6026,42 @@ } }, "identity-comparison": { - "$ref": "#/$defs/RuleSettings92", + "$ref": "#/$defs/RuleSettings99", "default": { "enabled": true, "level": "Warning" } }, "ineffective-format-ignore-next": { - "$ref": "#/$defs/RuleSettings93", + "$ref": "#/$defs/RuleSettings100", "default": { "enabled": true, "level": "Warning" } }, "ineffective-format-ignore-region": { - "$ref": "#/$defs/RuleSettings94", + "$ref": "#/$defs/RuleSettings101", "default": { "enabled": true, "level": "Warning" } }, "inline-variable-return": { - "$ref": "#/$defs/RuleSettings95", + "$ref": "#/$defs/RuleSettings102", "default": { "enabled": true, "level": "Warning" } }, "instanceof-stringable": { - "$ref": "#/$defs/RuleSettings96", + "$ref": "#/$defs/RuleSettings103", "default": { "enabled": true, "level": "Warning" } }, "interface-name": { - "$ref": "#/$defs/RuleSettings97", + "$ref": "#/$defs/RuleSettings104", "default": { "enabled": true, "level": "Help", @@ -5896,7 +6069,7 @@ } }, "invalid-open-tag": { - "$ref": "#/$defs/RuleSettings98", + "$ref": "#/$defs/RuleSettings105", "default": { "enabled": true, "level": "Note" @@ -5934,7 +6107,7 @@ } }, "lowercase-type-hint": { - "$ref": "#/$defs/RuleSettings91", + "$ref": "#/$defs/RuleSettings98", "default": { "enabled": true, "level": "Help" @@ -5951,14 +6124,14 @@ } }, "middleware-in-routes": { - "$ref": "#/$defs/RuleSettings147", + "$ref": "#/$defs/RuleSettings154", "default": { "enabled": true, "level": "Warning" } }, "missing-docs": { - "$ref": "#/$defs/RuleSettings167", + "$ref": "#/$defs/RuleSettings174", "default": { "classes": false, "constants": true, @@ -5975,42 +6148,42 @@ } }, "no-alias-function": { - "$ref": "#/$defs/RuleSettings90", + "$ref": "#/$defs/RuleSettings97", "default": { "enabled": true, "level": "Note" } }, "no-alternative-syntax": { - "$ref": "#/$defs/RuleSettings157", + "$ref": "#/$defs/RuleSettings164", "default": { "enabled": false, "level": "Warning" } }, "no-array-accumulation-in-loop": { - "$ref": "#/$defs/RuleSettings132", + "$ref": "#/$defs/RuleSettings139", "default": { "enabled": false, "level": "Warning" } }, "no-assign-in-argument": { - "$ref": "#/$defs/RuleSettings85", + "$ref": "#/$defs/RuleSettings92", "default": { "enabled": false, "level": "Warning" } }, "no-assign-in-condition": { - "$ref": "#/$defs/RuleSettings86", + "$ref": "#/$defs/RuleSettings93", "default": { "enabled": true, "level": "Warning" } }, "no-boolean-flag-parameter": { - "$ref": "#/$defs/RuleSettings84", + "$ref": "#/$defs/RuleSettings91", "default": { "enabled": true, "exclude-constructors": true, @@ -6019,19 +6192,26 @@ } }, "no-closing-tag": { - "$ref": "#/$defs/RuleSettings83", + "$ref": "#/$defs/RuleSettings90", "default": { "enabled": true, "level": "Help" } }, "no-db-schema-change": { - "$ref": "#/$defs/RuleSettings164", + "$ref": "#/$defs/RuleSettings171", "default": { "enabled": true, "level": "Error" } }, + "no-dead-store": { + "$ref": "#/$defs/RuleSettings61", + "default": { + "enabled": false, + "level": "Warning" + } + }, "no-debug-symbols": { "$ref": "#/$defs/RuleSettings27", "default": { @@ -6040,35 +6220,35 @@ } }, "no-direct-db-query": { - "$ref": "#/$defs/RuleSettings163", + "$ref": "#/$defs/RuleSettings170", "default": { "enabled": true, "level": "Warning" } }, "no-else-clause": { - "$ref": "#/$defs/RuleSettings82", + "$ref": "#/$defs/RuleSettings89", "default": { "enabled": true, "level": "Help" } }, "no-empty": { - "$ref": "#/$defs/RuleSettings75", + "$ref": "#/$defs/RuleSettings82", "default": { "enabled": true, "level": "Error" } }, "no-empty-catch-clause": { - "$ref": "#/$defs/RuleSettings81", + "$ref": "#/$defs/RuleSettings88", "default": { "enabled": true, "level": "Warning" } }, "no-empty-comment": { - "$ref": "#/$defs/RuleSettings80", + "$ref": "#/$defs/RuleSettings87", "default": { "enabled": true, "level": "Note", @@ -6076,112 +6256,112 @@ } }, "no-empty-loop": { - "$ref": "#/$defs/RuleSettings79", + "$ref": "#/$defs/RuleSettings86", "default": { "enabled": true, "level": "Note" } }, "no-error-control-operator": { - "$ref": "#/$defs/RuleSettings74", + "$ref": "#/$defs/RuleSettings81", "default": { "enabled": true, "level": "Error" } }, "no-eval": { - "$ref": "#/$defs/RuleSettings73", + "$ref": "#/$defs/RuleSettings80", "default": { "enabled": true, "level": "Error" } }, "no-ffi": { - "$ref": "#/$defs/RuleSettings72", + "$ref": "#/$defs/RuleSettings79", "default": { "enabled": true, "level": "Error" } }, "no-fully-qualified-global-class-like": { - "$ref": "#/$defs/RuleSettings87", + "$ref": "#/$defs/RuleSettings94", "default": { "enabled": false, "level": "Help" } }, "no-fully-qualified-global-constant": { - "$ref": "#/$defs/RuleSettings88", + "$ref": "#/$defs/RuleSettings95", "default": { "enabled": false, "level": "Help" } }, "no-fully-qualified-global-function": { - "$ref": "#/$defs/RuleSettings89", + "$ref": "#/$defs/RuleSettings96", "default": { "enabled": false, "level": "Help" } }, "no-global": { - "$ref": "#/$defs/RuleSettings71", + "$ref": "#/$defs/RuleSettings78", "default": { "enabled": true, "level": "Error" } }, "no-goto": { - "$ref": "#/$defs/RuleSettings70", + "$ref": "#/$defs/RuleSettings77", "default": { "enabled": true, "level": "Note" } }, "no-hash-comment": { - "$ref": "#/$defs/RuleSettings68", + "$ref": "#/$defs/RuleSettings75", "default": { "enabled": true, "level": "Warning" } }, "no-hash-emoji": { - "$ref": "#/$defs/RuleSettings67", + "$ref": "#/$defs/RuleSettings74", "default": { "enabled": true, "level": "Warning" } }, "no-ini-set": { - "$ref": "#/$defs/RuleSettings133", + "$ref": "#/$defs/RuleSettings140", "default": { "enabled": true, "level": "Warning" } }, "no-inline": { - "$ref": "#/$defs/RuleSettings135", + "$ref": "#/$defs/RuleSettings142", "default": { "enabled": false, "level": "Error" } }, "no-insecure-comparison": { - "$ref": "#/$defs/RuleSettings137", + "$ref": "#/$defs/RuleSettings144", "default": { "enabled": true, "level": "Error" } }, "no-is-null": { - "$ref": "#/$defs/RuleSettings76", + "$ref": "#/$defs/RuleSettings83", "default": { "enabled": false, "level": "Note" } }, "no-isset": { - "$ref": "#/$defs/RuleSettings78", + "$ref": "#/$defs/RuleSettings85", "default": { "allow-array-checks": false, "enabled": true, @@ -6189,77 +6369,84 @@ } }, "no-iterator-to-array-in-foreach": { - "$ref": "#/$defs/RuleSettings77", + "$ref": "#/$defs/RuleSettings84", "default": { "enabled": false, "level": "Warning" } }, "no-literal-namespace-string": { - "$ref": "#/$defs/RuleSettings168", + "$ref": "#/$defs/RuleSettings175", "default": { "enabled": false, "level": "Warning" } }, "no-literal-password": { - "$ref": "#/$defs/RuleSettings138", + "$ref": "#/$defs/RuleSettings145", "default": { "enabled": true, "level": "Error" } }, "no-multi-assignments": { - "$ref": "#/$defs/RuleSettings65", + "$ref": "#/$defs/RuleSettings71", "default": { "enabled": true, "level": "Warning" } }, + "no-negated-ternary": { + "$ref": "#/$defs/RuleSettings72", + "default": { + "enabled": false, + "level": "Help" + } + }, "no-nested-ternary": { - "$ref": "#/$defs/RuleSettings66", + "$ref": "#/$defs/RuleSettings73", "default": { "enabled": true, "level": "Warning" } }, "no-noop": { - "$ref": "#/$defs/RuleSettings63", + "$ref": "#/$defs/RuleSettings69", "default": { "enabled": true, "level": "Help" } }, "no-null-property-init": { - "$ref": "#/$defs/RuleSettings161", + "$ref": "#/$defs/RuleSettings168", "default": { "enabled": false, "level": "Help" } }, "no-only": { - "$ref": "#/$defs/RuleSettings64", + "$ref": "#/$defs/RuleSettings70", "default": { "enabled": true, "level": "Error" } }, "no-parameter-shadowing": { - "$ref": "#/$defs/RuleSettings134", + "$ref": "#/$defs/RuleSettings141", "default": { "enabled": false, "level": "Warning" } }, "no-php-tag-terminator": { - "$ref": "#/$defs/RuleSettings62", + "$ref": "#/$defs/RuleSettings68", "default": { "enabled": true, "level": "Note" } }, "no-protected-in-final": { - "$ref": "#/$defs/RuleSettings61", + "$ref": "#/$defs/RuleSettings67", "default": { "enabled": true, "level": "Help" @@ -6273,7 +6460,7 @@ } }, "no-redundant-block": { - "$ref": "#/$defs/RuleSettings57", + "$ref": "#/$defs/RuleSettings58", "default": { "enabled": true, "level": "Help" @@ -6286,6 +6473,13 @@ "level": "Help" } }, + "no-redundant-else": { + "$ref": "#/$defs/RuleSettings57", + "default": { + "enabled": false, + "level": "Help" + } + }, "no-redundant-file": { "$ref": "#/$defs/RuleSettings55", "default": { @@ -6364,12 +6558,19 @@ } }, "no-redundant-use": { - "$ref": "#/$defs/RuleSettings58", + "$ref": "#/$defs/RuleSettings59", "default": { "enabled": true, "level": "Warning" } }, + "no-redundant-variable": { + "$ref": "#/$defs/RuleSettings60", + "default": { + "enabled": false, + "level": "Warning" + } + }, "no-redundant-write-visibility": { "$ref": "#/$defs/RuleSettings43", "default": { @@ -6378,14 +6579,14 @@ } }, "no-redundant-yield-from": { - "$ref": "#/$defs/RuleSettings59", + "$ref": "#/$defs/RuleSettings65", "default": { "enabled": true, "level": "Help" } }, "no-request-all": { - "$ref": "#/$defs/RuleSettings145", + "$ref": "#/$defs/RuleSettings152", "default": { "enabled": true, "level": "Warning" @@ -6399,21 +6600,21 @@ } }, "no-roles-as-capabilities": { - "$ref": "#/$defs/RuleSettings166", + "$ref": "#/$defs/RuleSettings173", "default": { "enabled": true, "level": "Warning" } }, "no-self-assignment": { - "$ref": "#/$defs/RuleSettings60", + "$ref": "#/$defs/RuleSettings66", "default": { "enabled": true, "level": "Warning" } }, "no-service-state-mutation": { - "$ref": "#/$defs/RuleSettings146", + "$ref": "#/$defs/RuleSettings153", "default": { "allowed-methods": [ "__construct", @@ -6442,7 +6643,7 @@ } }, "no-short-bool-cast": { - "$ref": "#/$defs/RuleSettings156", + "$ref": "#/$defs/RuleSettings163", "default": { "enabled": false, "level": "Help" @@ -6463,7 +6664,7 @@ } }, "no-side-effects-with-declarations": { - "$ref": "#/$defs/RuleSettings136", + "$ref": "#/$defs/RuleSettings143", "default": { "allow-class-alias": true, "allow-class-exists": true, @@ -6494,21 +6695,42 @@ } }, "no-unescaped-output": { - "$ref": "#/$defs/RuleSettings165", + "$ref": "#/$defs/RuleSettings172", "default": { "enabled": true, "level": "Error" } }, "no-unsafe-finally": { - "$ref": "#/$defs/RuleSettings142", + "$ref": "#/$defs/RuleSettings149", "default": { "enabled": true, "level": "Error" } }, + "no-unused-closure-capture": { + "$ref": "#/$defs/RuleSettings64", + "default": { + "enabled": false, + "level": "Warning" + } + }, + "no-unused-global": { + "$ref": "#/$defs/RuleSettings63", + "default": { + "enabled": false, + "level": "Warning" + } + }, + "no-unused-static": { + "$ref": "#/$defs/RuleSettings62", + "default": { + "enabled": false, + "level": "Warning" + } + }, "no-variable-variable": { - "$ref": "#/$defs/RuleSettings69", + "$ref": "#/$defs/RuleSettings76", "default": { "enabled": true, "level": "Warning" @@ -6536,14 +6758,14 @@ } }, "prefer-arrow-function": { - "$ref": "#/$defs/RuleSettings103", + "$ref": "#/$defs/RuleSettings110", "default": { "enabled": true, "level": "Help" } }, "prefer-early-continue": { - "$ref": "#/$defs/RuleSettings104", + "$ref": "#/$defs/RuleSettings111", "default": { "enabled": true, "level": "Help", @@ -6566,56 +6788,56 @@ } }, "prefer-interface": { - "$ref": "#/$defs/RuleSettings105", + "$ref": "#/$defs/RuleSettings112", "default": { "enabled": true, "level": "Note" } }, "prefer-pre-increment": { - "$ref": "#/$defs/RuleSettings158", + "$ref": "#/$defs/RuleSettings165", "default": { "enabled": false, "level": "Help" } }, "prefer-self-return-type": { - "$ref": "#/$defs/RuleSettings159", + "$ref": "#/$defs/RuleSettings166", "default": { "enabled": false, "level": "Help" } }, "prefer-static-closure": { - "$ref": "#/$defs/RuleSettings106", + "$ref": "#/$defs/RuleSettings113", "default": { "enabled": true, "level": "Help" } }, "prefer-test-attribute": { - "$ref": "#/$defs/RuleSettings107", + "$ref": "#/$defs/RuleSettings114", "default": { "enabled": false, "level": "Warning" } }, "prefer-view-array": { - "$ref": "#/$defs/RuleSettings108", + "$ref": "#/$defs/RuleSettings115", "default": { "enabled": true, "level": "Help" } }, "prefer-while-loop": { - "$ref": "#/$defs/RuleSettings109", + "$ref": "#/$defs/RuleSettings116", "default": { "enabled": true, "level": "Note" } }, "property-name": { - "$ref": "#/$defs/RuleSettings141", + "$ref": "#/$defs/RuleSettings148", "default": { "camel": true, "either": false, @@ -6624,70 +6846,70 @@ } }, "psl-array-functions": { - "$ref": "#/$defs/RuleSettings110", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-data-structures": { - "$ref": "#/$defs/RuleSettings111", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-datetime": { - "$ref": "#/$defs/RuleSettings112", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-math-functions": { - "$ref": "#/$defs/RuleSettings113", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-output": { - "$ref": "#/$defs/RuleSettings114", - "default": { - "enabled": true, - "level": "Error" - } - }, - "psl-randomness-functions": { - "$ref": "#/$defs/RuleSettings115", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-regex-functions": { - "$ref": "#/$defs/RuleSettings116", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-sleep-functions": { "$ref": "#/$defs/RuleSettings117", "default": { "enabled": true, "level": "Warning" } }, - "psl-string-functions": { + "psl-data-structures": { "$ref": "#/$defs/RuleSettings118", "default": { "enabled": true, "level": "Warning" } }, + "psl-datetime": { + "$ref": "#/$defs/RuleSettings119", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-math-functions": { + "$ref": "#/$defs/RuleSettings120", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-output": { + "$ref": "#/$defs/RuleSettings121", + "default": { + "enabled": true, + "level": "Error" + } + }, + "psl-randomness-functions": { + "$ref": "#/$defs/RuleSettings122", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-regex-functions": { + "$ref": "#/$defs/RuleSettings123", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-sleep-functions": { + "$ref": "#/$defs/RuleSettings124", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-string-functions": { + "$ref": "#/$defs/RuleSettings125", + "default": { + "enabled": true, + "level": "Warning" + } + }, "readable-literal": { - "$ref": "#/$defs/RuleSettings154", + "$ref": "#/$defs/RuleSettings161", "default": { "enabled": true, "level": "Warning", @@ -6695,63 +6917,63 @@ } }, "require-namespace": { - "$ref": "#/$defs/RuleSettings150", + "$ref": "#/$defs/RuleSettings157", "default": { "enabled": false, "level": "Warning" } }, "require-preg-quote-delimiter": { - "$ref": "#/$defs/RuleSettings149", + "$ref": "#/$defs/RuleSettings156", "default": { "enabled": true, "level": "Warning" } }, "sensitive-parameter": { - "$ref": "#/$defs/RuleSettings140", + "$ref": "#/$defs/RuleSettings147", "default": { "enabled": true, "level": "Error" } }, "single-class-per-file": { - "$ref": "#/$defs/RuleSettings153", + "$ref": "#/$defs/RuleSettings160", "default": { "enabled": true, "level": "Warning" } }, "sorted-integer-keys": { - "$ref": "#/$defs/RuleSettings151", + "$ref": "#/$defs/RuleSettings158", "default": { "enabled": false, "level": "Help" } }, "str-contains": { - "$ref": "#/$defs/RuleSettings119", + "$ref": "#/$defs/RuleSettings126", "default": { "enabled": true, "level": "Warning" } }, "str-starts-with": { - "$ref": "#/$defs/RuleSettings120", + "$ref": "#/$defs/RuleSettings127", "default": { "enabled": true, "level": "Warning" } }, "strict-assertions": { - "$ref": "#/$defs/RuleSettings143", + "$ref": "#/$defs/RuleSettings150", "default": { "enabled": true, "level": "Warning" } }, "strict-behavior": { - "$ref": "#/$defs/RuleSettings121", + "$ref": "#/$defs/RuleSettings128", "default": { "allow-loose-behavior": false, "enabled": true, @@ -6759,7 +6981,7 @@ } }, "strict-types": { - "$ref": "#/$defs/RuleSettings122", + "$ref": "#/$defs/RuleSettings129", "default": { "allow-disabling": false, "enabled": true, @@ -6767,7 +6989,7 @@ } }, "string-style": { - "$ref": "#/$defs/RuleSettings152", + "$ref": "#/$defs/RuleSettings159", "default": { "enabled": false, "level": "Note", @@ -6775,28 +6997,28 @@ } }, "switch-continue-to-break": { - "$ref": "#/$defs/RuleSettings160", + "$ref": "#/$defs/RuleSettings167", "default": { "enabled": false, "level": "Warning" } }, "tagged-fixme": { - "$ref": "#/$defs/RuleSettings123", + "$ref": "#/$defs/RuleSettings130", "default": { "enabled": true, "level": "Warning" } }, "tagged-todo": { - "$ref": "#/$defs/RuleSettings124", + "$ref": "#/$defs/RuleSettings131", "default": { "enabled": true, "level": "Warning" } }, "tainted-data-to-sink": { - "$ref": "#/$defs/RuleSettings139", + "$ref": "#/$defs/RuleSettings146", "default": { "enabled": true, "known-sink-functions": [ @@ -6806,7 +7028,7 @@ } }, "too-many-enum-cases": { - "$ref": "#/$defs/RuleSettings125", + "$ref": "#/$defs/RuleSettings132", "default": { "enabled": true, "level": "Error", @@ -6814,7 +7036,7 @@ } }, "too-many-methods": { - "$ref": "#/$defs/RuleSettings126", + "$ref": "#/$defs/RuleSettings133", "default": { "count-hooks": false, "count-setters-and-getters": false, @@ -6824,7 +7046,7 @@ } }, "too-many-properties": { - "$ref": "#/$defs/RuleSettings127", + "$ref": "#/$defs/RuleSettings134", "default": { "enabled": true, "level": "Error", @@ -6832,7 +7054,7 @@ } }, "trait-name": { - "$ref": "#/$defs/RuleSettings128", + "$ref": "#/$defs/RuleSettings135", "default": { "enabled": true, "level": "Help", @@ -6840,7 +7062,7 @@ } }, "use-compound-assignment": { - "$ref": "#/$defs/RuleSettings148", + "$ref": "#/$defs/RuleSettings155", "default": { "enabled": true, "level": "Help" @@ -6861,7 +7083,7 @@ } }, "use-specific-assertions": { - "$ref": "#/$defs/RuleSettings144", + "$ref": "#/$defs/RuleSettings151", "default": { "enabled": true, "level": "Warning" @@ -6875,21 +7097,21 @@ } }, "use-wp-functions": { - "$ref": "#/$defs/RuleSettings162", + "$ref": "#/$defs/RuleSettings169", "default": { "enabled": true, "level": "Warning" } }, "valid-docblock": { - "$ref": "#/$defs/RuleSettings129", + "$ref": "#/$defs/RuleSettings136", "default": { "enabled": true, "level": "Note" } }, "variable-name": { - "$ref": "#/$defs/RuleSettings130", + "$ref": "#/$defs/RuleSettings137", "default": { "camel": false, "check-parameters": true, @@ -6899,7 +7121,7 @@ } }, "yoda-conditions": { - "$ref": "#/$defs/RuleSettings155", + "$ref": "#/$defs/RuleSettings162", "default": { "enabled": false, "level": "Help" @@ -6957,7 +7179,7 @@ "type": "array" }, "workspace": { - "default": "/home/gcch/Répertoires/git.gcch.fr/haiku-atelier-2024", + "default": "/home/gcch/Répertoires/git.gcch.fr/gcch/haiku-atelier-2024", "description": "The workspace directory from which to start scanning.\n\nDefaults to the current working directory.", "type": "string" } @@ -7161,7 +7383,7 @@ }, "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, - "description": "The main configuration structure for Mago CLI.\n\nThis struct aggregates all configuration settings for Mago, including global options\nlike threading and PHP version, as well as specialized configurations for each service\n(linter, analyzer, formatter, guard).\n\nConfiguration values are loaded from multiple sources with the following precedence\n(from highest to lowest):\n\n1. Environment variables (`MAGO_*`)\n2. Workspace `mago.toml` file\n3. Global `mago.toml` file (`$XDG_CONFIG_HOME` or `$HOME`)\n4. Built-in defaults\n\nThe struct uses serde for deserialization from TOML files and environment variables,\nwith strict validation via `deny_unknown_fields` to catch configuration errors early.", + "description": "The main configuration structure for Mago CLI.\n\nAggregates all settings: top-level scalars (`php-version`, `threads`, …) plus\nservice-specific sub-configurations (linter, analyzer, formatter, guard, parser).\n\nLoaded by [`Configuration::load`]; see the [module-level documentation](self) for the\nfull precedence order and `extends` semantics. Strict validation via\n`deny_unknown_fields` catches typos early (note that the `extends` directive itself is\nstripped from each layer before deserialization, so it never trips the strict check).", "properties": { "allow-unsupported-php-version": { "default": false, @@ -7171,6 +7393,7 @@ "analyzer": { "$ref": "#/$defs/AnalyzerConfiguration", "default": { + "allow-implicit-pipe-callable-types": false, "allow-possibly-undefined-array-keys": true, "allow-side-effects-in-conditions": true, "analyze-dead-code": false, @@ -7494,6 +7717,10 @@ "enabled": true, "level": "Error" }, + "no-dead-store": { + "enabled": false, + "level": "Warning" + }, "no-debug-symbols": { "enabled": true, "level": "Note" @@ -7600,6 +7827,10 @@ "enabled": true, "level": "Warning" }, + "no-negated-ternary": { + "enabled": false, + "level": "Help" + }, "no-nested-ternary": { "enabled": true, "level": "Warning" @@ -7640,6 +7871,10 @@ "enabled": true, "level": "Help" }, + "no-redundant-else": { + "enabled": false, + "level": "Help" + }, "no-redundant-file": { "enabled": true, "level": "Help" @@ -7688,6 +7923,10 @@ "enabled": true, "level": "Warning" }, + "no-redundant-variable": { + "enabled": false, + "level": "Warning" + }, "no-redundant-write-visibility": { "enabled": true, "level": "Help" @@ -7774,6 +8013,18 @@ "enabled": true, "level": "Error" }, + "no-unused-closure-capture": { + "enabled": false, + "level": "Warning" + }, + "no-unused-global": { + "enabled": false, + "level": "Warning" + }, + "no-unused-static": { + "enabled": false, + "level": "Warning" + }, "no-variable-variable": { "enabled": true, "level": "Warning" @@ -8046,7 +8297,7 @@ }, "includes": [], "paths": [], - "workspace": "/home/gcch/Répertoires/git.gcch.fr/haiku-atelier-2024" + "workspace": "/home/gcch/Répertoires/git.gcch.fr/gcch/haiku-atelier-2024" }, "description": "Source discovery and workspace configuration.\n\nDefines the workspace root, source paths to scan, and exclusion patterns.\nThis configuration determines which PHP files are loaded into the database\nfor analysis, linting, or formatting." }, @@ -8058,7 +8309,7 @@ "type": "integer" }, "threads": { - "default": 4, + "default": 12, "description": "Number of worker threads for parallel processing.\n\nControls the thread pool size used by Rayon for parallel operations.\nIf set to 0, defaults to the number of logical CPUs available.\nCan be overridden via `MAGO_THREADS` environment variable or `--threads` CLI flag.", "format": "uint", "minimum": 0, diff --git a/mago.toml b/mago.toml index f29e960d..aa5c2ab6 100644 --- a/mago.toml +++ b/mago.toml @@ -36,6 +36,7 @@ threads = 0 no-else-clause = { enabled = false } [analyzer] + allow-implicit-pipe-callable-types = false allow-possibly-undefined-array-keys = false allow-side-effects-in-conditions = true analyze-dead-code = true diff --git a/scripts/remove-scaled-images.php b/scripts/remove-scaled-images.php index d4bd6024..678f8f36 100755 --- a/scripts/remove-scaled-images.php +++ b/scripts/remove-scaled-images.php @@ -16,7 +16,7 @@ $wp_postmeta = "{$wpdb->prefix}postmeta"; try { $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Error Handling - $sql = "UPDATE {$wp_postmeta} SET meta_value = REPLACE(meta_value,'-scaled.jpg','.jpg') WHERE meta_key='_wp_attached_file' AND meta_value LIKE '%-scaled.jpg%'"; + $sql = "UPDATE {$wp_postmeta} SET meta_value = REPLACE(meta_value,'-scaled.jpg','.jpg') WHERE meta_key='_wp_attached_file' AND meta_value LIKE '%-scaled.jpg%'"; $result = $pdo->exec($sql); print_r($result); } catch (PDOException $e) { @@ -29,12 +29,12 @@ $image_metas = []; try { $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Error Handling - $sql = "SELECT * FROM {$wp_postmeta} WHERE meta_value LIKE '%-scaled.jpg%' AND meta_key='_wp_attachment_metadata'"; - $statement = $pdo->query($sql); + $sql = "SELECT * FROM {$wp_postmeta} WHERE meta_value LIKE '%-scaled.jpg%' AND meta_key='_wp_attachment_metadata'"; + $statement = $pdo->query($sql); $image_metas = $statement->fetchAll(); foreach ($image_metas as $meta) { - $meta_value = unserialize($meta['meta_value']); - $file = $meta_value['file']; + $meta_value = unserialize($meta['meta_value']); + $file = $meta_value['file']; $meta_value['file'] = str_replace('-scaled.jpg', '.jpg', $file); update_post_meta($meta['post_id'], $meta['meta_key'], $meta_value); $result = get_post_meta($meta['post_id'], $meta['meta_key']); diff --git a/web/app/themes/haiku-atelier-2024/404.php b/web/app/themes/haiku-atelier-2024/404.php index f6296dd4..dd1b631e 100755 --- a/web/app/themes/haiku-atelier-2024/404.php +++ b/web/app/themes/haiku-atelier-2024/404.php @@ -14,7 +14,7 @@ use Timber\Timber; use function add_action; -$context = Timber::context(); +$context = Timber::context(); $templates = ['404.twig']; /** @@ -25,7 +25,7 @@ $templates = ['404.twig']; function load_page_resources(): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-a-propos', - path: '/assets/css/pages/page-modele-simple.css', + path : '/assets/css/pages/page-modele-simple.css', ); } diff --git a/web/app/themes/haiku-atelier-2024/archive-product.php b/web/app/themes/haiku-atelier-2024/archive-product.php index a2b49c0f..5dff6690 100755 --- a/web/app/themes/haiku-atelier-2024/archive-product.php +++ b/web/app/themes/haiku-atelier-2024/archive-product.php @@ -22,13 +22,13 @@ use function wc_get_products; use function wp_create_nonce; use function wp_json_encode; -$context = Timber::context(); +$context = Timber::context(); $templates = ['boutique.twig']; /** @var list $wc_products Les informations brutes des Produits. */ $wc_products = wc_get_products(['limit' => 12, 'order' => 'DESC', 'orderby' => 'date', 'status' => 'publish']); -$products = array_map(callback: Product::from_wc_product(...), array: $wc_products); +$products = array_map(callback: Product::from_wc_product(...), array: $wc_products); $context['products'] = $products; // Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte. @@ -40,14 +40,14 @@ $context['page_states'] = $page_states; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-boutique', - path: '/assets/css/pages/page-boutique.css', + path : '/assets/css/pages/page-boutique.css', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-boutique', + id : 'haiku-atelier-2024-scripts-page-boutique', path: '/assets/js/scripts-page-boutique.js', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-menu-categories', + id : 'haiku-atelier-2024-scripts-menu-categories', path: '/assets/js/scripts-menu-categories.js', ); }); diff --git a/web/app/themes/haiku-atelier-2024/front-page.php b/web/app/themes/haiku-atelier-2024/front-page.php index 1c1752ac..f75349c0 100755 --- a/web/app/themes/haiku-atelier-2024/front-page.php +++ b/web/app/themes/haiku-atelier-2024/front-page.php @@ -13,17 +13,17 @@ use Timber\Timber; use function add_action; -$context = Timber::context(); +$context = Timber::context(); $templates = ['accueil.twig']; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-accueil', + id : 'haiku-atelier-2024-scripts-page-accueil', path: '/assets/js/scripts-page-accueil.js', ); Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-accueil', - path: '/assets/css/pages/page-accueil.css', + path : '/assets/css/pages/page-accueil.css', ); }); diff --git a/web/app/themes/haiku-atelier-2024/functions.php b/web/app/themes/haiku-atelier-2024/functions.php index 334520ab..36a38948 100755 --- a/web/app/themes/haiku-atelier-2024/functions.php +++ b/web/app/themes/haiku-atelier-2024/functions.php @@ -24,21 +24,21 @@ Timber::$dirname = ['views']; // Charge les Scripts du thème (report d'erreurs) function load_scripts(): void { wp_enqueue_script_module( - id: 'haiku-atelier-2024-bouton-panier', - deps: [], - src: get_template_directory_uri() . '/assets/js/scripts-bouton-panier.js', + id : 'haiku-atelier-2024-bouton-panier', + deps : [], + src : get_template_directory_uri() . '/assets/js/scripts-bouton-panier.js', version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-panier.js'), ); wp_enqueue_script_module( - id: 'haiku-atelier-2024-menu-mobile', - deps: [], - src: get_template_directory_uri() . '/assets/js/scripts-menu-mobile.js', + id : 'haiku-atelier-2024-menu-mobile', + deps : [], + src : get_template_directory_uri() . '/assets/js/scripts-menu-mobile.js', version: filemtime(get_template_directory() . '/assets/js/scripts-menu-mobile.js'), ); wp_enqueue_script_module( - id: 'haiku-atelier-2024-bouton-retour-sommet', - deps: [], - src: get_template_directory_uri() . '/assets/js/scripts-bouton-retour-sommet.js', + id : 'haiku-atelier-2024-bouton-retour-sommet', + deps : [], + src : get_template_directory_uri() . '/assets/js/scripts-bouton-retour-sommet.js', version: filemtime(get_template_directory() . '/assets/js/scripts-bouton-retour-sommet.js'), ); } @@ -49,10 +49,10 @@ add_action('wp_enqueue_scripts', 'load_scripts'); function charge_styles_haiku_atelier_2024(): void { wp_enqueue_style( handle: 'haiku-atelier-2024-styles', - src: get_template_directory_uri() . '/assets/css/main.css', - deps: [], - ver: filemtime(get_template_directory() . '/assets/css/main.css'), - media: 'all', + src : get_template_directory_uri() . '/assets/css/main.css', + deps : [], + ver : filemtime(get_template_directory() . '/assets/css/main.css'), + media : 'all', ); } @@ -67,70 +67,70 @@ new StarterSite(); function enregistre_personnalisations_theme(mixed $wp_customize): void { // Section « Réseaux sociaux » $wp_customize->add_section('liens_reseaux_sociaux', [ - 'title' => __('Liens des réseaux sociaux'), + 'title' => __('Liens des réseaux sociaux'), 'description' => __("Liens des réseaux sociaux s'affichant dans le pied de page."), ]); // Instagram $wp_customize->add_setting('lien_instagram', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']); $wp_customize->add_control('lien_instagram', [ - 'type' => 'url', + 'type' => 'url', 'section' => 'liens_reseaux_sociaux', - 'label' => __('Profil Instagram'), + 'label' => __('Profil Instagram'), ]); // Facebook $wp_customize->add_setting('lien_facebook', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']); $wp_customize->add_control('lien_facebook', [ - 'type' => 'url', + 'type' => 'url', 'section' => 'liens_reseaux_sociaux', - 'label' => __('Profil Facebook'), + 'label' => __('Profil Facebook'), ]); // Pinterest $wp_customize->add_setting('lien_pinterest', ['type' => 'theme_mod', 'capability' => 'edit_theme_options']); $wp_customize->add_control('lien_pinterest', [ - 'type' => 'url', + 'type' => 'url', 'section' => 'liens_reseaux_sociaux', - 'label' => __('Profil Pinterest'), + 'label' => __('Profil Pinterest'), ]); // Section « Descriptions Produits » $wp_customize->add_section('descriptions_produits', [ - 'title' => __('Textes des descriptions Produits'), + 'title' => __('Textes des descriptions Produits'), 'description' => __('Textes des descriptions apparaissant sur les pages Produit.'), ]); $wp_customize->add_setting('texte_conditions_livraison', [ - 'capability' => 'edit_theme_options', - 'default' => '', + 'capability' => 'edit_theme_options', + 'default' => '', 'sanitize_callback' => 'wp_kses_post', - 'transport' => 'postMessage', - 'type' => 'theme_mod', + 'transport' => 'postMessage', + 'type' => 'theme_mod', ]); $wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_conditions_livraison', [ - 'label' => __('Conditions de livraison'), + 'label' => __('Conditions de livraison'), 'description' => __('Descriptif des conditions de livraison.'), - 'section' => 'descriptions_produits', + 'section' => 'descriptions_produits', 'input_attrs' => [ - 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', + 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', 'mediaButtons' => true, ], ])); $wp_customize->add_setting('texte_entretien_produit', [ - 'capability' => 'edit_theme_options', - 'default' => '', + 'capability' => 'edit_theme_options', + 'default' => '', 'sanitize_callback' => 'wp_kses_post', - 'transport' => 'postMessage', - 'type' => 'theme_mod', + 'transport' => 'postMessage', + 'type' => 'theme_mod', ]); $wp_customize->add_control(new Controle_Personnalise_TinyMCE($wp_customize, 'texte_entretien_produit', [ - 'label' => __('Entretien du Produit'), + 'label' => __('Entretien du Produit'), 'description' => __("Descriptif des bonnes pratiques pour l'entretien du Produit."), - 'section' => 'descriptions_produits', + 'section' => 'descriptions_produits', 'input_attrs' => [ - 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', + 'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link', 'mediaButtons' => true, ], ])); diff --git a/web/app/themes/haiku-atelier-2024/index.php b/web/app/themes/haiku-atelier-2024/index.php index 8cd2f361..d7b2847e 100755 --- a/web/app/themes/haiku-atelier-2024/index.php +++ b/web/app/themes/haiku-atelier-2024/index.php @@ -4,7 +4,7 @@ declare(strict_types=1); use Timber\Timber; -$context = Timber::context(); +$context = Timber::context(); $templates = ['base.twig']; Timber::render(data: $context, filenames: $templates); diff --git a/web/app/themes/haiku-atelier-2024/page-about.php b/web/app/themes/haiku-atelier-2024/page-about.php index 6d8690be..4c98ecd5 100755 --- a/web/app/themes/haiku-atelier-2024/page-about.php +++ b/web/app/themes/haiku-atelier-2024/page-about.php @@ -17,7 +17,7 @@ use function get_template_directory; use function getimagesize; use function is_bool; -$context = Timber::context(); +$context = Timber::context(); $templates = ['a-propos.twig']; /** Les dimensions de l'image du storytelling. */ @@ -32,10 +32,10 @@ $context['image_dimensions'] = $image_dimensions; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-a-propos', - path: '/assets/css/pages/page-a-propos.css', + path : '/assets/css/pages/page-a-propos.css', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-a-propos', + id : 'haiku-atelier-2024-scripts-page-a-propos', path: '/assets/js/scripts-page-a-propos.js', ); }); diff --git a/web/app/themes/haiku-atelier-2024/page-cart.php b/web/app/themes/haiku-atelier-2024/page-cart.php index 6effc12a..1ba84dc7 100755 --- a/web/app/themes/haiku-atelier-2024/page-cart.php +++ b/web/app/themes/haiku-atelier-2024/page-cart.php @@ -20,7 +20,7 @@ use function collect; use function Crell\fp\pipe; use function WC; -$context = Timber::context(); +$context = Timber::context(); $templates = ['panier.twig']; // Récupère les informations affichés des Produits du Panier @@ -47,60 +47,60 @@ $shipping_subtotal = Cart::parse_cart_value($cart_totals['shipping_total'] ?? 0) // TODO: Nettoyer ça. foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) { $cart[$cle_panier] = [ - 'attributs' => $article_panier['data']?->get_type() === 'variation' + 'attributs' => $article_panier['data']?->get_type() === 'variation' ? Product::recupere_et_formate_attributs_produit($article_panier['data']?->get_attributes()) : [], - 'cle' => $cle_panier, - 'id_produit' => $article_panier['product_id'], + 'cle' => $cle_panier, + 'id_produit' => $article_panier['product_id'], 'id_variation' => $article_panier['variation_id'], - 'image' => pipe($article_panier['data']?->get_image_id(), static fn($id): string => Resource::output_multi_formats_img_tag( - id: (string) $id, + 'image' => pipe($article_panier['data']?->get_image_id(), static fn($id): string => Resource::output_multi_formats_img_tag( + id : (string) $id, lazy: true, )), - 'prix' => $article_panier['data']?->get_price(), - 'quantite' => $article_panier['quantity'], - 'url' => $article_panier['data']?->get_permalink(), - 'titre' => $article_panier['data']?->get_title(), + 'prix' => $article_panier['data']?->get_price(), + 'quantite' => $article_panier['quantity'], + 'url' => $article_panier['data']?->get_permalink(), + 'titre' => $article_panier['data']?->get_title(), ]; } // Récupère les Adresses de l'Utilisateur -$email = WC()->customer->get_billing_email(); -$adresse_livraison = WC()->customer->get_shipping(); +$email = WC()->customer->get_billing_email(); +$adresse_livraison = WC()->customer->get_shipping(); $adresse_facturation = WC()->customer->get_billing(); -$adresse_renseignee = $adresse_livraison['city'] !== ''; +$adresse_renseignee = $adresse_livraison['city'] !== ''; // TODO: Déplacer ça dans une fonction statique de Cart. $allowed_countries = collect(WC()->countries->get_countries())->only(Cart::get_allowed_countries())->toArray(); // TODO: Nettoyer ça. $methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rates']) ->values() ->map(static fn(WC_Shipping_Rate $methode): array => [ - 'id' => $methode->get_method_id(), - 'prix' => Number::format((int) $methode->get_cost(), precision: 2), + 'id' => $methode->get_method_id(), + 'prix' => Number::format((int) $methode->get_cost(), precision: 2), 'selectionnee' => collect(WC()->session->get('chosen_shipping_methods'))->first() === $methode->get_id(), - 'titre' => $methode->get_label(), + 'titre' => $methode->get_label(), ]); -$context['email'] = $email; -$context['adresse_livraison'] = $adresse_livraison; -$context['adresse_facturation'] = $adresse_facturation; -$context['adresse_renseignee'] = $adresse_renseignee; -$context['sous_total_panier'] = $cart_subtotal; -$context['code_promo'] = $promo_code; +$context['email'] = $email; +$context['adresse_livraison'] = $adresse_livraison; +$context['adresse_facturation'] = $adresse_facturation; +$context['adresse_renseignee'] = $adresse_renseignee; +$context['sous_total_panier'] = $cart_subtotal; +$context['code_promo'] = $promo_code; $context['sous_total_reduction'] = $cart_subtotal_with_discount; -$context['total_panier'] = $cart_total; -$context['produits_panier'] = $cart; -$context['pays_livraison'] = $allowed_countries; +$context['total_panier'] = $cart_total; +$context['produits_panier'] = $cart; +$context['pays_livraison'] = $allowed_countries; $context['sous_total_livraison'] = $shipping_subtotal; -$context['methodes_livraison'] = $methodes_livraison; +$context['methodes_livraison'] = $methodes_livraison; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-panier', - path: '/assets/css/pages/page-panier.css', + path : '/assets/css/pages/page-panier.css', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-panier', + id : 'haiku-atelier-2024-scripts-page-panier', path: '/assets/js/scripts-page-panier.js', ); }); diff --git a/web/app/themes/haiku-atelier-2024/page-checkout.php b/web/app/themes/haiku-atelier-2024/page-checkout.php index dbc0f890..5516bd50 100755 --- a/web/app/themes/haiku-atelier-2024/page-checkout.php +++ b/web/app/themes/haiku-atelier-2024/page-checkout.php @@ -44,9 +44,9 @@ $session_wc = WC()->session; /** @var array $urls URLs utilisables pour rediriger l'Utilisateur. */ $urls = [ - 'accueil' => get_page_link(get_page_by_path('home')), + 'accueil' => get_page_link(get_page_by_path('home')), 'succes_commande' => get_page_link(get_page_by_path('successful-order')), - 'echec_commande' => get_page_link(get_page_by_path('failed-order')), + 'echec_commande' => get_page_link(get_page_by_path('failed-order')), ]; // Redirige à la page d'accueil si le Panier est vide @@ -97,14 +97,14 @@ $articles = collect($panier->get_cart()) return [ 'price_data' => [ - 'currency' => 'EUR', + 'currency' => 'EUR', 'product_data' => [ - 'name' => $titre_produit, + 'name' => $titre_produit, 'images' => [wp_get_attachment_image_url($article_panier['data']?->get_image_id())], ], - 'unit_amount' => $article_panier['data']?->get_price() * 100, + 'unit_amount' => $article_panier['data']?->get_price() * 100, ], - 'quantity' => $article_panier['quantity'], + 'quantity' => $article_panier['quantity'], ]; }) ->values() @@ -126,13 +126,13 @@ Stripe::setApiKey(Config::get('STRIPE_API_SECRET')); // Met à jour les Codes promos $coupons_stripe = collect(Coupon::all()->data); -$coupons_wc = collect(WC()->cart->get_coupons()) +$coupons_wc = collect(WC()->cart->get_coupons()) ->map(static fn(WC_Coupon $coupon): array => [ - 'currency' => 'EUR', - 'duration' => get_discount_duration($coupon), + 'currency' => 'EUR', + 'duration' => get_discount_duration($coupon), 'fixed_cart' === $coupon->get_discount_type() ? 'amount_off' : 'percent_off' => get_discount_amount($coupon), - 'id' => $coupon->get_code(), - 'name' => $coupon->get_code(), + 'id' => $coupon->get_code(), + 'name' => $coupon->get_code(), ]) ->each(static function (array $item) use ($coupons_stripe): void { // Si le code promo n'existe pas, le créer @@ -147,19 +147,19 @@ $reductions_stripe = $coupons_wc /** @var Session $session_checkout_stripe */ $session_checkout_stripe = Session::create([ - 'cancel_url' => $urls['echec_commande'], - 'customer_email' => $email_client, - 'discounts' => $reductions_stripe, - 'line_items' => $articles, - 'mode' => 'payment', - 'success_url' => $urls['succes_commande'] . '?session_id={CHECKOUT_SESSION_ID}', - 'metadata' => ['order_id' => $order_id, 'order_key' => $order_key], + 'cancel_url' => $urls['echec_commande'], + 'customer_email' => $email_client, + 'discounts' => $reductions_stripe, + 'line_items' => $articles, + 'mode' => 'payment', + 'success_url' => $urls['succes_commande'] . '?session_id={CHECKOUT_SESSION_ID}', + 'metadata' => ['order_id' => $order_id, 'order_key' => $order_key], 'shipping_options' => [[ 'shipping_rate_data' => [ 'display_name' => $methode_livraison['nom'], 'fixed_amount' => ['amount' => $methode_livraison['cout'], 'currency' => 'EUR'], 'tax_behavior' => 'inclusive', - 'type' => 'fixed_amount', + 'type' => 'fixed_amount', ], ]], ], ['idempotency_key' => Uuid::v4()]); diff --git a/web/app/themes/haiku-atelier-2024/page-contact.php b/web/app/themes/haiku-atelier-2024/page-contact.php index 42d3cb30..784b6b58 100755 --- a/web/app/themes/haiku-atelier-2024/page-contact.php +++ b/web/app/themes/haiku-atelier-2024/page-contact.php @@ -13,13 +13,13 @@ use Timber\Timber; use function add_action; -$context = Timber::context(); +$context = Timber::context(); $templates = ['contact.twig']; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-contact', - path: '/assets/css/pages/page-contact.min.css', + path : '/assets/css/pages/page-contact.min.css', ); }); diff --git a/web/app/themes/haiku-atelier-2024/page-failed-order.php b/web/app/themes/haiku-atelier-2024/page-failed-order.php index ea428114..466017d6 100755 --- a/web/app/themes/haiku-atelier-2024/page-failed-order.php +++ b/web/app/themes/haiku-atelier-2024/page-failed-order.php @@ -13,13 +13,13 @@ use Timber\Timber; use function add_action; -$context = Timber::context(); +$context = Timber::context(); $templates = ['echec-commande.twig']; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-modele-simple', - path: '/assets/css/pages/page-modele-simple.css', + path : '/assets/css/pages/page-modele-simple.css', ); }); diff --git a/web/app/themes/haiku-atelier-2024/page-successful-order.php b/web/app/themes/haiku-atelier-2024/page-successful-order.php index e72c835a..97684d81 100755 --- a/web/app/themes/haiku-atelier-2024/page-successful-order.php +++ b/web/app/themes/haiku-atelier-2024/page-successful-order.php @@ -61,7 +61,7 @@ try { $panier->empty_cart(); } - $context = Timber::context(); + $context = Timber::context(); $templates = ['succes-commande.twig']; // Récupère les données des Produits @@ -76,7 +76,7 @@ try { // Récupère le nom et la valeur de l'attribut du Produit $attribut = $produit->is_type('variable') ? collect($produit->get_attributes())->mapWithKeys(static function ($_atr, $cle) use ($produit_commande) { - $nom_attribut = wc_attribute_label($cle, $produit_commande->get_product()); + $nom_attribut = wc_attribute_label($cle, $produit_commande->get_product()); $valeur_attribut = $produit_commande->get_product()->get_attribute($cle); return [['nom' => $nom_attribut, 'valeur' => $valeur_attribut]]; @@ -84,16 +84,16 @@ try { : []; return [ - 'attribut' => $attribut, + 'attribut' => $attribut, 'id_produit' => $id_produit, - 'image' => pipe($produit->get_image_id(), static fn($id): string => Resource::output_multi_formats_img_tag( - id: $id, + 'image' => pipe($produit->get_image_id(), static fn($id): string => Resource::output_multi_formats_img_tag( + id : $id, lazy: true, )), - 'permalien' => $produit->get_permalink(), - 'prix' => $produit_commande->get_data()['total'], - 'quantite' => $produit_commande->get_quantity(), - 'titre' => $produit->get_title(), + 'permalien' => $produit->get_permalink(), + 'prix' => $produit_commande->get_data()['total'], + 'quantite' => $produit_commande->get_quantity(), + 'titre' => $produit->get_title(), ]; }); @@ -103,10 +103,10 @@ try { function charge_scripts_styles_page_succes_commande(): void { wp_enqueue_style( handle: 'haiku-atelier-2024-styles-page-succes-commande', - src: get_template_directory_uri() . '/assets/css/pages/page-succes-commande.css', - deps: [], - ver: filemtime(get_template_directory() . '/assets/css/pages/page-succes-commande.css'), - media: 'all', + src : get_template_directory_uri() . '/assets/css/pages/page-succes-commande.css', + deps : [], + ver : filemtime(get_template_directory() . '/assets/css/pages/page-succes-commande.css'), + media : 'all', ); } diff --git a/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php b/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php index 0b9d5998..efb74bc7 100755 --- a/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php +++ b/web/app/themes/haiku-atelier-2024/page-terms-and-conditions.php @@ -13,13 +13,13 @@ use Timber\Timber; use function add_action; -$context = Timber::context(); +$context = Timber::context(); $templates = ['cgv.twig']; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: '/assets/css/pages/page-modele-simple.css', - path: '/assets/css/pages/page-modele-simple.css', + path : '/assets/css/pages/page-modele-simple.css', ); }); diff --git a/web/app/themes/haiku-atelier-2024/single-product.php b/web/app/themes/haiku-atelier-2024/single-product.php index 445b0b68..8a4f581a 100755 --- a/web/app/themes/haiku-atelier-2024/single-product.php +++ b/web/app/themes/haiku-atelier-2024/single-product.php @@ -27,7 +27,7 @@ use function wc_get_product; use function wp_create_nonce; use function wp_json_encode; -$context = Timber::context(); +$context = Timber::context(); $templates = ['produit.twig']; $raw_product = wc_get_product(); @@ -55,13 +55,13 @@ $same_collection_products = Product::get_same_collection_products($product->coll Product::from_wc_product(...), )); -$context['product'] = $product; -$context['product_json'] = wp_json_encode($product); -$context['maximum_price'] = $maximum_price; +$context['product'] = $product; +$context['product_json'] = wp_json_encode($product); +$context['maximum_price'] = $maximum_price; $context['same_collection_products'] = $same_collection_products; -$product_tags = $raw_product->get_tag_ids() +$product_tags = $raw_product->get_tag_ids() |> (static fn($tags_ids) => Arr::map($tags_ids, static fn($id) => Term::get_term_by_id( - id: $id, + id : $id, taxonomy: 'product_tag', ))) |> (static fn(/** @var list> */ $tags) => Arr::reject($tags, static fn($tag) => $tag->isNone())) @@ -70,11 +70,11 @@ $tags = get_terms(['taxonomy' => 'product_tag', 'hide_empty' => true]); // Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte. $page_states = [ - 'nonce' => wp_create_nonce('wc_store_api'), + 'nonce' => wp_create_nonce('wc_store_api'), 'product' => [ 'attributes' => $product->attributes, - 'id' => $product->id, - 'price' => $product->price, + 'id' => $product->id, + 'price' => $product->price, 'variations' => $product->variations, ], ] @@ -84,11 +84,11 @@ $context['page_states'] = $page_states; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-produit', + id : 'haiku-atelier-2024-scripts-page-produit', path: '/assets/js/scripts-page-produit.js', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-menu-categories', + id : 'haiku-atelier-2024-scripts-menu-categories', path: '/assets/js/scripts-menu-categories.js', ); }); diff --git a/web/app/themes/haiku-atelier-2024/src/StarterSite.php b/web/app/themes/haiku-atelier-2024/src/StarterSite.php index 016d7146..555e7a68 100755 --- a/web/app/themes/haiku-atelier-2024/src/StarterSite.php +++ b/web/app/themes/haiku-atelier-2024/src/StarterSite.php @@ -51,8 +51,8 @@ final class StarterSite extends Site { // Récupère les liens des réseaux sociaux définis dans la personnalisation du thème $personnalisations_theme = get_theme_mods(); - $liens_reseaux_sociaux = [ - 'facebook' => ['nom' => 'Facebook', 'url' => $personnalisations_theme['lien_facebook'] ?? ''], + $liens_reseaux_sociaux = [ + 'facebook' => ['nom' => 'Facebook', 'url' => $personnalisations_theme['lien_facebook'] ?? ''], 'instagram' => ['nom' => 'Instagram', 'url' => $personnalisations_theme['lien_instagram'] ?? ''], 'pinterest' => ['nom' => 'Pinterest', 'url' => $personnalisations_theme['lien_pinterest'] ?? ''], ]; @@ -61,14 +61,14 @@ final class StarterSite extends Site { // Récupère les textes apparaissant sur les pages Produits $descriptions_produits = [ 'texte_conditions_livraison' => wpautop($personnalisations_theme['texte_conditions_livraison']) ?? '', - 'texte_entretien_produit' => wpautop($personnalisations_theme['texte_entretien_produit']) ?? '', + 'texte_entretien_produit' => wpautop($personnalisations_theme['texte_entretien_produit']) ?? '', ]; $context['descriptions_produits'] = $descriptions_produits; // Logo personnalisée $context['logo'] = pipe(get_theme_mod('custom_logo'), static fn($id) => wp_get_attachment_image_src( attachment_id: $id, - size: 'full', + size : 'full', )); // Informations des Pages @@ -80,28 +80,27 @@ final class StarterSite extends Site { // Pages spécifiques $context['pages'] = (object) [ - 'about' => $recupere_informations_page('about'), - 'account' => $recupere_informations_page('account'), - 'cart' => $recupere_informations_page('cart'), - 'checkout' => $recupere_informations_page('checkout'), - 'contact' => $recupere_informations_page('contact'), - 'failed_order' => $recupere_informations_page('failed_order'), - 'home' => $recupere_informations_page('home'), - 'shop' => $recupere_informations_page('shop'), + 'about' => $recupere_informations_page('about'), + 'account' => $recupere_informations_page('account'), + 'cart' => $recupere_informations_page('cart'), + 'checkout' => $recupere_informations_page('checkout'), + 'contact' => $recupere_informations_page('contact'), + 'failed_order' => $recupere_informations_page('failed_order'), + 'home' => $recupere_informations_page('home'), + 'shop' => $recupere_informations_page('shop'), 'successful_order' => $recupere_informations_page('successful_order'), ]; // Récupère la Page courante - $url_courante = URLHelper::get_current_url(); - $context['page_courante'] = $url_courante; + $url_courante = URLHelper::get_current_url(); + $context['page_courante'] = $url_courante; $context['est_page_tous_produits'] = preg_match(pattern: '/(\bshop\b)/', subject: $url_courante); - $context['est_page_boutique'] = - preg_match(pattern: '/(\bshop\b)/', subject: $url_courante) - || preg_match(pattern: '/(\bproduct\b)/', subject: $url_courante) - || preg_match(pattern: '/(\bproduct-category\b)/', subject: $url_courante); + $context['est_page_boutique'] = preg_match(pattern: '/(\bshop\b)/', subject: $url_courante) + || preg_match(pattern: '/(\bproduct\b)/', subject: $url_courante) + || preg_match(pattern: '/(\bproduct-category\b)/', subject: $url_courante); // Politique de confidentialité - $politique_confidentialite_lien = pipe(get_privacy_policy_url(), esc_url(...)); + $politique_confidentialite_lien = pipe(get_privacy_policy_url(), esc_url(...)); $context['lien_politique_confidentialite'] = $politique_confidentialite_lien; // Chemin de base pour une Catégorie de Produit (p. ex. /product-category/) @@ -109,7 +108,7 @@ final class StarterSite extends Site { // Récupère les Catégories de Produits $cree_entree_menu = static fn($categorie): array => [ - 'nom' => $categorie->name, + 'nom' => $categorie->name, 'slug' => $categorie->slug, // Détermine si l'URL courante est celle de la Page d'Archive d'une Catégorie de Produits 'courante' => preg_match( @@ -125,16 +124,16 @@ final class StarterSite extends Site { $context['categories_produits'] = $entrees_menu_categories; // Récupère le Panier de l'Utilisateur - $panier = WC()?->cart?->get_cart(); + $panier = WC()?->cart?->get_cart(); $quantite_articles = WC()?->cart?->get_cart_contents_count(); $articles_presents = $quantite_articles > 0 ? 'true' : 'false'; - $context['panier'] = $panier; + $context['panier'] = $panier; $context['quantite_articles'] = $quantite_articles; $context['articles_presents'] = $articles_presents; // Nonce WooCommerce pour l'API Rest - $nonce_wc = wp_create_nonce('wc_store_api'); + $nonce_wc = wp_create_nonce('wc_store_api'); $context['nonce_wc'] = $nonce_wc; // TODO: Utiliser des variables d'environnement $auth_string = base64_encode( diff --git a/web/app/themes/haiku-atelier-2024/src/inc/ChampsPersonnalises.php b/web/app/themes/haiku-atelier-2024/src/inc/ChampsPersonnalises.php index 9d509e72..d3605c09 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/ChampsPersonnalises.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/ChampsPersonnalises.php @@ -28,9 +28,9 @@ function cree_champs_personnalises_produit(): void { function cree_champ_personnalise_commande($order): void { woocommerce_wp_text_input([ - 'id' => 'tracking_number', - 'label' => 'Tracking Number:', - 'value' => $order->get_meta('tracking_number'), + 'id' => 'tracking_number', + 'label' => 'Tracking Number:', + 'value' => $order->get_meta('tracking_number'), 'wrapper_class' => 'form-field-wide', ]); } diff --git a/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php b/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php index 78d633cd..2ba09723 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/ControlesPersonnalises.php @@ -27,10 +27,10 @@ function enregistre_controle_personnalise_tinymce(): void { public function enqueue(): void { wp_enqueue_script( handle: 'controle-personnalise-tinymce', - src: get_template_directory_uri() . '/assets/vendor/controle-personnalise-tinymce.js', - deps: ['jquery'], - ver: '1.3', - args: true, + src : get_template_directory_uri() . '/assets/vendor/controle-personnalise-tinymce.js', + deps : ['jquery'], + ver : '1.3', + args : true, ); wp_enqueue_editor(); } diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Data/Attribute.php b/web/app/themes/haiku-atelier-2024/src/inc/Data/Attribute.php index 27ca18be..9cf8ab97 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/Data/Attribute.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Data/Attribute.php @@ -17,7 +17,7 @@ final readonly class Attribute { public function __construct( public string $name, public string $slug, - public array $options, + public array $options, ) {} /** @@ -26,8 +26,10 @@ final readonly class Attribute { public static function new(WC_Product_Attribute $attribute): self { $name = wc_attribute_label($attribute->get_name()); $slug = $attribute->get_name(); + /** @var list */ $terms = $attribute->get_terms() ?? []; + /** @var list */ $options = Arr::map($terms, AttributeOption::new(...)) |> (static fn($options) => Arr::sort($options, static fn($attribute) => $attribute->id)) diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Data/AttributeOption.php b/web/app/themes/haiku-atelier-2024/src/inc/Data/AttributeOption.php index a2d77967..c353ccb5 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/Data/AttributeOption.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Data/AttributeOption.php @@ -8,7 +8,7 @@ use WP_Term; final readonly class AttributeOption { public function __construct( - public int $id, + public int $id, public string $name, public string $slug, ) {} @@ -17,7 +17,7 @@ final readonly class AttributeOption { * Créé une nouvelle instance de `AttributeOption` depuis un `WP_Term`. */ public static function new(WP_Term $term): self { - $id = $term->term_taxonomy_id; + $id = $term->term_taxonomy_id; $name = $term->name; $slug = $term->slug; diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Data/Cart.php b/web/app/themes/haiku-atelier-2024/src/inc/Data/Cart.php index 1ad27c0d..1849cd35 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/Data/Cart.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Data/Cart.php @@ -112,10 +112,10 @@ final readonly class Cart { private static function format_number(int|float $number): string { $formatted_number = Number::format( - number: $number, + number : $number, // precision et max_precision sont mutuellement exclusifs. precision: 2, - locale: 'fr', + locale : 'fr', ); return is_bool($formatted_number) ? self::DEFAULT_VALUE : $formatted_number; diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Data/Product.php b/web/app/themes/haiku-atelier-2024/src/inc/Data/Product.php index 0cca2cb7..5fa1118a 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/Data/Product.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Data/Product.php @@ -18,28 +18,31 @@ use function Psl\Option\from_nullable; use function wc_get_products; use function wpautop; +/** + * Représente un **Produit** (selon _WooCommerce_) avec de nombreuses données d'intérêt pour les opérations courantes. + */ final readonly class Product { /** - * @param list $attributes + * @param list $attributes La liste des `Attribute` appliquées. * @param list $left_column_photos * @param list $right_column_photos * @param array $variations */ private function __construct( - public array $attributes, + public array $attributes, public string $category, public string $collection, public string $details, - public int $id, + public int $id, public string $name, public string $price, - public array $left_column_photos, - public array $right_column_photos, + public array $left_column_photos, + public array $right_column_photos, public string $default_photo, public string $hover_photo, public string $slug, - public int $stock, - public array $variations, + public int $stock, + public array $variations, public string $url, ) {} @@ -59,17 +62,17 @@ final readonly class Product { /** @var string */ $details = $product->get_description() |> wpautop(...); - $id = $product->get_id(); - $name = $product->get_name(); - $price = $product->get_price(); + $id = $product->get_id(); + $name = $product->get_name(); + $price = $product->get_price(); /** @var list */ $left_column_photos = HaikuProduct::get_left_column_photos($id); /** @var list */ $right_column_photos = HaikuProduct::get_right_column_photos($id); - $default_photo = $left_column_photos[0] ?? Resource::output_multi_formats_img_tag('-1'); - $hover_photo = $right_column_photos[0] ?? Resource::output_multi_formats_img_tag('-1', true); - $slug = $product->get_slug(); - $stock = $product->get_stock_quantity() ?? 1; + $default_photo = $left_column_photos[0] ?? Resource::output_multi_formats_img_tag('-1'); + $hover_photo = $right_column_photos[0] ?? Resource::output_multi_formats_img_tag('-1', true); + $slug = $product->get_slug(); + $stock = $product->get_stock_quantity() ?? 1; /** @var array */ $variations = $product->get_children() |> (static fn(/** @var list */ array $ids): array => Arr::map($ids, wc_get_product(...))) @@ -80,21 +83,21 @@ final readonly class Product { $url = $product->get_permalink(); return new self( - attributes: $attributes, - category: $category, - collection: $collection, - details: $details, - id: $id, - name: $name, - price: $price, - left_column_photos: $left_column_photos, + attributes : $attributes, + category : $category, + collection : $collection, + details : $details, + id : $id, + name : $name, + price : $price, + left_column_photos : $left_column_photos, right_column_photos: $right_column_photos, - default_photo: $default_photo, - hover_photo: $hover_photo, - slug: $slug, - stock: $stock, - variations: $variations, - url: $url, + default_photo : $default_photo, + hover_photo : $hover_photo, + slug : $slug, + stock : $stock, + variations : $variations, + url : $url, ); } @@ -115,21 +118,21 @@ final readonly class Product { */ public static function get_same_collection_products(string $slug_collection): callable { return static fn(int $id_produit): array|stdClass => wc_get_products([ - 'exclude' => [$id_produit], - 'limit' => 4, - 'order' => 'DESC', - 'orderby' => 'date', - 'status' => 'publish', + 'exclude' => [$id_produit], + 'limit' => 4, + 'order' => 'DESC', + 'orderby' => 'date', + 'status' => 'publish', 'tax_query' => [['taxonomy' => 'collection', 'field' => 'slug', 'terms' => $slug_collection]], ]); } public static function recupere_et_formate_attributs_produit(mixed $attributs_produit): mixed { return [ - 'cote' => ['nom' => 'Side', 'valeur' => $attributs_produit['pa_side'] ?? false], + 'cote' => ['nom' => 'Side', 'valeur' => $attributs_produit['pa_side'] ?? false], 'materiel' => ['nom' => 'Material', 'valeur' => $attributs_produit['pa_material-workshop'] ?? false], - 'pierre' => ['nom' => 'Stone', 'valeur' => $attributs_produit['pa_stone'] ?? false], - 'taille' => ['nom' => 'Size', 'valeur' => $attributs_produit['pa_size'] ?? false], + 'pierre' => ['nom' => 'Stone', 'valeur' => $attributs_produit['pa_stone'] ?? false], + 'taille' => ['nom' => 'Size', 'valeur' => $attributs_produit['pa_size'] ?? false], ]; } } diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Data/ProductVariation.php b/web/app/themes/haiku-atelier-2024/src/inc/Data/ProductVariation.php index 6609537e..0cc6cc63 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/Data/ProductVariation.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Data/ProductVariation.php @@ -13,16 +13,16 @@ final readonly class ProductVariation { * @param list $attributes Les attributs appliqués à la Variation */ private function __construct( - public int $id, + public int $id, public string $price, - public array $attributes, + public array $attributes, ) {} /** * Créé une nouvelle instance de `ProductVariation` depuis un `WC_Product`. */ public static function new(WC_Product $product): self { - $id = $product->get_id(); + $id = $product->get_id(); $price = $product->get_price(); /** @var list */ $attributes = array_map( diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Fonctionnalites.php b/web/app/themes/haiku-atelier-2024/src/inc/Fonctionnalites.php index 771f1c3d..890ced30 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/Fonctionnalites.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Fonctionnalites.php @@ -40,7 +40,7 @@ function desactive_transformation_contenu_tinymce(array $configuration): array { * @return array le même tableau avec SVG en plus */ function autorise_import_svg_mediatheque(array $file_types): array { - $new_filetypes = []; + $new_filetypes = []; $new_filetypes['svg'] = 'image/svg+xml'; return [...$file_types, ...$new_filetypes]; diff --git a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php index adb6c205..21bed7d8 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/FonctionnalitesWooCommerce.php @@ -143,11 +143,11 @@ function genere_balises_img_dans_produit_dans_reponse_rest( $response->data['image_repos'] = pipe( $response->data['meta_data'], static fn($metadata): array => array_filter( - array: $metadata, + array : $metadata, callback: static fn($entree): bool => '_photos_colonne_gauche|||0|value' === $entree->key, ), static fn($metadata): array => array_map(array: $metadata, callback: static fn($entree): string => Resource::output_multi_formats_img_tag( - id: $entree?->value, + id : $entree?->value, lazy: true, )), static fn($image) => array_values(array: $image)[0], @@ -157,11 +157,11 @@ function genere_balises_img_dans_produit_dans_reponse_rest( $response->data['image_survol'] = pipe( $response->data['meta_data'], static fn($metadata): array => array_filter( - array: $metadata, + array : $metadata, callback: static fn($entree): bool => '_photos_colonne_droite|||0|value' === $entree->key, ), static fn($metadata): array => array_map(array: $metadata, callback: static fn($entree): string => Resource::output_multi_formats_img_tag( - id: $entree?->value, + id : $entree?->value, lazy: true, )), static fn($image) => array_values(array: $image)[0], diff --git a/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php b/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php index 727459f0..4956bf7e 100755 --- a/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/Taxonomies.php @@ -16,27 +16,27 @@ use function register_taxonomy; */ function enregistre_taxonomie_collection(): void { $labels = [ - 'add_new_item' => __('Add New Collection'), - 'all_items' => __('All Collections'), - 'edit_item' => __('Edit Collection'), - 'menu_name' => __('Collections'), - 'name' => __('Collections'), + 'add_new_item' => __('Add New Collection'), + 'all_items' => __('All Collections'), + 'edit_item' => __('Edit Collection'), + 'menu_name' => __('Collections'), + 'name' => __('Collections'), 'new_item_name' => __('New Collection Name'), - 'search_items' => __('Search Collections'), + 'search_items' => __('Search Collections'), 'singular_name' => __('Collection'), - 'update_item' => __('Update Collection'), + 'update_item' => __('Update Collection'), ]; $args = [ - 'description' => __('An ensemble of pieces thematically or chronologically grouped together.'), - 'hierarchical' => false, - 'labels' => $labels, + 'description' => __('An ensemble of pieces thematically or chronologically grouped together.'), + 'hierarchical' => false, + 'labels' => $labels, 'publicly_queryable' => false, - 'query_var' => true, - 'rewrite' => ['slug' => 'collection'], - 'show_admin_column' => true, - 'show_in_menu' => true, + 'query_var' => true, + 'rewrite' => ['slug' => 'collection'], + 'show_admin_column' => true, + 'show_in_menu' => true, 'show_in_quick_edit' => true, - 'show_ui' => true, + 'show_ui' => true, ]; register_taxonomy('collection', ['product'], $args); diff --git a/web/app/themes/haiku-atelier-2024/src/inc/WP/Resource.php b/web/app/themes/haiku-atelier-2024/src/inc/WP/Resource.php index d4a67475..6b286404 100644 --- a/web/app/themes/haiku-atelier-2024/src/inc/WP/Resource.php +++ b/web/app/themes/haiku-atelier-2024/src/inc/WP/Resource.php @@ -21,7 +21,7 @@ final readonly class Resource { public static function enqueue_script_module_file(string $path, string $id): void { $file_uri = get_template_directory_uri() . $path; - $file_path = get_template_directory() . $path; + $file_path = get_template_directory() . $path; $file_mtime = filemtime($file_path); if (is_bool($file_mtime)) { @@ -39,7 +39,7 @@ final readonly class Resource { public static function enqueue_style_file(string $path, string $handle): void { $file_uri = get_template_directory_uri() . $path; - $file_path = get_template_directory() . $path; + $file_path = get_template_directory() . $path; $file_mtime = filemtime($file_path); if (is_bool($file_mtime)) { @@ -66,30 +66,29 @@ final readonly class Resource { return ''; } - $url = wp_get_attachment_image_url($int_id, 'full'); - $chemin = realpath(get_attached_file($int_id)) ?: realpath(get_attached_file($int_id)); - $alt = get_post_meta($int_id, '_wp_attachment_image_alt', true); + $url = wp_get_attachment_image_url($int_id, 'full'); + $chemin = realpath(get_attached_file($int_id)) ?: realpath(get_attached_file($int_id)); + $alt = get_post_meta($int_id, '_wp_attachment_image_alt', true); $dimensions = $chemin ? getimagesize($chemin) : ['', '']; $avif = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.avif') : false; - $jxl = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.jxl') : false; + $jxl = $chemin ? realpath(pathinfo($chemin)['dirname'] . '/' . pathinfo($chemin)['filename'] . '.jxl') : false; // Génère un tableau avec les différents formats valides $formats = pipe( [$avif, $jxl], static fn($tableau): array => array_filter( - array: $tableau, + array : $tableau, callback: static fn($chemin_format): bool => false !== $chemin_format, ), static fn($tableau): array => array_map(array: $tableau, callback: static fn($chemin_format): array => [ 'format' => pathinfo((string) $chemin_format)['extension'], 'taille' => filesize($chemin_format), - 'url' => - pathinfo($url)['dirname'] - . '/' - . pathinfo($url)['filename'] - . '.' - . pathinfo((string) $chemin_format)['extension'], + 'url' => pathinfo($url)['dirname'] + . '/' + . pathinfo($url)['filename'] + . '.' + . pathinfo((string) $chemin_format)['extension'], ]), ); usort(array: $formats, callback: static fn($a, $b): int => $a['taille'] <=> $b['taille']); @@ -97,8 +96,8 @@ final readonly class Resource { // Construis les balises avec les formats valides $sources = ''; foreach ($formats as $format) { - $height = $dimensions[0]; - $width = $dimensions[1]; + $height = $dimensions[0]; + $width = $dimensions[1]; $sources .= "\n"; } diff --git a/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php b/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php index a589bd00..fde37cdd 100755 --- a/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php +++ b/web/app/themes/haiku-atelier-2024/taxonomy-product_cat.php @@ -26,7 +26,7 @@ use function wc_get_products; use function wp_create_nonce; use function wp_json_encode; -$context = Timber::context(); +$context = Timber::context(); $templates = ['boutique.twig']; /** @var WP_Term La Catégorie affichée. */ @@ -35,10 +35,10 @@ $current_term = get_queried_object(); /** @var list Les Produits de la Catégorie affichée. */ $products = wc_get_products([ 'category' => [$current_term->slug], - 'limit' => 12, - 'order' => 'DESC', - 'orderby' => 'date', - 'status' => 'publish', + 'limit' => 12, + 'order' => 'DESC', + 'orderby' => 'date', + 'status' => 'publish', ]) |> function (/** @var list|stdClass */ mixed $products): array { assert(is_array($products), 'Les Produits de la Catégorie doivent être un tableau.'); @@ -50,12 +50,12 @@ $products = wc_get_products([ Product::from_wc_product(...), )); -$context['products'] = $products; +$context['products'] = $products; $context['category_id'] = $current_term->term_id; // Injecte les états initiaux des données du Produit sous forme de JSON dans le contexte. $page_states = [ - 'nonce' => wp_create_nonce('wc_store_api'), + 'nonce' => wp_create_nonce('wc_store_api'), 'authString' => base64_encode( Config::get('WOOCOMMERCE_API_CONSUMER_KEY') . ':' . Config::get('WOOCOMMERCE_API_CONSUMER_SECRET'), ), @@ -67,14 +67,14 @@ $context['page_states'] = $page_states; add_action('wp_enqueue_scripts', function (): void { Resource::enqueue_style_file( handle: 'haiku-atelier-2024-styles-page-boutique', - path: '/assets/css/pages/page-boutique.css', + path : '/assets/css/pages/page-boutique.css', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-page-boutique', + id : 'haiku-atelier-2024-scripts-page-boutique', path: '/assets/js/scripts-page-boutique.js', ); Resource::enqueue_script_module_file( - id: 'haiku-atelier-2024-scripts-menu-categories', + id : 'haiku-atelier-2024-scripts-menu-categories', path: '/assets/js/scripts-menu-categories.js', ); }); diff --git a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-completed-order.php b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-completed-order.php index 61fbe911..923ef72d 100755 --- a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-completed-order.php +++ b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-completed-order.php @@ -20,7 +20,7 @@ Timber::init(); // Sélectionne le répertoire contenant les modèles Twig Timber::$dirname = ['views']; -$context = Timber::context(); +$context = Timber::context(); $templates = ['email-commande-envoyee.twig']; /** @var Order $commande La Commande issue du contexte contenu dans la variable $order. */ @@ -30,7 +30,7 @@ $commande = $order; $date = new Carbon($commande->get_date_created()); $email = [ - 'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()], + 'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()], 'livraison' => [ 'transporteur' => Str::of($commande->get_shipping_method())->replace(' (Free)', ''), 'numero_suivi' => blank($commande->get_meta('tracking_number')) diff --git a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-invoice.php b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-invoice.php index cbdcd419..27697389 100755 --- a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-invoice.php +++ b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-invoice.php @@ -21,7 +21,7 @@ Timber::init(); // Sélectionne le répertoire contenant les modèles Twig Timber::$dirname = ['views']; -$context = Timber::context(); +$context = Timber::context(); $templates = ['email-base.twig']; /** @var Order $commande La Commande issue du contexte contenu dans la variable $order. */ @@ -31,14 +31,17 @@ $commande = $order; $date = new Carbon($commande->get_date_created()); $email = [ - 'adresses' => ['facturation' => $commande->get_address('billing'), 'livraison' => $commande->get_address('shipping')], - 'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()], + 'adresses' => [ + 'facturation' => $commande->get_address('billing'), + 'livraison' => $commande->get_address('shipping'), + ], + 'commande' => ['date' => $date->toDateString(), 'id' => $commande->get_id()], 'livraison' => [ - 'methode' => $commande->get_shipping_method(), + 'methode' => $commande->get_shipping_method(), 'numero_suivi' => $commande->get_meta('tracking_number'), ], - 'paiement' => ['methode' => ''], - 'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) { + 'paiement' => ['methode' => ''], + 'produits' => collect($commande->get_items())->map(static function (WC_Order_Item_Product $article) { $produit = $article->get_product(); if (is_bool($produit) || $produit === null) { @@ -47,31 +50,31 @@ $email = [ return [ // Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide - 'attribut' => $produit->is_type('variable') + 'attribut' => $produit->is_type('variable') ? collect($produit->get_attributes()) ->mapWithKeys(static fn($_atr, $cle): array => [ - 'nom' => Str::lower(wc_attribute_label($cle, $produit)), + 'nom' => Str::lower(wc_attribute_label($cle, $produit)), 'valeur' => $produit->get_attribute($cle), ]) ->toArray() : [], - 'lien' => $produit->get_permalink(), - 'nom' => $produit->get_title(), + 'lien' => $produit->get_permalink(), + 'nom' => $produit->get_title(), 'prix_total' => $article->get_total(), - 'quantite' => $article->get_quantity(), + 'quantite' => $article->get_quantity(), ]; }), - 'totaux' => [ + 'totaux' => [ 'sous_total_livraison' => '0' === $commande->get_shipping_total() ? 'Free' : $commande->get_shipping_total() . '€', - 'sous_total_produits' => $commande->get_subtotal() . '€', + 'sous_total_produits' => $commande->get_subtotal() . '€', 'sous_total_reduction' => '0.00' === $commande->get_discount_total() ? '0' : Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€', - 'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€', + 'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€', ], ]; // Transforme les codes de pays en noms de pays -$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()]; +$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()]; $email['adresses']['facturation']['country'] = WC()->countries->countries[$commande->get_billing_country()]; $context['commande'] = $email; diff --git a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-processing-order.php b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-processing-order.php index 830883aa..1b093035 100755 --- a/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-processing-order.php +++ b/web/app/themes/haiku-atelier-2024/woocommerce/emails/customer-processing-order.php @@ -21,7 +21,7 @@ Timber::init(); // Sélectionne le répertoire contenant les modèles Twig Timber::$dirname = ['views']; -$context = Timber::context(); +$context = Timber::context(); $templates = ['email-commande-recue.twig']; /** @var Order $commande La Commande issue du contexte contenu dans la variable $order. */ @@ -43,31 +43,31 @@ $email = [ return [ // Récupère l'Attribut d'un Produit variable ou renvoie un tableau vide - 'attribut' => $article->is_type('variable') + 'attribut' => $article->is_type('variable') ? collect($produit->get_attributes()) ->mapWithKeys(static fn($_atr, $cle): array => [ - 'nom' => Str::lower(wc_attribute_label($cle, $produit)), + 'nom' => Str::lower(wc_attribute_label($cle, $produit)), 'valeur' => $produit->get_attribute($cle), ]) ->toArray() : [], - 'lien' => $produit->get_permalink(), - 'nom' => $produit->get_title(), + 'lien' => $produit->get_permalink(), + 'nom' => $produit->get_title(), 'prix_total' => $article->get_total(), - 'quantite' => $article->get_quantity(), + 'quantite' => $article->get_quantity(), ]; }), - 'totaux' => [ + 'totaux' => [ 'sous_total_livraison' => '0' === $commande->get_shipping_total() ? 'Free' : $commande->get_shipping_total() . '€', - 'sous_total_produits' => $commande->get_subtotal() . '€', + 'sous_total_produits' => $commande->get_subtotal() . '€', 'sous_total_reduction' => '0.00' === $commande->get_discount_total() ? '0' : Number::format((float) $commande->get_discount_total(), maxPrecision: 2) . '€', - 'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€', + 'total' => Number::format((float) $commande->get_total(), maxPrecision: 2) . '€', ], ]; // Transforme les codes de pays en noms de pays -$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()]; +$email['adresses']['livraison']['country'] = WC()->countries->countries[$commande->get_shipping_country()]; $email['adresses']['facturation']['country'] = WC()->countries->countries[$commande->get_billing_country()]; $context['commande'] = $email;