+17
-1
@@ -3,6 +3,7 @@
|
||||
use Reservair\Templating\Elements\RsvReservationSummaryElement;
|
||||
use Reservair\Templating\Elements\RsvReservationActionsElement;
|
||||
use Reservair\Templating\Elements\RsvResetFormButtonElement;
|
||||
use Reservair\Templating\Elements\RsvQrPaymentElement;
|
||||
/**
|
||||
* Plugin Name: Reservair
|
||||
* Description: A reservation and booking system for WordPress. Site visitors browse available time slots and submit reservation requests via a Gutenberg block; administrators manage timetables, services, forms, and reservations from the WordPress admin panel.
|
||||
@@ -33,7 +34,7 @@ register_activation_hook( __FILE__, [ 'RsvInstaller', 'install' ] );
|
||||
* plugins we might interact with) is fully loaded.
|
||||
*/
|
||||
function rsv_bootstrap(): void {
|
||||
global $rsv_form_registry, $rsv_template_registry;
|
||||
global $rsv_form_registry, $rsv_template_registry, $rsv_form_price_registry;
|
||||
|
||||
// Re-grant the custom capability after a plugin *update* (the activation hook
|
||||
// only runs on activate). No-op once the stored version matches.
|
||||
@@ -53,11 +54,26 @@ function rsv_bootstrap(): void {
|
||||
$rsv_form_registry->register( 'output-reservation-summary', new RsvReservationSummaryElementHandler() );
|
||||
$rsv_form_registry->register( 'output-text', new RsvOutputTextElementHandler() );
|
||||
|
||||
// Price calculators — extensions add per-element calculators via the action.
|
||||
add_action( 'rsv-register-price-calculator', function ( RsvFormPriceCalculatorRegistry $reg ): void {
|
||||
$reg->register( 'reservation', function ( RsvFormElementDefinition $def, $value ): float {
|
||||
if ( ! is_array( $value ) || ! is_array( $value['timetable_reservations'] ?? null ) ) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
$price_per_block = (float) $def->getAttr( 'price_per_block', 0 );
|
||||
|
||||
return $price_per_block * count( $value['timetable_reservations'] );
|
||||
} );
|
||||
} );
|
||||
$rsv_form_price_registry = RsvFormPriceCalculatorRegistry::boot();
|
||||
|
||||
// Template custom-element registry. Extensions register via the action.
|
||||
add_action( 'rsv-template-register-custom-elements', function ( \Reservair\Templating\RsvTemplateRegistry $reg ): void {
|
||||
$reg->register( 'reservation-summary', new RsvReservationSummaryElement() );
|
||||
$reg->register( 'reservation-actions', new RsvReservationActionsElement() );
|
||||
$reg->register( 'reset-form-button', new RsvResetFormButtonElement() );
|
||||
$reg->register( 'qr-payment', new RsvQrPaymentElement() );
|
||||
} );
|
||||
$rsv_template_registry = new \Reservair\Templating\RsvTemplateRegistry();
|
||||
do_action( 'rsv-template-register-custom-elements', $rsv_template_registry );
|
||||
|
||||
Reference in New Issue
Block a user