A daily check-in: one click a day earns points, the plugin keeps the streak, and the member sees a seven-day strip.
Where it shows up
- a Check in tile on the points page (
/points,region.points.actions) with the current streak once done; - the /checkin page: a hero with the streak and balance, the last seven days, and the check-in button;
- a Daily check-in rule in Admin → Points, so the amount can be tuned there like any other earning rule;
- the points ledger uses the flame icon and the "Daily check-in" reason for these awards.
Rules
- One check-in per member per day. The
(user_id, day)pair is unique and the row is inserted before the award, so two
requests racing cannot pay twice. - The award goes through
points_award()with the ruletabre_checkin, referenceYYYYMMDD, so the ledger, the daily
cap and the admin log stay in the core. - The streak counts back from today (or from yesterday before the first check-in of the day) over at most 60 stored
days. - The amount comes from the points rule, not from the plugin settings directly: turning the rule off in Admin → Points
disables check-in without changing the plugin. - The check-in form is a POST with the CSRF token.
Settings
| Setting | Meaning |
|---|---|
| Points per check-in | Default amount used to seed the points rule, 1–100, default 10. Admin → Points overrides it. |
Data and uninstall
One row per member per day in plugin_tabre_checkin (user, day, points, created_at). Uninstalling drops that table;
the points that were already awarded stay in the core ledger.
The manifest uses region.points.actions, points.rules, points.reasons, points.icon and the /checkin route.