Changeset 3463945
- Timestamp:
- 02/18/2026 05:33:34 AM (5 weeks ago)
- Location:
- latepoint
- Files:
-
- 2 deleted
- 20 edited
- 1 copied
-
tags/5.2.8 (copied) (copied from latepoint/trunk)
-
tags/5.2.8/.distignore (modified) (1 diff)
-
tags/5.2.8/CHANGELOG.md (deleted)
-
tags/5.2.8/latepoint.php (modified) (2 diffs)
-
tags/5.2.8/lib/controllers/booking_form_settings_controller.php (modified) (1 diff)
-
tags/5.2.8/lib/controllers/customers_controller.php (modified) (2 diffs)
-
tags/5.2.8/lib/controllers/orders_controller.php (modified) (1 diff)
-
tags/5.2.8/lib/helpers/customer_import_helper.php (modified) (1 diff)
-
tags/5.2.8/lib/helpers/settings_helper.php (modified) (2 diffs)
-
tags/5.2.8/lib/views/booking_form_settings/_booking_form_preview.php (modified) (2 diffs)
-
tags/5.2.8/lib/views/booking_form_settings/show.php (modified) (1 diff)
-
tags/5.2.8/readme.txt (modified) (3 diffs)
-
trunk/.distignore (modified) (1 diff)
-
trunk/CHANGELOG.md (deleted)
-
trunk/latepoint.php (modified) (2 diffs)
-
trunk/lib/controllers/booking_form_settings_controller.php (modified) (1 diff)
-
trunk/lib/controllers/customers_controller.php (modified) (2 diffs)
-
trunk/lib/controllers/orders_controller.php (modified) (1 diff)
-
trunk/lib/helpers/customer_import_helper.php (modified) (1 diff)
-
trunk/lib/helpers/settings_helper.php (modified) (2 diffs)
-
trunk/lib/views/booking_form_settings/_booking_form_preview.php (modified) (2 diffs)
-
trunk/lib/views/booking_form_settings/show.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
latepoint/tags/5.2.8/.distignore
r3452593 r3463945 51 51 *.log 52 52 *.zip 53 CHANGELOG.md 54 CLAUDE.md -
latepoint/tags/5.2.8/latepoint.php
r3452593 r3463945 3 3 * Plugin Name: LatePoint 4 4 * Description: Appointment Scheduling Software for WordPress 5 * Version: 5.2. 75 * Version: 5.2.8 6 6 * Author: LatePoint 7 7 * Author URI: https://latepoint.com … … 30 30 * 31 31 */ 32 public $version = '5.2. 7';32 public $version = '5.2.8'; 33 33 public $db_version = '2.3.0'; 34 34 -
latepoint/tags/5.2.8/lib/controllers/booking_form_settings_controller.php
r3291162 r3463945 24 24 25 25 public function reload_preview() { 26 // Verify nonce. 27 $this->check_nonce( 'reload_preview' ); 28 26 29 OsStepsHelper::set_cart_object(); 27 30 OsStepsHelper::set_booking_object(); -
latepoint/tags/5.2.8/lib/controllers/customers_controller.php
r3452593 r3463945 151 151 $customer = new OsCustomerModel(); 152 152 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 153 $customer->set_data( $this->params['customer'], LATEPOINT_PARAMS_SCOPE_PUBLIC ); 153 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 154 $customer->set_data( $this->params['customer'], OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 154 155 if ( $customer->save() ) { 155 156 // translators: %s is the html of a customer edit link … … 181 182 $old_customer_data = $customer->get_data_vars(); 182 183 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 183 $customer->set_data( $this->params['customer'], LATEPOINT_PARAMS_SCOPE_PUBLIC ); 184 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 185 $customer->set_data( $this->params['customer'], OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 184 186 if ( $customer->save() ) { 185 187 // translators: %s is the html of a customer edit link -
latepoint/tags/5.2.8/lib/controllers/orders_controller.php
r3452593 r3463945 132 132 } 133 133 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 134 // Use 'public' role to restrict which fields can be set via user input.135 $customer->set_data( $customer_params, LATEPOINT_PARAMS_SCOPE_PUBLIC );134 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 135 $customer->set_data( $customer_params, OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 136 136 if ( $customer->save() ) { 137 137 if ( $is_new_customer ) { -
latepoint/tags/5.2.8/lib/helpers/customer_import_helper.php
r3366851 r3463945 182 182 } 183 183 } 184 $customer->set_data($save_data );184 $customer->set_data($save_data, 'public'); 185 185 186 186 if ($customer->save()) { -
latepoint/tags/5.2.8/lib/helpers/settings_helper.php
r3452593 r3463945 209 209 210 210 // Security check: Ensure no dangerous SQL keywords in CREATE statement. 211 $dangerous_keywords = array( ' EXEC', 'EXECUTE', 'CALL', 'LOAD_FILE', 'INTO OUTFILE', 'INTO DUMPFILE' );211 $dangerous_keywords = array( 'SELECT', 'UNION', 'EXEC', 'EXECUTE', 'CALL', 'LOAD_FILE', 'INTO OUTFILE', 'INTO DUMPFILE' ); 212 212 foreach ( $dangerous_keywords as $keyword ) { 213 213 if ( stripos( $create_statement, $keyword ) !== false ) { … … 232 232 foreach ( $table_data['data'] as $row ) { 233 233 if ( is_array( $row ) ) { 234 // Security fix: Prevent mass assignment of wordpress_user_id during import. 235 if ( $table === $wpdb->prefix . 'latepoint_customers' ) { 236 unset( $row['wordpress_user_id'] ); 237 } 238 234 239 $insert_result = $wpdb->insert( $table, $row ); 235 240 if ( $insert_result === false ) { -
latepoint/tags/5.2.8/lib/views/booking_form_settings/_booking_form_preview.php
r3291162 r3463945 21 21 </div> 22 22 <div class="bf-side-heading editable-setting" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][side_panel_heading]" contenteditable="true"><?php echo wp_strip_all_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'side_panel_heading')); ?></div> 23 <div class="bf-side-desc os-editable-basic editable-setting" data-setting-key="[<?php echo $selected_step_code;?>][side_panel_description]"><?php echo strip_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'side_panel_description'), ['a', 'i', 'u', 'b', 'br']); ?></div> 23 <div 24 class="bf-side-desc os-editable-basic editable-setting" 25 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][side_panel_description]" 26 > 27 <?php echo strip_tags( OsStepsHelper::get_step_setting_value( $selected_step_code, 'side_panel_description' ), [ 'a', 'i', 'u', 'b', 'br' ] ); ?> 28 </div> 24 29 </div> 25 30 <div class="side-panel-extra os-editable editable-setting" data-setting-key="[shared][steps_support_text]"> 26 <?php echo OsSettingsHelper::get_steps_support_text(); ?>31 <?php echo wp_kses_post( OsSettingsHelper::get_steps_support_text() ); ?> 27 32 </div> 28 33 </div> … … 30 35 <div class="bf-main-heading editable-setting" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_heading]" contenteditable="true"><?php echo wp_strip_all_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_heading')); ?></div> 31 36 <div class="bf-main-panel-content-wrapper"> 32 <div class="bf-main-panel-content-before os-editable editable-setting" data-placeholder="+" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_content_before]"><?php echo OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_content_before'); ?></div> 37 <div 38 class="bf-main-panel-content-before os-editable editable-setting" 39 data-placeholder="+" 40 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][main_panel_content_before]" 41 > 42 <?php echo wp_kses_post( OsStepsHelper::get_step_setting_value( $selected_step_code, 'main_panel_content_before' ) ); ?> 43 </div> 33 44 <div class="bf-main-panel-content"> 34 45 <?php echo OsStepsHelper::get_step_content_preview($selected_step_code); ?> 35 46 </div> 36 <div class="bf-main-panel-content-after os-editable editable-setting" data-placeholder="+" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_content_after]"><?php echo OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_content_after'); ?></div> 47 <div 48 class="bf-main-panel-content-after os-editable editable-setting" 49 data-placeholder="+" 50 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][main_panel_content_after]" 51 > 52 <?php echo wp_kses_post( OsStepsHelper::get_step_setting_value( $selected_step_code, 'main_panel_content_after' ) ); ?> 53 </div> 37 54 </div> 38 55 <div class="bf-main-panel-buttons"> -
latepoint/tags/5.2.8/lib/views/booking_form_settings/show.php
r3230896 r3463945 15 15 <form class="booking-form-preview-settings" 16 16 data-route-name="<?php echo esc_attr(OsRouterHelper::build_route_name( 'booking_form_settings', 'reload_preview' )); ?>"> 17 <?php wp_nonce_field( 'reload_preview', '_wpnonce', false ); ?> 17 18 <div class="bf-heading"> 18 19 <div class="latepoint-icon latepoint-icon-browser"></div> -
latepoint/tags/5.2.8/readme.txt
r3452592 r3463945 1 1 === LatePoint - Calendar Booking Plugin for Appointments and Events === 2 2 Contributors: latepoint 3 Donate link: https://latepoint.com4 3 Tags: appointments, booking, scheduling, events, calendar 5 4 Requires at least: 6.5 6 5 Tested up to: 6.9 7 Stable tag: 5.2. 76 Stable tag: 5.2.8 8 7 Requires PHP: 7.4 9 8 License: GPLv3 … … 205 204 == Changelog == 206 205 206 = 5.2.8 - February 18, 2026 = 207 - Security: Addressed security bugs. Props to WordFence for reporting it. 208 - Fix: Fixed admin notes field not saving properly for admin users when creating or updating customers/orders. 209 207 210 = 5.2.7 - February 3, 2026 = 208 211 - Security: Addressed security bugs. Props to WordFence for reporting it. … … 217 220 - Fix: Fixes for customer login shortcode issues + OTP via SMS 218 221 219 = 5.2.3 - September 28, 2025 =220 - New: Compact side menu221 - Fix: Fixes for customer authentication222 223 222 Full changelog can be found on our website: [Full Changelog](https://latepoint.com/changelog/) -
latepoint/trunk/.distignore
r3452593 r3463945 51 51 *.log 52 52 *.zip 53 CHANGELOG.md 54 CLAUDE.md -
latepoint/trunk/latepoint.php
r3452593 r3463945 3 3 * Plugin Name: LatePoint 4 4 * Description: Appointment Scheduling Software for WordPress 5 * Version: 5.2. 75 * Version: 5.2.8 6 6 * Author: LatePoint 7 7 * Author URI: https://latepoint.com … … 30 30 * 31 31 */ 32 public $version = '5.2. 7';32 public $version = '5.2.8'; 33 33 public $db_version = '2.3.0'; 34 34 -
latepoint/trunk/lib/controllers/booking_form_settings_controller.php
r3291162 r3463945 24 24 25 25 public function reload_preview() { 26 // Verify nonce. 27 $this->check_nonce( 'reload_preview' ); 28 26 29 OsStepsHelper::set_cart_object(); 27 30 OsStepsHelper::set_booking_object(); -
latepoint/trunk/lib/controllers/customers_controller.php
r3452593 r3463945 151 151 $customer = new OsCustomerModel(); 152 152 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 153 $customer->set_data( $this->params['customer'], LATEPOINT_PARAMS_SCOPE_PUBLIC ); 153 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 154 $customer->set_data( $this->params['customer'], OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 154 155 if ( $customer->save() ) { 155 156 // translators: %s is the html of a customer edit link … … 181 182 $old_customer_data = $customer->get_data_vars(); 182 183 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 183 $customer->set_data( $this->params['customer'], LATEPOINT_PARAMS_SCOPE_PUBLIC ); 184 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 185 $customer->set_data( $this->params['customer'], OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 184 186 if ( $customer->save() ) { 185 187 // translators: %s is the html of a customer edit link -
latepoint/trunk/lib/controllers/orders_controller.php
r3452593 r3463945 132 132 } 133 133 // Security fix: Prevent mass assignment of wordpress_user_id by non-admin users. 134 // Use 'public' role to restrict which fields can be set via user input.135 $customer->set_data( $customer_params, LATEPOINT_PARAMS_SCOPE_PUBLIC );134 // Use admin scope if user is authenticated as admin, otherwise restrict to public fields. 135 $customer->set_data( $customer_params, OsAuthHelper::is_admin_logged_in() ? LATEPOINT_PARAMS_SCOPE_ADMIN : LATEPOINT_PARAMS_SCOPE_PUBLIC ); 136 136 if ( $customer->save() ) { 137 137 if ( $is_new_customer ) { -
latepoint/trunk/lib/helpers/customer_import_helper.php
r3366851 r3463945 182 182 } 183 183 } 184 $customer->set_data($save_data );184 $customer->set_data($save_data, 'public'); 185 185 186 186 if ($customer->save()) { -
latepoint/trunk/lib/helpers/settings_helper.php
r3452593 r3463945 209 209 210 210 // Security check: Ensure no dangerous SQL keywords in CREATE statement. 211 $dangerous_keywords = array( ' EXEC', 'EXECUTE', 'CALL', 'LOAD_FILE', 'INTO OUTFILE', 'INTO DUMPFILE' );211 $dangerous_keywords = array( 'SELECT', 'UNION', 'EXEC', 'EXECUTE', 'CALL', 'LOAD_FILE', 'INTO OUTFILE', 'INTO DUMPFILE' ); 212 212 foreach ( $dangerous_keywords as $keyword ) { 213 213 if ( stripos( $create_statement, $keyword ) !== false ) { … … 232 232 foreach ( $table_data['data'] as $row ) { 233 233 if ( is_array( $row ) ) { 234 // Security fix: Prevent mass assignment of wordpress_user_id during import. 235 if ( $table === $wpdb->prefix . 'latepoint_customers' ) { 236 unset( $row['wordpress_user_id'] ); 237 } 238 234 239 $insert_result = $wpdb->insert( $table, $row ); 235 240 if ( $insert_result === false ) { -
latepoint/trunk/lib/views/booking_form_settings/_booking_form_preview.php
r3291162 r3463945 21 21 </div> 22 22 <div class="bf-side-heading editable-setting" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][side_panel_heading]" contenteditable="true"><?php echo wp_strip_all_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'side_panel_heading')); ?></div> 23 <div class="bf-side-desc os-editable-basic editable-setting" data-setting-key="[<?php echo $selected_step_code;?>][side_panel_description]"><?php echo strip_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'side_panel_description'), ['a', 'i', 'u', 'b', 'br']); ?></div> 23 <div 24 class="bf-side-desc os-editable-basic editable-setting" 25 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][side_panel_description]" 26 > 27 <?php echo strip_tags( OsStepsHelper::get_step_setting_value( $selected_step_code, 'side_panel_description' ), [ 'a', 'i', 'u', 'b', 'br' ] ); ?> 28 </div> 24 29 </div> 25 30 <div class="side-panel-extra os-editable editable-setting" data-setting-key="[shared][steps_support_text]"> 26 <?php echo OsSettingsHelper::get_steps_support_text(); ?>31 <?php echo wp_kses_post( OsSettingsHelper::get_steps_support_text() ); ?> 27 32 </div> 28 33 </div> … … 30 35 <div class="bf-main-heading editable-setting" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_heading]" contenteditable="true"><?php echo wp_strip_all_tags(OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_heading')); ?></div> 31 36 <div class="bf-main-panel-content-wrapper"> 32 <div class="bf-main-panel-content-before os-editable editable-setting" data-placeholder="+" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_content_before]"><?php echo OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_content_before'); ?></div> 37 <div 38 class="bf-main-panel-content-before os-editable editable-setting" 39 data-placeholder="+" 40 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][main_panel_content_before]" 41 > 42 <?php echo wp_kses_post( OsStepsHelper::get_step_setting_value( $selected_step_code, 'main_panel_content_before' ) ); ?> 43 </div> 33 44 <div class="bf-main-panel-content"> 34 45 <?php echo OsStepsHelper::get_step_content_preview($selected_step_code); ?> 35 46 </div> 36 <div class="bf-main-panel-content-after os-editable editable-setting" data-placeholder="+" data-setting-key="[<?php echo esc_attr($selected_step_code);?>][main_panel_content_after]"><?php echo OsStepsHelper::get_step_setting_value($selected_step_code, 'main_panel_content_after'); ?></div> 47 <div 48 class="bf-main-panel-content-after os-editable editable-setting" 49 data-placeholder="+" 50 data-setting-key="[<?php echo esc_attr( $selected_step_code ); ?>][main_panel_content_after]" 51 > 52 <?php echo wp_kses_post( OsStepsHelper::get_step_setting_value( $selected_step_code, 'main_panel_content_after' ) ); ?> 53 </div> 37 54 </div> 38 55 <div class="bf-main-panel-buttons"> -
latepoint/trunk/lib/views/booking_form_settings/show.php
r3230896 r3463945 15 15 <form class="booking-form-preview-settings" 16 16 data-route-name="<?php echo esc_attr(OsRouterHelper::build_route_name( 'booking_form_settings', 'reload_preview' )); ?>"> 17 <?php wp_nonce_field( 'reload_preview', '_wpnonce', false ); ?> 17 18 <div class="bf-heading"> 18 19 <div class="latepoint-icon latepoint-icon-browser"></div> -
latepoint/trunk/readme.txt
r3452592 r3463945 1 1 === LatePoint - Calendar Booking Plugin for Appointments and Events === 2 2 Contributors: latepoint 3 Donate link: https://latepoint.com4 3 Tags: appointments, booking, scheduling, events, calendar 5 4 Requires at least: 6.5 6 5 Tested up to: 6.9 7 Stable tag: 5.2. 76 Stable tag: 5.2.8 8 7 Requires PHP: 7.4 9 8 License: GPLv3 … … 205 204 == Changelog == 206 205 206 = 5.2.8 - February 18, 2026 = 207 - Security: Addressed security bugs. Props to WordFence for reporting it. 208 - Fix: Fixed admin notes field not saving properly for admin users when creating or updating customers/orders. 209 207 210 = 5.2.7 - February 3, 2026 = 208 211 - Security: Addressed security bugs. Props to WordFence for reporting it. … … 217 220 - Fix: Fixes for customer login shortcode issues + OTP via SMS 218 221 219 = 5.2.3 - September 28, 2025 =220 - New: Compact side menu221 - Fix: Fixes for customer authentication222 223 222 Full changelog can be found on our website: [Full Changelog](https://latepoint.com/changelog/)
Note: See TracChangeset
for help on using the changeset viewer.