SIA Play is the knowledge base of the Social Impact Award network — a restricted-access repository of processes, guidelines, and resources intended for team members and candidates. Its defining feature is a layered access control system that determines what each user can see based on their role, team membership, and organisation status.
Content in Play is not simply public or private. Access is determined by a combination of three factors: whether the reader’s organisation meets a minimum status, whether they belong to a specific team, or whether they are a member of one of a set of named organisations. This granularity allows the network to share sensitive materials with the right audience without managing individual user permissions.
Each piece of content can be restricted to readers who meet one or more access conditions. Conditions combine organisation status, team membership, and named organisation membership. The system caches access decisions to keep page loads fast even when evaluating complex rules.
Play adds a dedicated post type for structured knowledge base content, separate from regular WordPress posts. Content can be organised into chapters, and navigation respects the reader’s access level — links to restricted content are filtered out rather than presented as broken.
Play tracks content popularity and ranks it accordingly. The ranking respects access levels: a logged-in team member sees the most-visited content they can actually read, not a list filtered for anonymous visitors.
Play exposes a REST endpoint used by Slack slash commands to search the knowledge base. It also sends activity events — content edits — to the Website Network Activity Airtable base for tracking engagement across the network.
SIA_Play_Public::send_website_network_activity() is hooked to simple_history/log/inserted at priority 50. It forwards events for the article post type only, and skips autosaves, non-SimplePostLogger events, and WP-CLI-initiated writes. The operation (op) is derived from the Simple History _message_key via SIA_Ariel_Activity_Repository::get_op_from_message_key(). The payload includes blog_id, entityType (always article), entityId, slug, entityTitle, post_status, post_date, post_modified, and category_id (comma-separated term IDs, or empty if uncategorised), routed through SIA_Ariel_Activity_Repository::post_event().