Skip to content

Phase 3: pages for reading - #4

Merged
fiammybe merged 1 commit into
mainfrom
claude/project-thread-kfbxfw
Oct 26, 2026
Merged

fiammybe merged 1 commit into
mainfrom
claude/project-thread-kfbxfw

Conversation

@fiammybe

@fiammybe fiammybe commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

What

All read views for visitors: index, forum, topic (flat and threaded), latest/unread/featured topics, archive, RSS, search, who is online, signatures, ranks, three blocks and six preferences.

How

  • PermissionService is the single place for category access, forum access and view. Switched-off forums are for moderators and webmasters only.
  • ReadTracker keeps topic and forum marks that only move forward. "Mark all as read" is a POST with a token.
  • Post::toArray() hides the text of karma and required-reply posts until KarmaService unlocks them.
  • Own pager, because the core page navigation prints PHP_SELF unescaped. All strings handed to templates are escaped.

Testing

  • 49 integration tests (MySQL 5.5, 5.7 MyISAM, MariaDB 10.11 in CI), 40 unit tests, PHPStan level 6.
  • Clicked through on a real ImpressCMS 2.0.4 install as guest and webmaster. This showed that the core defines the group constants as strings, which made the webmaster check fail. Fixed, with a test and the sandbox now defines them as strings too.
  • Not verifiable yet: comparing against migrated data of the largest install (needs phase 7).

…search and blocks

Permissions, read marks, karma locks, online tracking and thread order live in
services and handlers with integration tests. Verified by clicking through a
real ImpressCMS 2.0.4 installation, which also showed that the core defines
the group constants as strings.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MZy45V5RV9nx6Buq8vqKHr
@fiammybe fiammybe self-assigned this Oct 26, 2026
@fiammybe fiammybe added this to the 1.0 milestone Oct 26, 2026
@fiammybe
fiammybe merged commit f1220a1 into main Oct 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants