From fd7de03582708f59a7a6daf687cac9762cd866d0 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Sat, 27 Jun 2026 20:25:43 +0000 Subject: [PATCH] feat: add webservices extension class --- .../src/Extension/MokoSuiteBooking.php | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php diff --git a/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php b/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php new file mode 100644 index 0000000..71641b8 --- /dev/null +++ b/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php @@ -0,0 +1,46 @@ + + * @license GPL-3.0-or-later + */ + +namespace Moko\Plugin\WebServices\MokoSuiteBooking\Extension; + +defined('_JEXEC') or die; + +use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\CMS\Router\ApiRouter; +use Joomla\Event\SubscriberInterface; + +final class MokoSuiteBooking extends CMSPlugin implements SubscriberInterface +{ + public static function getSubscribedEvents(): array + { + return [ + 'onBeforeApiRoute' => 'onBeforeApiRoute', + ]; + } + + public function onBeforeApiRoute(&$router): void + { + $routes = [ + 'bookings' => 'bookingbookings', + 'services' => 'bookingservices', + 'staff' => 'bookingstaff', + 'schedules' => 'bookingschedules', + 'locations' => 'bookinglocations', + 'waitlist' => 'bookingwaitlist', + ]; + + $defaults = ['component' => 'com_mokosuitebooking', 'public' => false]; + + foreach ($routes as $pattern => $controller) { + $router->createCRUDRoutes( + 'v1/mokosuitebooking/' . $pattern, + $controller, + $defaults + ); + } + } +}