All checks were successful
Create Release Package / build-release (push) Successful in 1m7s
- Add i18n translation files (German Switzerland) - Update README with WooCommerce documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
738 lines
32 KiB
Markdown
738 lines
32 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [0.11.1] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- Internationalization (i18n) support:
|
|
- Translation template file `languages/wp-bnb.pot` with 1,140 translatable strings
|
|
- German (Switzerland) translation `languages/wp-bnb-de_CH.po` with 77% coverage (875 strings)
|
|
- Compiled binary `languages/wp-bnb-de_CH.mo` for WordPress use
|
|
- Coverage includes: admin UI, post types, taxonomies, settings, dashboard, reports, REST API, WooCommerce, CF7, widgets, blocks, shortcodes
|
|
|
|
### Changed
|
|
|
|
- README.md updated with comprehensive WooCommerce integration documentation
|
|
- Added REST API to key features list in README
|
|
|
|
## [0.11.0] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- WooCommerce Integration System:
|
|
- New `src/Integration/WooCommerce/` directory with complete integration
|
|
- `Manager.php` - Core integration manager with HPOS compatibility declaration
|
|
- `ProductSync.php` - Room-to-WooCommerce-product synchronization
|
|
- `CartHandler.php` - Cart item data, availability validation, dynamic pricing
|
|
- `CheckoutHandler.php` - Checkout field customization and pre-fill
|
|
- `OrderHandler.php` - Booking creation on payment completion
|
|
- `InvoiceGenerator.php` - PDF invoice generation using mPDF
|
|
- `RefundHandler.php` - Booking cancellation on full refund
|
|
- `AdminColumns.php` - Admin list cross-links between bookings and orders
|
|
- Product Synchronization:
|
|
- Virtual WooCommerce products created for rooms (SKU: `bnb-room-{id}`)
|
|
- Auto-sync on room save, delete on room deletion
|
|
- Manual "Sync All Rooms" button in settings
|
|
- Bidirectional meta linking (room ↔ product)
|
|
- Cart & Checkout:
|
|
- Booking data stored in cart items (room, dates, guests, services)
|
|
- Availability validation before add-to-cart and at checkout
|
|
- Dynamic price calculation based on dates and services
|
|
- Cart item display shows booking details (dates, guests, nights)
|
|
- Special requests and arrival time fields at checkout
|
|
- Booking summary display in checkout and order received page
|
|
- Order & Booking Integration:
|
|
- Automatic booking creation on `woocommerce_payment_complete`
|
|
- Guest record creation from order billing info
|
|
- Bidirectional order-booking links via meta keys
|
|
- Status synchronization (WC status → Booking status mapping)
|
|
- Booking reference generation (BNB-YYYY-NNNNN)
|
|
- Invoice Generation:
|
|
- PDF invoices using existing mPDF dependency
|
|
- Invoice numbering with configurable prefix and start number
|
|
- Auto-attach invoices to WooCommerce order emails
|
|
- Download invoice button in admin order actions
|
|
- Secure storage in `wp-content/uploads/wp-bnb-invoices/`
|
|
- Refund Handling:
|
|
- Full refund triggers booking cancellation
|
|
- Partial refund stores amount in booking meta without cancellation
|
|
- Refund info displayed in booking admin
|
|
- `wp_bnb_wc_should_cancel_on_refund` filter for customization
|
|
- Admin Enhancements:
|
|
- "WC Order" column in bookings list with order link and status
|
|
- "Booking" column in WC orders list with dates and status
|
|
- Row actions for cross-navigation between bookings and orders
|
|
- HPOS (High-Performance Order Storage) support
|
|
- WooCommerce Settings Tab with Subtabs:
|
|
- General: Enable integration, auto-confirm on payment, WC status indicator
|
|
- Products: Auto-sync toggle, product category selection, sync button
|
|
- Orders: Status mapping reference table
|
|
- Invoices: Auto-attach, prefix, starting number, logo, footer text
|
|
- Frontend Assets:
|
|
- `assets/css/wc-integration.css` - Cart, checkout, and booking form styles
|
|
- `assets/js/wc-integration.js` - Booking form handler, AJAX operations
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated to initialize WooCommerce integration when WC is active
|
|
- Settings page now has eight tabs: General, Pricing, License, Updates, Metrics, API, WooCommerce
|
|
- HPOS compatibility declared via `FeaturesUtil::declare_compatibility()`
|
|
|
|
### Security
|
|
|
|
- Invoice storage protected with .htaccess (deny all)
|
|
- Nonce verification on all AJAX operations
|
|
- Capability checks for admin actions
|
|
- HPOS-compatible meta access using `$order->get_meta()` / `$order->update_meta_data()`
|
|
|
|
## [0.10.1] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- API Settings subtabs for better organization:
|
|
- General subtab: Enable/disable REST API, rate limiting toggle, API information
|
|
- Rate Limits subtab: Configurable time window and endpoint-specific limits
|
|
- Endpoints subtab: Full endpoint documentation with HTTP method badges
|
|
- Configurable rate limiting:
|
|
- Time window setting (10-300 seconds, default 60)
|
|
- Per-endpoint-type limits (public, availability, booking, admin)
|
|
- Settings stored in WordPress options with fallback defaults
|
|
|
|
### Changed
|
|
|
|
- RateLimiter class now loads limits from WordPress options
|
|
- README updated with configurable rate limiting documentation
|
|
|
|
## [0.10.0] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- REST API Infrastructure:
|
|
- New `src/Api/` directory with complete REST API implementation
|
|
- `ResponseFormatter.php` - Standardized response formatting (success, collection, error responses)
|
|
- `RateLimiter.php` - Transient-based rate limiting with tiered limits
|
|
- `Controllers/AbstractController.php` - Base controller with common functionality
|
|
- `RestApi.php` - Main registration class with namespace `wp-bnb/v1`
|
|
- Buildings API:
|
|
- `GET /wp-bnb/v1/buildings` - List buildings with pagination and search
|
|
- `GET /wp-bnb/v1/buildings/{id}` - Get single building with address, contact, details
|
|
- `GET /wp-bnb/v1/buildings/{id}/rooms` - Get rooms in a building with status filter
|
|
- Rooms API:
|
|
- `GET /wp-bnb/v1/rooms` - List rooms with filters (building, room_type, amenities, capacity, status)
|
|
- `GET /wp-bnb/v1/rooms/{id}` - Get room details with gallery, pricing, amenities
|
|
- `GET /wp-bnb/v1/rooms/{id}/availability` - Check availability with price calculation
|
|
- `GET /wp-bnb/v1/rooms/{id}/calendar` - Get monthly calendar data
|
|
- `POST /wp-bnb/v1/availability/search` - Search available rooms by date range and criteria
|
|
- Bookings API:
|
|
- `POST /wp-bnb/v1/bookings` - Create booking (public, creates pending status)
|
|
- `GET /wp-bnb/v1/bookings` - List bookings with filters (admin)
|
|
- `GET /wp-bnb/v1/bookings/{id}` - Get booking details (admin)
|
|
- `PATCH /wp-bnb/v1/bookings/{id}` - Update booking (admin)
|
|
- `DELETE /wp-bnb/v1/bookings/{id}` - Cancel booking (admin)
|
|
- `POST /wp-bnb/v1/bookings/{id}/confirm` - Confirm pending booking (admin)
|
|
- `POST /wp-bnb/v1/bookings/{id}/check-in` - Check in guest (admin)
|
|
- `POST /wp-bnb/v1/bookings/{id}/check-out` - Check out guest (admin)
|
|
- Guests API (admin only):
|
|
- `GET /wp-bnb/v1/guests` - List guests with pagination
|
|
- `GET /wp-bnb/v1/guests/{id}` - Get guest details (excludes encrypted ID numbers)
|
|
- `GET /wp-bnb/v1/guests/search` - Search guests by name/email
|
|
- `GET /wp-bnb/v1/guests/{id}/bookings` - Get guest's booking history
|
|
- Services API:
|
|
- `GET /wp-bnb/v1/services` - List active services with categories
|
|
- `GET /wp-bnb/v1/services/{id}` - Get service details with pricing info
|
|
- `POST /wp-bnb/v1/services/{id}/calculate` - Calculate service price for booking
|
|
- Pricing API:
|
|
- `POST /wp-bnb/v1/pricing/calculate` - Full price calculation with services
|
|
- `GET /wp-bnb/v1/pricing/seasons` - Get configured seasons and pricing modifiers
|
|
- API Settings tab in plugin settings:
|
|
- Enable/disable REST API toggle
|
|
- Enable/disable rate limiting toggle
|
|
- Endpoint documentation table
|
|
- Authentication instructions
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated to initialize REST API on `rest_api_init` hook
|
|
- Settings page now has seven tabs: General, Pricing, License, Updates, Metrics, API
|
|
- README.md updated with comprehensive REST API documentation
|
|
|
|
### Security
|
|
|
|
- Rate limiting: public (60/min), availability (30/min), booking (10/min), admin (120/min)
|
|
- Admin endpoints require `edit_posts` capability
|
|
- Supports WordPress Application Passwords for external API access
|
|
- Client identification by user ID (authenticated) or IP address (anonymous)
|
|
- Proxy/Cloudflare IP detection via X-Forwarded-For and CF-Connecting-IP headers
|
|
|
|
## [0.9.0] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- Prometheus Metrics Integration:
|
|
- New `src/Integration/Prometheus.php` class for metrics collection
|
|
- Integration with wp-prometheus plugin via `wp_prometheus_collect_metrics` hook
|
|
- Inventory metrics: buildings total, rooms by status, services by status
|
|
- Booking metrics: bookings by status, check-ins/check-outs today, upcoming 7 days, avg duration
|
|
- Guest metrics: total guests, guests by status, repeat guests, new guests this month
|
|
- Occupancy metrics: current rate, monthly rate, occupied rooms, total bed capacity
|
|
- Revenue metrics: this month, YTD, average booking value, services revenue
|
|
- Grafana Dashboard:
|
|
- Pre-configured dashboard at `assets/grafana/wp-bnb-dashboard.json`
|
|
- Automatic registration with wp-prometheus dashboard provider
|
|
- Occupancy gauges with color-coded thresholds
|
|
- Pie charts for bookings, rooms, and guests by status
|
|
- Revenue and guest statistics panels
|
|
- Responsive grid layout with 24 panels
|
|
- Settings page Metrics tab:
|
|
- Enable/disable metrics collection toggle
|
|
- WP Prometheus detection with status indicator
|
|
- Complete metrics reference table
|
|
- Dashboard file location and export info
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated to initialize Prometheus integration
|
|
- Settings page now has six tabs: General, Pricing, License, Updates, Metrics
|
|
|
|
## [0.8.0] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- Admin Dashboard with comprehensive statistics:
|
|
- Occupancy overview card with current rate and comparison to last month
|
|
- Revenue summary card with this month, YTD, and comparison
|
|
- Bookings stat card with pending/confirmed counts
|
|
- Guests stat card with total, new, and repeat counts
|
|
- Today's Activity widget showing check-ins and check-outs
|
|
- Upcoming Bookings widget (next 7 days)
|
|
- Quick Actions widget for common tasks
|
|
- Chart.js integration for visual trend charts:
|
|
- Occupancy trend line chart (30 days)
|
|
- Revenue trend bar chart (6 months)
|
|
- Reports page with three report types:
|
|
- Occupancy Report: by room, by building, with progress bars
|
|
- Revenue Report: by room, by pricing tier, with averages
|
|
- Guest Statistics: top guests, nationality breakdown
|
|
- Date range filters (this month, last month, this year, custom)
|
|
- Export functionality:
|
|
- CSV export for all report types (native PHP)
|
|
- PDF export using mPDF library with professional styling
|
|
- New Composer dependency: mpdf/mpdf ^8.2 for PDF generation
|
|
- Dashboard and Reports CSS styles in admin.css (~350 lines)
|
|
- JavaScript chart initialization and report page handlers
|
|
|
|
### Changed
|
|
|
|
- Dashboard now uses dedicated `src/Admin/Dashboard.php` class
|
|
- Admin menu now includes Reports submenu item
|
|
- Asset enqueuing conditionally loads Chart.js on dashboard page
|
|
|
|
## [0.7.2] - 2026-02-03
|
|
|
|
### Fixed
|
|
|
|
- CF7 tag generator buttons not appearing in admin form editor
|
|
- Moved CF7 initialization from frontend-only to run in both admin and frontend contexts
|
|
- Tag generators now properly register via `wpcf7_admin_init` hook
|
|
|
|
## [0.7.1] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- CF7 Admin Tag Generator buttons:
|
|
- Tag generator buttons appear in CF7 form editor for all WP BnB custom tags
|
|
- BnB Building select with first option label configuration
|
|
- BnB Room select with building field linking and price display options
|
|
- BnB Check-in date with min/max advance booking days
|
|
- BnB Check-out date with check-in field linking and min/max nights
|
|
- BnB Guests count with room field linking and min/max/default values
|
|
- All generators support id and class attribute configuration
|
|
|
|
## [0.7.0] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- Contact Form 7 Integration:
|
|
- New `src/Integration/CF7.php` class for CF7 integration
|
|
- Custom form tags: `[bnb_building_select]`, `[bnb_room_select]`, `[bnb_date_checkin]`, `[bnb_date_checkout]`, `[bnb_guests]`
|
|
- Server-side validation for all custom tags
|
|
- Availability checking before form submission
|
|
- Automatic booking creation on form submission with 'pending' status
|
|
- Guest record creation/linking using existing `find_or_create_guest` pattern
|
|
- Price calculation using existing Calculator class
|
|
- Email notifications via existing EmailNotifier
|
|
- CF7 Frontend Assets:
|
|
- `assets/js/cf7-integration.js` for dynamic form behavior
|
|
- Building-based room filtering
|
|
- Date linking (checkout min = checkin + 1)
|
|
- Capacity validation against selected room
|
|
- AJAX availability checking with status display
|
|
- Dynamic price calculation display
|
|
- `assets/css/cf7-integration.css` for form styling
|
|
- Availability status indicators (checking/available/unavailable)
|
|
- Price display formatting
|
|
- Capacity warning styling
|
|
- Responsive design with dark mode support
|
|
- Custom CF7 Mail Tags:
|
|
- `[_bnb_booking_reference]` - Generated booking reference
|
|
- `[_bnb_booking_id]` - Booking post ID
|
|
- `[_bnb_room_name]` - Selected room title
|
|
- `[_bnb_calculated_price]` - Formatted price
|
|
- `[_bnb_nights]` - Number of nights
|
|
- Form Type Detection:
|
|
- Auto-detects booking forms by presence of `[bnb_room_select]`, `[bnb_date_checkin]`, `[bnb_date_checkout]`
|
|
- CSS class `wp-bnb-booking-form` for explicit form type declaration
|
|
- Inquiry forms use default CF7 email handling without booking creation
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated to conditionally initialize CF7 integration when CF7 is active
|
|
- Frontend assets now include CF7-specific CSS and JavaScript when CF7 is detected
|
|
|
|
### Dependencies
|
|
|
|
- Contact Form 7 plugin required for CF7 integration features (optional)
|
|
|
|
## [0.6.1] - 2026-02-03
|
|
|
|
### Added
|
|
|
|
- Auto-Update System:
|
|
- New `src/License/Updater.php` class for WordPress update integration
|
|
- Hooks into `pre_set_site_transient_update_plugins` for update detection
|
|
- Plugin info modal via `plugins_api` filter
|
|
- Configurable update check frequency (1-168 hours)
|
|
- Option to enable/disable update notifications
|
|
- Option to enable/disable automatic updates
|
|
- AJAX endpoint for manual update check
|
|
- Automatic cache clearing when license settings change
|
|
- Updates Tab in Settings:
|
|
- Enable/disable update notifications toggle
|
|
- Enable/disable automatic updates toggle
|
|
- Update check frequency setting
|
|
- Manual "Check for Updates" button
|
|
- Display of last check timestamp and current version
|
|
- Localhost Development Mode:
|
|
- License bypass for local development environments
|
|
- Detects: localhost, 127.0.0.1, ::1, .local/.test/.localhost/.dev/.ddev.site domains
|
|
- Private IP range detection (10.x.x.x, 172.16-31.x.x, 192.168.x.x)
|
|
- "Development Mode" notice on Dashboard and License settings page
|
|
- Extended General Settings:
|
|
- Business address fields (street, city, postal code, country)
|
|
- Contact fields (email, phone, website)
|
|
- Social media fields (Facebook, Instagram, X/Twitter, LinkedIn, TripAdvisor)
|
|
- Pricing Settings Subtabs:
|
|
- Split into three subtabs: Pricing Tiers, Weekend Days, Seasons
|
|
- Each subtab has its own save button
|
|
- Seasons subtab shows priority column and link to Seasons Manager
|
|
- Guest Data Encryption:
|
|
- AES-256-CBC encryption for sensitive data (ID/passport numbers)
|
|
- Uses WordPress AUTH_KEY for encryption key derivation
|
|
- `encrypt()` and `decrypt()` methods in Guest class
|
|
- Backward compatible with legacy unencrypted data
|
|
- Security notice displayed in Identification meta box
|
|
- Guest Auto-Creation from Booking:
|
|
- When new guest data is entered in booking form, guest record is automatically created
|
|
- Links booking to the new guest via guest_id meta
|
|
- Prevents duplicate guest entries
|
|
|
|
### Changed
|
|
|
|
- Admin submenu reordered for better organization:
|
|
- Dashboard at top, Settings at bottom
|
|
- Logical grouping: Buildings, Rooms, Bookings, Guests, Services, Calendar, Seasons
|
|
- Booking title auto-generates with guest name and dates (room number removed)
|
|
- Disabled Gutenberg block editor for form-based post types:
|
|
- Service, Guest, and Booking now use classic editor
|
|
- Meta boxes display properly instead of being hidden at bottom
|
|
- Form-based interfaces more appropriate than block editor for data entry
|
|
- Settings tabs now flush with tab content (no gap)
|
|
|
|
### Fixed
|
|
|
|
- Fixed Booking admin issues with auto-draft status causing type errors
|
|
- Fixed guest dropdown to always load existing guests
|
|
- Fixed booking history display on Guest edit page
|
|
- Fixed service pricing meta box not displaying radio buttons (Gutenberg hiding meta boxes)
|
|
|
|
### Security
|
|
|
|
- Guest ID/passport numbers encrypted at rest using AES-256-CBC
|
|
- Random IV generation for each encryption operation
|
|
- Secure key derivation from WordPress AUTH_KEY
|
|
|
|
## [0.6.0] - 2026-02-02
|
|
|
|
### Added
|
|
|
|
- Frontend Features System:
|
|
- Room search with multiple filters (availability, capacity, room type, amenities, price range, building)
|
|
- AJAX-powered search with pagination and "Load More" functionality
|
|
- Date validation (check-out after check-in, minimum today)
|
|
- Real-time availability checking on single room pages
|
|
- Price calculator with breakdown display
|
|
- Shortcodes:
|
|
- `[bnb_buildings]` - Display buildings list/grid with filtering and sorting
|
|
- `[bnb_rooms]` - Display rooms list/grid with multiple filter options
|
|
- `[bnb_room_search]` - Interactive room search form with results
|
|
- `[bnb_building id="X"]` - Display single building details
|
|
- `[bnb_room id="X"]` - Display single room details with availability form
|
|
- WordPress Widgets:
|
|
- Similar Rooms widget (shows rooms from same building/type)
|
|
- Building Rooms widget (lists all rooms in a building)
|
|
- Availability Calendar widget (mini calendar with booking status)
|
|
- Gutenberg Blocks:
|
|
- Building block with ID selector
|
|
- Room block with ID selector
|
|
- Room Search block with filter presets
|
|
- Buildings List block with layout options
|
|
- Rooms List block with filter options
|
|
- Server-side rendered blocks for consistent output
|
|
- Frontend Search Class (`src/Frontend/Search.php`):
|
|
- Core search functionality with availability filtering
|
|
- Price range filtering with Calculator integration
|
|
- Pagination support
|
|
- AJAX endpoints: search_rooms, get_availability, get_calendar, calculate_price
|
|
- Room data formatting for JSON responses
|
|
- Frontend Shortcodes Class (`src/Frontend/Shortcodes.php`):
|
|
- All shortcode registration and handlers
|
|
- Grid/list layout support
|
|
- Column configuration (1-4 columns)
|
|
- Sorting options (title, date, price, capacity)
|
|
- Limit and offset support
|
|
- Block Registrar Class (`src/Blocks/BlockRegistrar.php`):
|
|
- Gutenberg block registration
|
|
- Block editor assets (CSS/JS)
|
|
- Server-side render callbacks
|
|
- Block data localization for editor
|
|
- Frontend Assets:
|
|
- Comprehensive CSS with CSS custom properties for theming
|
|
- Building and room card styles
|
|
- Search form and results styling
|
|
- Calendar widget styling with availability states
|
|
- Responsive design (breakpoints: 480px, 768px, 1024px)
|
|
- JavaScript with SearchForm, CalendarWidget, AvailabilityForm, PriceCalculator classes
|
|
- AJAX integration with proper error handling
|
|
- XSS-safe DOM construction (no innerHTML with user data)
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated with frontend component initialization
|
|
- Frontend assets now include localized script data with AJAX URL, nonce, and i18n strings
|
|
- Widget registration added to init_frontend() method
|
|
- Search, Shortcodes, and BlockRegistrar initialized when license is valid
|
|
|
|
### Security
|
|
|
|
- AJAX nonce verification on all frontend requests
|
|
- Input sanitization on all search parameters
|
|
- Output escaping in shortcode and widget templates
|
|
- XSS prevention in JavaScript (textContent instead of innerHTML)
|
|
|
|
## [0.5.0] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Additional Services System:
|
|
- Custom Post Type: Services (`bnb_service`)
|
|
- Service pricing types: Included (free), Per Booking (one-time), Per Night
|
|
- Service configuration: price, status, sort order, max quantity
|
|
- Custom admin columns with pricing type icons and status badges
|
|
- Filters by status and pricing type
|
|
- Service data helper methods for pricing calculations
|
|
- Service Categories Taxonomy (`bnb_service_category`)
|
|
- Non-hierarchical (tag-like) structure
|
|
- Icon selection per category
|
|
- Sort order for custom ordering
|
|
- Default categories: Food & Dining, Transportation, Wellness & Spa, Activities, Housekeeping
|
|
- Booking-Services Integration:
|
|
- Services meta box in Booking edit screen
|
|
- Checkbox-based service selection
|
|
- Quantity input for services with max_quantity > 1
|
|
- Real-time price calculation per service based on nights
|
|
- Services total display
|
|
- Price breakdown shows services cost
|
|
- Grand total (room + services) in admin list and pricing meta box
|
|
- Admin UI Enhancements:
|
|
- Service selector with pricing type indicators
|
|
- Included services badge
|
|
- Per-night price suffix display
|
|
- Service line totals with quantity support
|
|
- Services total summary in booking
|
|
- CSS styles for all service-related components
|
|
- JavaScript for dynamic service pricing calculations
|
|
|
|
### Changed
|
|
|
|
- Plugin.php updated to register Service CPT and ServiceCategory taxonomy
|
|
- Admin assets enqueued for Service post type screens
|
|
- Booking admin list shows total price including services
|
|
- Booking pricing meta box displays services breakdown and grand total
|
|
- Admin JavaScript extended with service pricing and selection logic
|
|
- Admin CSS includes comprehensive service styling
|
|
|
|
## [0.4.0] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Guest Management System with dedicated CPT:
|
|
- Custom Post Type: Guests (`bnb_guest`)
|
|
- Personal information fields (name, email, phone, DOB, nationality)
|
|
- Address fields (street, city, postal code, country)
|
|
- Identification fields (ID type, number, expiry date)
|
|
- Guest status tracking (active, inactive, blocked)
|
|
- Internal notes and preferences
|
|
- GDPR consent tracking (marketing, data processing, consent date)
|
|
- Booking history display with statistics
|
|
- Helper methods: `get_by_email()`, `get_bookings()`, `get_booking_count()`, `get_total_spent()`, `get_full_name()`, `get_formatted_address()`
|
|
- Guest-Booking Integration:
|
|
- Guest search by email/name with AJAX autocomplete
|
|
- Link existing guests to bookings
|
|
- Create new guests from booking form
|
|
- Guest profile link in booking admin
|
|
- Automatic guest data sync when linked
|
|
- Backward compatibility for legacy bookings without guest_id
|
|
- GDPR/Privacy Compliance (`src/Privacy/Manager.php`):
|
|
- WordPress Privacy API integration
|
|
- Personal data exporter (guest profile + booking history)
|
|
- Personal data eraser with anonymization option
|
|
- Privacy policy content suggestion
|
|
- Support for WordPress Tools > Export/Erase Personal Data
|
|
- Guest anonymization (replaces PII with placeholder data)
|
|
- Booking anonymization for connected bookings
|
|
- Email Notifier Enhancements:
|
|
- Guest data retrieval from Guest CPT when available
|
|
- Fallback to booking meta for legacy bookings
|
|
- New placeholders: `{guest_first_name}`, `{guest_last_name}`, `{guest_full_address}`
|
|
- Admin UI Styles:
|
|
- Guest search container and results styling
|
|
- Linked guest display card
|
|
- Booking history table in Guest
|
|
- Consent status indicators
|
|
- Guest status badges
|
|
- Privacy action buttons
|
|
- Anonymized data display
|
|
|
|
### Changed
|
|
|
|
- Booking meta box updated with guest search/link functionality
|
|
- Plugin.php now initializes Guest CPT and Privacy Manager
|
|
- Admin JavaScript includes guest search with debounce
|
|
- Admin CSS extended with Guest and Privacy styles
|
|
|
|
### Security
|
|
|
|
- Guest email used as unique identifier for deduplication
|
|
- GDPR-compliant data export and erasure
|
|
- Consent tracking with timestamps
|
|
- Anonymization preserves booking records while removing PII
|
|
- AJAX endpoints secured with nonce verification
|
|
|
|
## [0.3.0] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Booking System with full management features:
|
|
- Custom Post Type: Bookings (`bnb_booking`)
|
|
- Room and guest relationship tracking
|
|
- Check-in/check-out date management
|
|
- Booking status workflow (pending, confirmed, checked_in, checked_out, cancelled)
|
|
- Status transitions with validation
|
|
- Automatic price calculation using existing Calculator
|
|
- Price override option for manual adjustments
|
|
- Guest information storage (name, email, phone, notes)
|
|
- Guest count tracking (adults, children)
|
|
- Internal notes field for staff
|
|
- Auto-generated booking references (BNB-YYYY-NNNNN)
|
|
- Availability System (`src/Booking/Availability.php`)
|
|
- Real-time availability checking
|
|
- Conflict detection for overlapping bookings
|
|
- AJAX endpoint for instant availability validation
|
|
- Calendar data generation for rooms and buildings
|
|
- Support for excluding booking from conflict check (for editing)
|
|
- Utility methods: get upcoming bookings, current bookings, today's check-ins/outs
|
|
- Calendar Admin Page (WP BnB > Calendar)
|
|
- Monthly calendar view with availability visualization
|
|
- Room and building filter dropdowns
|
|
- Color-coded booking status display
|
|
- Month navigation (previous/next/today)
|
|
- Click-to-edit booking functionality
|
|
- Hover tooltips with booking details
|
|
- Legend for status colors
|
|
- Single room and multi-room views
|
|
- Email Notifications (`src/Booking/EmailNotifier.php`)
|
|
- Admin notification for new bookings
|
|
- Guest confirmation email on booking confirmation
|
|
- Admin notification on booking confirmation
|
|
- Cancellation emails to guest and admin
|
|
- HTML email templates with styling
|
|
- Placeholder-based template system
|
|
- Filter hooks for customizing recipients, subject, and content
|
|
- Booking Admin List Enhancements
|
|
- Custom columns: room, guest, dates, nights, price, status
|
|
- Status badges with color coding
|
|
- Filter by room and status
|
|
- Sortable columns for dates, guest, status
|
|
- Price override indicator
|
|
- Booking Meta Boxes
|
|
- Room & Dates: room selection, date pickers, nights display, availability check
|
|
- Guest Information: contact details, guest count, notes
|
|
- Pricing: calculated price, breakdown display, recalculate button, override
|
|
- Status & Notes: status dropdown with preview, internal notes
|
|
|
|
### Changed
|
|
|
|
- Plugin.php enhanced with AJAX handlers and component initialization
|
|
- Admin JavaScript updated with booking form functionality
|
|
- Admin CSS updated with booking and calendar styles
|
|
- Asset enqueuing now includes Booking post type screens
|
|
|
|
### Security
|
|
|
|
- Conflict detection prevents double-booking
|
|
- Date validation ensures check-out is after check-in
|
|
- Status transition validation prevents invalid state changes
|
|
- Nonce verification on availability AJAX requests
|
|
- Capability checks on all booking operations
|
|
|
|
## [0.2.0] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Pricing System with three tiers:
|
|
- Short-term (nightly) pricing for stays up to 6 nights
|
|
- Mid-term (weekly) pricing for stays 7-27 nights
|
|
- Long-term (monthly) pricing for stays 28+ nights
|
|
- PricingTier enum class with automatic tier detection
|
|
- Season class for seasonal pricing management
|
|
- Date range support (MM-DD format)
|
|
- Year-spanning seasons (e.g., winter holidays Dec-Jan)
|
|
- Price modifier (multiplier) per season
|
|
- Priority system for overlapping seasons
|
|
- Active/inactive status toggle
|
|
- Calculator class for price calculations
|
|
- Automatic tier detection based on stay duration
|
|
- Seasonal price adjustments
|
|
- Weekend surcharge support
|
|
- Price breakdown for detailed invoicing
|
|
- Currency formatting with symbol/suffix support
|
|
- Pricing meta box on Room edit screen
|
|
- Base prices for each tier (nightly, weekly, monthly)
|
|
- Weekend surcharge field
|
|
- Link to pricing settings
|
|
- Pricing Settings tab in plugin settings
|
|
- Configurable tier thresholds
|
|
- Weekend days selection
|
|
- Quick view of configured seasons
|
|
- Seasons admin page (WP BnB > Seasons)
|
|
- List view with all seasons
|
|
- Add/Edit season form
|
|
- Delete confirmation
|
|
- Create default seasons option
|
|
- Price column in room list admin
|
|
- Admin CSS for pricing UI
|
|
- Admin JavaScript for pricing interactions
|
|
|
|
### Changed
|
|
|
|
- Room post type now includes pricing fields
|
|
- Plugin settings page has new Pricing tab
|
|
- Enhanced asset localization with pricing i18n strings
|
|
|
|
## [0.1.0] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Custom Post Type: Buildings (`bnb_building`)
|
|
- Address fields (street, city, state, ZIP, country)
|
|
- Contact information (phone, email, website)
|
|
- Building details (total rooms, floors, year built)
|
|
- Check-in/check-out time configuration
|
|
- Featured image support
|
|
- Custom admin columns (city, country, room count)
|
|
- Sortable columns
|
|
- Custom Post Type: Rooms (`bnb_room`)
|
|
- Building relationship (parent building selection)
|
|
- Room details (number, floor, size, capacity)
|
|
- Guest capacity (total, max adults, max children)
|
|
- Beds description and bathroom count
|
|
- Room status (available, occupied, maintenance, blocked)
|
|
- Image gallery with drag-and-drop sorting
|
|
- Featured image support
|
|
- Custom admin columns (building, room number, type, capacity, status)
|
|
- Building filter dropdown in admin list
|
|
- Custom Taxonomy: Room Types (`bnb_room_type`)
|
|
- Hierarchical (category-like) structure
|
|
- Default types: Standard, Superior, Suite, Family, Accessible, Apartment
|
|
- Subtypes: Single, Double, Twin, Junior Suite, Executive Suite
|
|
- Base capacity meta field
|
|
- Sort order meta field
|
|
- Custom Taxonomy: Amenities (`bnb_amenity`)
|
|
- Non-hierarchical (tag-like) structure
|
|
- Default amenities: WiFi, Parking, Breakfast, TV, A/C, Pet Friendly, etc.
|
|
- Dashicon selection for visual display
|
|
- Custom column showing icon
|
|
- Admin enhancements
|
|
- Gallery meta box with media library integration
|
|
- Status badges with color coding
|
|
- Custom title placeholders for each post type
|
|
- Post type edit screens with proper asset loading
|
|
|
|
### Changed
|
|
|
|
- Updated admin assets to handle post type edit screens
|
|
- Enhanced asset enqueuing to include jQuery UI Sortable for galleries
|
|
- Improved localization with additional i18n strings
|
|
|
|
## [0.0.1] - 2026-01-31
|
|
|
|
### Added
|
|
|
|
- Initial plugin structure and configuration
|
|
- Main plugin file with version checks (PHP 8.3+, WordPress 6.0+)
|
|
- Plugin singleton class with initialization hooks
|
|
- License Manager integration with SecureLicenseClient
|
|
- Admin menu with Dashboard and Settings pages
|
|
- Settings tabs for General and License configuration
|
|
- License validation and activation via AJAX
|
|
- Admin CSS and JavaScript assets
|
|
- Frontend CSS and JavaScript placeholders
|
|
- Composer configuration with dependencies:
|
|
- twig/twig ^3.0
|
|
- magdev/wc-licensed-product-client ^0.2
|
|
- PSR-4 autoloading for `Magdev\WpBnb` namespace
|
|
- Git submodule for license client library
|
|
- Gitea CI/CD workflow for automated releases
|
|
- Documentation: README.md, PLAN.md, CHANGELOG.md, CLAUDE.md
|
|
- Translation-ready strings with `wp-bnb` text domain
|
|
- Directory structure for templates, assets, and languages
|
|
|
|
### Security
|
|
|
|
- Nonce verification on all form submissions
|
|
- Capability checks for admin operations
|
|
- Input sanitization and output escaping
|
|
- Server secret masking in license settings
|
|
|
|
[0.11.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.11.0
|
|
[0.10.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.10.1
|
|
[0.10.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.10.0
|
|
[0.9.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.9.0
|
|
[0.8.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.8.0
|
|
[0.7.2]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.7.2
|
|
[0.7.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.7.1
|
|
[0.7.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.7.0
|
|
[0.6.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.6.1
|
|
[0.6.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.6.0
|
|
[0.5.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.5.0
|
|
[0.4.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.4.0
|
|
[0.3.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.3.0
|
|
[0.2.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.2.0
|
|
[0.1.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.1.0
|
|
[0.0.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.0.1
|