Once the schema from T316409 is in place, we would create the following:
- A TrackingTool interface (we may create more base interfaces in the future)
- A class for each tracking tool type (e.g., P&E dashboard); these classes would implement the TrackingTool interface. These classes would have platform-specific knowledge, e.g., how to build a dashboard URL starting from a base URL and a dashboard identifier.
- A factory/registry that:
- Has a constant with the following structure:
[ tracking_tool_unique_id_integer => [ 'name' => display_name_of_the_tool, 'base_url' => base_url_of_dashboards ], ... ]
note that we may need to add more information (e.g., base URL of the API endpoint). Also, the constant could be moved to config in the future, letting sysadmins add more tools.
- Can map a database record (in particular the tracking tool ID) to an element in the map described above
- Can consequently determine which class it should instantiate
- There should be a concrete implementation for the P&E dashboard in the system above, but it doesn't have to be functional