diff --git a/source/packages/com_mokosuitebooking/admin/tmpl/bookingstaff/default.php b/source/packages/com_mokosuitebooking/admin/tmpl/staff/default.php
similarity index 86%
rename from source/packages/com_mokosuitebooking/admin/tmpl/bookingstaff/default.php
rename to source/packages/com_mokosuitebooking/admin/tmpl/staff/default.php
index 2ca1ab2..6b38e2d 100644
--- a/source/packages/com_mokosuitebooking/admin/tmpl/bookingstaff/default.php
+++ b/source/packages/com_mokosuitebooking/admin/tmpl/staff/default.php
@@ -1,9 +1,13 @@
* SPDX-License-Identifier: GPL-3.0-or-later
+ * Authored-by: Moko Consulting
*/
+
defined('_JEXEC') or die;
+
?>
Staff
diff --git a/source/packages/com_mokosuitebooking/admin/tmpl/waitlist/default.php b/source/packages/com_mokosuitebooking/admin/tmpl/waitlist/default.php
new file mode 100644
index 0000000..02d15a8
--- /dev/null
+++ b/source/packages/com_mokosuitebooking/admin/tmpl/waitlist/default.php
@@ -0,0 +1,15 @@
+
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ * Authored-by: Moko Consulting
+ */
+
+defined('_JEXEC') or die;
+
+?>
+
+
Waitlist
+
Coming soon.
+
diff --git a/source/packages/com_mokosuitebooking/mokosuitebooking.xml b/source/packages/com_mokosuitebooking/mokosuitebooking.xml
index 859c553..8abda16 100644
--- a/source/packages/com_mokosuitebooking/mokosuitebooking.xml
+++ b/source/packages/com_mokosuitebooking/mokosuitebooking.xml
@@ -1,36 +1,35 @@
- MokoSuite Booking
- Moko Consulting
- hello@mokoconsulting.tech
- https://mokoconsulting.tech
- 2026-06-27
- Copyright (C) 2026 Moko Consulting.
- GPL-3.0-or-later
- 06.00.00
- Appointment and resource booking
- Moko\Component\MokoSuiteBooking
-
-
- access.xml
- config.xml
- language
- services
- src
- tmpl
-
+ com_mokosuitebooking
+ 06.00.00
+ 2026-06-27
+ Moko Consulting
+ hello@mokoconsulting.tech
+ https://mokoconsulting.tech
+ Copyright (C) 2026 Moko Consulting
+ GPL-3.0-or-later
+ COM_MOKOSUITEBOOKING_DESCRIPTION
+ Moko\Component\MokoSuiteBooking
+
+
+
+
+
+
+
+
+
+
+
+
+ language
+ services
+ src
+ tmpl
+
+
- en-GB/com_mokosuitebooking.ini
- en-GB/com_mokosuitebooking.sys.ini
+ en-GB/com_mokosuitebooking.ini
+ en-GB/com_mokosuitebooking.sys.ini
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini b/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini
index 764b0bb..f066011 100644
--- a/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini
+++ b/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini
@@ -1,4 +1,20 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuite Booking"
-PLG_SYSTEM_MOKOSUITEBOOKING_DESC="Appointment booking helpers and schema"
+PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuiteBooking"
+PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking system plugin — schema and configuration management"
+PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_BASIC="Basic"
+PLG_SYSTEM_MOKOSUITEBOOKING_BUSINESS_NAME="Business Name"
+PLG_SYSTEM_MOKOSUITEBOOKING_CURRENCY="Currency"
+PLG_SYSTEM_MOKOSUITEBOOKING_TIMEZONE="Timezone"
+PLG_SYSTEM_MOKOSUITEBOOKING_TIME_SLOT_MINUTES="Time Slot (Minutes)"
+PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_BOOKING="Booking"
+PLG_SYSTEM_MOKOSUITEBOOKING_MAX_ADVANCE_DAYS="Max Advance Booking (Days)"
+PLG_SYSTEM_MOKOSUITEBOOKING_CANCELLATION_WINDOW="Cancellation Window (Hours)"
+PLG_SYSTEM_MOKOSUITEBOOKING_AUTO_CONFIRM="Auto-Confirm"
+PLG_SYSTEM_MOKOSUITEBOOKING_ALLOW_WALK_INS="Allow Walk-Ins"
+PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_NOTIFICATIONS="Notifications"
+PLG_SYSTEM_MOKOSUITEBOOKING_CONFIRMATION_EMAIL="Confirmation Email"
+PLG_SYSTEM_MOKOSUITEBOOKING_REMINDER_HOURS="Reminder (Hours Before)"
+PLG_SYSTEM_MOKOSUITEBOOKING_NOSHOW_THRESHOLD="No-Show Threshold (Minutes)"
+PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_DISPLAY="Display"
+PLG_SYSTEM_MOKOSUITEBOOKING_CALENDAR_START="Calendar Start Hour"
+PLG_SYSTEM_MOKOSUITEBOOKING_CALENDAR_END="Calendar End Hour"
+PLG_SYSTEM_MOKOSUITEBOOKING_SLOTS_PER_PAGE="Slots Per Page"
diff --git a/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini b/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini
index 764b0bb..3e14941 100644
--- a/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini
+++ b/source/packages/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini
@@ -1,4 +1,2 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuite Booking"
-PLG_SYSTEM_MOKOSUITEBOOKING_DESC="Appointment booking helpers and schema"
+PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuiteBooking"
+PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking system plugin — schema and configuration management"
diff --git a/source/packages/plg_system_mokosuitebooking/mokosuitebooking.xml b/source/packages/plg_system_mokosuitebooking/mokosuitebooking.xml
index dd0be81..08b92c4 100644
--- a/source/packages/plg_system_mokosuitebooking/mokosuitebooking.xml
+++ b/source/packages/plg_system_mokosuitebooking/mokosuitebooking.xml
@@ -1,59 +1,53 @@
- System - MokoSuite Booking
- mokosuitebooking
- Moko Consulting
+ plg_system_mokosuitebooking
+ 06.00.00
2026-06-27
- Copyright (C) 2026 Moko Consulting. All rights reserved.
- GPL-3.0-or-later
+ Moko Consulting
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 06.00.00
- 8.3
- PLG_SYSTEM_MOKOSUITEBOOKING_DESC
+ Copyright (C) 2026 Moko Consulting
+ GPL-3.0-or-later
+ PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION
Moko\Plugin\System\MokoSuiteBooking
+ services
src
- services
- language
- sql
en-GB/plg_system_mokosuitebooking.ini
en-GB/plg_system_mokosuitebooking.sys.ini
- sql/install.mysql.sql
- sql/uninstall.mysql.sql
+
+ sql/install.mysql.sql
+
+
+ sql/uninstall.mysql.sql
+
-
-
\ No newline at end of file
+
diff --git a/source/packages/plg_system_mokosuitebooking/services/provider.php b/source/packages/plg_system_mokosuitebooking/services/provider.php
index f210625..5041d3f 100644
--- a/source/packages/plg_system_mokosuitebooking/services/provider.php
+++ b/source/packages/plg_system_mokosuitebooking/services/provider.php
@@ -15,13 +15,19 @@ use Joomla\DI\ServiceProviderInterface;
use Joomla\Event\DispatcherInterface;
use Moko\Plugin\System\MokoSuiteBooking\Extension\Booking;
-return new class implements ServiceProviderInterface {
- public function register(Container $container): void {
- $container->set(PluginInterface::class, function (Container $container) {
- $dispatcher = $container->get(DispatcherInterface::class);
- $plugin = new Booking($dispatcher, (array) PluginHelper::getPlugin('system', 'mokosuitebooking'));
- $plugin->setApplication(\Joomla\CMS\Factory::getApplication());
- return $plugin;
- });
+return new class implements ServiceProviderInterface
+{
+ public function register(Container $container): void
+ {
+ $container->set(
+ PluginInterface::class,
+ function (Container $container) {
+ $dispatcher = $container->get(DispatcherInterface::class);
+ $plugin = new Booking($dispatcher, (array) PluginHelper::getPlugin('system', 'mokosuitebooking'));
+ $plugin->setApplication(\Joomla\CMS\Factory::getApplication());
+
+ return $plugin;
+ }
+ );
}
-};
\ No newline at end of file
+};
diff --git a/source/packages/plg_system_mokosuitebooking/sql/install.mysql.sql b/source/packages/plg_system_mokosuitebooking/sql/install.mysql.sql
index 3b479af..2c4dfb7 100644
--- a/source/packages/plg_system_mokosuitebooking/sql/install.mysql.sql
+++ b/source/packages/plg_system_mokosuitebooking/sql/install.mysql.sql
@@ -1,37 +1,12 @@
---
--- MokoSuite Booking Tables
---
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_locations` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(255) NOT NULL,
- `address` VARCHAR(500) NOT NULL DEFAULT '',
- `city` VARCHAR(100) NOT NULL DEFAULT '',
- `state` VARCHAR(100) NOT NULL DEFAULT '',
- `postal_code` VARCHAR(20) NOT NULL DEFAULT '',
- `country` VARCHAR(100) NOT NULL DEFAULT '',
- `timezone` VARCHAR(50) NOT NULL DEFAULT 'America/New_York',
- `phone` VARCHAR(50) NOT NULL DEFAULT '',
- `email` VARCHAR(255) NOT NULL DEFAULT '',
- `photo` VARCHAR(500) NOT NULL DEFAULT '',
- `notes` TEXT,
- `published` TINYINT NOT NULL DEFAULT 1,
- `ordering` INT NOT NULL DEFAULT 0,
- `created` DATETIME NOT NULL,
- `created_by` INT NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_services` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
`category` VARCHAR(100) NOT NULL DEFAULT '',
- `duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 30,
+ `duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 60,
`buffer_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
`price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `currency` VARCHAR(3) NOT NULL DEFAULT 'USD',
- `max_attendees` SMALLINT UNSIGNED NOT NULL DEFAULT 1,
+ `max_participants` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`requires_deposit` TINYINT NOT NULL DEFAULT 0,
`deposit_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
@@ -39,7 +14,6 @@ CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_services` (
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
- `created_by` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_category` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -47,22 +21,27 @@ CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_services` (
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_staff` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`contact_id` INT DEFAULT NULL,
- `user_id` INT DEFAULT NULL,
- `display_name` VARCHAR(255) NOT NULL,
- `title` VARCHAR(255) NOT NULL DEFAULT '',
+ `name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL DEFAULT '',
`phone` VARCHAR(50) NOT NULL DEFAULT '',
+ `title` VARCHAR(100) NOT NULL DEFAULT '',
`bio` TEXT,
`photo` VARCHAR(500) NOT NULL DEFAULT '',
`color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
- `services_json` JSON DEFAULT NULL,
- `locations_json` JSON DEFAULT NULL,
+ `max_daily_bookings` TINYINT UNSIGNED NOT NULL DEFAULT 20,
+ `rating` DECIMAL(3,2) NOT NULL DEFAULT 5.00,
+ `total_bookings` INT UNSIGNED NOT NULL DEFAULT 0,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
- KEY `idx_contact` (`contact_id`),
- KEY `idx_user` (`user_id`)
+ KEY `idx_contact` (`contact_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_staff_services` (
+ `staff_id` INT UNSIGNED NOT NULL,
+ `service_id` INT UNSIGNED NOT NULL,
+ PRIMARY KEY (`staff_id`, `service_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_schedules` (
@@ -72,92 +51,100 @@ CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_schedules` (
`day_of_week` TINYINT UNSIGNED NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NOT NULL,
- `effective_from` DATE DEFAULT NULL,
- `effective_until` DATE DEFAULT NULL,
- `published` TINYINT NOT NULL DEFAULT 1,
+ `is_recurring` TINYINT NOT NULL DEFAULT 1,
+ `specific_date` DATE DEFAULT NULL,
+ `override_type` ENUM('available','unavailable') DEFAULT NULL,
+ `created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_staff` (`staff_id`),
KEY `idx_location` (`location_id`),
- KEY `idx_day` (`day_of_week`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_availability_overrides` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `staff_id` INT UNSIGNED NOT NULL,
- `override_date` DATE NOT NULL,
- `available` TINYINT NOT NULL DEFAULT 0,
- `start_time` TIME DEFAULT NULL,
- `end_time` TIME DEFAULT NULL,
- `reason` VARCHAR(255) NOT NULL DEFAULT '',
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`),
- KEY `idx_staff_date` (`staff_id`, `override_date`)
+ KEY `idx_day` (`day_of_week`),
+ KEY `idx_date` (`specific_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_bookings` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`booking_ref` VARCHAR(20) NOT NULL,
- `contact_id` INT DEFAULT NULL,
+ `service_id` INT UNSIGNED NOT NULL,
`staff_id` INT UNSIGNED DEFAULT NULL,
`location_id` INT UNSIGNED DEFAULT NULL,
+ `customer_contact_id` INT DEFAULT NULL,
`customer_name` VARCHAR(255) NOT NULL,
`customer_email` VARCHAR(255) NOT NULL DEFAULT '',
`customer_phone` VARCHAR(50) NOT NULL DEFAULT '',
+ `status` ENUM('pending','confirmed','checked_in','in_progress','completed','cancelled','no_show') NOT NULL DEFAULT 'pending',
`booking_date` DATE NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NOT NULL,
- `status` ENUM('pending','confirmed','in_progress','completed','cancelled','no_show') NOT NULL DEFAULT 'pending',
- `total_price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
+ `participants` TINYINT UNSIGNED NOT NULL DEFAULT 1,
+ `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`deposit_paid` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `payment_status` ENUM('unpaid','partial','paid','refunded') NOT NULL DEFAULT 'unpaid',
+ `payment_status` ENUM('pending','deposit_paid','paid','refunded') NOT NULL DEFAULT 'pending',
+ `source` ENUM('admin','online','phone','walk_in') NOT NULL DEFAULT 'online',
`notes` TEXT,
- `internal_notes` TEXT,
- `source` ENUM('admin','website','api','walk_in') NOT NULL DEFAULT 'admin',
- `cancelled_at` DATETIME DEFAULT NULL,
- `cancellation_reason` VARCHAR(500) NOT NULL DEFAULT '',
+ `customer_notes` TEXT,
`reminder_sent` TINYINT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
`created_by` INT NOT NULL DEFAULT 0,
- `modified` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `uk_ref` (`booking_ref`),
- KEY `idx_contact` (`contact_id`),
+ UNIQUE KEY `idx_ref` (`booking_ref`),
+ KEY `idx_service` (`service_id`),
KEY `idx_staff` (`staff_id`),
- KEY `idx_location` (`location_id`),
+ KEY `idx_customer` (`customer_contact_id`),
+ KEY `idx_status` (`status`),
KEY `idx_date` (`booking_date`),
- KEY `idx_status` (`status`)
+ KEY `idx_datetime` (`booking_date`, `start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_booking_services` (
+CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_locations` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `booking_id` INT UNSIGNED NOT NULL,
- `service_id` INT UNSIGNED NOT NULL,
- `staff_id` INT UNSIGNED DEFAULT NULL,
- `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 30,
- PRIMARY KEY (`id`),
- KEY `idx_booking` (`booking_id`),
- KEY `idx_service` (`service_id`)
+ `name` VARCHAR(255) NOT NULL,
+ `address` VARCHAR(500) NOT NULL DEFAULT '',
+ `city` VARCHAR(100) NOT NULL DEFAULT '',
+ `state` VARCHAR(100) NOT NULL DEFAULT '',
+ `postal_code` VARCHAR(20) NOT NULL DEFAULT '',
+ `phone` VARCHAR(50) NOT NULL DEFAULT '',
+ `email` VARCHAR(255) NOT NULL DEFAULT '',
+ `timezone` VARCHAR(50) NOT NULL DEFAULT 'America/New_York',
+ `published` TINYINT NOT NULL DEFAULT 1,
+ `ordering` INT NOT NULL DEFAULT 0,
+ `created` DATETIME NOT NULL,
+ PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_waitlist` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `contact_id` INT DEFAULT NULL,
`service_id` INT UNSIGNED NOT NULL,
`staff_id` INT UNSIGNED DEFAULT NULL,
`location_id` INT UNSIGNED DEFAULT NULL,
+ `customer_contact_id` INT DEFAULT NULL,
`customer_name` VARCHAR(255) NOT NULL,
- `customer_email` VARCHAR(255) NOT NULL DEFAULT '',
`customer_phone` VARCHAR(50) NOT NULL DEFAULT '',
- `preferred_date_start` DATE DEFAULT NULL,
- `preferred_date_end` DATE DEFAULT NULL,
- `preferred_time_start` TIME DEFAULT NULL,
- `preferred_time_end` TIME DEFAULT NULL,
- `status` ENUM('waiting','notified','booked','expired','cancelled') NOT NULL DEFAULT 'waiting',
- `notified_at` DATETIME DEFAULT NULL,
+ `customer_email` VARCHAR(255) NOT NULL DEFAULT '',
+ `preferred_date` DATE DEFAULT NULL,
+ `preferred_time` TIME DEFAULT NULL,
+ `status` ENUM('waiting','offered','booked','expired','cancelled') NOT NULL DEFAULT 'waiting',
+ `position` INT UNSIGNED NOT NULL DEFAULT 0,
`notes` TEXT,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_service` (`service_id`),
+ KEY `idx_customer` (`customer_contact_id`),
KEY `idx_status` (`status`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
\ No newline at end of file
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_booking_history` (
+ `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ `booking_id` INT UNSIGNED NOT NULL,
+ `action` ENUM('created','confirmed','rescheduled','cancelled','completed','no_show','reminder_sent') NOT NULL,
+ `old_date` DATE DEFAULT NULL,
+ `old_time` TIME DEFAULT NULL,
+ `new_date` DATE DEFAULT NULL,
+ `new_time` TIME DEFAULT NULL,
+ `note` TEXT,
+ `created` DATETIME NOT NULL,
+ `created_by` INT NOT NULL DEFAULT 0,
+ PRIMARY KEY (`id`),
+ KEY `idx_booking` (`booking_id`),
+ KEY `idx_action` (`action`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/source/packages/plg_system_mokosuitebooking/sql/uninstall.mysql.sql b/source/packages/plg_system_mokosuitebooking/sql/uninstall.mysql.sql
index 1b1d773..e3c61f7 100644
--- a/source/packages/plg_system_mokosuitebooking/sql/uninstall.mysql.sql
+++ b/source/packages/plg_system_mokosuitebooking/sql/uninstall.mysql.sql
@@ -1,12 +1,8 @@
---
--- MokoSuite Booking — Uninstall
---
-
+DROP TABLE IF EXISTS `#__mokosuitebooking_booking_history`;
DROP TABLE IF EXISTS `#__mokosuitebooking_waitlist`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_booking_services`;
+DROP TABLE IF EXISTS `#__mokosuitebooking_locations`;
DROP TABLE IF EXISTS `#__mokosuitebooking_bookings`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_availability_overrides`;
DROP TABLE IF EXISTS `#__mokosuitebooking_schedules`;
+DROP TABLE IF EXISTS `#__mokosuitebooking_staff_services`;
DROP TABLE IF EXISTS `#__mokosuitebooking_staff`;
DROP TABLE IF EXISTS `#__mokosuitebooking_services`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_locations`;
\ No newline at end of file
diff --git a/source/packages/plg_system_mokosuitebooking/src/Extension/Booking.php b/source/packages/plg_system_mokosuitebooking/src/Extension/Booking.php
index a49c2d9..ff4ee01 100644
--- a/source/packages/plg_system_mokosuitebooking/src/Extension/Booking.php
+++ b/source/packages/plg_system_mokosuitebooking/src/Extension/Booking.php
@@ -13,10 +13,10 @@ defined('_JEXEC') or die;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\SubscriberInterface;
-class Booking extends CMSPlugin implements SubscriberInterface
+final class Booking extends CMSPlugin implements SubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [];
}
-}
\ No newline at end of file
+}
diff --git a/source/packages/plg_webservices_mokosuitebooking/mokosuitebooking.xml b/source/packages/plg_webservices_mokosuitebooking/mokosuitebooking.xml
index 45c2880..56ce03d 100644
--- a/source/packages/plg_webservices_mokosuitebooking/mokosuitebooking.xml
+++ b/source/packages/plg_webservices_mokosuitebooking/mokosuitebooking.xml
@@ -1,15 +1,17 @@
-
+
- Web Services - MokoSuite Booking
- mokosuitebooking
- Moko Consulting
- hello@mokoconsulting.tech
- https://mokoconsulting.tech
- 2026-06-27
- Copyright (C) 2026 Moko Consulting.
- 06.00.00
- GPL-3.0-or-later
- REST API routes for MokoSuite Booking operations
- Moko\Plugin\WebServices\MokoSuiteBooking
- srcservices
-
\ No newline at end of file
+ plg_webservices_mokosuitebooking
+ 06.00.00
+ 2026-06-27
+ Moko Consulting
+ hello@mokoconsulting.tech
+ https://mokoconsulting.tech
+ Copyright (C) 2026 Moko Consulting
+ GPL-3.0-or-later
+ PLG_WEBSERVICES_MOKOSUITEBOOKING_DESCRIPTION
+ Moko\Plugin\Webservices\MokoSuiteBooking
+
+ services
+ src
+
+
diff --git a/source/packages/plg_webservices_mokosuitebooking/services/provider.php b/source/packages/plg_webservices_mokosuitebooking/services/provider.php
index 6be452f..f43259d 100644
--- a/source/packages/plg_webservices_mokosuitebooking/services/provider.php
+++ b/source/packages/plg_webservices_mokosuitebooking/services/provider.php
@@ -13,13 +13,21 @@ use Joomla\CMS\Plugin\PluginHelper;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Event\DispatcherInterface;
-use Moko\Plugin\WebServices\MokoSuiteBooking\Extension\MokoSuiteBooking;
+use Moko\Plugin\Webservices\MokoSuiteBooking\Extension\MokoSuiteBooking;
-return new class implements ServiceProviderInterface {
- public function register(Container $container): void {
- $container->set(PluginInterface::class, function (Container $container) {
- $dispatcher = $container->get(DispatcherInterface::class);
- return new MokoSuiteBooking($dispatcher, (array) PluginHelper::getPlugin('webservices', 'mokosuitebooking'));
- });
+return new class implements ServiceProviderInterface
+{
+ public function register(Container $container): void
+ {
+ $container->set(
+ PluginInterface::class,
+ function (Container $container) {
+ $dispatcher = $container->get(DispatcherInterface::class);
+ $plugin = new MokoSuiteBooking($dispatcher, (array) PluginHelper::getPlugin('webservices', 'mokosuitebooking'));
+ $plugin->setApplication(\Joomla\CMS\Factory::getApplication());
+
+ return $plugin;
+ }
+ );
}
-};
\ No newline at end of file
+};
diff --git a/source/packages/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php b/source/packages/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php
index 4d2ce96..9985441 100644
--- a/source/packages/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php
+++ b/source/packages/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php
@@ -6,7 +6,7 @@
* Authored-by: Moko Consulting
*/
-namespace Moko\Plugin\WebServices\MokoSuiteBooking\Extension;
+namespace Moko\Plugin\Webservices\MokoSuiteBooking\Extension;
defined('_JEXEC') or die;
@@ -14,7 +14,7 @@ use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\ApiRouter;
use Joomla\Event\SubscriberInterface;
-class MokoSuiteBooking extends CMSPlugin implements SubscriberInterface
+final class MokoSuiteBooking extends CMSPlugin implements SubscriberInterface
{
public static function getSubscribedEvents(): array
{
@@ -23,21 +23,8 @@ class MokoSuiteBooking extends CMSPlugin implements SubscriberInterface
];
}
- public function onBeforeApiRoute($event): void
+ public function onBeforeApiRoute(&$router): void
{
- $router = $event->getArgument('router');
-
- $routes = [
- 'services', 'staff', 'bookings', 'schedules',
- 'locations', 'availability', 'waitlist',
- ];
-
- foreach ($routes as $route) {
- $router->createCRUDRoutes(
- "v1/booking/{$route}",
- $route,
- ['component' => 'com_mokosuitebooking']
- );
- }
+ // Route registrations will be added during development
}
-}
\ No newline at end of file
+}
diff --git a/source/pkg_mokosuitebooking.xml b/source/pkg_mokosuitebooking.xml
index cd945f3..1222f7b 100644
--- a/source/pkg_mokosuitebooking.xml
+++ b/source/pkg_mokosuitebooking.xml
@@ -1,24 +1,21 @@
- Package - MokoSuite Booking
+ pkg_mokosuitebooking
mokosuitebooking
06.00.00
2026-06-27
Moko Consulting
hello@mokoconsulting.tech
https://mokoconsulting.tech
- Copyright (C) 2026 Moko Consulting. All rights reserved.
- GNU General Public License version 3 or later; see LICENSE
+ Copyright (C) 2026 Moko Consulting
+ GPL-3.0-or-later
Appointment and resource booking for service businesses
- 8.3
-
- true
-
- plg_system_mokosuitebooking.zip
- com_mokosuitebooking.zip
- plg_webservices_mokosuitebooking.zip
+
+ packages/plg_system_mokosuitebooking
+ packages/com_mokosuitebooking
+ packages/plg_webservices_mokosuitebooking
- https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBooking/updates.xml
+ https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBooking/updates.xml
-
\ No newline at end of file
+
diff --git a/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini b/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini
deleted file mode 100644
index 4e8b50c..0000000
--- a/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-; Authored-by: Moko Consulting
-
-PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuiteBooking"
-PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking system plugin for appointment and resource booking."
-
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_BASIC="Basic Settings"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_BUSINESS_NAME="Business Name"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_TIMEZONE="Timezone"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_SLOT_DURATION="Slot Duration (minutes)"
-
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_BOOKING="Booking Settings"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_MAX_ADVANCE_DAYS="Max Advance Booking Days"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_CANCELLATION_WINDOW="Cancellation Window (hours)"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_CANCELLATION_WINDOW_DESC="Minimum hours before appointment to allow cancellation."
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_REQUIRE_DEPOSIT="Require Deposit"
-
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_NOTIFICATIONS="Notifications"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_SEND_CONFIRMATION="Send Confirmation Email"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_SEND_REMINDER="Send Reminder Email"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_REMINDER_HOURS="Reminder Hours Before"
-
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELDSET_DISPLAY="Display"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_SHOW_PRICES="Show Prices"
-PLG_SYSTEM_MOKOSUITEBOOKING_FIELD_SHOW_DURATION="Show Duration"
diff --git a/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini b/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini
deleted file mode 100644
index d476e64..0000000
--- a/source/plg_system_mokosuitebooking/language/en-GB/plg_system_mokosuitebooking.sys.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-; Authored-by: Moko Consulting
-
-PLG_SYSTEM_MOKOSUITEBOOKING="System - MokoSuiteBooking"
-PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking system plugin for appointment and resource booking."
diff --git a/source/plg_system_mokosuitebooking/mokosuitebooking.xml b/source/plg_system_mokosuitebooking/mokosuitebooking.xml
deleted file mode 100644
index 20df0d3..0000000
--- a/source/plg_system_mokosuitebooking/mokosuitebooking.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
- plg_system_mokosuitebooking
- 0.0.1
- 2026-06-27
- Moko Consulting
- hello@mokoconsulting.tech
- https://mokoconsulting.tech
- Copyright (C) 2026 Moko Consulting
- GPL-3.0-or-later
- PLG_SYSTEM_MOKOSUITEBOOKING_DESCRIPTION
- Moko\Plugin\System\MokoSuiteBooking
-
-
- services
- src
-
-
-
- en-GB/plg_system_mokosuitebooking.ini
- en-GB/plg_system_mokosuitebooking.sys.ini
-
-
-
-
- sql/install.mysql.sql
-
-
-
-
- sql/uninstall.mysql.sql
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/plg_system_mokosuitebooking/services/provider.php b/source/plg_system_mokosuitebooking/services/provider.php
deleted file mode 100644
index ca6e7c7..0000000
--- a/source/plg_system_mokosuitebooking/services/provider.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- * @license GPL-3.0-or-later
- */
-
-defined('_JEXEC') or die;
-
-use Joomla\CMS\Extension\PluginInterface;
-use Joomla\CMS\Factory;
-use Joomla\CMS\Plugin\PluginHelper;
-use Joomla\DI\Container;
-use Joomla\DI\ServiceProviderInterface;
-use Joomla\Event\DispatcherInterface;
-use Moko\Plugin\System\MokoSuiteBooking\Extension\Booking;
-
-return new class () implements ServiceProviderInterface {
- public function register(Container $container): void
- {
- $container->set(
- PluginInterface::class,
- function (Container $container) {
- $dispatcher = $container->get(DispatcherInterface::class);
- $plugin = new Booking(
- $dispatcher,
- (array) PluginHelper::getPlugin('system', 'mokosuitebooking')
- );
- $plugin->setApplication(Factory::getApplication());
-
- return $plugin;
- }
- );
- }
-};
diff --git a/source/plg_system_mokosuitebooking/sql/install.mysql.sql b/source/plg_system_mokosuitebooking/sql/install.mysql.sql
deleted file mode 100644
index c79b8cd..0000000
--- a/source/plg_system_mokosuitebooking/sql/install.mysql.sql
+++ /dev/null
@@ -1,138 +0,0 @@
--- Copyright (C) 2026 Moko Consulting
--- SPDX-License-Identifier: GPL-3.0-or-later
--- Authored-by: Moko Consulting
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_locations` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(255) NOT NULL,
- `address` VARCHAR(500) NOT NULL DEFAULT '',
- `phone` VARCHAR(50) NOT NULL DEFAULT '',
- `email` VARCHAR(255) NOT NULL DEFAULT '',
- `timezone` VARCHAR(50) NOT NULL DEFAULT 'America/New_York',
- `operating_hours` JSON DEFAULT NULL,
- `published` TINYINT NOT NULL DEFAULT 1,
- `ordering` INT NOT NULL DEFAULT 0,
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_staff` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `contact_id` INT DEFAULT NULL,
- `name` VARCHAR(255) NOT NULL,
- `email` VARCHAR(255) NOT NULL DEFAULT '',
- `phone` VARCHAR(50) NOT NULL DEFAULT '',
- `title` VARCHAR(255) NOT NULL DEFAULT '',
- `bio` TEXT,
- `photo` VARCHAR(500) NOT NULL DEFAULT '',
- `color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
- `location_id` INT UNSIGNED DEFAULT NULL,
- `published` TINYINT NOT NULL DEFAULT 1,
- `ordering` INT NOT NULL DEFAULT 0,
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`),
- KEY `idx_contact` (`contact_id`),
- KEY `idx_location` (`location_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_services` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(255) NOT NULL,
- `description` TEXT,
- `category` VARCHAR(100) NOT NULL DEFAULT '',
- `duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 60,
- `buffer_before` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
- `buffer_after` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
- `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `deposit_required` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `max_participants` SMALLINT UNSIGNED NOT NULL DEFAULT 1,
- `color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
- `published` TINYINT NOT NULL DEFAULT 1,
- `ordering` INT NOT NULL DEFAULT 0,
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_schedules` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `staff_id` INT UNSIGNED NOT NULL,
- `day_of_week` TINYINT UNSIGNED NOT NULL,
- `start_time` TIME NOT NULL,
- `end_time` TIME NOT NULL,
- `location_id` INT UNSIGNED DEFAULT NULL,
- `effective_from` DATE DEFAULT NULL,
- `effective_to` DATE DEFAULT NULL,
- `published` TINYINT NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`),
- KEY `idx_staff` (`staff_id`),
- KEY `idx_day` (`day_of_week`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_availability_overrides` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `staff_id` INT UNSIGNED NOT NULL,
- `override_date` DATE NOT NULL,
- `available` TINYINT NOT NULL DEFAULT 0,
- `start_time` TIME DEFAULT NULL,
- `end_time` TIME DEFAULT NULL,
- `reason` VARCHAR(255) NOT NULL DEFAULT '',
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`),
- KEY `idx_staff` (`staff_id`),
- KEY `idx_date` (`override_date`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_bookings` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `booking_ref` VARCHAR(20) NOT NULL,
- `client_contact_id` INT DEFAULT NULL,
- `client_name` VARCHAR(255) NOT NULL,
- `client_email` VARCHAR(255) NOT NULL DEFAULT '',
- `client_phone` VARCHAR(50) NOT NULL DEFAULT '',
- `staff_id` INT UNSIGNED DEFAULT NULL,
- `location_id` INT UNSIGNED DEFAULT NULL,
- `status` ENUM('pending','confirmed','in_progress','completed','cancelled','no_show') NOT NULL DEFAULT 'pending',
- `booking_date` DATE NOT NULL,
- `start_time` TIME NOT NULL,
- `end_time` TIME NOT NULL,
- `total_price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `deposit_paid` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `payment_status` ENUM('pending','partial','paid','refunded') NOT NULL DEFAULT 'pending',
- `source` ENUM('admin','online','phone','walkin') NOT NULL DEFAULT 'admin',
- `notes` TEXT,
- `reminder_sent` TINYINT NOT NULL DEFAULT 0,
- `created` DATETIME NOT NULL,
- `created_by` INT NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- UNIQUE KEY `idx_ref` (`booking_ref`),
- KEY `idx_client` (`client_contact_id`),
- KEY `idx_staff` (`staff_id`),
- KEY `idx_status` (`status`),
- KEY `idx_date` (`booking_date`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_booking_services` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `booking_id` INT UNSIGNED NOT NULL,
- `service_id` INT UNSIGNED NOT NULL,
- `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
- `duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 60,
- PRIMARY KEY (`id`),
- KEY `idx_booking` (`booking_id`),
- KEY `idx_service` (`service_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_waitlist` (
- `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
- `client_contact_id` INT DEFAULT NULL,
- `client_name` VARCHAR(255) NOT NULL,
- `client_email` VARCHAR(255) NOT NULL DEFAULT '',
- `service_id` INT UNSIGNED DEFAULT NULL,
- `staff_id` INT UNSIGNED DEFAULT NULL,
- `preferred_date` DATE DEFAULT NULL,
- `status` ENUM('waiting','notified','booked','expired','cancelled') NOT NULL DEFAULT 'waiting',
- `notes` TEXT,
- `created` DATETIME NOT NULL,
- PRIMARY KEY (`id`),
- KEY `idx_status` (`status`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/source/plg_system_mokosuitebooking/sql/uninstall.mysql.sql b/source/plg_system_mokosuitebooking/sql/uninstall.mysql.sql
deleted file mode 100644
index 70df5a2..0000000
--- a/source/plg_system_mokosuitebooking/sql/uninstall.mysql.sql
+++ /dev/null
@@ -1,12 +0,0 @@
--- Copyright (C) 2026 Moko Consulting
--- SPDX-License-Identifier: GPL-3.0-or-later
--- Authored-by: Moko Consulting
-
-DROP TABLE IF EXISTS `#__mokosuitebooking_waitlist`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_booking_services`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_bookings`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_availability_overrides`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_schedules`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_services`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_staff`;
-DROP TABLE IF EXISTS `#__mokosuitebooking_locations`;
diff --git a/source/plg_system_mokosuitebooking/src/Extension/Booking.php b/source/plg_system_mokosuitebooking/src/Extension/Booking.php
deleted file mode 100644
index 0f9cc86..0000000
--- a/source/plg_system_mokosuitebooking/src/Extension/Booking.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
- * @license GPL-3.0-or-later
- */
-
-namespace Moko\Plugin\System\MokoSuiteBooking\Extension;
-
-defined('_JEXEC') or die;
-
-use Joomla\CMS\Plugin\CMSPlugin;
-use Joomla\Event\DispatcherInterface;
-use Psr\Container\ContainerInterface;
-
-final class Booking extends CMSPlugin
-{
- protected $autoloadLanguage = true;
-
- public function boot(ContainerInterface $container): void
- {
- }
-}
diff --git a/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.ini b/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.ini
deleted file mode 100644
index e6138ac..0000000
--- a/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-; Authored-by: Moko Consulting
-
-PLG_WEBSERVICES_MOKOSUITEBOOKING="Web Services - MokoSuiteBooking"
-PLG_WEBSERVICES_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking web services plugin for REST API access."
diff --git a/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.sys.ini b/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.sys.ini
deleted file mode 100644
index e6138ac..0000000
--- a/source/plg_webservices_mokosuitebooking/language/en-GB/plg_webservices_mokosuitebooking.sys.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-; Copyright (C) 2026 Moko Consulting
-; SPDX-License-Identifier: GPL-3.0-or-later
-; Authored-by: Moko Consulting
-
-PLG_WEBSERVICES_MOKOSUITEBOOKING="Web Services - MokoSuiteBooking"
-PLG_WEBSERVICES_MOKOSUITEBOOKING_DESCRIPTION="MokoSuiteBooking web services plugin for REST API access."
diff --git a/source/plg_webservices_mokosuitebooking/mokosuitebooking.xml b/source/plg_webservices_mokosuitebooking/mokosuitebooking.xml
deleted file mode 100644
index ab45b85..0000000
--- a/source/plg_webservices_mokosuitebooking/mokosuitebooking.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- plg_webservices_mokosuitebooking
- 0.0.1
- 2026-06-27
- Moko Consulting
- hello@mokoconsulting.tech
- https://mokoconsulting.tech
- Copyright (C) 2026 Moko Consulting
- GPL-3.0-or-later
- PLG_WEBSERVICES_MOKOSUITEBOOKING_DESCRIPTION
- Moko\Plugin\WebServices\MokoSuiteBooking
-
-
- services
- src
-
-
-
- en-GB/plg_webservices_mokosuitebooking.ini
- en-GB/plg_webservices_mokosuitebooking.sys.ini
-
-
diff --git a/source/plg_webservices_mokosuitebooking/services/provider.php b/source/plg_webservices_mokosuitebooking/services/provider.php
deleted file mode 100644
index c6fef13..0000000
--- a/source/plg_webservices_mokosuitebooking/services/provider.php
+++ /dev/null
@@ -1,35 +0,0 @@
-
- * @license GPL-3.0-or-later
- */
-
-defined('_JEXEC') or die;
-
-use Joomla\CMS\Extension\PluginInterface;
-use Joomla\CMS\Factory;
-use Joomla\CMS\Plugin\PluginHelper;
-use Joomla\DI\Container;
-use Joomla\DI\ServiceProviderInterface;
-use Joomla\Event\DispatcherInterface;
-use Moko\Plugin\WebServices\MokoSuiteBooking\Extension\MokoSuiteBooking;
-
-return new class () implements ServiceProviderInterface {
- public function register(Container $container): void
- {
- $container->set(
- PluginInterface::class,
- function (Container $container) {
- $dispatcher = $container->get(DispatcherInterface::class);
- $plugin = new MokoSuiteBooking(
- $dispatcher,
- (array) PluginHelper::getPlugin('webservices', 'mokosuitebooking')
- );
- $plugin->setApplication(Factory::getApplication());
-
- return $plugin;
- }
- );
- }
-};
diff --git a/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php b/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php
deleted file mode 100644
index 71641b8..0000000
--- a/source/plg_webservices_mokosuitebooking/src/Extension/MokoSuiteBooking.php
+++ /dev/null
@@ -1,46 +0,0 @@
-
- * @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
- );
- }
- }
-}