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>
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace YahnisElsts\PluginUpdateChecker\v5p4;
|
||||
|
||||
if ( !class_exists(Autoloader::class, false) ):
|
||||
|
||||
class Autoloader {
|
||||
const DEFAULT_NS_PREFIX = 'YahnisElsts\\PluginUpdateChecker\\';
|
||||
|
||||
private $prefix;
|
||||
private $rootDir;
|
||||
private $libraryDir;
|
||||
|
||||
private $staticMap;
|
||||
|
||||
public function __construct() {
|
||||
$this->rootDir = dirname(__FILE__) . '/';
|
||||
|
||||
$namespaceWithSlash = __NAMESPACE__ . '\\';
|
||||
$this->prefix = $namespaceWithSlash;
|
||||
|
||||
$this->libraryDir = $this->rootDir . '../..';
|
||||
if ( !self::isPhar() ) {
|
||||
$this->libraryDir = realpath($this->libraryDir);
|
||||
}
|
||||
$this->libraryDir = $this->libraryDir . '/';
|
||||
|
||||
//Usually, dependencies like Parsedown are in the global namespace,
|
||||
//but if someone adds a custom namespace to the entire library, they
|
||||
//will be in the same namespace as this class.
|
||||
$isCustomNamespace = (
|
||||
substr($namespaceWithSlash, 0, strlen(self::DEFAULT_NS_PREFIX)) !== self::DEFAULT_NS_PREFIX
|
||||
);
|
||||
$libraryPrefix = $isCustomNamespace ? $namespaceWithSlash : '';
|
||||
|
||||
$this->staticMap = array(
|
||||
$libraryPrefix . 'PucReadmeParser' => 'vendor/PucReadmeParser.php',
|
||||
$libraryPrefix . 'Parsedown' => 'vendor/Parsedown.php',
|
||||
);
|
||||
|
||||
//Add the generic, major-version-only factory class to the static map.
|
||||
$versionSeparatorPos = strrpos(__NAMESPACE__, '\\v');
|
||||
if ( $versionSeparatorPos !== false ) {
|
||||
$versionSegment = substr(__NAMESPACE__, $versionSeparatorPos + 1);
|
||||
$pointPos = strpos($versionSegment, 'p');
|
||||
if ( ($pointPos !== false) && ($pointPos > 1) ) {
|
||||
$majorVersionSegment = substr($versionSegment, 0, $pointPos);
|
||||
$majorVersionNs = __NAMESPACE__ . '\\' . $majorVersionSegment;
|
||||
$this->staticMap[$majorVersionNs . '\\PucFactory'] =
|
||||
'Puc/' . $majorVersionSegment . '/Factory.php';
|
||||
}
|
||||
}
|
||||
|
||||
spl_autoload_register(array($this, 'autoload'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if this file is running as part of a Phar archive.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private static function isPhar() {
|
||||
//Check if the current file path starts with "phar://".
|
||||
static $pharProtocol = 'phar://';
|
||||
return (substr(__FILE__, 0, strlen($pharProtocol)) === $pharProtocol);
|
||||
}
|
||||
|
||||
public function autoload($className) {
|
||||
if ( isset($this->staticMap[$className]) && file_exists($this->libraryDir . $this->staticMap[$className]) ) {
|
||||
include($this->libraryDir . $this->staticMap[$className]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strpos($className, $this->prefix) === 0 ) {
|
||||
$path = substr($className, strlen($this->prefix));
|
||||
$path = str_replace(array('_', '\\'), '/', $path);
|
||||
$path = $this->rootDir . $path . '.php';
|
||||
|
||||
if ( file_exists($path) ) {
|
||||
include $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
Reference in New Issue
Block a user