HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/dreamsrent-wp-demo/wp-content/plugins/dreamsrent-booking/inc/metabox-minmax.php
<?php

add_action('load-post.php', 'rental_boxes_minmax_days_setup');
add_action('load-post-new.php', 'rental_boxes_minmax_days_setup');

function rental_boxes_minmax_days_setup() {
    add_action('add_meta_boxes', 'dreams_rental_minmax_days_meta_boxes');
    add_action('save_post', 'rental_save_post_minmax_days_meta', 10, 2);
}

function dreams_rental_minmax_days_meta_boxes() {
    add_meta_box(
        'rental-post-minmax-days',
        esc_html__('Set Min/Max Days', 'bookingcore'),
        'rental_minmax_days_meta_box',
        'rental',
        'normal',
        'default'
    );
}

function rental_minmax_days_meta_box($post) {
    wp_nonce_field(basename(__FILE__), 'rental_post_minmax_days_nonce');
    $post_id = get_the_ID();

    $min_days = get_post_meta($post_id, 'car_min_days', true);
    $max_days = get_post_meta($post_id, 'car_max_days', true);
    ?>
    <div class="minmax_days_wrapper">
        <div class="custom-row">
            <div class="col-5">
                <label class="mb-0"><?php echo esc_html__('Min Days', 'bookingcore'); ?></label>
                <input type="number" name="min_days" id="min_days" value="<?php echo esc_attr($min_days); ?>" placeholder="Minimum Days" min="0">
            </div>
            <div class="col-5">
                <label class="mb-0"><?php echo esc_html__('Max Days', 'bookingcore'); ?></label>
                <input type="number" name="max_days" id="max_days" value="<?php echo esc_attr($max_days); ?>" placeholder="Maximum Days" min="0">
            </div>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const minDaysInput = document.getElementById('min_days');
            const maxDaysInput = document.getElementById('max_days');

            function validateDays() {
                const minDays = minDaysInput.value ? parseInt(minDaysInput.value) : null;
                const maxDays = maxDaysInput.value ? parseInt(maxDaysInput.value) : null;

                if (minDays !== null && minDays < 0) {
                    minDaysInput.setCustomValidity('Min Days cannot be negative.');
                } else {
                    minDaysInput.setCustomValidity('');
                }

                if (maxDays !== null && maxDays < 0) {
                    maxDaysInput.setCustomValidity('Max Days cannot be negative.');
                } else if (maxDays !== null && minDays !== null && maxDays <= minDays) {
                    maxDaysInput.setCustomValidity('Max Days must be greater than Min Days.');
                } else {
                    maxDaysInput.setCustomValidity('');
                }
            }

            minDaysInput.addEventListener('input', validateDays);
            maxDaysInput.addEventListener('input', validateDays);
        });
    </script>
    <?php
}

function rental_save_post_minmax_days_meta($post_id, $post) {
    if (!isset($_POST['rental_post_minmax_days_nonce']) || !wp_verify_nonce($_POST['rental_post_minmax_days_nonce'], basename(__FILE__))) {
        return $post_id;
    }

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }

    if (!current_user_can('edit_post', $post_id)) {
        return $post_id;
    }

    if ('rental' !== $post->post_type) {
        return $post_id;
    }

    $min_days = isset($_POST['min_days']) && $_POST['min_days'] !== '' ? max(0, intval($_POST['min_days'])) : null;
    $max_days = isset($_POST['max_days']) && $_POST['max_days'] !== '' ? max(0, intval($_POST['max_days'])) : null;

    if ($min_days !== null) {
        update_post_meta($post_id, 'car_min_days', $min_days);
    } else {
        delete_post_meta($post_id, 'car_min_days');
    }

    if ($max_days !== null) {
        update_post_meta($post_id, 'car_max_days', $max_days);
    } else {
        delete_post_meta($post_id, 'car_max_days');
    }
}