Changeset 3779714
- Timestamp:
- 11/02/2026 12:02:57 PM (33 hours ago)
- Location:
- o-okak-slot-finder
- Files:
-
- 10 edited
- 1 copied
-
tags/1.1.1 (copied) (copied from o-okak-slot-finder/trunk )
-
tags/1.1.1/VERSION (modified) (1 diff)
-
tags/1.1.1/assets/admin.css (modified) (1 diff)
-
tags/1.1.1/o-okak-slot-finder.php (modified) (2 diffs)
-
tags/1.1.1/readme.txt (modified) (4 diffs)
-
tags/1.1.1/src/Admin/AdminPage.php (modified) (3 diffs)
-
trunk/VERSION (modified) (1 diff)
-
trunk/assets/admin.css (modified) (1 diff)
-
trunk/o-okak-slot-finder.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/src/Admin/AdminPage.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
o-okak-slot-finder/tags/1.1.1/VERSION
r3772650 r3779714 1 1.1. 01 1.1.1 -
o-okak-slot-finder/tags/1.1.1/assets/admin.css
r3772650 r3779714 706 706 } 707 707 708 .ookak-sf__attribution { 709 margin: 7px 4px 0; 710 font-size: 11px; 711 line-height: 1.5; 712 } 713 714 .ookak-sf__attribution a { 715 color: var(--ookak-muted); 716 text-decoration: underline; 717 text-underline-offset: 2px; 718 } 719 720 .ookak-sf__attribution a:hover, 721 .ookak-sf__attribution a:focus-visible { 722 color: var(--ookak-forest); 723 } 724 708 725 @media (max-width: 900px) { 709 726 .ookak-sf { -
o-okak-slot-finder/tags/1.1.1/o-okak-slot-finder.php
r3772650 r3779714 3 3 * Plugin Name: o_OKak Slot Finder 4 4 * Description: Find appointment openings that fit the complete service, Extras and buffer duration. 5 * Version: 1.1. 05 * Version: 1.1.1 6 6 * Requires at least: 6.9 7 7 * Requires PHP: 8.1 … … 19 19 } 20 20 21 define('OOKAK_SLOT_FINDER_VERSION', '1.1. 0');21 define('OOKAK_SLOT_FINDER_VERSION', '1.1.1'); 22 22 define('OOKAK_SLOT_FINDER_FILE', __FILE__); 23 23 define('OOKAK_SLOT_FINDER_DIR', plugin_dir_path(__FILE__)); -
o-okak-slot-finder/tags/1.1.1/readme.txt
r3772650 r3779714 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.1 7 Stable tag: 1.1. 07 Stable tag: 1.1.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 68 68 = Is Slot Finder really free? = 69 69 70 Yes. Version 1.1. 0has no license checks, subscription, trial, registration or usage quotas. All functionality included in the WordPress.org release is available without an o_OKak account.70 Yes. Version 1.1.1 has no license checks, subscription, trial, registration or usage quotas. All functionality included in the WordPress.org release is available without an o_OKak account. 71 71 72 72 = Is Amelia required? = … … 100 100 == Changelog == 101 101 102 = 1.1.1 = 103 104 * Keep the "Count every unit in total time" Extra checkbox selected after a search, matching the calculation and occupied-time preview. 105 * Add a small optional o_OKak website link in the Slot Finder administrator screen. 106 * Continue to use normal WordPress.org plugin updates, without a custom updater or external account requirement. 107 102 108 = 1.1.0 = 103 109 … … 108 114 == Upgrade Notice == 109 115 116 = 1.1.1 = 117 118 Maintenance update. Update from Plugins in WordPress as usual; no account or license is required. 119 110 120 = 1.1.0 = 111 121 -
o-okak-slot-finder/tags/1.1.1/src/Admin/AdminPage.php
r3772650 r3779714 187 187 if (isset($_POST['extraTimePerUnitIds']) && is_array($_POST['extraTimePerUnitIds'])) { 188 188 $postedExtraTimePerUnitIds = map_deep(wp_unslash($_POST['extraTimePerUnitIds']), 'sanitize_text_field'); 189 foreach ($postedExtraTimePerUnitIds as $extraId) { 190 $extraTimePerUnitIds[] = is_scalar($extraId) 191 ? trim((string) $extraId) 192 : ''; 193 } 189 $extraTimePerUnitIds = self::normalizeExtraTimePerUnitIds($postedExtraTimePerUnitIds); 194 190 } 195 191 … … 519 515 <?php echo esc_html__('Slot Finder never creates or reserves appointments. Amelia remains the final booking authority.', 'o-okak-slot-finder'); ?> 520 516 </p> 517 <p class="ookak-sf__attribution"> 518 <a href="<?php echo esc_url('https://o-0kak.com/'); ?>" target="_blank" rel="noopener noreferrer"> 519 <?php echo esc_html__('Made by o_OKak · Explore more WordPress tools', 'o-okak-slot-finder'); ?> 520 </a> 521 </p> 521 522 </div> 522 523 <?php … … 894 895 } 895 896 897 /** 898 * Restore only valid integer Extra IDs from the POST string array. 899 * Checkbox values are strings in PHP even when rendered from integer IDs; 900 * strict in_array comparisons in the template require normalized ints. 901 * 902 * @param array<int,mixed> $postedExtraIds 903 * @return list<int> 904 */ 905 private static function normalizeExtraTimePerUnitIds(array $postedExtraIds): array 906 { 907 $selected = []; 908 909 foreach ($postedExtraIds as $value) { 910 if (! is_scalar($value) || ! ctype_digit(trim((string) $value))) { 911 continue; 912 } 913 914 $extraId = (int) trim((string) $value); 915 if ($extraId > 0) { 916 $selected[$extraId] = $extraId; 917 } 918 } 919 920 return array_values($selected); 921 } 922 896 923 private function assertDateRange(string $startDate, string $endDate): void 897 924 { -
o-okak-slot-finder/trunk/VERSION
r3772650 r3779714 1 1.1. 01 1.1.1 -
o-okak-slot-finder/trunk/assets/admin.css
r3772650 r3779714 706 706 } 707 707 708 .ookak-sf__attribution { 709 margin: 7px 4px 0; 710 font-size: 11px; 711 line-height: 1.5; 712 } 713 714 .ookak-sf__attribution a { 715 color: var(--ookak-muted); 716 text-decoration: underline; 717 text-underline-offset: 2px; 718 } 719 720 .ookak-sf__attribution a:hover, 721 .ookak-sf__attribution a:focus-visible { 722 color: var(--ookak-forest); 723 } 724 708 725 @media (max-width: 900px) { 709 726 .ookak-sf { -
o-okak-slot-finder/trunk/o-okak-slot-finder.php
r3772650 r3779714 3 3 * Plugin Name: o_OKak Slot Finder 4 4 * Description: Find appointment openings that fit the complete service, Extras and buffer duration. 5 * Version: 1.1. 05 * Version: 1.1.1 6 6 * Requires at least: 6.9 7 7 * Requires PHP: 8.1 … … 19 19 } 20 20 21 define('OOKAK_SLOT_FINDER_VERSION', '1.1. 0');21 define('OOKAK_SLOT_FINDER_VERSION', '1.1.1'); 22 22 define('OOKAK_SLOT_FINDER_FILE', __FILE__); 23 23 define('OOKAK_SLOT_FINDER_DIR', plugin_dir_path(__FILE__)); -
o-okak-slot-finder/trunk/readme.txt
r3772650 r3779714 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.1 7 Stable tag: 1.1. 07 Stable tag: 1.1.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 68 68 = Is Slot Finder really free? = 69 69 70 Yes. Version 1.1. 0has no license checks, subscription, trial, registration or usage quotas. All functionality included in the WordPress.org release is available without an o_OKak account.70 Yes. Version 1.1.1 has no license checks, subscription, trial, registration or usage quotas. All functionality included in the WordPress.org release is available without an o_OKak account. 71 71 72 72 = Is Amelia required? = … … 100 100 == Changelog == 101 101 102 = 1.1.1 = 103 104 * Keep the "Count every unit in total time" Extra checkbox selected after a search, matching the calculation and occupied-time preview. 105 * Add a small optional o_OKak website link in the Slot Finder administrator screen. 106 * Continue to use normal WordPress.org plugin updates, without a custom updater or external account requirement. 107 102 108 = 1.1.0 = 103 109 … … 108 114 == Upgrade Notice == 109 115 116 = 1.1.1 = 117 118 Maintenance update. Update from Plugins in WordPress as usual; no account or license is required. 119 110 120 = 1.1.0 = 111 121 -
o-okak-slot-finder/trunk/src/Admin/AdminPage.php
r3772650 r3779714 187 187 if (isset($_POST['extraTimePerUnitIds']) && is_array($_POST['extraTimePerUnitIds'])) { 188 188 $postedExtraTimePerUnitIds = map_deep(wp_unslash($_POST['extraTimePerUnitIds']), 'sanitize_text_field'); 189 foreach ($postedExtraTimePerUnitIds as $extraId) { 190 $extraTimePerUnitIds[] = is_scalar($extraId) 191 ? trim((string) $extraId) 192 : ''; 193 } 189 $extraTimePerUnitIds = self::normalizeExtraTimePerUnitIds($postedExtraTimePerUnitIds); 194 190 } 195 191 … … 519 515 <?php echo esc_html__('Slot Finder never creates or reserves appointments. Amelia remains the final booking authority.', 'o-okak-slot-finder'); ?> 520 516 </p> 517 <p class="ookak-sf__attribution"> 518 <a href="<?php echo esc_url('https://o-0kak.com/'); ?>" target="_blank" rel="noopener noreferrer"> 519 <?php echo esc_html__('Made by o_OKak · Explore more WordPress tools', 'o-okak-slot-finder'); ?> 520 </a> 521 </p> 521 522 </div> 522 523 <?php … … 894 895 } 895 896 897 /** 898 * Restore only valid integer Extra IDs from the POST string array. 899 * Checkbox values are strings in PHP even when rendered from integer IDs; 900 * strict in_array comparisons in the template require normalized ints. 901 * 902 * @param array<int,mixed> $postedExtraIds 903 * @return list<int> 904 */ 905 private static function normalizeExtraTimePerUnitIds(array $postedExtraIds): array 906 { 907 $selected = []; 908 909 foreach ($postedExtraIds as $value) { 910 if (! is_scalar($value) || ! ctype_digit(trim((string) $value))) { 911 continue; 912 } 913 914 $extraId = (int) trim((string) $value); 915 if ($extraId > 0) { 916 $selected[$extraId] = $extraId; 917 } 918 } 919 920 return array_values($selected); 921 } 922 896 923 private function assertDateRange(string $startDate, string $endDate): void 897 924 {
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)