Журнал изменений
Drop core/template.php content and all setTemplate* functions; wire all remaining call sites to $tpl->getHtmlFrag(); extract visitor tracking from setHead() into three dedicated functions.
Core changes:
- Legacy template system (core/template.php, core/system.php):
- Emptied core/template.php — all setTemplate* functions removed
- Switched require from core/template.php to core/classes/template.php
- Replaced $GLOBALS['tpl'] with direct global $tpl in closures
- Renamed param $tpl to $frag in setPageNumbers() and num_ajax()
- Fixed uninitialized $barr in getBlocks()
- Visitor tracking extraction (core/system.php):
- Extracted session tracking into updateSessionTrack()
- Extracted referer tracking into updateRefererTrack()
- Extracted statistics tracking into updateStatsTrack()
- Theme template function refactor (templates/admin/index.php, templates/lite/index.php):
- setTemplateHead() replaced by getAdminHeadVars() / getThemeHeadVars() — returns array
- setTemplateFoot() replaced by getThemeFootVars() — returns array
- setTemplateBlock() removed from both template files
- Call site migration (core/admin.php, core/user.php, admin/index.php, index.php):
- All remaining setTemplateBlock() and setTemplateWarning() calls replaced with $tpl->getHtmlFrag()
- Tests cleanup (tests/):
- Removed TemplateBridgeFallbackTest, TemplateBridgeFlowTest, TemplateIfTest, TemplateTest
- Updated ViewTestBootstrap and TemplateValidationTest for new class path
- Misc (modules/main/index.php, templates/default/layouts/main.html):
- Fixed mojibake in Russian content strings to proper UTF-8
- Added templates/default/layouts/main.html as new default layout file
Benefits:
- Single Template class is now the only rendering engine; old string-replace system removed
- Visitor tracking isolated in named functions; setHead() reduced in scope
- Theme functions return data arrays instead of rendered strings
Technical notes:
- setTemplateBlock(), setTemplateWarning(), setTemplateBasic() no longer exist
- storage/counter/ips.log removed from version control
Core changes:
- modules/order/admin/info/russian.html: removed (replaced by Markdown)
- modules/order/admin/info/ru.md: new Markdown version of order admin docs
- admin/info/database/ru.md: updated database admin documentation
Extended description: Complete replacement of setTemplateBasic() calls with $tpl->getHtmlFrag() in the core system files.
Core changes:
- core/system.php: code, quote, hide, categories fragments via $GLOBALS['tpl']
- core/admin.php: admin panel core helpers
- core/template.php: template engine core
- core/user.php: user system helpers
Benefits:
- Core layer fully migrated to new Template API
- setTemplateBasic() can now be considered deprecated/unused
Extended description: Complete replacement of setTemplateBasic() calls with $tpl->getHtmlFrag() in all remaining frontend module index.php and common.php files.
Core changes:
- modules/auto_links/index.php
- modules/changelog/common.php
- modules/clients/index.php
- modules/content/index.php
- modules/faq/index.php, files/index.php, forum/index.php
- modules/help/index.php, jokes/index.php, links/index.php
- modules/media/index.php, news/index.php, pages/index.php
- modules/search/index.php, users/index.php
- modules/voting/index.php, whois/index.php
Benefits:
- All frontend modules now use unified Template API
- Completes the full setTemplateBasic -> getHtmlFrag migration
Extended description: Complete replacement of setTemplateBasic() calls with $tpl->getHtmlFrag() in admin/index.php and all admin/modules/*.php files.
Core changes:
- admin/index.php: main admin entry point
admin/modules/*.php: 24 admin panel modules (admins, blocks, categories, comments, config, database, editor, favorites, fields, groups, lang, messages, modules, monitor, newsletter, privat, ratings, referers, replace, scheduler, security, statistic, template, uploads)
Benefits:
- Completes full admin layer migration to Template API
- monitor.php: nested helper arrays cleaned of {%key%} wrappers
Technical notes:
- global $tpl; moved inside function bodies where needed
- basic-monitor.html handles 60+ variables via flat key/value map
Extended description: Complete replacement of setTemplateBasic() calls with $tpl->getHtmlFrag() across all 23 module admin/index.php files.
Core changes:
- 23 files: modules/*/admin/index.php
- Primary patterns: open, close, form-conf fragments
- Added global $tpl; where missing inside function bodies
Benefits:
- Uniform Template API across entire admin layer
- Fragments resolved from templates/admin/fragments/ directory
Technical notes:
- setTemplateBasic('open') -> $tpl->getHtmlFrag('open', [])
- setTemplateBasic('form-conf', ['{%key%}' => $val]) -> $tpl->getHtmlFrag('form-conf', ['key' => $val])
Extended description: Complete replacement of all setTemplateBasic() calls with $tpl->getHtmlFrag() in the account and shop frontend modules.
Core changes:
modules/account/index.php: migrated ~57 calls across all functions (newuser, finnewuser, view, profil, last, privat, favorites, passlost, passmail, edithome)
modules/shop/index.php: migrated 24 calls across all functions (shop, liste, view, kasse, clients, rech, partners)
- Added global $tpl; declarations to clients() and rech() functions in shop
Benefits:
- Consistent Template API usage across all frontend modules
- Auto-escaped output via {{ }} prevents XSS by default
- Flat key/value arrays instead of nested {%key%} wrappers
Technical notes:
- if_flag booleans flattened: ['if_flag' => ['bool' => $x]] -> ['key' => $x]
- Raw HTML passed via {{{ }}} triple braces in templates
All existing template root files for admin and lite themes have been moved into the fragments/ subdirectory to align with the new Template runtime API. New fragment templates for account, shop, assoc, liste, and base UI elements were added to templates/default/fragments/ and matching themes.
Core changes:
- Admin templates relocated (templates/admin/):
- Moved 18 root HTML files (open, close, form-conf, panel-admin, etc.) into fragments/
- form-conf.html converted from {%var%}/{%if%} to {{ }}/{{{ }}}/{% if %} syntax
- Lite templates relocated (templates/lite/):
- Moved ~120 root HTML files into fragments/ subdirectory
- All account-, shop-, assoc-, liste-, forum-, voting- fragments migrated
- New default fragments (templates/default/fragments/):
- 22 account-* templates (login, register, view, edit, avatar, passlost, etc.)
- 13 shop- templates (title-link, kasse-form, order-table, rech, partners-, etc.)
- basic-shop.html, basic.html, assoc-, liste-, table-close, users-*, voting-basic
Benefits:
- Fragment templates now resolved via $tpl->getHtmlFrag() in all themes
- Consistent fragments/ subdirectory layout across default, admin, lite, simple themes
- XSS boundary enforced: {{ }} for text, {{{ }}} for pre-built HTML
Technical notes:
- templates/admin/fragments/ previously only had alert.html; now has 19 files
- templates/lite/fragments/ newly populated with full fragment set
- No change to template engine code; only file locations updated
Replace all setTemplateBasic('fragment-name', ['{%key%}' => val]) calls with $tpl->getHtmlFrag('fragment-name', ['key' => val]) in every affected frontend and admin module. Removes if_flag array wrapper; boolean open/close flags are now passed directly.
Core changes:
- Forum (modules/forum/index.php):
Migrate 21 calls: forum-cat-wrap×4, forum-cat-basic×2, forum-cat-info, forum-list-wrap×2, forum-list-basic-wrap×2, forum-list-basic, forum-list-info, forum-view-wrap×2, forum-view-basic, forum-view-change×2, forum-all-open×3
- Media (modules/media/index.php):
- Migrate media-select-option×4, media-form-add
- Files + RSS + Whois (modules/files, rss, whois/index.php):
- files: files-add-upload-row, files-add-input-row×3, form-add
- rss: rss-option×2, rss-info-form, rss-read-forms
whois: 10 whois-* calls (result×2, option, license-form, license-add-button, domain-form, add-form, info-button, output-open, output-line, output-close)
- Shared form-add (auto_links, faq, help, jokes, links, news, pages):
- Each module's add() migrated to form-add fragment
- News + Shop (modules/news, shop/index.php):
- grid-table, grid-table-row, grid-table-cell migrated
- Voting (modules/voting/index.php):
- voting-home-wrap×2, voting-home migrated
- Clients + Content + Contact + Recommend + FAQ (modules/*/index.php):
- Respective fragment calls migrated per module
- Changelog admin (modules/changelog/admin/index.php):
- Admin changelog view migrated to Template runtime
Benefits:
- Legacy setTemplateBasic() fully eliminated from all migrated modules
- Key names normalised (no {%…%} wrappers, no if_flag arrays)
- XSS boundary enforced by template syntax, not scattered htmlspecialchars
Technical notes:
- open/close flag: ['if_flag' => ['open' => bool]] → ['open' => bool]
- Pre-built HTML values (add_menu, filterMarkdown, ajax_rating) → raw {{{ }}}
forum-view-basic: date/ip/post_count/group corrected to raw {{{ }}} (they carry <span>/<a> HTML, not plain text)
Introduce HTML fragment files for the new Template runtime across all three frontend themes (default, simple, lite). Each fragment corresponds to one setTemplateBasic() slice that has been replaced by getHtmlFrag() in the module PHP layer.
Core changes:
- Admin partials (templates/admin/partials/, templates/*/partials/):
- Add changelog.html partial for admin and all frontend themes
- Frontend fragments — shared across default/simple/lite (templates/*/fragments/):
- faq: faq-quicklinks-open/row/close
- content: content-list-open/basic
- clients: clients-list-open/basic/info
- recommend: recommend-form/mail-link/mail-message/success-text
- contact: contact-form
whois: whois-result/option/license-form/license-add-button/ domain-form/add-form/info-button/output-open/output-line/output-close
- files: files-add-input-row/upload-row
- rss: rss-option/info-form/read-forms
- media: media-select-option/form-add
- form-add (shared by auto_links, faq, jokes, help, news, links, pages)
- grid: grid-table/row/cell
- voting: voting-home-wrap/home
forum: forum-all-open/cat-wrap/cat-basic/cat-info/list-wrap/ list-basic-wrap/list-basic/list-info/view-wrap/view-basic/view-change
Misc UI: action-link, admin-menu, auto-links-*, back-button, cat-navi, category-*, date-badge, files-download-form, files-external-link, hit-badge, media-link-*, media-post-badge, reads-badge, shop-*, whois-status
Benefits:
- All fragment variables use {{ }} escaped or {{{ }}} raw consistently
- XSS boundary enforced at template level per project rules
- Three themes share identical fragments; divergence handled per-theme
Technical notes:
Triple-brace {{{ }}} used for pre-built HTML (add_menu, filterMarkdown, ajax_rating, user_geo_ip, pre-escaped attributes)
- Double-brace {{ }} used for user text, numbers, labels
- if_flag wrapper removed; boolean flags passed directly as bool