Tooling plugins (MCP abilities, admin screens) call the provider methods rather than the tables, so they get the same data and permission rules as phones. The providers only ever act for the signed-in user, on that user’s home site.
LH_Calendars::return_home_site_id( $user_id ), is_home_site( $user_id ), return_storage_site_id().LH_DAV_Collection_Provider methods get_collections(), get_resource_index(), get_resources(), put_resource() and delete_resource(). The organisation provider refuses writes with 403.LH_Calendars_Personal_Provider also implements LH_DAV_Collection_Manager: can_create_collections(), create_collection(), update_collection(), delete_collection().LH_Calendars_Organisations_Provider::return_organisation_site_ids( $user_id ) and user_can_view_status( $status, $user_id ) (call on the organisation’s site).LH_Calendars_Profile::get_export( $calendar ): one of the current user’s calendars as a single .ics file.LH_Calendars_Ical::read_resource(), build_event() and merge().lh_calendars_init_plugin: return false to stop the plugin booting.lh_calendars_return_home_site_id ( $site_id, $user_id ): the site a user’s calendars are served on.lh_calendars_return_default_calendar_id ( ‘personal’ ) and lh_calendars_return_max_calendars ( 50 ).lh_calendars_organisation_site_ids ( $site_ids, $user_id ): the organisations a user gets calendars for.lh_calendars_return_gatherpress_plugin ( ‘gatherpress/gatherpress.php’ ).lh_calendars_user_can_view_status ( $can, $status, $user_id, $site_id ) and lh_calendars_user_can_see_event ( true, $post, $user_id ): who sees which events.lh_calendars_return_organisation_days_back ( 90 ) and lh_calendars_organisation_event_query_args ( $args, $site_id, $user_id ): which events are included.lh_calendars_return_organisation_color ( $color, $site_id ).lh_calendars_return_description_length ( 2000 ) and the action lh_calendars_build_event ( $vevent, $post ), run on the event’s site to add or change event properties.lh_calendars_return_tracked_event_meta_keys: GatherPress meta whose change is logged for sync.