Hotel Raxa Dev 5b1e2453c7 Hotel Raxa - Advanced Booking System Implementation
🏨 Hotel Booking Enhancements:
- Implemented Eagle Booking Advanced Pricing add-on
- Added Booking.com-style rate management system
- Created professional calendar interface for pricing
- Integrated deals and discounts functionality

💰 Advanced Pricing Features:
- Dynamic pricing models (per room, per person, per adult)
- Base rates, adult rates, and child rates management
- Length of stay discounts and early bird deals
- Mobile rates and secret deals implementation
- Seasonal promotions and flash sales

📅 Availability Management:
- Real-time availability tracking
- Stop sell and restriction controls
- Closed to arrival/departure functionality
- Minimum/maximum stay requirements
- Automatic sold-out management

💳 Payment Integration:
- Maintained Redsys payment gateway integration
- Seamless integration with existing Eagle Booking
- No modifications to core Eagle Booking plugin

🛠️ Technical Implementation:
- Custom database tables for advanced pricing
- WordPress hooks and filters integration
- AJAX-powered admin interface
- Data migration from existing Eagle Booking
- Professional calendar view for revenue management

📊 Admin Interface:
- Booking.com-style management dashboard
- Visual rate and availability calendar
- Bulk operations for date ranges
- Statistics and analytics dashboard
- Modal dialogs for quick editing

🔧 Code Quality:
- WordPress coding standards compliance
- Secure database operations with prepared statements
- Proper input validation and sanitization
- Error handling and logging
- Responsive admin interface

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 07:43:22 +02:00

91 lines
1.8 KiB
PHP

<?php
add_filter( 'wpcf7_spam', 'wpcf7_disallowed_list', 10, 2 );
function wpcf7_disallowed_list( $spam, $submission ) {
if ( $spam ) {
return $spam;
}
$target = wpcf7_array_flatten( $submission->get_posted_data() );
$target[] = $submission->get_meta( 'remote_ip' );
$target[] = $submission->get_meta( 'user_agent' );
$target = implode( "\n", $target );
$word = wpcf7_check_disallowed_list( $target );
$word = wpcf7_apply_filters_deprecated(
'wpcf7_submission_is_blacklisted',
array( $word, $submission ),
'5.3',
'wpcf7_submission_has_disallowed_words'
);
$word = apply_filters(
'wpcf7_submission_has_disallowed_words',
$word,
$submission
);
if ( $word ) {
if ( is_bool( $word ) ) {
$reason = __( "Disallowed words are used.", 'contact-form-7' );
} else {
$reason = sprintf(
__( "Disallowed words (%s) are used.", 'contact-form-7' ),
implode( ', ', (array) $word )
);
}
$submission->add_spam_log( array(
'agent' => 'disallowed_list',
'reason' => $reason,
) );
}
$spam = (bool) $word;
return $spam;
}
function wpcf7_check_disallowed_list( $target ) {
$mod_keys = get_option( 'disallowed_keys' );
if ( is_scalar( $mod_keys ) ) {
$mod_keys = trim( $mod_keys );
} else {
$mod_keys = '';
}
if ( '' === $mod_keys ) {
return false;
}
foreach ( explode( "\n", $mod_keys ) as $word ) {
$word = trim( $word );
$length = strlen( $word );
if ( $length < 2 or 256 < $length ) {
continue;
}
$pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) );
if ( preg_match( $pattern, $target ) ) {
return $word;
}
}
return false;
}
function wpcf7_blacklist_check( $target ) {
wpcf7_deprecated_function(
__FUNCTION__,
'5.3',
'wpcf7_check_disallowed_list'
);
return wpcf7_check_disallowed_list( $target );
}