13 KiB
Database Schema
Last updated: 2026-04-30 Source: Inferred from ORM models, controllers, install script, and raw query analysis.
Connection
| Setting | Value |
|---|---|
| Driver | mysqli |
| Host | localhost |
| Database | host420804_db |
| User | host420804_db |
| Character set | utf8 |
| Table prefix | (none) |
| Persistent | FALSE |
| Config file | application/config/database.php |
Tables
user
Purpose: Admin user accounts. Used for CMS login and authentication. Only admin-role users access the back-end panel.
Model: application/models/user.php → User_Model extends ORM
$table_name = 'user'$primary_val = 'username'(allows lookup by username string in addition to numericid)
Columns:
| Column | Type | Nullable | Notes |
|---|---|---|---|
id |
INT (PK, AI) | NO | Primary key, auto-increment (Kohana ORM default) |
role |
VARCHAR | NO | Role name, e.g. 'sysadmin', 'admin'. Stored as string. |
username |
VARCHAR(20) | NO | Unique login name. Validated: 3–20 chars, [a-zA-Z0-9_.] |
email |
VARCHAR(50) | NO | Unique email address. Validated: 5–50 chars. |
salt |
VARCHAR | NO | MD5 random salt used when hashing the password. |
sha1_password |
VARCHAR(40) | NO | SHA1(salt . plaintext_password) |
password_date |
DATETIME | YES | Timestamp of last password change. Format: Y-m-d H:i:s |
is_active |
TINYINT / BOOL | NO | 1 = active account, 0 = disabled. Checked on login. |
last_success |
DATETIME | YES | Timestamp of last successful login. Updated on each login. |
last_failed |
DATETIME | YES | Timestamp of last failed login attempt. Updated on bad password. |
Relationships: None declared in ORM. Standalone table.
Key usages:
application/controllers/admin/user.php— login, logout, password changeapplication/controllers/install.php— seed rows forsysadminandadminapplication/controllers/admin/force.php— forced login (readsusername,last_success,last_failed)
page
Purpose: CMS content pages served on the public front-end. Each row is a named page (e.g. o-firmie, kontakt, serwis). Content is edited via the admin panel with a TinyMCE rich-text editor.
Model: application/models/page.php → Page_Model extends ORM
$table_names_plural = FALSE→ table name ispage(notpages)- Lookup by string
namesupported viaunique_key().
Columns:
| Column | Type | Nullable | Notes |
|---|---|---|---|
id |
INT (PK, AI) | NO | Primary key, auto-increment. |
name |
VARCHAR | NO | URL slug / unique identifier. e.g. 'o-firmie', 'kontakt'. Unique. |
title |
VARCHAR(95) | YES | HTML <title> tag value and displayed page title. |
header |
VARCHAR(95) | YES | Heading shown inside the page <h1>. May differ from title. |
content |
MEDIUMTEXT | YES | Main HTML body. Edited via TinyMCE. Can be empty. |
meta_description |
TEXT | YES | <meta name="description"> content. |
meta_keywords |
TEXT | YES | <meta name="keywords"> content. |
parent_id |
INT (FK) | YES | Self-referential parent page ID. NULL = top-level page. |
Relationships:
- Self-referential:
parent_idreferencespage.id(used bycategorieshelper for hierarchical menu rendering). - No ORM
$has_many/$belongs_todeclared — relationships are resolved manually in thecategorieshelper (application/helpers/categories.php).
Seed pages (from install script):
name |
title |
|---|---|
o-firmie |
O firmie |
urzadzenia-biurowe-monochromatyczne |
Urządzenia biurowe monochromatyczne |
urzadzenia-biurowe-kolorowe |
Urządzenia biurowe kolorowe |
urzadzenia-uslugowe-monochromatyczne |
Urządzenia usługowe monochromatyczne |
urzadzenia-uslugowe-kolorowe |
Urządzenia usługowe kolorowe |
urzadzenia-produkcyjne-monochromatyczne |
Urządzenia produkcyjne monochromatyczne |
urzadzenia-produkcyjne-kolorowe |
Urządzenia produkcyjne kolorowe |
drukarki-monochromatyczne |
Drukarki monochromatyczne |
drukarki-kolorowe |
Drukarki kolorowe |
powielacze-cyfrowe-riso-dlaczego-riso |
Powielacze cyfrowe RISO - dlaczego RISO? |
powielacze-cyfrowe-riso-urzadzenia |
Powielacze cyfrowe RISO - urządzenia |
plotery |
Plotery |
finansowanie |
Finansowanie |
serwis |
Serwis |
uslugi |
Usługi |
kontakt |
Kontakt |
szybki-kontakt |
Szybki kontakt |
Key usages:
application/controllers/admin/page.php— edit page content (title, header, content, meta_*)application/controllers/front/page.php— public display;show($name)andcontact()methodsapplication/helpers/categories.php— renders hierarchical navigation menus usingid,name,title,parent_idapplication/views/front/page_show.php— rendersheaderandcontentapplication/views/front/page_contact.php— renders contact pageheaderandcontent
gallery
Purpose: Photo gallery albums. Each gallery has a name/slug and a collection of images. Sorted by creation date ascending.
Model: application/models/gallery.php → Gallery_Model extends ORM
$table_names_plural = FALSE→ table name isgallery$has_many = array('gallery_images')→ links togallery_imagetable viagallery_idFK$sorting = array('created_at' => 'ASC')→ default sort order
Columns:
| Column | Type | Nullable | Notes |
|---|---|---|---|
id |
INT (PK, AI) | NO | Primary key, auto-increment. |
name |
VARCHAR | NO | URL slug / unique identifier. Used for lookup. |
title |
VARCHAR | YES | Human-readable gallery name displayed in UI. |
created_at |
DATETIME | YES | Creation timestamp. Used for ASC sort order. |
Note: Additional columns (e.g.
description,cover_image) may exist but are not referenced in source code. The column set above is confirmed by code evidence.
Relationships:
has_many→gallery_imageviagallery_image.gallery_id
Key usages:
application/models/gallery.php— ORM definition- No admin controller found in the current codebase snapshot — gallery management may not yet be implemented or may exist outside the explored scope.
gallery_image
Purpose: Individual images belonging to a gallery album. Sorted by id ascending (insertion order).
Model: application/models/gallery_image.php → Gallery_Image_Model extends ORM
$table_names_plural = FALSE→ table name isgallery_image$belongs_to = array('gallery')→ foreign keygallery_idreferencesgallery.id$sorting = array('id' => 'ASC')
Columns:
| Column | Type | Nullable | Notes |
|---|---|---|---|
id |
INT (PK, AI) | NO | Primary key, auto-increment. |
gallery_id |
INT (FK) | NO | Foreign key → gallery.id. Populated by Kohana ORM convention. |
filename |
VARCHAR | YES | Stored filename of the uploaded image (inferred from upload config). |
title |
VARCHAR | YES | Optional image caption / alt text. |
Note: Column names for
gallery_image(beyondidandgallery_id) are not directly referenced in any controller or view in the explored source.filenameandtitleare inferred from typical Kohana gallery patterns and the upload config presence. Verify against live database.
Relationships:
belongs_to→galleryviagallery_id→gallery.id
news
Purpose: News/blog articles. Sorted by creation date descending (newest first). No admin controller was found in the explored source — may be partially implemented or planned.
Model: application/models/news.php → News_Model extends ORM
$table_names_plural = FALSE→ table name isnews$sorting = array('created_at' => 'DESC')- Unique key lookup by
nameslug supported.
Columns:
| Column | Type | Nullable | Notes |
|---|---|---|---|
id |
INT (PK, AI) | NO | Primary key, auto-increment. |
name |
VARCHAR | NO | URL slug / unique identifier. Unique constraint expected. |
title |
VARCHAR | YES | Article headline. |
content |
MEDIUMTEXT | YES | Article body HTML. |
created_at |
DATETIME | YES | Publication/creation timestamp. Used for DESC sort. |
Note: Only
nameandcreated_atare confirmed by model code.titleandcontentare inferred from structural similarity to thepagetable and common news patterns. Additional columns may exist. Verify against live database.
Relationships: None declared in ORM.
ORM Conventions (Kohana 2.x)
These conventions apply to all tables above and govern how Kohana resolves columns automatically:
| Convention | Detail |
|---|---|
| Primary key | id (INT, auto-increment) — default for all models |
| Timestamps | created_at and updated_at — auto-populated when present |
| Foreign keys | {related_model}_id — e.g. gallery_id in gallery_image |
has_many target table |
Uses the child model's $table_name and looks up {parent}_id FK |
$table_names_plural = FALSE |
Overrides default pluralisation — table name matches model name exactly |
Confidence Levels
| Table | Confidence | Basis |
|---|---|---|
user |
HIGH | All columns directly referenced in controllers/install |
page |
HIGH | All columns directly referenced in controllers/views |
gallery |
MEDIUM | id, name, created_at confirmed; other cols inferred |
gallery_image |
LOW-MEDIUM | Only id and gallery_id confirmed; rest inferred |
news |
LOW-MEDIUM | Only id, name, created_at confirmed; rest inferred |
Columns marked as inferred should be verified against the live
host420804_dbMySQL database or a mysqldump before any schema migrations are written.