Files

141 lines
4.9 KiB
PHP
Raw Permalink Normal View History

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
<?php
/**
* Interactivity API: Functions and hooks
*
* @package WordPress
* @subpackage Interactivity API
* @since 6.5.0
*/
/**
* Retrieves the main WP_Interactivity_API instance.
*
* It provides access to the WP_Interactivity_API instance, creating one if it
* doesn't exist yet.
*
* @since 6.5.0
*
* @global WP_Interactivity_API $wp_interactivity
*
* @return WP_Interactivity_API The main WP_Interactivity_API instance.
*/
function wp_interactivity(): WP_Interactivity_API {
global $wp_interactivity;
if ( ! ( $wp_interactivity instanceof WP_Interactivity_API ) ) {
$wp_interactivity = new WP_Interactivity_API();
}
return $wp_interactivity;
}
/**
* Processes the interactivity directives contained within the HTML content
* and updates the markup accordingly.
*
* @since 6.5.0
*
* @param string $html The HTML content to process.
* @return string The processed HTML content. It returns the original content when the HTML contains unbalanced tags.
*/
function wp_interactivity_process_directives( string $html ): string {
return wp_interactivity()->process_directives( $html );
}
/**
* Gets and/or sets the initial state of an Interactivity API store for a
* given namespace.
*
* If state for that store namespace already exists, it merges the new
* provided state with the existing one.
*
* The namespace can be omitted inside derived state getters, using the
* namespace where the getter is defined.
*
* @since 6.5.0
* @since 6.6.0 The namespace can be omitted when called inside derived state getters.
*
* @param string $store_namespace The unique store namespace identifier.
* @param array $state Optional. The array that will be merged with the existing state for the specified
* store namespace.
* @return array The state for the specified store namespace. This will be the updated state if a $state argument was
* provided.
*/
function wp_interactivity_state( ?string $store_namespace = null, array $state = array() ): array {
return wp_interactivity()->state( $store_namespace, $state );
}
/**
* Gets and/or sets the configuration of the Interactivity API for a given
* store namespace.
*
* If configuration for that store namespace exists, it merges the new
* provided configuration with the existing one.
*
* @since 6.5.0
*
* @param string $store_namespace The unique store namespace identifier.
* @param array $config Optional. The array that will be merged with the existing configuration for the
* specified store namespace.
* @return array The configuration for the specified store namespace. This will be the updated configuration if a
* $config argument was provided.
*/
function wp_interactivity_config( string $store_namespace, array $config = array() ): array {
return wp_interactivity()->config( $store_namespace, $config );
}
/**
* Generates a `data-wp-context` directive attribute by encoding a context
* array.
*
* This helper function simplifies the creation of `data-wp-context` directives
* by providing a way to pass an array of data, which encodes into a JSON string
* safe for direct use as a HTML attribute value.
*
* Example:
*
* <div <?php echo wp_interactivity_data_wp_context( array( 'isOpen' => true, 'count' => 0 ) ); ?>>
*
* @since 6.5.0
*
* @param array $context The array of context data to encode.
* @param string $store_namespace Optional. The unique store namespace identifier.
* @return string A complete `data-wp-context` directive with a JSON encoded value representing the context array and
* the store namespace if specified.
*/
function wp_interactivity_data_wp_context( array $context, string $store_namespace = '' ): string {
return 'data-wp-context=\'' .
( $store_namespace ? $store_namespace . '::' : '' ) .
( empty( $context ) ? '{}' : wp_json_encode( $context, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP ) ) .
'\'';
}
/**
* Gets the current Interactivity API context for a given namespace.
*
* The function should be used only during directive processing. If the
* `$store_namespace` parameter is omitted, it uses the current namespace value
* on the internal namespace stack.
*
* It returns an empty array when the specified namespace is not defined.
*
* @since 6.6.0
*
* @param string $store_namespace Optional. The unique store namespace identifier.
* @return array The context for the specified store namespace.
*/
function wp_interactivity_get_context( ?string $store_namespace = null ): array {
return wp_interactivity()->get_context( $store_namespace );
}
/**
* Returns an array representation of the current element being processed.
*
* The function should be used only during directive processing.
*
* @since 6.7.0
*
* @return array{attributes: array<string, string|bool>}|null Current element.
*/
function wp_interactivity_get_element(): ?array {
return wp_interactivity()->get_element();
}