Files
aktualia.com.pl/.paul/codebase/structure.md

6.3 KiB

Codebase Structure

Analysis Date: 2026-04-27

Directory Layout

_rejestracja/
├── Admin/                  # Admin frontend (separate MVC stack)
│   ├── controller/         # Admin controllers (CalcController, HomeSiteController, etc.)
│   └── template/           # Admin Smarty templates
│       └── partial/
│           └── Calc/       # Registration admin views (Reg.tpl, RegEdit.tpl, RegPAN.tpl)
├── controller/             # Public controllers (IndexController.php)
├── core/                   # Shared core layer (both frontends)
│   ├── class/              # Framework classes (Router, DefaultDAL, DataObject, Validator, etc.)
│   ├── config/             # INI config files (db.config.ini, smtp.config.ini)
│   ├── lib/                # Third-party libraries (Smarty, PHPMailer)
│   ├── model/              # Active models: Mf{Entity}.class.php + Mf{Entity}DAL.class.php
│   └── _model/             # Legacy backup of model/ — NOT loaded by autoloader (78 mirror files)
├── sql/                    # Migration SQL files + PHP runner scripts
├── Static/                 # Frontend assets (CSS, JS, images)
│   └── image/Admin/        # Admin UI images (Thumbs.db ignored)
├── template/               # Public Smarty templates
│   └── partial/Index/      # Registration form templates (Index.tpl, IndexSent.tpl, etc.)
├── index.php               # Public frontend entry point
└── Admin/index.php         # Admin frontend entry point

Directory Purposes

core/model/ (ACTIVE — edit here):

  • Purpose: All domain models and DAL classes
  • Contains: Mf{Entity}.class.php (model), Mf{Entity}DAL.class.php (data access)
  • Key files: MfParticipant.class.php, MfParticipantDAL.class.php, MfParameters.class.php, MfDictionary.class.php
  • Loaded by: core/core.php autoloader via spl_autoload_register

core/_model/ (LEGACY — do not edit):

  • Purpose: Stale backup of model directory; 78 files mirroring core/model/
  • NOT loaded by autoloader — changes here have no effect
  • Should be deleted but kept for historical reference

core/class/:

  • Purpose: Framework infrastructure
  • Key files: Router.class.php, DefaultDAL.class.php, DataObject.class.php, Validator.class.php, SessionProxy.class.php, Request.class.php, MainController.class.php

core/config/:

  • Purpose: Runtime configuration
  • Key files: db.config.ini (DB credentials), smtp.config.ini (SMTP credentials)
  • WARNING: Both committed to repo — contain production secrets

core/lib/:

  • Purpose: Bundled third-party libraries
  • Contains: Smarty 3.x, PHPMailer, other vendored code

controller/:

  • Purpose: Public-facing request handlers
  • Key files: IndexController.php (registration form — main entry point for all user interactions)

Admin/controller/:

  • Purpose: Admin panel request handlers
  • Key files: CalcController.php (registration list, edit, delete), HomeSiteController.php (content editing)

template/partial/Index/:

  • Purpose: Public registration form templates
  • Key files: Index.tpl (main form), Index_good.tpl (alternate variant), IndexSent.tpl (confirmation), IndexSent_good.tpl (alternate confirmation)

Admin/template/partial/Calc/:

  • Purpose: Admin registration management views
  • Key files: Reg.tpl (registration list), RegEdit.tpl (edit payment status), RegPAN.tpl (alternate location view)

sql/:

  • Purpose: Database migrations
  • Pattern: YYYY-MM-DD-description.sql + apply-YYYY-MM-DD-description.php (idempotent runner)
  • Key files: apply-2026-04-24-registration-form-settings.php, apply-2026-04-27-additional-info-field.php

Key File Locations

Entry Points:

  • _rejestracja/index.php — public registration frontend
  • _rejestracja/Admin/index.php — admin panel frontend

Configuration:

  • _rejestracja/core/config/db.config.ini — database connection
  • _rejestracja/core/config/smtp.config.ini — SMTP email credentials
  • .vscode/ftp-kr.sync.cache.json — FTP deployment sync config

Core Logic:

  • _rejestracja/core/class/DefaultDAL.class.php — generic CRUD base
  • _rejestracja/core/model/MfParticipant.class.php — registration participant model
  • _rejestracja/controller/IndexController.php — registration form controller (save, email, display)
  • _rejestracja/Admin/controller/CalcController.php — admin registration management

Testing:

  • None

Naming Conventions

Files:

  • Mf{Entity}.class.php — model classes (MfParticipant, MfParameters, MfDictionary)
  • Mf{Entity}DAL.class.php — data access layer classes
  • {Name}Controller.php — controller classes
  • {Name}.tpl — Smarty templates
  • YYYY-MM-DD-description.sql — migration SQL files
  • apply-YYYY-MM-DD-description.php — idempotent migration runners

Directories:

  • PascalCase for Admin sub-directories (Admin/controller/, Admin/template/)
  • lowercase for core infrastructure directories (core/class/, core/model/)

Where to Add New Code

New model field:

  • Model: _rejestracja/core/model/Mf{Entity}.class.php — add to $fields, add property + getter/setter
  • Migration: _rejestracja/sql/YYYY-MM-DD-description.sql + apply-*.php runner

New form field (public):

  • Template: _rejestracja/template/partial/Index/Index.tpl and Index_good.tpl
  • Controller: _rejestracja/controller/IndexController.php — read POST, set on model
  • Confirmation: IndexSent.tpl, IndexSent_good.tpl
  • Admin display: _rejestracja/Admin/template/partial/Calc/Reg.tpl

New admin action:

  • Controller: _rejestracja/Admin/controller/CalcController.php — add {Name}Action method
  • Template: _rejestracja/Admin/template/partial/Calc/{Name}.tpl

New dictionary phrase:

  • SQL insert into mf_dictionary table + migration runner

Special Directories

core/_model/:

  • Purpose: Legacy backup, 78 files mirroring core/model/
  • Source: Manual backup, not updated consistently
  • NOT in autoloader path — editing here has NO effect

sql/:

  • Purpose: Database migration scripts
  • Runners are web-accessible (risk) — require ?run=YYYYMMDD param to execute
  • Idempotent pattern: check INFORMATION_SCHEMA before ALTER TABLE

Structure analysis: 2026-04-27 Update when directory structure changes