Журнал изменений
Rewrites the content admin module to use current SLAED conventions: short op-aligned function names, $afile instead of $admin_file, inline $conf['content'] access instead of global $confcn, and the unified setTemplateBasic / getAdminTabs template API.
Core changes:
- Navigation (modules/content/admin/index.php):
- content_navi() → navi() with typed int parameters
- Switched to getAdminTabs() + name=content&op=... URL pattern
- Function renames (modules/content/admin/index.php):
- content() → retained, globals cleaned up
- content_add() → add()
- content_delete() → delete()
- content_conf() → conf()
- content_info() → info()
- Global variable cleanup (modules/content/admin/index.php):
- $admin_file → $afile
- $confcn → $conf['content'] with null-coalesce defaults
- tpl_eval() → setTemplateBasic()
- tpl_warn() → setTemplateWarning()
- while (list()) → while ([]) destructuring
Benefits:
- Eliminates deprecated $confcn global and panel() call in navi
- Consistent function naming aligned with router op values
- Template API unified with other modernized modules
Technical notes:
- Behavior unchanged; pure refactor
- Copyright year updated to 2026
Aligns the contact admin module with current SLAED conventions: renamed functions to short lowercase names matching the op values, replaced global $admin_file with $afile, and switched template helpers to the new setTemplateBasic / getAdminTabs API.
Core changes:
- Navigation and op routing (modules/contact/admin/index.php):
- contact_navi() → navi() with typed int parameters
- Uses getAdminTabs() instead of navi_gen()
- Op URLs updated to name=contact&op=... pattern
- CRUD functions renamed (modules/contact/admin/index.php):
- contact_conf() → contact()
- contact_conf_save() → save()
- contact_info() → info()
- Global variable cleanup (modules/contact/admin/index.php):
- $admin_file → $afile
- $confco → $conf['contact'] (inline array access)
- tpl_eval() → setTemplateBasic()
- adm_info() signature updated to new arg order
Benefits:
- Consistent naming with other modernized admin modules
- Eliminates deprecated $confco global
- Template calls use the unified setTemplateBasic API
Technical notes:
- Behavior unchanged; pure refactor
- Copyright year updated to 2026
Aligns the whois module language file naming with the project-wide two-letter ISO 639-1 convention used after the info-file rename.
Core changes:
- Renamed language files (modules/whois/language/):
- lang-english.php → en.php
- lang-french.php → fr.php
- lang-german.php → de.php
- lang-polish.php → pl.php
- lang-russian.php → ru.php
- lang-ukrainian.php → uk.php
Benefits:
- Consistent ISO 639-1 naming across language/ and admin/info/ directories
- Language loader can use the same locale key for both directories
Technical notes:
- File contents unchanged; pure rename operation
- Any caller using include/require with old names must be updated separately
Standardises the naming of per-module admin help files: the old full-word names (english.html, russian.html, …) are replaced with two-letter ISO 639-1 codes (en.html, ru.html, …) that match the language identifiers used everywhere else in the codebase.
Core changes:
- Renamed per-module info files:
faq, files, forum, help, jokes, links, media, money, news, pages, shop, voting, whois → all six language variants renamed
- english.html → en.html, french.html → fr.html,
german.html → de.html, polish.html → pl.html,
russian.html → ru.html, ukrainian.html → uk.html
- Global RSS info files migrated to module (admin/info/):
- admin/info/rss-de/en/fr/pl/ru/uk.html → deleted (old global location)
- modules/rss/admin/info/de/en/fr/pl/ru/uk.html → added (module-local)
- Whois admin info files:
- admin/info/whois-.html → modules/whois/admin/info/.html (ISO names)
Benefits:
- Consistent file naming aligned with ISO 639-1 language codes
- Easier programmatic lookup: adm_info() can resolve locale to filename directly
- Removes ambiguity between long-name and code-based file resolution
Technical notes:
- Content of HTML files unchanged; pure rename operation
- adm_info() callers must use ISO codes (already the standard)
Three independent bugs fixed in the forum public module: duplicate named placeholders in WHERE clauses, reused placeholders in INSERT (l_uid/l_name/ l_time sharing names with earlier params), and a missing head()/foot() pair when a category has no topics.
Core changes:
- Unique WHERE placeholders (modules/forum/index.php):
- category query: :id → :parentid / :cid (used twice in OR condition)
- move(): :val → :id_val / :pid_val in UPDATE SET catid query
- INSERT named params fix (modules/forum/index.php):
l_uid, l_name, l_time now bound as :l_uid / :l_name / :l_time
- Previously reused :postid / :postname / :time — caused rebind errors
- Empty-category guard (modules/forum/index.php):
Added else branch: renders head() + setTemplateWarning(_NO_INFO)
- Prevents blank page when forum category contains no threads
- 5-second redirect back to forum root
Benefits:
- Eliminates PDO named-parameter rebind errors in forum queries
- Proper HTTP response (head/foot wrapper) for empty forum categories
- INSERT now correctly stores l_uid / l_name / l_time independently
Technical notes:
- All bound values remain identical; only parameter names changed
- No schema or API changes; backward compatible
PDO does not allow reusing the same named placeholder more than once in a single query; duplicate :word bindings caused silent data loss or driver errors. Each LIKE column now gets its own numbered parameter.
Core changes:
- Unique LIKE parameters (modules/search/index.php):
- auto_links: :word → :word1, :word2, :word3 (sitename/description/link)
- faq: :word → :word1, :word2 (title/hometext)
- files: :word → :word1, :word2, :word3 (title/description/bodytext)
- forum: :word → :word1, :word2 (title/hometext)
- jokes: :word → :word1, :word2 (title/joke)
- links: :word → :word1, :word2, :word3, :word4 (title/description/bodytext/url)
- media: :word → :word1/:word2/:word3 per search type branch
- news, pages, faq, content: same pattern applied throughout
Benefits:
- Eliminates PDO parameter rebind errors on multi-column LIKE searches
- All LIKE values are bound with the same '%'.$word.'%' value — no logic change
- Consistent placeholder naming across all search branches
Technical notes:
- Pure parameter-naming fix; SQL logic and result sets are unchanged
- Backward compatible: no schema or API changes
Extends getVar() with a new 'defis' filter type that URL-encodes string input while leaving pre-encoded defaults untouched; also normalises all filter key lookups to lowercase so callers may use any casing.
Core changes:
- New filter type (core/security.php):
Add 'defis' => urlencode(trim($v)) to the filters map
- Returns '' (not false) for blank strings
- Skips encoding when the value comes from $default
- Case-insensitive dispatch (core/security.php):
All $filters[$type] lookups replaced with $filters[strtolower($type)]
- Covers both the array-branch and the scalar-branch paths
- Prevents silent no-ops when callers pass mixed-case type strings
- Special defis path (core/security.php):
Dedicated early-return block for 'defis' type
- Falls back to $default as-is (already encoded)
- Returns false only when both value and default are empty
Benefits:
- Enables safe URL-segment encoding via getVar() without raw urlencode() calls
- Eliminates filter-miss bugs caused by type-string casing differences
- Consistent fallback semantics across all filter types
Technical notes:
- No change to existing filter behaviour or function signature
- Backward compatible: callers using lowercase types are unaffected
- 'defis' default is passed through unchanged (expected to be pre-encoded)
Removes stale global variable declarations from forum() and view() to keep function signatures accurate and reduce unnecessary imports.
Core changes:
- Forum frontend (modules/forum/index.php):
- forum(): remove unused $user global
- view(): remove unused $admin_file and $locale globals
Benefits:
- Accurate global declarations prevent confusion during maintenance
- Slight reduction in unnecessary variable imports per request
- Architecture alignment with the $afile rename across the codebase
Technical notes:
- No behavioral change
- Backward compatible
Rewrites the files admin module using standard SLAED conventions: canonical function names, getVar() input handling, prepared SQL statements, and modern template calls. Copyright year updated to 2026.
Core changes:
- Files admin (modules/files/admin/index.php):
- Replace files_navi() with navi() using getAdminTabs()
Rename functions to short canonical names
- files_add() -> add(), files_delete() -> del(), etc.
- Replace all raw $_POST/$_GET with getVar()
- Use prepared SQL statements with named placeholders throughout
- Replace tpl_eval()/tpl_warn() with setTemplateBasic()/setTemplateWarning()
- Replace $admin_file with $afile throughout
- Update op= route names to match new function names
- Switch to single-quoted strings consistently
- Update copyright year to 2026
Benefits:
- SQL injection eliminated throughout the module
- Input validated at entry points via getVar()
- Consistent architecture with other modernized admin modules
- Maintainability improved by short canonical function names
Technical notes:
- op= route values changed to match new function names
- Backward compatible with the database schema
Rewrites the clients admin module using standard SLAED conventions: canonical function names, getVar() input handling, prepared SQL statements, and modern template calls. SQL injection in save/delete queries eliminated. Missing exit after redirects added.
Core changes:
- Clients admin (modules/clients/admin/index.php):
- Replace clients_navi() with navi() using getAdminTabs()
Rename functions to short canonical names:
- clients_add() -> add()
- clients_save() -> save()
- clients_delete() -> del()
- clients_active() -> status()
- clients_info() -> info()
- Replace all raw $_POST/$_GET with getVar()
- Fix SQL injection in save(): prepared statements with named placeholders
- Replace tpl_eval()/tpl_warn() with setTemplateBasic()/setTemplateWarning()
- Replace $admin_file with $afile throughout
- Add exit after header() in del() and status()
- Rewrite switch to compact form with named cases
- Add missing newline at end of file
Benefits:
- SQL injection in save and delete queries eliminated
- Input sanitized via getVar() throughout
- Missing exit after redirect now present
- Consistent naming convention across admin modules
Technical notes:
- op= route values changed to match new function names
- Backward compatible with the database schema