Administration System

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.

System Architecture

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
    

Permission and Multi-Tenant Flow

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
    

Dashboard Component

The Dashboard serves as the main entry point for administrators, providing real-time analytics and quick access to critical hotel operations data.

Dashboard Controller Structure

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

Dashboard Widgets and Data Flow

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
    

Dashboard Metrics

The dashboard calculates and displays the following financial metrics:

Setup and Configuration System

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.

Setup Module Architecture

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
    

Setup Module Discovery

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;
        }
    }
}
    

Configuration Categories

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

Navigation and Sidebar System

The administrative interface uses a dynamic sidebar navigation system that adapts based on user permissions and available modules.

Sidebar Generation Logic

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
    

Module Configuration Structure

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
];
    

Permission System Integration

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.

Permission Enforcement Points

Admin Level Hierarchy

Level Description Access Scope
1-2 Property Administrators Core modules in inc/core/
3 Super Administrators All modules including inc/superadmin/

Styling and UI Framework

The Administration System uses a custom CSS framework with the following key design elements:

The interface includes specialized styling for: