← All changes
|
includes/elementor-widgets/property-search-form.php
+29
-29
2.2.4
→
2.4.0
View file →
| @@ -3,8 +3,9 @@ | ||
| 3 | 3 | * Elementor Property Search Form Widget. |
| 4 | 4 | * |
| 5 | 5 | * @since 1.0.0 |
| 6 | 6 | */ |
| 7 | +// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound -- Existing public Elementor widget class; retain its registered name for extension compatibility. | |
| 7 | 8 | class Elementor_Property_Search_Form_Widget extends \Elementor\Widget_Base { |
| 8 | 9 | |
| 9 | 10 | public function get_name() { |
| 10 | 11 | return 'property-search-form'; |
| @@ -382,35 +383,34 @@ | ||
| 382 | 383 | } |
| 383 | 384 | </style>'; |
| 384 | 385 | } |
| 385 | 386 | |
| 386 | - $original_department = isset($_GET['department']) ? sanitize_text_field($_GET['department']) : false; | |
| 387 | - $changed_department = false; | |
| 388 | - if ( | |
| 389 | - isset($settings['default_department']) && !empty($settings['default_department']) && | |
| 390 | - ( | |
| 391 | - !isset($_GET['department']) || | |
| 392 | - ( isset($_GET['department']) && empty($_GET['department']) ) | |
| 393 | - ) | |
| 394 | - ) | |
| 395 | - { | |
| 396 | - $_GET['department'] = $settings['default_department']; | |
| 397 | - $_REQUEST['department'] = $settings['default_department']; | |
| 398 | - | |
| 399 | - $changed_department = true; | |
| 400 | - } | |
| 401 | - ph_get_search_form( ( ( isset($settings['form_id']) && !empty($settings['form_id']) ) ? $settings['form_id'] : 'default' ) ); | |
| 402 | - if ( $changed_department === true ) | |
| 403 | - { | |
| 404 | - if ( $original_department === false ) | |
| 405 | - { | |
| 406 | - unset($_GET['department']); | |
| 407 | - unset($_REQUEST['department']); | |
| 408 | - } | |
| 409 | - else | |
| 410 | - { | |
| 411 | - $_GET['department'] = $original_department; | |
| 412 | - $_REQUEST['department'] = $original_department; | |
| 413 | - } | |
| 414 | - } | |
| 387 | + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Snapshot read-only search state for exact restoration after rendering. | |
| 388 | + $original_get = $_GET; | |
| 389 | + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- GET and REQUEST can differ; preserve each caller's original search state. | |
| 390 | + $original_request = $_REQUEST; | |
| 391 | + $department = isset( $original_get['department'] ) && is_string( $original_get['department'] ) ? sanitize_text_field( wp_unslash( $original_get['department'] ) ) : ''; | |
| 392 | + if ( empty( $department ) && isset( $settings['default_department'] ) && is_string( $settings['default_department'] ) ) { | |
| 393 | + $department = sanitize_text_field( $settings['default_department'] ); | |
| 394 | + } | |
| 395 | + if ( '' !== $department ) { | |
| 396 | + $_GET['department'] = wp_slash( $department ); | |
| 397 | + $_REQUEST['department'] = wp_slash( $department ); | |
| 398 | + } else { | |
| 399 | + unset( $_GET['department'], $_REQUEST['department'] ); | |
| 400 | + } | |
| 401 | + try { | |
| 402 | + ph_get_search_form( ( isset( $settings['form_id'] ) && ! empty( $settings['form_id'] ) ) ? $settings['form_id'] : 'default' ); | |
| 403 | + } finally { | |
| 404 | + if ( array_key_exists( 'department', $original_get ) ) { | |
| 405 | + $_GET['department'] = $original_get['department']; | |
| 406 | + } else { | |
| 407 | + unset( $_GET['department'] ); | |
| 408 | + } | |
| 409 | + if ( array_key_exists( 'department', $original_request ) ) { | |
| 410 | + $_REQUEST['department'] = $original_request['department']; | |
| 411 | + } else { | |
| 412 | + unset( $_REQUEST['department'] ); | |
| 413 | + } | |
| 414 | + } | |
| 415 | 415 | } |
| 416 | 416 | } |