Changeset 3444264
- Timestamp:
- 01/21/2026 04:39:02 PM (7 weeks ago)
- Location:
- checkview
- Files:
-
- 10 edited
- 1 copied
-
tags/2.0.27 (copied) (copied from checkview/trunk)
-
tags/2.0.27/README.txt (modified) (5 diffs)
-
tags/2.0.27/checkview.php (modified) (2 diffs)
-
tags/2.0.27/includes/checkview-functions.php (modified) (1 diff)
-
tags/2.0.27/includes/class-checkview.php (modified) (2 diffs)
-
tags/2.0.27/includes/formhelpers/class-checkview-fluent-forms-helper.php (modified) (3 diffs)
-
trunk/README.txt (modified) (5 diffs)
-
trunk/checkview.php (modified) (2 diffs)
-
trunk/includes/checkview-functions.php (modified) (1 diff)
-
trunk/includes/class-checkview.php (modified) (2 diffs)
-
trunk/includes/formhelpers/class-checkview-fluent-forms-helper.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
checkview/tags/2.0.27/README.txt
r3423240 r3444264 8 8 License: GPLv3 9 9 License URI: http://www.gnu.org/licenses/gpl-3.0.html 10 Stable tag: 2.0.2 610 Stable tag: 2.0.27 11 11 12 12 [CheckView](https://checkview.io/) automates WordPress form and WooCommerce testing, monitoring key flows to catch failures early before they cost you leads or sales everyday. … … 16 16 Websites rarely fail loudly. Forms stop submitting. Leads disappear. Emails never send. Checkout buttons break quietly in the background. These issues often go unnoticed until sales or leads are lost. 17 17 18 CheckView automatically tests your WordPress forms on a schedule, using real browser sessions to verify that submissions complete successfully , emails are sent, and integrations work as expected. It also supports testing logins, carts, and WooCommerce checkout flows.18 CheckView automatically tests your WordPress forms on a schedule, using real browser sessions to verify that submissions complete successfully and emails are sent. It also supports testing logins, carts, and WooCommerce checkout flows. 19 19 20 20 Built specifically for WordPress and WooCommerce, CheckView helps site owners, developers, and agencies detect problems early and resolve them faster, without writing code or setting up complex testing infrastructure. … … 33 33 34 34 * Run real browser-based tests on WordPress forms, including multi-step and dynamic forms 35 * Validate form submissions from start to finish, including email notifications and integrations35 * Validate form submissions from start to finish, including email notifications 36 36 * Test WooCommerce checkout flows alongside forms for the most complete coverage 37 37 * Verify full form submissions, including email notifications and stored entries … … 205 205 206 206 == Changelog == 207 208 = 2.0.27 = 209 * Add support for Fluent Forms fields: Terms and Conditions, GDPR Acceptance. 210 * Delay deletion of cloned form results by one day. 211 * Improved logging for scheduled deletion. 207 212 208 213 = 2.0.26 = … … 518 523 == Upgrade Notice == 519 524 525 = 2.0.27 = 526 * Add support for Fluent Forms fields: Terms and Conditions, GDPR Acceptance. 527 * Delay deletion of cloned form results by one day. 528 * Improved logging for scheduled deletion. 529 520 530 = 2.0.26 = 521 531 * Add logging for email submissions and headers across all form helper classes. -
checkview/tags/2.0.27/checkview.php
r3423240 r3444264 12 12 * Plugin URI: https://checkview.io 13 13 * Description: CheckView is the #1 fully automated solution to test your WordPress forms and detect form problems fast. Automatically test your WordPress forms to ensure you never miss a lead again. 14 * Version: 2.0.2 614 * Version: 2.0.27 15 15 * Author: CheckView 16 16 * Author URI: https://checkview.io/ … … 36 36 * @link https://semver.org 37 37 */ 38 define( 'CHECKVIEW_VERSION', '2.0.2 6' );38 define( 'CHECKVIEW_VERSION', '2.0.27' ); 39 39 40 40 if ( ! defined( 'CHECKVIEW_BASE_DIR' ) ) { -
checkview/tags/2.0.27/includes/checkview-functions.php
r3421974 r3444264 1015 1015 global $wpdb; 1016 1016 1017 // Delete all entries from 'cv_entry' table. 1017 Checkview_Admin_Logs::add( 'ip-logs', 'Running scheduled deletion of CheckView rows...' ); 1018 1018 1019 $table_entry = esc_sql( $wpdb->prefix . 'cv_entry' ); 1019 $wpdb->query( "DELETE FROM $table_entry" );1020 1021 // Delete all entries from 'cv_entry_meta' table.1022 1020 $table_entry_meta = esc_sql( $wpdb->prefix . 'cv_entry_meta' ); 1023 $wpdb->query( "DELETE FROM $table_entry_meta" ); 1021 1022 // Delete entries older than 1 day from 'cv_entry_meta' table. 1023 $wpdb->query( 1024 "DELETE FROM $table_entry_meta 1025 WHERE entry_id IN ( 1026 SELECT id FROM $table_entry 1027 WHERE date_created < DATE_SUB(NOW(), INTERVAL 1 DAY) 1028 )" 1029 ); 1030 1031 // Delete entries older than 1 day from 'cv_entry' table. 1032 $wpdb->query( 1033 "DELETE FROM $table_entry 1034 WHERE date_created < DATE_SUB(NOW(), INTERVAL 1 DAY)" 1035 ); 1036 1037 Checkview_Admin_Logs::add( 'ip-logs', 'Done.' ); 1024 1038 } 1025 1039 -
checkview/tags/2.0.27/includes/class-checkview.php
r3423240 r3444264 81 81 $this->version = CHECKVIEW_VERSION; 82 82 } else { 83 $this->version = '2.0.2 6';83 $this->version = '2.0.27'; 84 84 } 85 85 $this->plugin_name = 'checkview'; … … 133 133 */ 134 134 public static function is_bot(): bool { 135 $visitor_ip = checkview_get_visitor_ip(); 136 $cv_bot_ip = checkview_get_api_ip(); 137 $ip_verified = is_array( $cv_bot_ip ) && in_array( $visitor_ip, $cv_bot_ip ); 135 $visitor_ip = checkview_get_visitor_ip(); 136 $cv_bot_ip = checkview_get_api_ip(); 137 $is_local = defined( 'WP_ENVIRONMENT_TYPE' ) && WP_ENVIRONMENT_TYPE === 'local'; 138 $ip_verified = $is_local || ( is_array( $cv_bot_ip ) && in_array( $visitor_ip, $cv_bot_ip ) ); 138 139 139 140 if ( isset( $_REQUEST['checkview_test_id'] ) && ! $ip_verified ) { -
checkview/tags/2.0.27/includes/formhelpers/class-checkview-fluent-forms-helper.php
r3423240 r3444264 36 36 37 37 /** 38 * Checkable inputs counter. 39 * 40 * @var int $counter Number of checkable inputs iterated over during rendering. 41 */ 42 private static $counter = 0; 43 44 /** 38 45 * Constructor. 39 46 * … … 148 155 '__return_true', 149 156 999 157 ); 158 159 add_filter( 160 'fluentform/rendering_field_html_input_checkbox', 161 array($this, 'static_ids'), 162 99 163 ); 164 165 add_filter( 166 'fluentform/rendering_field_html_terms_and_condition', 167 array($this, 'static_ids'), 168 99 169 ); 170 171 add_filter( 172 'fluentform/rendering_field_html_gdpr_agreement', 173 array($this, 'static_ids'), 174 99 175 ); 176 177 add_filter( 178 'fluentform/rendering_field_html_input_radio', 179 array($this, 'static_ids'), 180 99 150 181 ); 151 182 } … … 320 351 return $notifications; 321 352 } 353 354 /** 355 * Replace IDs for checkbox/radio inputs & labels with static IDs based on incremental counter. 356 * 357 * @param $html Input's HTML. 358 * 359 * @return string Modified HTML. 360 */ 361 public static function static_ids($html) { 362 $map = []; 363 364 // Build map of old IDs to new IDs 365 preg_match_all('/\bid=[\'"]([^\'"]+)[\'"]/', $html, $matches); 366 foreach ($matches[1] as $oldId) { 367 if (!isset($map[$oldId])) { 368 $map[$oldId] = 'ff_checkable_' . (++self::$counter); 369 } 370 } 371 372 // Replace both id= and for= attributes 373 foreach ($map as $oldId => $newId) { 374 $html = str_replace( 375 ['id="' . $oldId . '"', "id='" . $oldId . "'", 'for="' . $oldId . '"', "for='" . $oldId . "'"], 376 ['id="' . $newId . '"', "id='" . $newId . "'", 'for="' . $newId . '"', "for='" . $newId . "'"], 377 $html 378 ); 379 } 380 381 return $html; 382 } 322 383 } 323 384 -
checkview/trunk/README.txt
r3423240 r3444264 8 8 License: GPLv3 9 9 License URI: http://www.gnu.org/licenses/gpl-3.0.html 10 Stable tag: 2.0.2 610 Stable tag: 2.0.27 11 11 12 12 [CheckView](https://checkview.io/) automates WordPress form and WooCommerce testing, monitoring key flows to catch failures early before they cost you leads or sales everyday. … … 16 16 Websites rarely fail loudly. Forms stop submitting. Leads disappear. Emails never send. Checkout buttons break quietly in the background. These issues often go unnoticed until sales or leads are lost. 17 17 18 CheckView automatically tests your WordPress forms on a schedule, using real browser sessions to verify that submissions complete successfully , emails are sent, and integrations work as expected. It also supports testing logins, carts, and WooCommerce checkout flows.18 CheckView automatically tests your WordPress forms on a schedule, using real browser sessions to verify that submissions complete successfully and emails are sent. It also supports testing logins, carts, and WooCommerce checkout flows. 19 19 20 20 Built specifically for WordPress and WooCommerce, CheckView helps site owners, developers, and agencies detect problems early and resolve them faster, without writing code or setting up complex testing infrastructure. … … 33 33 34 34 * Run real browser-based tests on WordPress forms, including multi-step and dynamic forms 35 * Validate form submissions from start to finish, including email notifications and integrations35 * Validate form submissions from start to finish, including email notifications 36 36 * Test WooCommerce checkout flows alongside forms for the most complete coverage 37 37 * Verify full form submissions, including email notifications and stored entries … … 205 205 206 206 == Changelog == 207 208 = 2.0.27 = 209 * Add support for Fluent Forms fields: Terms and Conditions, GDPR Acceptance. 210 * Delay deletion of cloned form results by one day. 211 * Improved logging for scheduled deletion. 207 212 208 213 = 2.0.26 = … … 518 523 == Upgrade Notice == 519 524 525 = 2.0.27 = 526 * Add support for Fluent Forms fields: Terms and Conditions, GDPR Acceptance. 527 * Delay deletion of cloned form results by one day. 528 * Improved logging for scheduled deletion. 529 520 530 = 2.0.26 = 521 531 * Add logging for email submissions and headers across all form helper classes. -
checkview/trunk/checkview.php
r3423240 r3444264 12 12 * Plugin URI: https://checkview.io 13 13 * Description: CheckView is the #1 fully automated solution to test your WordPress forms and detect form problems fast. Automatically test your WordPress forms to ensure you never miss a lead again. 14 * Version: 2.0.2 614 * Version: 2.0.27 15 15 * Author: CheckView 16 16 * Author URI: https://checkview.io/ … … 36 36 * @link https://semver.org 37 37 */ 38 define( 'CHECKVIEW_VERSION', '2.0.2 6' );38 define( 'CHECKVIEW_VERSION', '2.0.27' ); 39 39 40 40 if ( ! defined( 'CHECKVIEW_BASE_DIR' ) ) { -
checkview/trunk/includes/checkview-functions.php
r3421974 r3444264 1015 1015 global $wpdb; 1016 1016 1017 // Delete all entries from 'cv_entry' table. 1017 Checkview_Admin_Logs::add( 'ip-logs', 'Running scheduled deletion of CheckView rows...' ); 1018 1018 1019 $table_entry = esc_sql( $wpdb->prefix . 'cv_entry' ); 1019 $wpdb->query( "DELETE FROM $table_entry" );1020 1021 // Delete all entries from 'cv_entry_meta' table.1022 1020 $table_entry_meta = esc_sql( $wpdb->prefix . 'cv_entry_meta' ); 1023 $wpdb->query( "DELETE FROM $table_entry_meta" ); 1021 1022 // Delete entries older than 1 day from 'cv_entry_meta' table. 1023 $wpdb->query( 1024 "DELETE FROM $table_entry_meta 1025 WHERE entry_id IN ( 1026 SELECT id FROM $table_entry 1027 WHERE date_created < DATE_SUB(NOW(), INTERVAL 1 DAY) 1028 )" 1029 ); 1030 1031 // Delete entries older than 1 day from 'cv_entry' table. 1032 $wpdb->query( 1033 "DELETE FROM $table_entry 1034 WHERE date_created < DATE_SUB(NOW(), INTERVAL 1 DAY)" 1035 ); 1036 1037 Checkview_Admin_Logs::add( 'ip-logs', 'Done.' ); 1024 1038 } 1025 1039 -
checkview/trunk/includes/class-checkview.php
r3423240 r3444264 81 81 $this->version = CHECKVIEW_VERSION; 82 82 } else { 83 $this->version = '2.0.2 6';83 $this->version = '2.0.27'; 84 84 } 85 85 $this->plugin_name = 'checkview'; … … 133 133 */ 134 134 public static function is_bot(): bool { 135 $visitor_ip = checkview_get_visitor_ip(); 136 $cv_bot_ip = checkview_get_api_ip(); 137 $ip_verified = is_array( $cv_bot_ip ) && in_array( $visitor_ip, $cv_bot_ip ); 135 $visitor_ip = checkview_get_visitor_ip(); 136 $cv_bot_ip = checkview_get_api_ip(); 137 $is_local = defined( 'WP_ENVIRONMENT_TYPE' ) && WP_ENVIRONMENT_TYPE === 'local'; 138 $ip_verified = $is_local || ( is_array( $cv_bot_ip ) && in_array( $visitor_ip, $cv_bot_ip ) ); 138 139 139 140 if ( isset( $_REQUEST['checkview_test_id'] ) && ! $ip_verified ) { -
checkview/trunk/includes/formhelpers/class-checkview-fluent-forms-helper.php
r3423240 r3444264 36 36 37 37 /** 38 * Checkable inputs counter. 39 * 40 * @var int $counter Number of checkable inputs iterated over during rendering. 41 */ 42 private static $counter = 0; 43 44 /** 38 45 * Constructor. 39 46 * … … 148 155 '__return_true', 149 156 999 157 ); 158 159 add_filter( 160 'fluentform/rendering_field_html_input_checkbox', 161 array($this, 'static_ids'), 162 99 163 ); 164 165 add_filter( 166 'fluentform/rendering_field_html_terms_and_condition', 167 array($this, 'static_ids'), 168 99 169 ); 170 171 add_filter( 172 'fluentform/rendering_field_html_gdpr_agreement', 173 array($this, 'static_ids'), 174 99 175 ); 176 177 add_filter( 178 'fluentform/rendering_field_html_input_radio', 179 array($this, 'static_ids'), 180 99 150 181 ); 151 182 } … … 320 351 return $notifications; 321 352 } 353 354 /** 355 * Replace IDs for checkbox/radio inputs & labels with static IDs based on incremental counter. 356 * 357 * @param $html Input's HTML. 358 * 359 * @return string Modified HTML. 360 */ 361 public static function static_ids($html) { 362 $map = []; 363 364 // Build map of old IDs to new IDs 365 preg_match_all('/\bid=[\'"]([^\'"]+)[\'"]/', $html, $matches); 366 foreach ($matches[1] as $oldId) { 367 if (!isset($map[$oldId])) { 368 $map[$oldId] = 'ff_checkable_' . (++self::$counter); 369 } 370 } 371 372 // Replace both id= and for= attributes 373 foreach ($map as $oldId => $newId) { 374 $html = str_replace( 375 ['id="' . $oldId . '"', "id='" . $oldId . "'", 'for="' . $oldId . '"', "for='" . $oldId . "'"], 376 ['id="' . $newId . '"', "id='" . $newId . "'", 'for="' . $newId . '"', "for='" . $newId . "'"], 377 $html 378 ); 379 } 380 381 return $html; 382 } 322 383 } 323 384
Note: See TracChangeset
for help on using the changeset viewer.