Changeset 3462046
- Timestamp:
- 02/15/2026 08:48:30 PM (6 weeks ago)
- Location:
- visiblefirst
- Files:
-
- 8 edited
- 1 copied
-
tags/3.2.60 (copied) (copied from visiblefirst/trunk)
-
tags/3.2.60/admin/views/metabox.php (modified) (1 diff)
-
tags/3.2.60/admin/views/settings.php (modified) (3 diffs)
-
tags/3.2.60/readme.txt (modified) (2 diffs)
-
tags/3.2.60/visiblefirst.php (modified) (4 diffs)
-
trunk/admin/views/metabox.php (modified) (1 diff)
-
trunk/admin/views/settings.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/visiblefirst.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
visiblefirst/tags/3.2.60/admin/views/metabox.php
r3461929 r3462046 621 621 <div id="visibl-faq-pairs"> 622 622 <?php if (!empty($visibl_faq_pairs)): ?> 623 <?php foreach ($visibl_faq_pairs as $ index => $pair): ?>624 <div class="visibl-faq-pair" data-index="<?php echo intval($ index); ?>">623 <?php foreach ($visibl_faq_pairs as $visibl_index => $visibl_pair): ?> 624 <div class="visibl-faq-pair" data-index="<?php echo intval($visibl_index); ?>"> 625 625 <div class="visibl-faq-question"> 626 626 <input type="text" 627 name="_visibl_faq_pairs[<?php echo intval($ index); ?>][question]"628 value="<?php echo esc_attr($ pair['question'] ?? ''); ?>"627 name="_visibl_faq_pairs[<?php echo intval($visibl_index); ?>][question]" 628 value="<?php echo esc_attr($visibl_pair['question'] ?? ''); ?>" 629 629 placeholder="<?php esc_attr_e('Question', 'visiblefirst'); ?>"> 630 630 </div> 631 631 <div class="visibl-faq-answer"> 632 <textarea name="_visibl_faq_pairs[<?php echo intval($ index); ?>][answer]"632 <textarea name="_visibl_faq_pairs[<?php echo intval($visibl_index); ?>][answer]" 633 633 rows="2" 634 placeholder="<?php esc_attr_e('Answer', 'visiblefirst'); ?>"><?php echo esc_textarea($ pair['answer'] ?? ''); ?></textarea>634 placeholder="<?php esc_attr_e('Answer', 'visiblefirst'); ?>"><?php echo esc_textarea($visibl_pair['answer'] ?? ''); ?></textarea> 635 635 </div> 636 636 <button type="button" class="visibl-faq-remove" title="<?php esc_attr_e('Remove', 'visiblefirst'); ?>">×</button> -
visiblefirst/tags/3.2.60/admin/views/settings.php
r3461929 r3462046 70 70 71 71 // Determine active tab - default to 'business' if not set or empty 72 $visibl_active_tab = !empty($_GET['tab']) ? sanitize_text_field( $_GET['tab']) : 'business';72 $visibl_active_tab = !empty($_GET['tab']) ? sanitize_text_field(wp_unslash($_GET['tab'])) : 'business'; 73 73 // Validate tab is one of the allowed values 74 74 if (!in_array($visibl_active_tab, ['business', 'sitefiles', 'account'], true)) { … … 76 76 } 77 77 // Also check for #business-info anchor 78 if (isset($_SERVER['HTTP_REFERER']) && strpos( $_SERVER['HTTP_REFERER'], '#business-info') !== false) {78 if (isset($_SERVER['HTTP_REFERER']) && strpos(esc_url_raw(wp_unslash($_SERVER['HTTP_REFERER'])), '#business-info') !== false) { 79 79 $visibl_active_tab = 'business'; 80 80 } … … 285 285 style="width: 80px;" 286 286 value="<?php echo esc_attr($visibl_business_info['founding_year'] ?? ''); ?>" 287 placeholder="<?php echo esc_attr( date('Y')); ?>"287 placeholder="<?php echo esc_attr(gmdate('Y')); ?>" 288 288 maxlength="4"> 289 289 <p class="description"><?php esc_html_e('Year your business was founded. Used in llms.txt and schema.', 'visiblefirst'); ?></p> -
visiblefirst/tags/3.2.60/readme.txt
r3461985 r3462046 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 3.2. 597 Stable tag: 3.2.60 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 196 196 197 197 == Changelog == 198 199 = 3.2.60 = 200 * FIX: Security hardening - proper escaping and sanitization for WordPress.org compliance 201 * FIX: Use gmdate() instead of date() for timezone-safe operations 202 * FIX: Properly prefix loop variables to avoid global namespace pollution 198 203 199 204 = 3.2.59 = -
visiblefirst/tags/3.2.60/visiblefirst.php
r3461985 r3462046 3 3 * Plugin Name: VisibleFirst 4 4 * Description: AI + SEO + Social visibility in one plugin. Complete visibility optimization for WordPress. 5 * Version: 3.2. 595 * Version: 3.2.60 6 6 * Author: VisibleFirst 7 7 * Author URI: https://visiblefirst.com … … 16 16 17 17 // Plugin constants 18 define('VISIBL_VERSION', '3.2. 59');18 define('VISIBL_VERSION', '3.2.60'); 19 19 define('VISIBL_PLUGIN_DIR', plugin_dir_path(__FILE__)); 20 20 define('VISIBL_PLUGIN_URL', plugin_dir_url(__FILE__)); … … 426 426 // Save custom JSON-LD schema (textarea - use wp_kses_post for HTML/JSON safety) 427 427 if (isset($_POST['_visibl_custom_schema'])) { 428 $custom_schema = wp_unslash($_POST['_visibl_custom_schema']);428 $custom_schema = sanitize_textarea_field(wp_unslash($_POST['_visibl_custom_schema'])); 429 429 // Validate it's valid JSON if not empty 430 430 if (!empty(trim($custom_schema))) { … … 514 514 update_option('visibl_version', VISIBL_VERSION); 515 515 echo '<div class="notice notice-info is-dismissible visibl-api-notice">'; 516 echo '<p><strong>' . esc_html__('VisibleFirst updated to', 'visiblefirst') . ' v' . VISIBL_VERSION. '!</strong></p>';516 echo '<p><strong>' . esc_html__('VisibleFirst updated to', 'visiblefirst') . ' v' . esc_html(VISIBL_VERSION) . '!</strong></p>'; 517 517 echo '</div>'; 518 518 } -
visiblefirst/trunk/admin/views/metabox.php
r3461929 r3462046 621 621 <div id="visibl-faq-pairs"> 622 622 <?php if (!empty($visibl_faq_pairs)): ?> 623 <?php foreach ($visibl_faq_pairs as $ index => $pair): ?>624 <div class="visibl-faq-pair" data-index="<?php echo intval($ index); ?>">623 <?php foreach ($visibl_faq_pairs as $visibl_index => $visibl_pair): ?> 624 <div class="visibl-faq-pair" data-index="<?php echo intval($visibl_index); ?>"> 625 625 <div class="visibl-faq-question"> 626 626 <input type="text" 627 name="_visibl_faq_pairs[<?php echo intval($ index); ?>][question]"628 value="<?php echo esc_attr($ pair['question'] ?? ''); ?>"627 name="_visibl_faq_pairs[<?php echo intval($visibl_index); ?>][question]" 628 value="<?php echo esc_attr($visibl_pair['question'] ?? ''); ?>" 629 629 placeholder="<?php esc_attr_e('Question', 'visiblefirst'); ?>"> 630 630 </div> 631 631 <div class="visibl-faq-answer"> 632 <textarea name="_visibl_faq_pairs[<?php echo intval($ index); ?>][answer]"632 <textarea name="_visibl_faq_pairs[<?php echo intval($visibl_index); ?>][answer]" 633 633 rows="2" 634 placeholder="<?php esc_attr_e('Answer', 'visiblefirst'); ?>"><?php echo esc_textarea($ pair['answer'] ?? ''); ?></textarea>634 placeholder="<?php esc_attr_e('Answer', 'visiblefirst'); ?>"><?php echo esc_textarea($visibl_pair['answer'] ?? ''); ?></textarea> 635 635 </div> 636 636 <button type="button" class="visibl-faq-remove" title="<?php esc_attr_e('Remove', 'visiblefirst'); ?>">×</button> -
visiblefirst/trunk/admin/views/settings.php
r3461929 r3462046 70 70 71 71 // Determine active tab - default to 'business' if not set or empty 72 $visibl_active_tab = !empty($_GET['tab']) ? sanitize_text_field( $_GET['tab']) : 'business';72 $visibl_active_tab = !empty($_GET['tab']) ? sanitize_text_field(wp_unslash($_GET['tab'])) : 'business'; 73 73 // Validate tab is one of the allowed values 74 74 if (!in_array($visibl_active_tab, ['business', 'sitefiles', 'account'], true)) { … … 76 76 } 77 77 // Also check for #business-info anchor 78 if (isset($_SERVER['HTTP_REFERER']) && strpos( $_SERVER['HTTP_REFERER'], '#business-info') !== false) {78 if (isset($_SERVER['HTTP_REFERER']) && strpos(esc_url_raw(wp_unslash($_SERVER['HTTP_REFERER'])), '#business-info') !== false) { 79 79 $visibl_active_tab = 'business'; 80 80 } … … 285 285 style="width: 80px;" 286 286 value="<?php echo esc_attr($visibl_business_info['founding_year'] ?? ''); ?>" 287 placeholder="<?php echo esc_attr( date('Y')); ?>"287 placeholder="<?php echo esc_attr(gmdate('Y')); ?>" 288 288 maxlength="4"> 289 289 <p class="description"><?php esc_html_e('Year your business was founded. Used in llms.txt and schema.', 'visiblefirst'); ?></p> -
visiblefirst/trunk/readme.txt
r3461985 r3462046 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 3.2. 597 Stable tag: 3.2.60 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 196 196 197 197 == Changelog == 198 199 = 3.2.60 = 200 * FIX: Security hardening - proper escaping and sanitization for WordPress.org compliance 201 * FIX: Use gmdate() instead of date() for timezone-safe operations 202 * FIX: Properly prefix loop variables to avoid global namespace pollution 198 203 199 204 = 3.2.59 = -
visiblefirst/trunk/visiblefirst.php
r3461985 r3462046 3 3 * Plugin Name: VisibleFirst 4 4 * Description: AI + SEO + Social visibility in one plugin. Complete visibility optimization for WordPress. 5 * Version: 3.2. 595 * Version: 3.2.60 6 6 * Author: VisibleFirst 7 7 * Author URI: https://visiblefirst.com … … 16 16 17 17 // Plugin constants 18 define('VISIBL_VERSION', '3.2. 59');18 define('VISIBL_VERSION', '3.2.60'); 19 19 define('VISIBL_PLUGIN_DIR', plugin_dir_path(__FILE__)); 20 20 define('VISIBL_PLUGIN_URL', plugin_dir_url(__FILE__)); … … 426 426 // Save custom JSON-LD schema (textarea - use wp_kses_post for HTML/JSON safety) 427 427 if (isset($_POST['_visibl_custom_schema'])) { 428 $custom_schema = wp_unslash($_POST['_visibl_custom_schema']);428 $custom_schema = sanitize_textarea_field(wp_unslash($_POST['_visibl_custom_schema'])); 429 429 // Validate it's valid JSON if not empty 430 430 if (!empty(trim($custom_schema))) { … … 514 514 update_option('visibl_version', VISIBL_VERSION); 515 515 echo '<div class="notice notice-info is-dismissible visibl-api-notice">'; 516 echo '<p><strong>' . esc_html__('VisibleFirst updated to', 'visiblefirst') . ' v' . VISIBL_VERSION. '!</strong></p>';516 echo '<p><strong>' . esc_html__('VisibleFirst updated to', 'visiblefirst') . ' v' . esc_html(VISIBL_VERSION) . '!</strong></p>'; 517 517 echo '</div>'; 518 518 }
Note: See TracChangeset
for help on using the changeset viewer.