🏨 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>
92 lines
2.0 KiB
PHP
92 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Redux Network Class
|
|
*
|
|
* @class Redux_Network
|
|
* @version 4.0.0
|
|
* @package Redux Framework/Classes
|
|
*/
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
if ( ! class_exists( 'Redux_Network', false ) ) {
|
|
|
|
/**
|
|
* Class Redux_Network
|
|
*/
|
|
class Redux_Network extends Redux_Class {
|
|
|
|
/**
|
|
* Redux_Network constructor.
|
|
*
|
|
* @param object $redux ReduxFramework pointer.
|
|
*/
|
|
public function __construct( $redux ) {
|
|
parent::__construct( $redux );
|
|
|
|
if ( 'network' === $redux->args['database'] && $redux->args['network_admin'] ) {
|
|
add_action(
|
|
'network_admin_edit_redux_' . $redux->args['opt_name'],
|
|
array(
|
|
$this,
|
|
'save_network_page',
|
|
),
|
|
10,
|
|
0
|
|
);
|
|
|
|
// phpcs:ignore Generic.Strings.UnnecessaryStringConcat
|
|
add_action( 'admin' . '_bar' . '_menu', array( $this, 'network_admin_bar' ), 999 );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add node to network admin bar.
|
|
*
|
|
* @param object $wp_admin_bar Admin bar.
|
|
*/
|
|
public function network_admin_bar( $wp_admin_bar ) {
|
|
$core = $this->core();
|
|
|
|
$args = array(
|
|
'id' => $core->args['opt_name'] . '_network_admin',
|
|
'title' => $core->args['menu_title'],
|
|
'parent' => 'network-admin',
|
|
'href' => network_admin_url( 'settings.php' ) . '?page=' . $core->args['page_slug'],
|
|
'meta' => array( 'class' => 'redux-network-admin' ),
|
|
);
|
|
|
|
$wp_admin_bar->add_node( $args );
|
|
}
|
|
|
|
/**
|
|
* Saves network options.
|
|
*/
|
|
public function save_network_page() {
|
|
$core = $this->core();
|
|
|
|
if ( isset( $_POST[ $core->args['opt_name'] ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
|
|
$opt_name = sanitize_text_field( wp_unslash( $_POST[ $core->args['opt_name'] ] ) ); // phpcs:ignore WordPress.Security.NonceVerification
|
|
}
|
|
|
|
$data = $core->options_class->validate_options( $opt_name );
|
|
|
|
if ( ! empty( $data ) ) {
|
|
$core->options_class->set( $data );
|
|
}
|
|
|
|
wp_safe_redirect(
|
|
add_query_arg(
|
|
array(
|
|
'page' => $core->args['page_slug'],
|
|
'updated' => 'true',
|
|
),
|
|
network_admin_url( 'settings.php' )
|
|
)
|
|
);
|
|
|
|
exit();
|
|
}
|
|
}
|
|
}
|