PluginProbe
Property Hive / 2.3.0
Property Hive v2.3.0
2.3.1 2.3.0 2.2.6 2.2.5 2.2.4 2.2.3 2.2.2 1.4.46 1.4.47 1.4.48 1.4.49 1.4.5 1.4.50 1.4.51 1.4.52 1.4.53 1.4.54 1.4.55 1.4.56 1.4.57 1.4.58 1.4.59 1.4.6 1.4.60 1.4.61 All 261 releases
← All changes | includes/class-ph-frontend-scripts.php +120 -33 1.4.62.3.0 View file →
@@ -19,8 +19,9 @@
19 19 * Hook in methods
20 20 */
21 21 public static function init() {
22 22 add_action( 'wp_enqueue_scripts', array( __CLASS__, 'load_scripts' ) );
23 + add_filter( 'script_loader_tag', array( __CLASS__, 'embed_script_attributes' ), 10, 2 );
23 24 add_action( 'wp_print_scripts', array( __CLASS__, 'check_jquery' ), 25 );
24 25 add_action( 'wp_print_scripts', array( __CLASS__, 'localize_printed_scripts' ), 5 );
25 26 add_action( 'wp_print_footer_scripts', array( __CLASS__, 'localize_printed_scripts' ), 5 );
26 27 }
@@ -25,25 +26,27 @@
25 26 add_action( 'wp_print_footer_scripts', array( __CLASS__, 'localize_printed_scripts' ), 5 );
26 27 }
27 28
28 29 /**
30 + * Preserve the provider attributes used by the original Reel embeds.
31 + */
32 + public static function embed_script_attributes( $tag, $handle ) {
33 + if ( 'propertyhive-instagram-embed' === $handle ) {
34 + return str_replace( '<script ', '<script async ', $tag );
35 + }
36 + if ( 'propertyhive-facebook-embed' === $handle ) {
37 + $tag = str_replace( array( 'id="propertyhive-facebook-embed-js"', "id='propertyhive-facebook-embed-js'" ), 'id="facebook-jssdk"', $tag );
38 + return str_replace( '<script ', '<script async defer crossorigin="anonymous" ', $tag );
39 + }
40 + return $tag;
41 + }
42 +
43 + /**
29 44 * Get styles for the frontend
30 45 * @return array
31 46 */
32 47 public static function get_styles() {
33 48 return apply_filters( 'propertyhive_enqueue_styles', array(
34 - /*'propertyhive-layout' => array(
35 - 'src' => str_replace( array( 'http:', 'https:' ), '', PH()->plugin_url() ) . '/assets/css/propertyhive-layout.css',
36 - 'deps' => '',
37 - 'version' => PH_VERSION,
38 - 'media' => 'all'
39 - ),
40 - 'propertyhive-smallscreen' => array(
41 - 'src' => str_replace( array( 'http:', 'https:' ), '', PH()->plugin_url() ) . '/assets/css/propertyhive-smallscreen.css',
42 - 'deps' => 'propertyhive-layout',
43 - 'version' => PH_VERSION,
44 - 'media' => 'only screen and (max-width: ' . apply_filters( 'propertyhive_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')'
45 - ),*/
46 49 'propertyhive-general' => array(
47 50 'src' => str_replace( array( 'http:', 'https:' ), '', PH()->plugin_url() ) . '/assets/css/propertyhive.css',
48 51 'deps' => '',
49 52 'version' => PH_VERSION,
@@ -68,27 +71,53 @@
68 71
69 72 // Register any scripts for later use, or used as dependencies
70 73 wp_register_script( 'jquery-cookie', $assets_path . 'js/jquery-cookie/jquery.cookie' . $suffix . '.js', array( 'jquery' ), '1.3.1', true );
71 74
72 - if ( is_property() ) {
73 - wp_enqueue_script( 'prettyPhoto', $assets_path . 'js/prettyPhoto/jquery.prettyPhoto' . $suffix . '.js', array( 'jquery' ), '3.1.5', true );
74 - wp_enqueue_script( 'prettyPhoto-init', $assets_path . 'js/prettyPhoto/jquery.prettyPhoto.init' . $suffix . '.js', array( 'jquery','prettyPhoto' ), PH_VERSION, true );
75 - wp_enqueue_style( 'propertyhive_prettyPhoto_css', $assets_path . 'css/prettyPhoto.css' );
76 -
77 - wp_enqueue_script( 'flexslider', $assets_path . 'js/flexslider/jquery.flexslider' . $suffix . '.js', array( 'jquery' ), '2.2.2', true );
75 + wp_register_script( 'propertyhive_fancybox', $assets_path . 'js/fancybox/jquery.fancybox' . $suffix . '.js', array( 'jquery' ), '3.5.7', true );
76 + wp_register_style( 'propertyhive_fancybox_css', $assets_path . 'css/jquery.fancybox' . $suffix . '.css', array(), '3.5.7' );
77 +
78 + wp_register_script( 'tiny_slider', $assets_path . 'js/tiny-slider/tiny-slider.js', array( 'jquery' ), '2.9.4', true );
79 + wp_register_script( 'propertyhive_carousel', $assets_path . 'js/frontend/carousel.js', array( 'jquery' ), PH_VERSION, true );
80 + wp_register_style( 'tiny_slider_css', $assets_path . 'js/tiny-slider/tiny-slider.css', array(), '2.9.4' );
81 +
82 + if ( get_option('propertyhive_lettings_fees_display_search_results', '') == 'yes' )
83 + {
84 + wp_enqueue_script( 'propertyhive_fancybox' );
85 + wp_enqueue_style( 'propertyhive_fancybox_css' );
86 + }
87 +
88 + if ( is_property() )
89 + {
90 + wp_enqueue_script( 'propertyhive_fancybox' );
91 + wp_enqueue_style( 'propertyhive_fancybox_css' );
92 +
93 + wp_enqueue_script( 'flexslider', $assets_path . 'js/flexslider/jquery.flexslider' . $suffix . '.js', array( 'jquery' ), '2.7.2', true );
78 94 wp_enqueue_script( 'flexslider-init', $assets_path . 'js/flexslider/jquery.flexslider.init' . $suffix . '.js', array( 'jquery','flexslider' ), PH_VERSION, true );
79 - wp_enqueue_style( 'flexslider_css', $assets_path . 'css/flexslider.css' );
80 -
81 - wp_enqueue_script( 'propertyhive_actions', $frontend_script_path . 'actions' . $suffix . '.js', array( 'jquery' ), PH_VERSION, true );
82 -
83 - wp_enqueue_script( 'ph-single-property' );
95 + wp_enqueue_style( 'flexslider_css', $assets_path . 'css/flexslider.css', array(), '2.7.2' );
84 96 }
85 -
97 +
86 98 // Global frontend scripts
87 99 wp_enqueue_script( 'propertyhive_search', $frontend_script_path . 'search' . $suffix . '.js', array( 'jquery' ), PH_VERSION, true );
88 100 wp_enqueue_script( 'propertyhive_make_enquiry', $frontend_script_path . 'make-enquiry' . $suffix . '.js', array( 'jquery' ), PH_VERSION, true );
89 101 //wp_enqueue_script( 'propertyhive', $frontend_script_path . 'propertyhive' . $suffix . '.js', array( 'jquery' ), PH_VERSION, true );
90 -
102 +
103 + $captcha_service = get_option( 'propertyhive_captcha_service', '' );
104 + if ( $captcha_service == 'turnstile' )
105 + {
106 + if ( get_option( 'propertyhive_captcha_site_key', '' ) != '' && get_option( 'propertyhive_captcha_secret', '' ) != '' )
107 + {
108 + // phpcs:ignore PluginCheck.CodeAnalysis.EnqueuedResourceOffloading.OffloadedContent -- Required by the configured Cloudflare Turnstile service.
109 + wp_enqueue_script( 'turnstile', 'https://challenges.cloudflare.com/turnstile/v0/api.js?onload=ph_init_turnstile', array(), PH_VERSION, array( 'strategy' => 'defer', 'in_footer' => true ) );
110 + }
111 + }
112 +
113 + wp_register_script( 'multiselect', $assets_path . 'js/multiselect/jquery.multiselect' . /*$suffix .*/ '.js', array('jquery'), '2.4.18', true );
114 + wp_enqueue_style( 'multiselect', $assets_path . 'css/jquery.multiselect.css', array(), '2.4.18' );
115 +
116 + wp_register_script( 'propertyhive_dynamic_population', $assets_path . 'js/frontend/dynamic-population' . /*$suffix .*/ '.js', array('jquery'), '1.0.0', true );
117 +
118 + wp_enqueue_script( 'propertyhive_utm_tracker', $assets_path . 'js/frontend/utm-tracker' . $suffix . '.js', array( 'jquery' ), PH_VERSION, true );
119 +
91 120 // CSS Styles
92 121 $enqueue_styles = self::get_styles();
93 122
94 123 if ( $enqueue_styles ) {
@@ -105,22 +134,80 @@
105 134 global $wp;
106 135
107 136 $assets_path = str_replace( array( 'http:', 'https:' ), '', PH()->plugin_url() ) . '/assets/';
108 137
109 - if ( wp_script_is( 'propertyhive_make_enquiry' ) ) {
110 - wp_localize_script( 'propertyhive_make_enquiry', 'propertyhive_make_property_enquiry_params', apply_filters( 'propertyhive_make_property_enquiry_params', array(
111 - 'ajax_url' => PH()->ajax_url()
112 - ) ) );
138 + if ( wp_script_is( 'propertyhive_search' ) )
139 + {
140 + $params = array(
141 + 'custom_departments' => ph_get_custom_departments(),
142 + 'do_image_resize' => false,
143 + 'image_ratio' => 2 / 3,
144 + );
145 +
146 + $current_settings = get_option( 'propertyhive_template_assistant', array() );
147 +
148 + if (
149 + is_post_type_archive('property')
150 + ||
151 + ( isset($current_settings['search_result_css_all_pages']) && $current_settings['search_result_css_all_pages'] == 'yes' )
152 + )
153 + {
154 + if (
155 + isset($current_settings['search_result_layout']) &&
156 + isset($current_settings['search_result_layout']) == 2
157 + )
158 + {
159 + $params['do_image_resize'] = true;
160 + }
161 + }
162 +
163 + $params = apply_filters( 'propertyhive_search_params', $params );
164 + $params = apply_filters( 'propertyhive_template_assistant_script_params', $params );
165 +
166 + wp_localize_script( 'propertyhive_search', 'propertyhive_search_params', $params );
113 167 }
114 168
115 - if ( wp_script_is( 'propertyhive_account' ) ) {
116 - wp_localize_script( 'propertyhive_account', 'propertyhive_account_params', apply_filters( 'propertyhive_account_params', array(
169 + if ( wp_script_is( 'propertyhive_make_enquiry' ) )
170 + {
171 + $data = array(
172 + 'ajax_url' => PH()->ajax_url(),
173 + 'default_validation_error_message' => esc_html(__( 'Please ensure all required fields have been completed', 'propertyhive' )),
174 + );
175 + if ( get_option('propertyhive_captcha_service', '') != '' )
176 + {
177 + $data['captcha_service'] = get_option('propertyhive_captcha_service', '');
178 + $data['recaptcha_site_key'] = get_option('propertyhive_captcha_site_key', 'recaptcha-v3');
179 + }
180 + wp_localize_script( 'propertyhive_make_enquiry', 'propertyhive_make_property_enquiry_params', apply_filters( 'propertyhive_make_property_enquiry_params', $data ) );
181 + }
182 +
183 + if ( wp_script_is( 'propertyhive_account' ) )
184 + {
185 + $data = array(
117 186 'ajax_url' => PH()->ajax_url(),
118 187 'my_account_url' => get_permalink( ph_get_page_id('my_account') ),
188 + 'custom_departments' => ph_get_custom_departments(),
119 189 'login_nonce' => wp_create_nonce( "ph_login" ),
190 + 'lost_password_nonce' => wp_create_nonce( "ph_lost_password" ),
191 + 'reset_password_nonce' => wp_create_nonce( "ph_reset_password" ),
120 192 'register_nonce' => wp_create_nonce( "ph_register" ),
121 - 'details_nonce' => wp_create_nonce( "ph_details" ),
193 + 'userdetails_nonce' => wp_create_nonce( "ph_userdetails" ),
122 194 'requirements_nonce' => wp_create_nonce( "ph_requirements" ),
195 + 'default_validation_error_message' => esc_html(__( 'Please ensure all required fields have been completed', 'propertyhive' )),
196 + );
197 + if ( get_option('propertyhive_captcha_service', '') != '' )
198 + {
199 + $data['captcha_service'] = get_option('propertyhive_captcha_service', '');
200 + $data['recaptcha_site_key'] = get_option('propertyhive_captcha_site_key', 'recaptcha-v3');
201 + }
202 +
203 + wp_localize_script( 'propertyhive_account', 'propertyhive_account_params', apply_filters( 'propertyhive_account_params', $data ) );
204 + }
205 +
206 + if ( wp_script_is( 'multiselect' ) ) {
207 + wp_localize_script( 'multiselect', 'propertyhive_multiselect_params', apply_filters( 'propertyhive_multiselect_params', array(
208 + 'search' => false,
209 + 'selected_text' => __( 'selected', 'propertyhive' ),
123 210 ) ) );
124 211 }
125 212 }
126 213
@@ -138,9 +225,9 @@
138 225
139 226 // Enforce minimum version of jQuery
140 227 if ( ! empty( $wp_scripts->registered['jquery']->ver ) && ! empty( $wp_scripts->registered['jquery']->src ) && 0 >= version_compare( $wp_scripts->registered['jquery']->ver, '1.8' ) ) {
141 228 wp_deregister_script( 'jquery' );
142 - wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8' );
229 + wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.8', false );
143 230 wp_enqueue_script( 'jquery' );
144 231 }
145 232 }
146 233 }