Closed (fixed)
Project:
Entity Registration
Version:
3.3.x-dev
Component:
Registration Core
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Reporter:
Created:
6 Jan 2025 at 20:39 UTC
Updated:
6 Mar 2025 at 12:39 UTC
Jump to comment: Most recent
Comments
Comment #2
jonathanshawComment #3
jonathanshawComment #4
john.oltman commentedComment #5
john.oltman commentedComment #6
john.oltman commentedI believe we are going to end up keeping "set and forget", but I've changed the status from Closed to Postponed, in light of my reopening of the cache expiry issue. Please note that "set and forget" is also used to initially open registration, not just disable on close.
Comment #7
jonathanshawI get the idea of a setting that controls whether or not register links/tabs still show even when they are no longer truly registerable.
The "keep showing a register link but take people a page that lists reasons why they can't" approach is not a bad idea, although for many sites registering is such an important call-to-action that relying on a tab for it makes no sense and something like RegistrationLinkFormatter is a better approach, in which case #3499231: Show causes with registration link and form opens up a better solution to informing people about why they can't register.
Nonetheless, I can see a case for keeping a setting here. What I'm less sure about is keeping the mechanic that powers the existing setting. But (ab)using the status setting to handle this scenario, we make it harder to know what is means when a host is disabled as we found in #3497732: Simplify the status validation check.
It is now technically possible for us to stop relying on the cron/status mechanism and instead use HostEntity::isAvailableForRegistration() in the register route access check, but only if a setting like set_and_forget is enabled. This mechanism would have the advantage of also removing the register link if the host was full or you had already registered, which is probably what someone also wants if they want to hide register when an host is closed or not yet open.
BC is a headache here. One solution would be to add a new setting and deprecate the old setting with a hook_requirements() block that prevented upgrading if the old setting was enabled.
Comment #8
john.oltman commentedSet and forget is going to be around for quite some time, and possibly always. We can reopen if a new rationale presents itself. The original rationale is no longer present since isAvailableForRegistration cannot be called from the access check for performance reasons.
Comment #9
john.oltman commentedComment #10
john.oltman commentedReopened per #3505948: Add a new HostEntity method isOpenForRegistration.
We'll see if we can get rid of it. If yes, then this statement of mine didn't age well, LOL.
Comment #11
john.oltman commentedComment #14
john.oltman commentedComment #16
john.oltman commentedThe code to remove the feature entirely is in a hidden branch, but I realized after starting it that it needs to be deprecated first. So in registration:4.0.0 we can use that code.