Address 'noise' (& performance) of status checks
At the New York sprint improving status checks was discussed with a view to addressing concerns that:
- Some system status messages are slow in some cases (large Dbs, connectivity issues) in an unresolvable way & sysadmins want to be able to just stop the pain for some or all alerts
- Message is overly & inappropriately alarming for some users - e.g a manager might see a ‘warning’ and think it’s a bug.
We agreed to do the following
Add is_active to civicrm_status_pref to disable individual status checks - this would be exposed via api but not UI. (we want it to be possible to disable them but not ‘easy’ as it needs to be very deliberate & done with clear understanding.This was done in 5.19 - #1295 (closed)
- Add new granular ‘view status checks permission’ - github here https://github.com/civicrm/civicrm-core/pull/14521 under discussion
- Prototype less aggressive notification for alerts - e.g ‘you have 7 todo items’ or red (beige) ‘7’ in menu rather than an alert popups - do we still do ‘error’ as a popup?
- Not in the sprint doc but I believed we agreed that the checks should run by cron & be displayed at user login rather than running on user login - we should add al issue when someone is ready to work on that.
The less aggressive notifications are more of a wishlist item at this stage. It would be good to fund Coleman to do it - otherwise it might flounder a bit.
Regarding the new granular status permission check - we discussed this again in Barcelona as the intent was unclear. @totten clarified his permission is that once we add ‘view status checks' permission then people with 'Administer CiviCRM' OR ‘view status checks' would see the checks. This doesn't immediately mitigate the issue as it would generally not be possible to remove Administer CiviCRM so it doesn't achieve much.
However, along with this @totten mooted the idea of adding 2 new permissions that are actually roles -
- Administer CiviCRM System
- Administer CiviCRM Data
The latter would have implicit permissions like Administering option values whereas the former would have things like view status checks by default. The main goal here would be to make it possible for sites to remove 'Administer CiviCRM' and leave most admins with just 'Administer CiviCRM Data'.
The idea was that if we have a call CRM_Core_Permission::check('view status checks') then it would return TRUE if the person has the 'view status checks' permission OR the 'Administer CiviCRM Data' permission
The issue is that the 'devil is in the detail' - for example we have a bunch of permissions jammed under 'Administer CiviCRM' that would need putting into one role or the other. We could mature this permission in an extension if we want as there is a usable hook