Extension:CentralNotice/Campaign and banner selection

CentralNotice determines which campaign and banner to show to a user based on the following criteria: In the WMF's setup, several of these criteria can only be determined in the user's browser. However, some are available on the server. CentralNotice uses a mixed system whereby the server creates a list of possible campaigns and banners available to the user. This list is constructed in PHP and is sent to the client as JSON in the PHP-based ResourceLoader module. Javascript in the browser then filters this list, makes the final selection, fetches the chosen banner from the server, and injects it into the DOM.
 * Project (e.g., Wikipedia, Wikinews, etc.)
 * Country
 * Language
 * Device
 * Logged-in status
 * Bucket
 * Random seeds