# fluent-booking/trunk/app/Hooks/actions.php

Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution, version trunk. 57 lines.

- Page: https://pluginprobe.com/plugins/fluent-booking/trunk/code/app/Hooks/actions.php
- Raw: https://pluginprobe.com/plugins/fluent-booking/trunk/raw/app/Hooks/actions.php
- Modified: 2026-09-09T13:29:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluent-booking/trunk/code/app/Hooks/actions.php#L10-L20`.

```php
<?php

defined('ABSPATH') || exit;

/**
 * All registered action's handlers should be in app\Hooks\Handlers,
 * addAction is similar to add_action and addCustomAction is just a
 * wrapper over add_action which will add a prefix to the hook name
 * using the plugin slug to make it unique in all wordpress plugins,
 * ex: $app->addCustomAction('foo', ['FooHandler', 'handleFoo']) is
 * equivalent to add_action('slug-foo', ['FooHandler', 'handleFoo']).
 */

/**
 * @var $app FluentBooking\Framework\Foundation\Application
 */

/*
 * Register all the grouped action handlers
 */

(new \FluentBooking\App\Hooks\Handlers\FrontEndHandler())->register();
(new \FluentBooking\App\Hooks\Handlers\CleanupHandlers\CleanupHandler())->register();
(new \FluentBooking\App\Hooks\Handlers\NotificationHandler())->register();
(new \FluentBooking\App\Hooks\Handlers\LogHandler())->register();
(new \FluentBooking\App\Hooks\Handlers\AdminMenuHandler())->register();
(new \FluentBooking\App\Hooks\Scheduler\FiveMinuteScheduler())->register();
(new \FluentBooking\App\Hooks\Scheduler\DailyScheduler())->register();
(new \FluentBooking\App\Services\LandingPage\LandingPageHandler())->boot();

/*
 * MCP (Model Context Protocol) server for AI agents.
 * Ships off — boot() only registers the Toolkit discovery filters until an
 * operator enables it in Settings. See docs/mcp-server-spec.md.
 */
\FluentBooking\App\Modules\MCP\MCPInit::boot();


/*
 * Register all the single action handlers
 */
$app->addAction('init', 'BlockEditorHandler@init');

$app->addAction('wp_ajax_fluent_booking_export_calendar', 'DataExporter@exportCalendar');
$app->addAction('wp_ajax_fluent_booking_export_hosts', 'DataExporter@exportBookingHosts');
$app->addAction('wp_ajax_fluent_booking_import_calendar', 'DataImporter@importCalendar');

$app->addAction('fluent_booking/after_calendar_event_landing_page', function () {
    echo wp_kses_post(\FluentBooking\App\Services\LandingPage\LandingPageHelper::getPoweredByHtml());
}, 10);

add_action('init', function () {
    if (!isset($_REQUEST['gcal'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
        return;
    }
});

```
