The Administration System serves as the primary backend interface for hotel property management in Hotelaro. It provides authenticated hotel administrators with tools to manage bookings, configure property settings, view analytics, and control system operations through a web-based dashboard interface.
This document covers the backend administrative interface and its core modules. For public-facing website functionality, see Frontend Website. For booking management specifically, see Core Booking System.
The Administration System follows a modular architecture where each functional area is organized as a separate module under inc/core/. The system supports multi-tenant operation with permission-based access control.
Administrative Interface Structure
Database Layer
Authentication & Authorization
Core Modules
Admin Interface
Dashboard Controller
inc/core/Dashboard
Setup Controller
inc/core/Setup
Sidebar Navigation
inc/themes/backend/Admin/Views/sidebar.php
Bookings Module
inc/core/Bookings
Rooms Module
inc/core/Rooms
Calendar Module
inc/core/Calendar
Customers Module
inc/core/Customers
AuthCheck Filter
app/Filters/AuthCheck.php
Permission System
permissionvaluecheck()
Session Management
admin_uid, isAdmin
Multi-tenant Tables
hotel_booking_*
System Settings
hotel_booking_setup
Core Modules
No
Yes
Level 1,2
Level 3
Granted
Denied
Admin Request
AuthCheck Filter
Session Valid?
Redirect to Login
Extract admin_uid from Session
Admin Level Check
isAdmin = 1,2,3
Core Modules
inc/core/*
Superadmin Modules
inc/superadmin/*
permissionvaluecheck(module_id, 'view')
Filter by admin_uid
Access Denied Response
Tenant-Specific Data
hotel_booking_* WHERE admin_uid
Rendered Admin Interface
The Dashboard serves as the main entry point for administrators, providing real-time analytics and quick access to critical hotel operations data.
The Dashboard class handles the main dashboard functionality:
| Method | Purpose | Key Features |
|---|---|---|
| index() | Main dashboard view | Renders home page with analytics widgets |
| get() | AJAX data retrieval | Supports arrivals, departures, and event data |
| getallcount() | Financial metrics | Booking counts, revenue totals, tax calculations |
Database Queries
AJAX Endpoints
Dashboard View
Arrivals Widget
#arrivals tbody
Departures Widget
#departures tbody
Finance Cards
#allcountingdata
Events Widget
#eventdata
dashboard/get
whichfunction param
dashboard/getallcount
count=all
getSearchAll(searchMain, whichfunction)
bookingCount(column)
bookingTotal(column)
hotel_booking_bookings
WHERE admin_uid
The dashboard calculates and displays the following financial metrics:
The Setup module provides a comprehensive configuration interface organized into logical groups. The system uses a modular approach where each configuration area is a separate sub-module.
Configuration Data
Setup Views
Setup Controller
Setup::index()
Main setup page
Setup::basicsetup()
Basic configuration
Setup::regionalsettings()
Currency, timezone
Setup::languagesettings()
Language config
Setup::floors()
Floor management
Setup::amenities()
Amenity management
Setup::roomtypes()
Room type config
setuppage.php
Main setup interface
regional_settings.php
Currency/timezone form
language_settings.php
Language selection
floors_setup.php
Floor configuration
amenities_setup.php
Amenity cards
basic_setup.php
Basic setup cards
inc/setup/*/Config.php
Module definitions
hotel_booking_setup
Configuration storage
The setup system uses dynamic module discovery:
$roots = ROOTPATH . 'inc/setup';
$modules = scandir($modulesPath);
foreach ($modules as $module) {
$configPath = $modulesPath . $module . '/Config.php';
if (file_exists($configPath)) {
$config = require($configPath);
if (isset($config['position'])) {
$menuItems[] = $config;
}
}
}
The setup interface groups configuration options by setuptype:
| Setup Type | Purpose | Example Modules |
|---|---|---|
| Basic Setup | Fundamental system settings | Regional Settings, Language Configuration |
| Property Setup | Physical property configuration | Floors, Room Types, Amenities |
| Advanced Setup | Complex operational settings | Tax Configuration, Booking Rules |
The administrative interface uses a dynamic sidebar navigation system that adapts based on user permissions and available modules.
Level 1,2
Level 3
Granted
Denied
Sidebar Load
Check isAdmin Level
ROOTPATH/inc/core
ROOTPATH/inc/superadmin
scandir(modulesPath)
Check Config.php exists
require(configPath)
usort by position
permissionvaluecheck(id, 'view')
Render Menu Item
Skip Item
Each module must provide a Config.php file with the following structure:
return [
'id' => 'module_name',
'name' => 'Display Name',
'icon' => 'css-icon-class',
'position' => 1,
'menu' => [...] // Optional menu configuration
];
The Administration System implements role-based access control through the permissionvaluecheck() function, which is called throughout the interface to control access to modules and features.
| Level | Description | Access Scope |
|---|---|---|
| 1-2 | Property Administrators | Core modules in inc/core/ |
| 3 | Super Administrators | All modules including inc/superadmin/ |
The Administration System uses a custom CSS framework with the following key design elements:
The interface includes specialized styling for: