+ /**
+ * A theme is a set of CSS files which are loaded on CiviCRM pages. To register a new
+ * theme, add it to the $themes array. Use these properties:
+ *
+ * - ext: string (required)
+ * The full name of the extension which defines the theme.
+ * Ex: "org.civicrm.themes.greenwich".
+ * - title: string (required)
+ * Visible title.
+ * - help: string (optional)
+ * Description of the theme's appearance.
+ * - url_callback: mixed (optional)
+ * A function ($themes, $themeKey, $cssExt, $cssFile) which returns the URL(s) for a CSS resource.
+ * Returns either an array of URLs or PASSTHRU.
+ * Ex: \Civi\Core\Themes\Resolvers::simple (default)
+ * Ex: \Civi\Core\Themes\Resolvers::none
+ * - prefix: string (optional)
+ * A prefix within the extension folder to prepend to the file name.
+ * - search_order: array (optional)
+ * A list of themes to search.
+ * Generally, the last theme should be "*fallback*" (Civi\Core\Themes::FALLBACK).
+ * - excludes: array (optional)
+ * A list of files (eg "civicrm:css/bootstrap.css" or "$ext:$file") which should never
+ * be returned (they are excluded from display).
+ *
+ * @param array $themes
+ * List of themes, keyed by name.
+ * @return null
+ * the return value is ignored
+ */
+ public static function themes(&$themes) {
+ return self::singleton()->invoke(1, $themes,
+ self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,
+ 'civicrm_themes'
+ );
+ }
+
+ /**
+ * The activeTheme hook determines which theme is active.
+ *
+ * @param string $theme
+ * The identifier for the theme. Alterable.
+ * Ex: 'greenwich'.
+ * @param array $context
+ * Information about the current page-request. Includes some mix of:
+ * - page: the relative path of the current Civi page (Ex: 'civicrm/dashboard').
+ * - themes: an instance of the Civi\Core\Themes service.
+ * @return null
+ * the return value is ignored
+ */
+ public static function activeTheme(&$theme, $context) {
+ return self::singleton()->invoke(array('theme', 'context'), $theme, $context,
+ self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,
+ 'civicrm_activeTheme'
+ );
+ }
+