6.3 KiB
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.phpautoloader viaspl_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 templatesYYYY-MM-DD-description.sql— migration SQL filesapply-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-*.phprunner
New form field (public):
- Template:
_rejestracja/template/partial/Index/Index.tplandIndex_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}Actionmethod - Template:
_rejestracja/Admin/template/partial/Calc/{Name}.tpl
New dictionary phrase:
- SQL insert into
mf_dictionarytable + 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=YYYYMMDDparam to execute - Idempotent pattern: check
INFORMATION_SCHEMAbeforeALTER TABLE
Structure analysis: 2026-04-27 Update when directory structure changes