Hub managers
Check-in
Global Check-in releases records that an editor left locked. It is one screen, under Site → Maintenance → Global Check-in, and on a healthy hub it is empty. You open it when someone reports that they cannot edit a record because the interface says it is already being edited by somebody who is no longer editing it.
The report arrives in a hurry, and it is always the same shape. A staff member opens the front-page article on Friday afternoon to fix a date, shuts the laptop, and goes home. On Monday the communications officer needs that article and cannot have it: the list draws a padlock beside the row and refuses the edit form. Nothing on the hub clears that by itself. This screen is how you clear it.
Clearing a stuck record in a hurry
If you already know the record is stuck and you only want it back:
- Go to Site → Maintenance → Global Check-in.
- Find the table the record lives in. Articles and categories are
#__contentand#__categories, menu items#__menu, modules#__modules, resources#__resources, publications#__publications. The search box filters the list on the table name. - Tick that table and press Check-in.
- Tell whoever was editing that the form they left open is now worthless. Anything they had typed and not saved is gone, and if they go back to that tab and press Save, they will overwrite whatever anyone else does in the meantime.
That is the whole task. The rest of this chapter explains what it did, and the one case where you should ask before doing it.
What it is not
Check-in is not a save, a publish, or a permissions setting. It does not recover a draft, it does not change who may edit a record, and it has nothing to do with the cache. If a record refuses to open and there is no padlock on its row, this screen is not the answer — look at the member's group permissions or at the record's own Access setting instead.
What being checked out means
Several of the hub's tables carry a pair of columns, checked_out and
checked_out_time. When an administrator opens a record for editing, the
component writes their user ID and the current time into those two columns.
That is the lock. While it is set, the list screen shows a padlock beside the
row and other administrators are refused the edit form.
Pressing Save, Save & Close or Cancel clears the pair again. Anything else does not. A record stays locked when the editor:
- closes the browser tab, or navigates away with the browser's back button;
- loses the session to a timeout while the form is open;
- hits an error that abandons the request before the save;
- is logged out by an administrator mid-edit.
Nothing expires the lock on its own. There is no timeout and no cron job that sweeps them up — the row stays checked out until someone checks it in, which is what this screen is for.
The screen
The list has one row per database table, not per record:
| Column | Meaning |
|---|---|
| Database Table | The table name, with the hub's table prefix. |
| Items to check-in | How many rows in it are currently checked out. |
A table appears only when all three of these are true: its name starts with
the prefix this installation owns, it has both checked_out and
checked_out_time columns, and at least one of its rows is checked out. So
an empty list is the normal state and means nothing is stuck.
Both columns sort, the list pages, and the search box filters on the table
name — it is a plain substring match against the name, so content finds
#__content and #__content_frontpage.
Tick the tables you want released and press Check-in. Every checked-out
row in each ticked table is released at once: checked_out goes back to 0
and checked_out_time to the column's default, and nothing else in the row is
touched. This screen has no way to release one record and leave another in the
same table locked.
That bluntness is the reason to look at the count first. Ticking #__content
on a hub where one article is stuck releases one lock. Doing it at eleven in
the morning on a hub where six people are mid-edit releases all six, and none
of them will be told. If the count is higher than the number of complaints you
have received, release the single record from its own component instead.
For one record, go to the component that owns it instead. The older
administrator lists — articles, categories, menu items, modules, plugins, and
the Extension Manager — draw a padlock on a locked row, naming who has it and
since when, and clicking the padlock checks in that one record. The padlock is
only clickable for someone who holds Access Administration Interface on
com_checkin, so this component's permissions decide who can break a lock
anywhere on the hub.
The toolbar carries Check-in, Options and Help. Options opens the component's permissions grid, which is the only setting it has. There is nothing to tune: the component ships no configuration, and the grid's default — everything inherited — is the right setting on almost every hub.
Doing it without the screen
There is no muse command for check-in and nothing schedules one, but the
component has a REST equivalent — GET /api/checkin/list and
DELETE /api/checkin/checkin, the second taking one or more table names —
documented in the check-in API reference.
Failing that, the query is short enough to run by hand:
UPDATE `#__content` SET checked_out = 0, checked_out_time = '0000-00-00 00:00:00'
WHERE checked_out > 0;
That is exactly what the screen does, one table at a time.
Rewritten and checked against 2.4-main @ 009ec973b7 on 2026-09-10.