123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <?php
- namespace Drupal\Core\Extension;
- /**
- * Manages the list of available themes.
- */
- interface ThemeHandlerInterface {
- /**
- * Installs a given list of themes.
- *
- * @param array $theme_list
- * An array of theme names.
- * @param bool $install_dependencies
- * (optional) If TRUE, dependencies will automatically be installed in the
- * correct order. This incurs a significant performance cost, so use FALSE
- * if you know $theme_list is already complete and in the correct order.
- *
- * @return bool
- * Whether any of the given themes have been installed.
- *
- * @throws \Drupal\Core\Extension\ExtensionNameLengthException
- * Thrown when the theme name is to long.
- *
- * @deprecated in drupal:8.0.0 and is removed from drupal:9.0.0.
- * Use the theme_installer service instead.
- *
- * @see https://www.drupal.org/node/3017233
- * @see \Drupal\Core\Extension\ThemeInstallerInterface::install()
- */
- public function install(array $theme_list, $install_dependencies = TRUE);
- /**
- * Uninstalls a given list of themes.
- *
- * Uninstalling a theme removes all related configuration (like blocks) and
- * invokes the 'themes_uninstalled' hook.
- *
- * @param array $theme_list
- * The themes to uninstall.
- *
- * @throws \Drupal\Core\Extension\Exception\UninstalledExtensionException
- * Thrown when you try to uninstall a theme that wasn't installed.
- *
- * @deprecated in drupal:8.0.0 and is removed from drupal:9.0.0.
- * Use the theme_installer service instead.
- *
- * @see https://www.drupal.org/node/3017233
- * @see hook_themes_uninstalled()
- * @see \Drupal\Core\Extension\ThemeInstallerInterface::uninstall()
- */
- public function uninstall(array $theme_list);
- /**
- * Returns a list of currently installed themes.
- *
- * @return \Drupal\Core\Extension\Extension[]
- * An associative array of the currently installed themes. The keys are the
- * themes' machine names and the values are Extension objects having the
- * following properties:
- * - filename: The filepath and name of the .info.yml file.
- * - name: The machine name of the theme.
- * - status: 1 for installed, 0 for uninstalled themes.
- * - info: The contents of the .info.yml file.
- * - stylesheets: A two dimensional array, using the first key for the
- * media attribute (e.g. 'all'), the second for the name of the file
- * (e.g. style.css). The value is a complete filepath (e.g.
- * themes/bartik/style.css). Not set if no stylesheets are defined in the
- * .info.yml file.
- * - scripts: An associative array of JavaScripts, using the filename as key
- * and the complete filepath as value. Not set if no scripts are defined
- * in the .info.yml file.
- * - prefix: The base theme engine prefix.
- * - engine: The machine name of the theme engine.
- * - base_theme: If this is a sub-theme, the machine name of the base theme
- * defined in the .info.yml file. Otherwise, the element is not set.
- * - base_themes: If this is a sub-theme, an associative array of the
- * base-theme ancestors of this theme, starting with this theme's base
- * theme, then the base theme's own base theme, etc. Each entry has an
- * array key equal to the theme's machine name, and a value equal to the
- * human-readable theme name; if a theme with matching machine name does
- * not exist in the system, the value will instead be NULL (and since the
- * system would not know whether that theme itself has a base theme, that
- * will end the array of base themes). This is not set if the theme is not
- * a sub-theme.
- * - sub_themes: An associative array of themes on the system that are
- * either direct sub-themes (that is, they declare this theme to be
- * their base theme), direct sub-themes of sub-themes, etc. The keys are
- * the themes' machine names, and the values are the themes'
- * human-readable names. This element is not set if there are no themes on
- * the system that declare this theme as their base theme.
- */
- public function listInfo();
- /**
- * Adds a theme extension to the internal listing.
- *
- * @param \Drupal\Core\Extension\Extension $theme
- * The theme extension.
- */
- public function addTheme(Extension $theme);
- /**
- * Refreshes the theme info data of currently installed themes.
- *
- * Modules can alter theme info, so this is typically called after a module
- * has been installed or uninstalled.
- */
- public function refreshInfo();
- /**
- * Resets the internal state of the theme handler.
- */
- public function reset();
- /**
- * Scans and collects theme extension data and their engines.
- *
- * @return \Drupal\Core\Extension\Extension[]
- * An associative array of theme extensions.
- */
- public function rebuildThemeData();
- /**
- * Finds all the base themes for the specified theme.
- *
- * Themes can inherit templates and function implementations from earlier
- * themes.
- *
- * @param \Drupal\Core\Extension\Extension[] $themes
- * An array of available themes.
- * @param string $theme
- * The name of the theme whose base we are looking for.
- *
- * @return array
- * Returns an array of all of the theme's ancestors; the first element's
- * value will be NULL if an error occurred.
- */
- public function getBaseThemes(array $themes, $theme);
- /**
- * Gets the human readable name of a given theme.
- *
- * @param string $theme
- * The machine name of the theme which title should be shown.
- *
- * @return string
- * Returns the human readable name of the theme.
- *
- * @throws \Drupal\Core\Extension\Exception\UnknownExtensionException
- * When the specified theme does not exist.
- */
- public function getName($theme);
- /**
- * Returns the default theme.
- *
- * @return string
- * The default theme.
- */
- public function getDefault();
- /**
- * Sets a new default theme.
- *
- * @param string $theme
- * The new default theme.
- *
- * @return $this
- *
- * @deprecated in drupal:8.2.0 and is removed from drupal:9.0.0. Use the
- * configuration system to edit the system.theme config directly.
- *
- * @see https://www.drupal.org/node/3082630
- */
- public function setDefault($theme);
- /**
- * Returns an array of directories for all installed themes.
- *
- * Useful for tasks such as finding a file that exists in all theme
- * directories.
- *
- * @return array
- */
- public function getThemeDirectories();
- /**
- * Determines whether a given theme is installed.
- *
- * @param string $theme
- * The name of the theme (without the .theme extension).
- *
- * @return bool
- * TRUE if the theme is installed.
- */
- public function themeExists($theme);
- /**
- * Returns a theme extension object from the currently active theme list.
- *
- * @param string $name
- * The name of the theme to return.
- *
- * @return \Drupal\Core\Extension\Extension
- * An extension object.
- *
- * @throws \Drupal\Core\Extension\Extension\UnknownExtensionException
- * Thrown when the requested theme does not exist.
- */
- public function getTheme($name);
- /**
- * Determines if a theme should be shown in the user interface.
- *
- * To be shown in the UI the theme has to be installed. If the theme is hidden
- * it will not be shown unless it is the default or admin theme.
- *
- * @param string $name
- * The name of the theme to check.
- *
- * @return bool
- * TRUE if the theme should be shown in the UI, FALSE if not.
- */
- public function hasUi($name);
- }
|