mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-10-03 16:05:24 -04:00
Deleted monitors are excluded from every monitor listing, so once a monitor is deleted there is no way to find it again from the ui - which matters because deleting is reversible, the monitor edit form has an undelete checkbox for exactly that. Add Deleted as a pseudo status in the Status filter. Selected on its own it lists only the deleted monitors; selected alongside real statuses it adds them to that selection rather than intersecting with it, which would always be empty; not selected, listings stay restricted to live monitors as before. Deleted is deliberately not matched against Monitor_Status. Whatever row a deleted monitor left behind is stale - its daemons were stopped when it was deleted - so filtering on it would drop the monitors we are trying to find. For the same reason a deleted monitor is reported as Deleted rather than the status on that row, is drawn with the error dot, is labelled in the list, and does not get a link to a stream that is not running. The three queries that hardcoded Deleted=false now share one function, so the console page, the console ajax endpoint and getFilteredMonitorIds() cannot disagree about what the filter means. Each passes its own status column expression, which differ: the ajax endpoint coalesces a WebSite monitor to Running. tests/php/test_monitor_status_filter.php covers the sql and the bind value ordering for all four cases, including a bare string from a cookie written before the filter became a multi-select. Verified against a live install: 13 deleted and 19 live monitors return 19 with no filter, 13 for Deleted, and 20 for Deleted plus NotRunning.