Последнии сообщения форума
Всего: 356 Коммитов в репозитории | Отфильтровано: 356 Коммиты | Страница: 1 / 36
Вчера (03.03.2026)
Perf: replace unset() with null assignment for qresult in getSqlQuery()
unset() on an object property removes the property entirely from the
object, causing a property lookup overhead on next access. Assigning
null keeps the property slot initialized and avoids re-allocation.
Core changes:
1. Database::getSqlQuery() (core/classes/pdo.php):
• if (\$this->qresult) unset(\$this->qresult)
→ \$this->qresult = null
• Unconditional assignment removes the conditional branch overhead
Benefits:
• Performance: avoids property re-declaration on each query cycle
• Consistency: property remains defined on the object at all times
• Maintainability: clearer intent (reset vs. remove)
Technical notes:
• Functional behavior identical: qresult is falsy in both cases
• Backward compatibility: no API changes
object, causing a property lookup overhead on next access. Assigning
null keeps the property slot initialized and avoids re-allocation.
Core changes:
1. Database::getSqlQuery() (core/classes/pdo.php):
• if (\$this->qresult) unset(\$this->qresult)
→ \$this->qresult = null
• Unconditional assignment removes the conditional branch overhead
Benefits:
• Performance: avoids property re-declaration on each query cycle
• Consistency: property remains defined on the object at all times
• Maintainability: clearer intent (reset vs. remove)
Technical notes:
• Functional behavior identical: qresult is falsy in both cases
• Backward compatibility: no API changes
Fix: replace bare header('Location:') calls with setRedirect() in index.php
Raw header() calls without exit were used for geo-IP language redirects
and fallback routing, violating the SLAED guardrail (exit after every
redirect). setRedirect() encapsulates both header() and exit atomically.
Core changes:
1. Geo-IP language redirect block (index.php):
• header('Location: index.php?newlang=...') → setRedirect(...) for
en, fr, de, pl, ru, uk locales (6 occurrences)
• Removes implicit fall-through risk after redirect
2. Fallback routing block (index.php):
• header('Location: index.php') + exit → setRedirect('index.php')
(2 occurrences; exit now handled internally by setRedirect)
Benefits:
• Guardrail compliance: no output possible after redirect
• Reduced duplication: exit not repeated manually
• Architecture alignment with setRedirect() API
Technical notes:
• setRedirect() defaults to HTTP 302; behavior unchanged
• Backward compatibility: identical HTTP response for clients
and fallback routing, violating the SLAED guardrail (exit after every
redirect). setRedirect() encapsulates both header() and exit atomically.
Core changes:
1. Geo-IP language redirect block (index.php):
• header('Location: index.php?newlang=...') → setRedirect(...) for
en, fr, de, pl, ru, uk locales (6 occurrences)
• Removes implicit fall-through risk after redirect
2. Fallback routing block (index.php):
• header('Location: index.php') + exit → setRedirect('index.php')
(2 occurrences; exit now handled internally by setRedirect)
Benefits:
• Guardrail compliance: no output possible after redirect
• Reduced duplication: exit not repeated manually
• Architecture alignment with setRedirect() API
Technical notes:
• setRedirect() defaults to HTTP 302; behavior unchanged
• Backward compatibility: identical HTTP response for clients
Fix: correct UTF-8 encoding of copyright symbol in admin module headers
The copyright line in 14 admin module files contained a mojibake
sequence (•) instead of the UTF-8 © symbol, caused by incorrect
encoding during a prior batch operation.
Core changes:
1. Copyright header fix (14 files: modules/*/admin/index.php):
• clients, contact, content, faq, files, forum, help, jokes,
links, news, order, pages, rss, voting, whois
• • 2005 - 2026 → © 2005 - 2026
Benefits:
• Correct UTF-8 output in file headers across all admin modules
• Consistent copyright notice project-wide
Technical notes:
• Single-character encoding fix; no logic changes
• Backward compatibility: not applicable
sequence (•) instead of the UTF-8 © symbol, caused by incorrect
encoding during a prior batch operation.
Core changes:
1. Copyright header fix (14 files: modules/*/admin/index.php):
• clients, contact, content, faq, files, forum, help, jokes,
links, news, order, pages, rss, voting, whois
• • 2005 - 2026 → © 2005 - 2026
Benefits:
• Correct UTF-8 output in file headers across all admin modules
• Consistent copyright notice project-wide
Technical notes:
• Single-character encoding fix; no logic changes
• Backward compatibility: not applicable
Refactor: polish getUserNav() and finalize core/user.php cleanup
Follow-up fixes after the main VerbNoun rename commit: corrects navi()
naming conflict, optimizes getUserNav(), and updates all function comments.
Core changes:
1. navi() → getUserNav(): string (core/user.php):
• Renamed to avoid collision with admin navi() in modules/account/admin
• Added missing return type declaration: string
• 4 parallel arrays → single $navs tuple array
• getUserInfo() null-safe: (getUserInfo() ?? [])['user_id'] ?? 0
• $conf['shop'] global mutation removed; replaced with ?? 0 read
• Strict comparisons: != → !==, == 1 → === 1
• foreach destructuring: [$titl, $itit, $link, $icon]
2. Function comments updated (core/user.php):
• All 19 functions now have accurate, descriptive single-line comments
• Old comments reflected legacy names (savecom, editpost, prmess, etc.)
3. Call sites updated (3 files):
• modules/account/index.php (4 calls)
• modules/clients/index.php (1 call)
• modules/shop/index.php (2 calls)
Benefits:
• No redeclaration risk between user and admin navi()
• $navs tuple pattern eliminates parallel-array sync errors
• Null-safe uid lookup prevents notices on unauthenticated edge cases
naming conflict, optimizes getUserNav(), and updates all function comments.
Core changes:
1. navi() → getUserNav(): string (core/user.php):
• Renamed to avoid collision with admin navi() in modules/account/admin
• Added missing return type declaration: string
• 4 parallel arrays → single $navs tuple array
• getUserInfo() null-safe: (getUserInfo() ?? [])['user_id'] ?? 0
• $conf['shop'] global mutation removed; replaced with ?? 0 read
• Strict comparisons: != → !==, == 1 → === 1
• foreach destructuring: [$titl, $itit, $link, $icon]
2. Function comments updated (core/user.php):
• All 19 functions now have accurate, descriptive single-line comments
• Old comments reflected legacy names (savecom, editpost, prmess, etc.)
3. Call sites updated (3 files):
• modules/account/index.php (4 calls)
• modules/clients/index.php (1 call)
• modules/shop/index.php (2 calls)
Benefits:
• No redeclaration risk between user and admin navi()
• $navs tuple pattern eliminates parallel-array sync errors
• Null-safe uid lookup prevents notices on unauthenticated edge cases
Refactor: rename functions in core/user.php to SLAED VerbNoun convention
Standardizes all 16 non-conforming function names in core/user.php and
updates every call site across 20 files so the codebase is consistent
with the approved verb set (get, set, add, update, delete, is, check, filter).
Core changes:
1. Function renames (core/user.php):
• getusrinfo() → getUserInfo() (no camelCase)
• is_mod_group() → isModGroup() (snake_case)
• userblock() → getUserBlock() (missing verb)
• savecom() → addComment() (save not in SLAED verbs)
• editpost() → updatePost() (edit not in SLAED verbs)
• prmess() → getPmView() (no verb, no camelCase)
• prmesssend() → addPmMsg() (no verb, no camelCase)
• prmesssave() → setPmSaved() (no verb, no camelCase)
• prmessdel() → deletePmMsg() (no verb, no camelCase)
• favorview() → getFavorBtn() (no verb, no camelCase)
• favoradd() → addFavor() (verb at end, no camelCase)
• favorliste() → getFavorList() (no verb, no camelCase)
• favordel() → deleteFavor() (no verb, no camelCase)
• rss_channel() → getRssChannel() (snake_case)
• open_search() → getOpenSearch() (snake_case)
• open_xsl() → getOpenXsl() (snake_case)
2. Code quality fixes (core/user.php):
• list() → [] destructuring (28 occurrences)
• Indentation: 1-space global lines → 4 spaces
• getFavorBtn($fid, $mod): added type hints int/string
• Strict comparisons in isModGroup() and addComment()
3. Call sites updated in 20 files:
• core/system.php, core/template.php, index.php
• blocks/block-user_info.php, templates/lite/index.php
• modules/account, auto_links, contact, faq, files, forum,
help, links, media, money, news, order, pages, recommend, shop
Benefits:
• Consistent SLAED VerbNoun naming across core/user.php
• list() removal eliminates PHP 8 deprecation warnings
• Strict comparisons prevent type-juggling edge cases
Technical notes:
• op= URL routing strings (savecom, editpost, prmess, etc.) unchanged
• No logic changes; signature types only on getFavorBtn
• Backward compatibility: internal API only
updates every call site across 20 files so the codebase is consistent
with the approved verb set (get, set, add, update, delete, is, check, filter).
Core changes:
1. Function renames (core/user.php):
• getusrinfo() → getUserInfo() (no camelCase)
• is_mod_group() → isModGroup() (snake_case)
• userblock() → getUserBlock() (missing verb)
• savecom() → addComment() (save not in SLAED verbs)
• editpost() → updatePost() (edit not in SLAED verbs)
• prmess() → getPmView() (no verb, no camelCase)
• prmesssend() → addPmMsg() (no verb, no camelCase)
• prmesssave() → setPmSaved() (no verb, no camelCase)
• prmessdel() → deletePmMsg() (no verb, no camelCase)
• favorview() → getFavorBtn() (no verb, no camelCase)
• favoradd() → addFavor() (verb at end, no camelCase)
• favorliste() → getFavorList() (no verb, no camelCase)
• favordel() → deleteFavor() (no verb, no camelCase)
• rss_channel() → getRssChannel() (snake_case)
• open_search() → getOpenSearch() (snake_case)
• open_xsl() → getOpenXsl() (snake_case)
2. Code quality fixes (core/user.php):
• list() → [] destructuring (28 occurrences)
• Indentation: 1-space global lines → 4 spaces
• getFavorBtn($fid, $mod): added type hints int/string
• Strict comparisons in isModGroup() and addComment()
3. Call sites updated in 20 files:
• core/system.php, core/template.php, index.php
• blocks/block-user_info.php, templates/lite/index.php
• modules/account, auto_links, contact, faq, files, forum,
help, links, media, money, news, order, pages, recommend, shop
Benefits:
• Consistent SLAED VerbNoun naming across core/user.php
• list() removal eliminates PHP 8 deprecation warnings
• Strict comparisons prevent type-juggling edge cases
Technical notes:
• op= URL routing strings (savecom, editpost, prmess, etc.) unchanged
• No logic changes; signature types only on getFavorBtn
• Backward compatibility: internal API only
Fix: rename addmail() → addAdminMail() to resolve fatal redeclaration
addmail() collided with addMail() (core/security.php) because PHP
function names are case-insensitive; renamed to addAdminMail() to
follow VerbNoun convention and eliminate the fatal redeclaration error.
Core changes:
1. Function declaration (core/system.php):
• addmail() → addAdminMail(); comment updated
• No logic changes, signature unchanged
2. Call sites (11 files):
• core/user.php
• modules/news, links, files, media, jokes, faq, pages, help, whois, auto_links
Benefits:
• Resolves Fatal error: Cannot redeclare function addMail()
• Consistent VerbNoun camelCase naming per SLAED §3-4
• No ambiguity between low-level addMail() and admin-notify addAdminMail()
Technical notes:
• addMail() (security.php) queues a single email
• addAdminMail() (system.php) dispatches notifications to all subscribed admins
• Backward compatibility: internal API only; no external callers
function names are case-insensitive; renamed to addAdminMail() to
follow VerbNoun convention and eliminate the fatal redeclaration error.
Core changes:
1. Function declaration (core/system.php):
• addmail() → addAdminMail(); comment updated
• No logic changes, signature unchanged
2. Call sites (11 files):
• core/user.php
• modules/news, links, files, media, jokes, faq, pages, help, whois, auto_links
Benefits:
• Resolves Fatal error: Cannot redeclare function addMail()
• Consistent VerbNoun camelCase naming per SLAED §3-4
• No ambiguity between low-level addMail() and admin-notify addAdminMail()
Technical notes:
• addMail() (security.php) queues a single email
• addAdminMail() (system.php) dispatches notifications to all subscribed admins
• Backward compatibility: internal API only; no external callers
Fix: complete is_admin → isAdmin rename in core/system.php
Replaces all remaining legacy function calls that were missed in the
previous Refactor commit, ensuring system.php is consistent with the
merged isAdmin(bool \$super = false) API in core/security.php.
Core changes:
1. Function call replacements (core/system.php):
• is_admin() → isAdmin() (12 occurrences)
• isAdminSuper() → isAdmin(true) (4 occurrences)
Benefits:
• No legacy shim required; all call sites now use unified API
• Static cache in isAdmin() shared across all 16 call sites per request
• One DB query per request regardless of super check
Technical notes:
• isAdmin(true) is equivalent to removed isAdminSuper()
• isAdmin() is equivalent to removed is_admin()
• Backward compatibility: none needed; legacy functions deleted
previous Refactor commit, ensuring system.php is consistent with the
merged isAdmin(bool \$super = false) API in core/security.php.
Core changes:
1. Function call replacements (core/system.php):
• is_admin() → isAdmin() (12 occurrences)
• isAdminSuper() → isAdmin(true) (4 occurrences)
Benefits:
• No legacy shim required; all call sites now use unified API
• Static cache in isAdmin() shared across all 16 call sites per request
• One DB query per request regardless of super check
Technical notes:
• isAdmin(true) is equivalent to removed isAdminSuper()
• isAdmin() is equivalent to removed is_admin()
• Backward compatibility: none needed; legacy functions deleted
Refactor: replace save_datetime() with getVar('req', ..., 'time') and fix quote style
Migrates remaining save_datetime() calls to the unified getVar() API,
and corrects a single-quote style issue in the changelog French language file.
Core changes:
1. modules/faq/admin/index.php:
• save_datetime(1, 'time') → getVar('req', 'time', 'time') (×2, add/save)
2. modules/changelog/language/fr.php:
• Double to single quote on one define() line
Benefits:
• Consistent input handling via getVar() throughout admin modules
• No more calls to removed save_datetime() helper
Technical notes:
• Behaviour unchanged; getVar 'time' type validates and formats identically
and corrects a single-quote style issue in the changelog French language file.
Core changes:
1. modules/faq/admin/index.php:
• save_datetime(1, 'time') → getVar('req', 'time', 'time') (×2, add/save)
2. modules/changelog/language/fr.php:
• Double to single quote on one define() line
Benefits:
• Consistent input handling via getVar() throughout admin modules
• No more calls to removed save_datetime() helper
Technical notes:
• Behaviour unchanged; getVar 'time' type validates and formats identically
Test: update test suite for renamed functions and API changes
Adapts all test files to the camelCase rename sprint: function calls,
helper wrappers and comments updated throughout the Unit and integration
test suites.
Core changes:
1. tests/Unit/InputFilterTest.php:
• saveText → filterHtml in helper and comments
2. tests/Unit/PasswordHashTest.php, TemplateIfTest.php:
• Minor naming alignment
3. tests/bootstrap.php:
• Updated function references
4. Validation tests (BlockValidationTest, SecurityValidationTest, etc.):
• Updated function name expectations
Benefits:
• Test suite reflects current API
• No regressions introduced by the rename sprint
Technical notes:
• phpunit: all tests expected to pass after rename completion
helper wrappers and comments updated throughout the Unit and integration
test suites.
Core changes:
1. tests/Unit/InputFilterTest.php:
• saveText → filterHtml in helper and comments
2. tests/Unit/PasswordHashTest.php, TemplateIfTest.php:
• Minor naming alignment
3. tests/bootstrap.php:
• Updated function references
4. Validation tests (BlockValidationTest, SecurityValidationTest, etc.):
• Updated function name expectations
Benefits:
• Test suite reflects current API
• No regressions introduced by the rename sprint
Technical notes:
• phpunit: all tests expected to pass after rename completion
Docs: update documentation for renamed security and utility functions
Updates all user-facing and developer-facing documentation to reflect the
camelCase function rename sprint completed in core/security.php.
Core changes:
1. CONTRIBUTING.md:
• getVar() type table updated (filterWord, filterHtml, filterFields)
2. SECURITY.md:
• New section: renamed security functions reference table (20 entries)
3. UPGRADING.md:
• Breaking changes section: full migration table for renamed functions
• Version history updated
4. docs/TEMPLATES.md:
• Date updated to 2026
5. docs/TESTS.md:
• Function names updated to camelCase equivalents
Benefits:
• Developers can look up old names and find new equivalents
• Migration path is clearly documented for upgraders
Technical notes:
• No code changes; documentation only
• Covers all renames tracked in GLOSSARY.md
camelCase function rename sprint completed in core/security.php.
Core changes:
1. CONTRIBUTING.md:
• getVar() type table updated (filterWord, filterHtml, filterFields)
2. SECURITY.md:
• New section: renamed security functions reference table (20 entries)
3. UPGRADING.md:
• Breaking changes section: full migration table for renamed functions
• Version history updated
4. docs/TEMPLATES.md:
• Date updated to 2026
5. docs/TESTS.md:
• Function names updated to camelCase equivalents
Benefits:
• Developers can look up old names and find new equivalents
• Migration path is clearly documented for upgraders
Technical notes:
• No code changes; documentation only
• Covers all renames tracked in GLOSSARY.md





