Provide a way to administratively configure the Participant Statuses which are counted against Maximum Participants and shown in Participant counts. (Analogous to the is_current flag on membership status.). Modify code which displays # or registered participants, and code which evaluates whether an event is "full" to use this flag in count queries.
1. We need to have an is_counted boolean for participant status. Since these are stored in civicrm_option_value - I think it probably makes sense to use the civicrm_option_value.filter column for this purpose. However, please check with Lobo and/or Kurund on this gameplan before proceeding. (If we go this way, the form and selector code will need conditional logic to display and properly label this element when group = participant_status.)
2. ISSUE: The count shown in the Dashboard for "Participants" currently counts records with status = Registered OR Attended. However, when you click the "show" link, we load a search for all participants in the event (no status filter is included). Hence, the resulting recordset will often have a different number of records than what the dashboard shows.
2.1 We should modify participant search so that we can pass event statuses (and event types) via GET parameters.
2.2 Then fix the query which gets the Participant "counts" to filter on status(s) which have the is_counted flag = true.
2.3 Then fix the link in Dashboard.tpl to pass in all statuses that have the is_counted flag = true.
3. Update the code in Register.php which prevents a contact from registering for the same event multiple times. This is currently hard-coded to prevent dupe registrations if existing participant status is "Registered" or "Attended". We should modify this to use the is_counted = 1 flag to determine which participant statuses should be "blocked" from registering "again."