PHPackages                             resofire/discussion-participants - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. resofire/discussion-participants

ActiveFlarum-extension[Image &amp; Media](/categories/media)

resofire/discussion-participants
================================

Shows avatars of users who have participated in a discussion.

v2.1.0(2mo ago)1799↓78%MITPHPPHP ^8.3

Since Mar 10Pushed 2mo agoCompare

[ Source](https://github.com/ResofireV2/discussion-participants)[ Packagist](https://packagist.org/packages/resofire/discussion-participants)[ RSS](/packages/resofire-discussion-participants/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (10)Dependencies (2)Versions (20)Used By (0)

resofire/discussion-participants
================================

[](#resofirediscussion-participants)

Shows an inline avatar strip of the first 6 repliers in each discussion on the Flarum discussion list. A "+N more" badge opens a paginated modal listing all participants.

How it works
------------

[](#how-it-works)

### Avatar strip

[](#avatar-strip)

Participant avatars are served from a dedicated `discussion_participant_previews` table rather than from a live query against `posts`. This table stores at most 6 rows per discussion — the first 6 repliers by first-post date, with the original poster excluded (Flarum already shows the OP's avatar natively in the discussion list item).

The discussion list query fetches at most `20 discussions × 6 rows = 120 rows`, always bounded regardless of how active discussions are.

Preview rows are written at post-event time (Posted, Hidden, Restored, Deleted) — not at read time. This moves cost to writes (rare) rather than reads (every page load).

### Overflow badge

[](#overflow-badge)

The overflow count (+N more) is derived from `participantCount`, a native Flarum core attribute maintained by `DiscussionMetadataUpdater`. The formula is simply `participantCount - 7`: 7 being the OP avatar plus the 6 avatars in the strip. No extra query is needed and the badge only appears once the strip is full.

### Live updates

[](#live-updates)

When a user posts for the first time in a discussion, their avatar is appended to the strip immediately in the UI without a page refresh, provided the strip has fewer than 6 entries. The overflow badge also updates instantly via Flarum's own post-save API response.

### Paginated modal

[](#paginated-modal)

The "+N more" button opens a modal that hits a dedicated endpoint (`GET /api/discussions/{id}/participants`) returning 20 users per page with minimal attributes (id, username, slug, avatarUrl). No full UserSerializer, no single large payload.

Installation
------------

[](#installation)

```
composer require resofire/discussion-participants
php flarum migrate
php flarum cache:clear
```

Then enable the extension in the Flarum admin panel.

### Existing forums (one-time backfill)

[](#existing-forums-one-time-backfill)

For forums with existing discussions, run the backfill command to populate the preview table:

```
php flarum participants:populate
```

Alternatively, use the **Recalculate** button in the extension's admin page, which processes discussions in chunks of 2,000 and displays per-chunk timing and a total elapsed time.

Upgrading from resofire-v2/discussion-participants
--------------------------------------------------

[](#upgrading-from-resofire-v2discussion-participants)

1. Disable the old extension in the admin panel
2. `composer remove resofire-v2/discussion-participants`
3. `composer require resofire/discussion-participants`
4. `php flarum migrate`
5. `php flarum cache:clear`
6. Enable the new extension in the admin panel

Your existing data (`discussion_participant_previews` table and `participant_count` column) is preserved — no recalculation needed.

Memory profile
--------------

[](#memory-profile)

ScenarioWithout extensionWith extensionDiscussion list (20 discussions)Up to 2,000 User models120 rows, 6 fields eachParticipant data per request~6 MB~50 KBModal (300 participants)300 models, ~500 KB JSON20 models per page, ~4 KB JSONRequirements
------------

[](#requirements)

- Flarum 1.8 or later

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance86

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

19

Last Release

84d ago

Major Versions

v0.1.0 → v2.0.02026-03-25

v0.1.1 → v2.0.12026-03-25

v1.0.4 → v2.1.02026-04-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/ce3b79a1a273ec4db4bf7390fdb50584c02c4e69a55c032ef67746fb13b6c3c3?d=identicon)[ResofireV2](/maintainers/ResofireV2)

---

Top Contributors

[![ResofireV2](https://avatars.githubusercontent.com/u/266603343?v=4)](https://github.com/ResofireV2 "ResofireV2 (8 commits)")

### Embed Badge

![Health badge](/badges/resofire-discussion-participants/health.svg)

```
[![Health](https://phpackages.com/badges/resofire-discussion-participants/health.svg)](https://phpackages.com/packages/resofire-discussion-participants)
```

###  Alternatives

[flarum-lang/russian

Russian language pack for Flarum.

12127.5k](/packages/flarum-lang-russian)[flarum-lang/french

French language pack to localize the Flarum forum software plus its official and third-party extensions.

1936.5k](/packages/flarum-lang-french)[fof/formatting

Customize TextFormatter with plugins through the admin interface

27118.3k4](/packages/fof-formatting)[flarum-lang/german

German language pack for Flarum.

2149.7k](/packages/flarum-lang-german)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
