Files
HotelRaxa/wp-includes/error-protection.php
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

158 lines
4.0 KiB
PHP

<?php
/**
* Error Protection API: Functions
*
* @package WordPress
* @since 5.2.0
*/
/**
* Get the instance for storing paused plugins.
*
* @return WP_Paused_Extensions_Storage
*/
function wp_paused_plugins() {
static $storage = null;
if ( null === $storage ) {
$storage = new WP_Paused_Extensions_Storage( 'plugin' );
}
return $storage;
}
/**
* Get the instance for storing paused extensions.
*
* @return WP_Paused_Extensions_Storage
*/
function wp_paused_themes() {
static $storage = null;
if ( null === $storage ) {
$storage = new WP_Paused_Extensions_Storage( 'theme' );
}
return $storage;
}
/**
* Get a human readable description of an extension's error.
*
* @since 5.2.0
*
* @param array $error Error details from `error_get_last()`.
* @return string Formatted error description.
*/
function wp_get_extension_error_description( $error ) {
$constants = get_defined_constants( true );
$constants = isset( $constants['Core'] ) ? $constants['Core'] : $constants['internal'];
$core_errors = array();
foreach ( $constants as $constant => $value ) {
if ( str_starts_with( $constant, 'E_' ) ) {
$core_errors[ $value ] = $constant;
}
}
if ( isset( $core_errors[ $error['type'] ] ) ) {
$error['type'] = $core_errors[ $error['type'] ];
}
/* translators: 1: Error type, 2: Error line number, 3: Error file name, 4: Error message. */
$error_message = __( 'An error of type %1$s was caused in line %2$s of the file %3$s. Error message: %4$s' );
return sprintf(
$error_message,
"<code>{$error['type']}</code>",
"<code>{$error['line']}</code>",
"<code>{$error['file']}</code>",
"<code>{$error['message']}</code>"
);
}
/**
* Registers the shutdown handler for fatal errors.
*
* The handler will only be registered if {@see wp_is_fatal_error_handler_enabled()} returns true.
*
* @since 5.2.0
*/
function wp_register_fatal_error_handler() {
if ( ! wp_is_fatal_error_handler_enabled() ) {
return;
}
$handler = null;
if ( defined( 'WP_CONTENT_DIR' ) && is_readable( WP_CONTENT_DIR . '/fatal-error-handler.php' ) ) {
$handler = include WP_CONTENT_DIR . '/fatal-error-handler.php';
}
if ( ! is_object( $handler ) || ! is_callable( array( $handler, 'handle' ) ) ) {
$handler = new WP_Fatal_Error_Handler();
}
register_shutdown_function( array( $handler, 'handle' ) );
}
/**
* Checks whether the fatal error handler is enabled.
*
* A constant `WP_DISABLE_FATAL_ERROR_HANDLER` can be set in `wp-config.php` to disable it, or alternatively the
* {@see 'wp_fatal_error_handler_enabled'} filter can be used to modify the return value.
*
* @since 5.2.0
*
* @return bool True if the fatal error handler is enabled, false otherwise.
*/
function wp_is_fatal_error_handler_enabled() {
$enabled = ! defined( 'WP_DISABLE_FATAL_ERROR_HANDLER' ) || ! WP_DISABLE_FATAL_ERROR_HANDLER;
/**
* Filters whether the fatal error handler is enabled.
*
* **Important:** This filter runs before it can be used by plugins. It cannot
* be used by plugins, mu-plugins, or themes. To use this filter you must define
* a `$wp_filter` global before WordPress loads, usually in `wp-config.php`.
*
* Example:
*
* $GLOBALS['wp_filter'] = array(
* 'wp_fatal_error_handler_enabled' => array(
* 10 => array(
* array(
* 'accepted_args' => 0,
* 'function' => function() {
* return false;
* },
* ),
* ),
* ),
* );
*
* Alternatively you can use the `WP_DISABLE_FATAL_ERROR_HANDLER` constant.
*
* @since 5.2.0
*
* @param bool $enabled True if the fatal error handler is enabled, false otherwise.
*/
return apply_filters( 'wp_fatal_error_handler_enabled', $enabled );
}
/**
* Access the WordPress Recovery Mode instance.
*
* @since 5.2.0
*
* @return WP_Recovery_Mode
*/
function wp_recovery_mode() {
static $wp_recovery_mode;
if ( ! $wp_recovery_mode ) {
$wp_recovery_mode = new WP_Recovery_Mode();
}
return $wp_recovery_mode;
}