Plugin Directory

Changeset 3779714


Ignore:
Timestamp:
11/02/2026 12:02:57 PM (33 hours ago)
Author:
o0kak
Message:

Release o_OKak Slot Finder Free 1.1.1: Extra timing checkbox fix and o_OKak website link

Location:
o-okak-slot-finder
Files:
10 edited
1 copied

Legend:

Unmodified
Added
Removed
  • o-okak-slot-finder/tags/1.1.1/VERSION

    r3772650 r3779714  
    1 1.1.0
     11.1.1
  • o-okak-slot-finder/tags/1.1.1/assets/admin.css

    r3772650 r3779714  
    706706}
    707707
     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
    708725@media (max-width: 900px) {
    709726    .ookak-sf {
  • o-okak-slot-finder/tags/1.1.1/o-okak-slot-finder.php

    r3772650 r3779714  
    33 * Plugin Name: o_OKak Slot Finder
    44 * Description: Find appointment openings that fit the complete service, Extras and buffer duration.
    5  * Version: 1.1.0
     5 * Version: 1.1.1
    66 * Requires at least: 6.9
    77 * Requires PHP: 8.1
    … …  
    1919}
    2020
    21 define('OOKAK_SLOT_FINDER_VERSION', '1.1.0');
     21define('OOKAK_SLOT_FINDER_VERSION', '1.1.1');
    2222define('OOKAK_SLOT_FINDER_FILE', __FILE__);
    2323define('OOKAK_SLOT_FINDER_DIR', plugin_dir_path(__FILE__));
  • o-okak-slot-finder/tags/1.1.1/readme.txt

    r3772650 r3779714  
    55Tested up to: 7.1
    66Requires PHP: 8.1
    7 Stable tag: 1.1.0
     7Stable tag: 1.1.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    6868= Is Slot Finder really free? =
    6969
    70 Yes. Version 1.1.0 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.
     70Yes. 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.
    7171
    7272= Is Amelia required? =
    … …  
    100100== Changelog ==
    101101
     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
    102108= 1.1.0 =
    103109
    … …  
    108114== Upgrade Notice ==
    109115
     116= 1.1.1 =
     117
     118Maintenance update. Update from Plugins in WordPress as usual; no account or license is required.
     119
    110120= 1.1.0 =
    111121
  • o-okak-slot-finder/tags/1.1.1/src/Admin/AdminPage.php

    r3772650 r3779714  
    187187        if (isset($_POST['extraTimePerUnitIds']) && is_array($_POST['extraTimePerUnitIds'])) {
    188188            $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);
    194190        }
    195191
    … …  
    519515                <?php echo esc_html__('Slot Finder never creates or reserves appointments. Amelia remains the final booking authority.', 'o-okak-slot-finder'); ?>
    520516            </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>
    521522        </div>
    522523        <?php
    … …  
    894895    }
    895896
     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
    896923    private function assertDateRange(string $startDate, string $endDate): void
    897924    {
  • o-okak-slot-finder/trunk/VERSION

    r3772650 r3779714  
    1 1.1.0
     11.1.1
  • o-okak-slot-finder/trunk/assets/admin.css

    r3772650 r3779714  
    706706}
    707707
     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
    708725@media (max-width: 900px) {
    709726    .ookak-sf {
  • o-okak-slot-finder/trunk/o-okak-slot-finder.php

    r3772650 r3779714  
    33 * Plugin Name: o_OKak Slot Finder
    44 * Description: Find appointment openings that fit the complete service, Extras and buffer duration.
    5  * Version: 1.1.0
     5 * Version: 1.1.1
    66 * Requires at least: 6.9
    77 * Requires PHP: 8.1
    … …  
    1919}
    2020
    21 define('OOKAK_SLOT_FINDER_VERSION', '1.1.0');
     21define('OOKAK_SLOT_FINDER_VERSION', '1.1.1');
    2222define('OOKAK_SLOT_FINDER_FILE', __FILE__);
    2323define('OOKAK_SLOT_FINDER_DIR', plugin_dir_path(__FILE__));
  • o-okak-slot-finder/trunk/readme.txt

    r3772650 r3779714  
    55Tested up to: 7.1
    66Requires PHP: 8.1
    7 Stable tag: 1.1.0
     7Stable tag: 1.1.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    6868= Is Slot Finder really free? =
    6969
    70 Yes. Version 1.1.0 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.
     70Yes. 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.
    7171
    7272= Is Amelia required? =
    … …  
    100100== Changelog ==
    101101
     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
    102108= 1.1.0 =
    103109
    … …  
    108114== Upgrade Notice ==
    109115
     116= 1.1.1 =
     117
     118Maintenance update. Update from Plugins in WordPress as usual; no account or license is required.
     119
    110120= 1.1.0 =
    111121
  • o-okak-slot-finder/trunk/src/Admin/AdminPage.php

    r3772650 r3779714  
    187187        if (isset($_POST['extraTimePerUnitIds']) && is_array($_POST['extraTimePerUnitIds'])) {
    188188            $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);
    194190        }
    195191
    … …  
    519515                <?php echo esc_html__('Slot Finder never creates or reserves appointments. Amelia remains the final booking authority.', 'o-okak-slot-finder'); ?>
    520516            </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>
    521522        </div>
    522523        <?php
    … …  
    894895    }
    895896
     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
    896923    private function assertDateRange(string $startDate, string $endDate): void
    897924    {
Note: See TracChangeset for help on using the changeset viewer.